9 #include "TEventList.h"
10 #include "TDirectory.h"
16 #include "TObjArray.h"
19 #include "TSystemDirectory.h"
20 #include "TSystemFile.h"
40 t->SetBranchAddress(
"ev",&
ev);
41 t->SetBranchAddress(
"run",&
run);
42 t->SetBranchAddress(
"mode",&
mode);
43 t->SetBranchAddress(
"recmode",&
rec);
48 int uid(
int lev,
int lrun,
int lmode)
50 return lev+10000*lrun+(((lmode/100)%10)*20+lmode%10)*100000;
57 t->SetBranchStatus(
"*",0);
58 t->SetBranchStatus(
"ev",1);
59 t->SetBranchStatus(
"run",1);
60 t->SetBranchStatus(
"mode",1);
61 t->SetBranchStatus(
"recmode",1);
64 for (
int j=0;j<10;++j)
evcntrec[j].clear();
66 for (
int i=0;
i<el.GetN();++
i)
68 t->GetEntry(el.GetEntry(
i));
75 t->SetBranchStatus(
"*",1);
84 ifstream
f(fname.Data());
87 cout <<
"Cannot read file "<<fname.Data()<<endl;
94 TRegexp reffs(
"eff_s = [0-9]+.[0-9]+");
95 TRegexp reffb(
"eff_b = [0-9]+.[0-9]+");
103 sline = sline.Strip(TString::kBoth);
105 if (sline==
"")
continue;
109 if (sline.BeginsWith(
"#"))
111 int lmode =
TString(sline(2,6)).Atoi();
112 if (sline(reffs)!=
"")
114 if (sline(reffb)!=
"")
120 int lmode =
TString(sline(0,6)).Atoi();
121 modes.push_back(lmode);
122 cuts[lmode] = sline(9,500);
135 TSystemDirectory dir(
"*.root",
".");
137 TList *list = dir.GetListOfFiles();
139 int nent = list->GetEntries();
141 TRegexp reg(
"^M[0-9]+_n[0-9]+.+root");
143 for (
int i=0;
i<nent; ++
i)
145 TString fname = ((TSystemFile*) list->At(
i))->GetName();
150 int lmode =
TString(mpat(1,3)+mpat(6,3)).Atoi();
151 files[lmode] = fname;
163 if (nmodes==0)
return;
165 TRegexp rtname(
"n[0-9][0-9][0-9]");
167 double sumeffb=0., geffb=0.;
169 TCanvas *
c1=
new TCanvas(
"c1",
"c1",5,5,1800,800);
178 sumeffb +=
effb[lmode];
180 TFile
f(
files[lmode],
"READ");
182 TTree *
t = (TTree*) f.Get(tname);
193 geffb = (double)
gevtcnt.size()/3e4;
195 t->Draw(
">>el",
cuts[lmode]);
196 t->SetEventList(&el);
199 t->SetLineColor(1); t->Draw(
"xm");
200 t->SetLineColor(2); t->Draw(
"xm",
"xmct",
"same");
201 t->SetLineColor(4); t->Draw(
"xm",
"mode%1000==900",
"same");
203 TLatex lat; lat.SetTextSize(0.09);
204 lat.DrawLatex(gPad->GetUxmin()+(gPad->GetUxmax()-gPad->GetUxmin())*0.05,gPad->GetUymax()*0.85,TString::Format(
"(%02d) %d",
i+1,lmode%1000));
205 lat.DrawLatex(gPad->GetUxmin()+(gPad->GetUxmax()-gPad->GetUxmin())*0.05,gPad->GetUymax()*0.73,TString::Format(
"S:%4.2f%%",
effs[lmode]));
206 lat.DrawLatex(gPad->GetUxmin()+(gPad->GetUxmax()-gPad->GetUxmin())*0.05,gPad->GetUymax()*0.61,TString::Format(
"B:%4.3f%%",
effb[lmode]));
210 printf(
"(%2d) %d (%4.1f, %6.3f; %6.3f; %6.3f) %s : %s\n",
i+1, lmode,
effs[lmode],
effb[lmode], sumeffb, geffb,
files[lmode].Data(),
cuts[lmode].Data());
213 printf(
"\nSUM(effb) = %6.3f%% SIMU(effb) = %6.3f%%\n",sumeffb, geffb);
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
std::map< int, TString > files
std::map< int, double > effb
int uid(int lev, int lrun, int lmode)
int readmodes(TString fname)
int simubg(TString cfgfile)
std::map< int, double > effs
std::map< int, int > CountMap
int countEvents(TTree *t, TEventList &el)