13 #include "TEventList.h"
14 #include "TDirectory.h"
18 #include "TPaletteAxis.h"
34 TColor::CreateGradientColorTable(3,stp,red,grn,blu,100);
41 gStyle->SetPadTopMargin(0.05);
42 gStyle->SetPadBottomMargin(0.1);
43 gStyle->SetPadLeftMargin(0.1);
44 gStyle->SetPadRightMargin(0.07);
45 gStyle->SetTitleH(0.035);
48 gStyle->SetPalette(1);
55 TPaletteAxis *palette = (TPaletteAxis*)h->GetListOfFunctions()->FindObject(
"palette");
56 palette->SetX1NDC(0.94);
57 palette->SetX2NDC(0.96);
58 palette->SetY1NDC(0.1);
59 palette->SetY2NDC(0.95);
67 t->SetBranchAddress(
"mode",&
mode);
68 t->SetBranchAddress(
"recmode",&
recmode);
69 t->SetBranchAddress(
"tag",&
tag);
70 t->SetBranchAddress(
"tagall",&
tagall);
71 t->SetBranchAddress(
"tagm",&
tagm);
73 t->SetBranchStatus(
"*",0);
74 t->SetBranchStatus(
"tag*",1);
75 t->SetBranchStatus(
"mode",1);
76 t->SetBranchStatus(
"recmode",1);
77 t->SetBranchStatus(
"tag",1);
78 t->SetBranchStatus(
"tagall",1);
79 t->SetBranchStatus(
"tagm",1);
81 TObjArray* branches = t->GetListOfBranches();
84 TRegexp reg(
"tag[0-9][0-9][0-9]");
86 for(
int i=0;
i<=branches->GetLast(); ++
i)
88 TBranch* branch = (TBranch*)branches->UncheckedAt(
i);
93 if (sqs!=3.0 || m>=400)
120 void config_pad(TVirtualPad*
p,
double b=0.1,
double r=0.07,
double t=0.05,
double l=0.1)
123 p->SetBottomMargin(
b);
125 p->SetRightMargin(
r);
134 h->GetXaxis()->SetLabelSize(labs);
135 h->GetXaxis()->SetLabelOffset(0.01);
136 h->GetXaxis()->SetTitleSize(0.03);
137 h->GetXaxis()->SetTitleOffset(1.5);
139 h->GetYaxis()->SetLabelSize(labs);
140 h->GetYaxis()->SetLabelOffset(0.01);
141 h->GetYaxis()->SetTitleSize(0.03);
142 h->GetYaxis()->SetTitleOffset(1.5);
144 h->GetZaxis()->SetLabelSize(0.018);
145 h->GetZaxis()->SetLabelOffset(0.005);
150 if (titley!=
"") h->SetYTitle(titley);
151 if (titlex!=
"") h->SetXTitle(titlex);
161 double labs = 0.018+0.008*(57.-
nlines)/43.;
167 h->GetXaxis()->SetBinLabel(
i+1,TString::Format(
"T%d",
codes[
i]));
168 h->GetYaxis()->SetBinLabel(nlines-i,TString::Format(
"M%d",
codes[i]));
171 h->GetYaxis()->SetBinLabel(1,
"DPM");
172 h->GetXaxis()->SetBinLabel(nlines,
"any");
173 h->GetXaxis()->LabelsOption(
"v");
180 double labs = 0.04+0.01*(57.-
nlines)/43.;
184 h->GetYaxis()->SetTitleSize(0.05);
185 h->GetYaxis()->SetTitleOffset(0.7);
186 h->GetYaxis()->SetLabelSize(0.04);
188 h->GetXaxis()->SetTitleSize(0.045);
191 h->GetXaxis()->SetBinLabel(
i+1,TString::Format(
"%s%d",label.Data(),
codes[
i]));
193 h->GetXaxis()->SetBinLabel(nlines,
"DPM");
194 h->GetXaxis()->LabelsOption(
"v");
196 h->SetLineColor(lincol);
197 h->SetFillColor(fillcol);
198 h->SetFillStyle(fillstyle);
207 TFile *
f =
new TFile(fname,
"READ");
208 TTree *
t = (TTree*)f->Get(
"ntpev");
210 if (sqs<0.) sqs =
TString(fname(fname.Index(
"/M")+2,3)).Atoi()/100.;
211 if (sqs<0. || sqs>6.)
return;
219 TString sqsstr = TString::Format(
"%03d",
int(sqs*100.));
221 TCanvas *
c1=
new TCanvas(
"c1",
"c1",10,10,1000,900);
222 TCanvas *
c3=
new TCanvas(
"c3",
"c3",100,100,1000,900);
223 TCanvas *
c2=
new TCanvas(
"c2",
"c2",400,20,1000,900);
228 if (saveplots) ff=
new TFile(
"crosstag_histos.root",
"UPDATE");
242 TH2F *htagex =
new TH2F(
"htagex"+sqsstr,TString::Format(
"Excl. cross tags @ %.1f GeV",sqs),
nlines,0,
nlines,
nlines,0,
nlines);
252 TH1F *hsig=
new TH1F(
"hsig"+sqsstr,TString::Format(
"Signal efficiencies @ %.1f GeV",sqs),
nlines,0,
nlines);
253 TH1F *hsigi=
new TH1F(
"hsigi"+sqsstr,TString::Format(
"Signal efficiencies @ %.1f GeV",sqs),
nlines,0,
nlines);
254 TH1F *hsign=
new TH1F(
"hsign"+sqsstr,TString::Format(
"Signal efficiencies @ %.1f GeV",sqs),
nlines,0,
nlines);
256 config_histo1d(hsig,
"efficiency [%]",
"Data Mode",hsig->GetLineColor(),hsig->GetLineColor(),3003);
263 TH1F *hbg=
new TH1F(
"hbg"+sqsstr,TString::Format(
"Background fractions @ %.1f GeV",sqs),
nlines,0,
nlines);
264 config_histo1d(hbg,
"acc. background [%]",
"Trigger Line",1,1,3003,
"T");
265 hbg->GetXaxis()->SetBinLabel(
nlines,
"any");
267 int N = t->GetEntries();
273 for (
int i=0;
i<N;++
i)
275 if (fact>1 &&
i%fact)
continue;
279 if (smode>1e6) smode/=1000;
280 if (smode>1000) smode%=1000;
282 if (smode==900) Nbg++;
286 for (
int j=0;j<
nlines;++j)
287 hall->Fill(j,nlines-
codeidx[smode]-1);
291 cout <<
i<<
"/"<<N<<endl;
293 c1->cd(); htag->Draw(
"colz"); c1->Update();
294 c3->cd(); htagex->Draw(
"colz"); c3->Update();
300 htag->Fill(nlines-1,nlines-
codeidx[smode]-1);
302 if (smode==900) hbg->Fill(nlines-1);
305 for (
int j=0;j<nlines-1;++j)
310 htag->Fill(j,nlines-
codeidx[smode]-1);
312 if (smode==900) hbg->Fill(j);
313 if (j==
codeidx[smode]) hsigi->Fill(j);
323 htag->Divide(hall); htag->SetMinimum(0.00001); htag->SetMaximum(1.0);
335 htagex->Divide(hall); htagex->SetMinimum(0.00001); htagex->SetMaximum(1.0);
336 htagex->Draw(
"colz");
339 htagex->Draw(
"colz");
343 gStyle->SetTitleH(0.06);
348 hsig->SetMaximum(100.);
350 hsigi->Divide(hsign);
352 hsigi->SetMaximum(100.);
357 TLegend *
leg=
new TLegend(0.08,0.78,0.3,0.92);
358 leg->AddEntry(
"hsigi"+sqsstr,
"dedicated trigger",
"l");
359 leg->AddEntry(
"hsig"+sqsstr,
"total",
"l");
364 hbg->Scale(100./Nbg);
377 l.DrawLine(i,0,i,nlines);
378 l.DrawLine(0,nlines-i,nlines,nlines-i);
382 l.DrawLine(i,0,i,nlines);
383 l.DrawLine(0,nlines-i,nlines,nlines-i);
386 l.DrawLine(i,0,i,hsig->GetMaximum()*0.75);
388 l.DrawLine(i,0,i,hbg->GetMaximum()*0.75);
397 c1->SaveAs(TString::Format(
"cross_tag_%d.pdf",
int(sqs*100)));
398 c1->SaveAs(TString::Format(
"cross_tag_%d.gif",
int(sqs*100)));
399 c2->SaveAs(TString::Format(
"cross_tag_sigbg_%d.pdf",
int(sqs*100)));
400 c2->SaveAs(TString::Format(
"cross_tag_sigbg_%d.gif",
int(sqs*100)));
int crosstag(TString fname, int fact=1, int saveplots=0, double sqs=-1.)
void config_histo(TH1 *h, TString tx, TString ty)
void resizePalette(TH1 *h)
std::map< int, int > codeidx
void config_pad(TVirtualPad *p, double b=0.1, double r=0.12, double t=0.08, double l=0.1)
void config_histo2d(TH1 *h, TString titley="", TString titlex="")
std::map< int, int > drawline
void config_histo1d(TH1 *h, TString titley="", TString titlex="", int lincol=1, int fillcol=0, int fillstyle=0, TString label="M")