]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/SPECTRA/macros/drawProtonResults.C
dE/dx slices in P
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / macros / drawProtonResults.C
CommitLineData
f203beb9 1void drawProtonResults(const char* analysisOutput = 0x0,
2 Bool_t kShowResults = kTRUE,
3 Bool_t kShowQAPlots = kFALSE) {
735cc63d 4 //Macro to visualize the proton ratio results
5 //It also visualizes the QA plots
790140ac 6 gStyle->SetPalette(1,0);
f203beb9 7 if(!analysisOutput)
8 Error("drawProtonResults::The analysis output was not defined!!!");
9 if(kShowResults) drawResults(analysisOutput);
10 if(kShowQAPlots) drawQAPlots(analysisOutput);
735cc63d 11}
12
790140ac 13//___________________________________________________//
f203beb9 14void drawResults(const char* analysisOutput) {
790140ac 15 //Draws the main results from the ratio analysis
3c669e09 16 gSystem->Load("libANALYSIS.so");
17 gSystem->Load("libANALYSISalice.so");
18 gSystem->Load("libCORRFW.so");
52b04cf9 19 gSystem->Load("libPWG2spectra.so");
3c669e09 20
52b04cf9 21 //Create the AliProtonAnalysis object
22 AliProtonAnalysis *analysis = new AliProtonAnalysis();
f203beb9 23 analysis->ReadFromFile(analysisOutput);
52b04cf9 24 TH1F *gHistEventStats = dynamic_cast<TH1F *>(analysis->GetEventStatistics());
25 TH2D *gHistYPtProtons = dynamic_cast<TH2D *>(analysis->GetProtonYPtHistogram());
26 TH2D *gHistYPtAntiProtons = dynamic_cast<TH2D *>(analysis->GetAntiProtonYPtHistogram());
27 TH1D *gHistYProtons = dynamic_cast<TH1D *>(analysis->GetProtonYHistogram());
28 TH1D *gHistYAntiProtons = dynamic_cast<TH1D *>(analysis->GetAntiProtonYHistogram());
29 TH1D *gHistPtProtons = dynamic_cast<TH1D *>(analysis->GetProtonPtHistogram());
30 TH1D *gHistPtAntiProtons = dynamic_cast<TH1D *>(analysis->GetAntiProtonPtHistogram());
31 TH1D *gHistYRatio = dynamic_cast<TH1D *>(analysis->GetYRatioHistogram());
32 TH1D *gHistPtRatio = dynamic_cast<TH1D *>(analysis->GetPtRatioHistogram());
790140ac 33
3c669e09 34 //==================================================================//
e56f08ed 35 TH2F *hEmptyRatio = new TH2F("hEmptyRatio",";;#bar{p}/p",100,-1.1,1.1,100,0.1,1.1);
52b04cf9 36 hEmptyRatio->SetStats(kFALSE);
37 hEmptyRatio->GetXaxis()->SetNdivisions(10);
38 hEmptyRatio->GetYaxis()->SetNdivisions(10);
39
40 TLatex *latex = new TLatex();
41 latex->SetTextSize(0.04);
42 latex->SetTextColor(2);
43
44 TF1 *fFitFunction = new TF1("fFitFunction","[0]",-0.5,0.5);
45 fFitFunction->SetParameter(0,0.7);
46
790140ac 47 TCanvas *c2D = new TCanvas("c2D","eta-pT (anti)protons",0,0,700,400);
48 c2D->SetFillColor(10); c2D->SetHighLightColor(10); c2D->Divide(2,1);
49 c2D->cd(1); gHistYPtProtons->Draw("col");
50 c2D->cd(2); gHistYPtAntiProtons->Draw("col");
3c669e09 51
52 TCanvas *cEventStats = new TCanvas("cEventStats","Event statistics",
53 0,0,500,500);
54 cEventStats->SetFillColor(10); cEventStats->SetHighLightColor(10);
55 gHistEventStats->Draw();
52b04cf9 56
57 TCanvas *cEta = new TCanvas("cEta","Eta",100,0,600,400);
58 cEta->SetFillColor(10); cEta->SetHighLightColor(10); cEta->Divide(2,1);
629e3967 59 cEta->cd(1); gHistYProtons->Draw("E"); PrintYields(gHistYProtons);
60 cEta->cd(2); gHistYAntiProtons->Draw("E"); PrintYields(gHistYAntiProtons);
52b04cf9 61
62 TCanvas *cPt = new TCanvas("cPt","Pt",100,200,600,400);
63 cPt->SetFillColor(10); cPt->SetHighLightColor(10); cPt->Divide(2,1);
64 cPt->cd(1)->SetLogy(); gHistPtProtons->Draw("E");
65 cPt->cd(2)->SetLogy(); gHistPtAntiProtons->Draw("E");
66
67 TCanvas *cRatio = new TCanvas("cRatio","Ratio",300,0,600,400);
68 cRatio->SetFillColor(10); cRatio->SetHighLightColor(10); cRatio->Divide(2,1);
69 cRatio->cd(1); hEmptyRatio->GetXaxis()->SetTitle("eta");
e56f08ed 70 hEmptyRatio->GetXaxis()->SetRangeUser(-1.0,1.0);
52b04cf9 71 hEmptyRatio->DrawCopy(); gHistYRatio->Draw("ESAME");
72 gHistYRatio->Fit("fFitFunction","N");
73 latex->DrawLatex(-0.1,0.45,"ALICE PRELIMINARY");
74 latex->DrawLatex(-0.1,0.4,"p-p: #sqrt{s} = 900 GeV");
75 cRatio->cd(2); hEmptyRatio->GetXaxis()->SetTitle("P_{T} [GeV/c]");
76 hEmptyRatio->GetXaxis()->SetRangeUser(0.3,1.1);
77 hEmptyRatio->DrawCopy(); gHistPtRatio->Draw("ESAME");
78 latex->DrawLatex(0.6,0.45,"ALICE PRELIMINARY");
79 latex->DrawLatex(0.6,0.4,"p-p: #sqrt{s} = 900 GeV");
80
81
82 Printf("==========================================");
e56f08ed 83 for(Int_t iBin = 1; iBin <= gHistYRatio->GetNbinsX(); iBin++)
84 Printf("Eta: %lf - Ratio: %lf - Error: %lf",
85 gHistYRatio->GetBinCenter(iBin),
86 gHistYRatio->GetBinContent(iBin),
87 gHistYRatio->GetBinError(iBin));
88 Printf("==========================================");
89
52b04cf9 90 Printf("Fit result: %lf - %lf",fFitFunction->GetParameter(0),fFitFunction->GetParError(0));
91 analysis->PrintMean(gHistYRatio,0.5);
92 Printf("==========================================");
790140ac 93}
94
735cc63d 95//___________________________________________________//
f203beb9 96void drawQAPlots(const char* analysisOutput) {
735cc63d 97 //Draws the QA plots from the output of the analysis
98 //=========================================================//
99 //List of cuts
100 TFile *fCutFile = TFile::Open("ListOfCuts.root");
101 TCanvas *cListOfCuts = dynamic_cast<TCanvas *>(fCutFile->Get("cListOfCuts"));
102 cListOfCuts->Draw();
103
104 //=========================================================//
105 //QA plots
f203beb9 106 TFile *f = TFile::Open(analysisOutput);
735cc63d 107 TList *listQA = dynamic_cast<TList *>(f->Get("outputQAList"));
108 TList *gListGlobalQA = dynamic_cast<TList *>(listQA->At(0));
109
110 //================QA plots================//
111 TList *fQA2DList = dynamic_cast<TList *>(gListGlobalQA->At(0));
37cb8683 112 //2D de/dx vs P
790140ac 113 TH2F *gHistdEdxP = dynamic_cast<TH2F *>(fQA2DList->At(0));
114 gHistdEdxP->SetStats(kFALSE);
115 TH2F *gHistProtonsdEdxP = dynamic_cast<TH2F *>(fQA2DList->At(1));
116 gHistProtonsdEdxP->SetStats(kFALSE);
37cb8683 117
118 //3D eta-phi-NPoints(dEdx)
119 TH3F *gHistEtaPhiTPCdEdxNPoints = dynamic_cast<TH3F *>(fQA2DList->At(2));
120 TH2D *gHistEtaPhi = dynamic_cast<TH2D *>gHistEtaPhiTPCdEdxNPoints->Project3D("yx");
121 gHistEtaPhi->SetStats(kFALSE);
122 TH2D *gHistEtaTPCdEdxNPoints = dynamic_cast<TH2D *>gHistEtaPhiTPCdEdxNPoints->Project3D("zx");
123 gHistEtaTPCdEdxNPoints->SetStats(kFALSE);
124 TH2D *gHistPhiTPCdEdxNPoints = dynamic_cast<TH2D *>gHistEtaPhiTPCdEdxNPoints->Project3D("zy");
125 gHistPhiTPCdEdxNPoints->SetStats(kFALSE);
126
127 //3D eta-phi-NPoints(dEdx): protons
128 TH3F *gHistProtonsEtaPhiTPCdEdxNPoints = dynamic_cast<TH3F *>(fQA2DList->At(3));
129 TH2D *gHistProtonsEtaPhi = dynamic_cast<TH2D *>gHistProtonsEtaPhiTPCdEdxNPoints->Project3D("yx");
130 gHistProtonsEtaPhi->SetStats(kFALSE);
131 TH2D *gHistProtonsEtaTPCdEdxNPoints = dynamic_cast<TH2D *>gHistProtonsEtaPhiTPCdEdxNPoints->Project3D("zx");
132 gHistProtonsEtaTPCdEdxNPoints->SetStats(kFALSE);
133 TH2D *gHistProtonsPhiTPCdEdxNPoints = dynamic_cast<TH2D *>gHistProtonsEtaPhiTPCdEdxNPoints->Project3D("zy");
134 gHistProtonsPhiTPCdEdxNPoints->SetStats(kFALSE);
135
136 //3D eta-phi-NPoints
137 TH3F *gHistEtaPhiTPCNPoints = dynamic_cast<TH3F *>(fQA2DList->At(4));
138 TH2D *gHistEtaPhi = dynamic_cast<TH2D *>gHistEtaPhiTPCNPoints->Project3D("yx");
139 gHistEtaPhi->SetStats(kFALSE);
140 TH2D *gHistEtaTPCNPoints = dynamic_cast<TH2D *>gHistEtaPhiTPCNPoints->Project3D("zx");
141 gHistEtaTPCNPoints->SetStats(kFALSE);
142 TH2D *gHistPhiTPCNPoints = dynamic_cast<TH2D *>gHistEtaPhiTPCNPoints->Project3D("zy");
143 gHistPhiTPCNPoints->SetStats(kFALSE);
144
145 //3D eta-phi-NPoints: protons
146 TH3F *gHistProtonsEtaPhiTPCNPoints = dynamic_cast<TH3F *>(fQA2DList->At(5));
147 TH2D *gHistProtonsEtaPhi = dynamic_cast<TH2D *>gHistProtonsEtaPhiTPCNPoints->Project3D("yx");
148 gHistProtonsEtaPhi->SetStats(kFALSE);
149 TH2D *gHistProtonsEtaTPCNPoints = dynamic_cast<TH2D *>gHistProtonsEtaPhiTPCNPoints->Project3D("zx");
150 gHistProtonsEtaTPCNPoints->SetStats(kFALSE);
151 TH2D *gHistProtonsPhiTPCNPoints = dynamic_cast<TH2D *>gHistProtonsEtaPhiTPCNPoints->Project3D("zy");
152 gHistProtonsPhiTPCNPoints->SetStats(kFALSE);
153
154 //3D pt-phi-NPoints(dEdx)
155 TH3F *gHistPtPhiTPCdEdxNPoints = dynamic_cast<TH3F *>(fQA2DList->At(6));
156 TH2D *gHistPtPhi = dynamic_cast<TH2D *>gHistPtPhiTPCdEdxNPoints->Project3D("yx");
157 gHistPtPhi->SetStats(kFALSE);
158 TH2D *gHistPtTPCdEdxNPoints = dynamic_cast<TH2D *>gHistPtPhiTPCdEdxNPoints->Project3D("zx");
159 gHistPtTPCdEdxNPoints->SetStats(kFALSE);
160 TH2D *gHistPhiTPCdEdxNPoints = dynamic_cast<TH2D *>gHistPtPhiTPCdEdxNPoints->Project3D("zy");
161 gHistPhiTPCdEdxNPoints->SetStats(kFALSE);
162
163 //3D pt-phi-NPoints(dEdx): protons
164 TH3F *gHistProtonsPtPhiTPCdEdxNPoints = dynamic_cast<TH3F *>(fQA2DList->At(7));
165 TH2D *gHistProtonsPtPhi = dynamic_cast<TH2D *>gHistProtonsPtPhiTPCdEdxNPoints->Project3D("yx");
166 gHistProtonsPtPhi->SetStats(kFALSE);
167 TH2D *gHistProtonsPtTPCdEdxNPoints = dynamic_cast<TH2D *>gHistProtonsPtPhiTPCdEdxNPoints->Project3D("zx");
168 gHistProtonsPtTPCdEdxNPoints->SetStats(kFALSE);
169 TH2D *gHistProtonsPhiTPCdEdxNPoints = dynamic_cast<TH2D *>gHistProtonsPtPhiTPCdEdxNPoints->Project3D("zy");
170 gHistProtonsPhiTPCdEdxNPoints->SetStats(kFALSE);
171
172 //3D pt-phi-NPoints
173 TH3F *gHistPtPhiTPCNPoints = dynamic_cast<TH3F *>(fQA2DList->At(8));
174 TH2D *gHistPtPhi = dynamic_cast<TH2D *>gHistPtPhiTPCNPoints->Project3D("yx");
175 gHistPtPhi->SetStats(kFALSE);
176 TH2D *gHistPtTPCNPoints = dynamic_cast<TH2D *>gHistPtPhiTPCNPoints->Project3D("zx");
177 gHistPtTPCNPoints->SetStats(kFALSE);
178 TH2D *gHistPhiTPCNPoints = dynamic_cast<TH2D *>gHistPtPhiTPCNPoints->Project3D("zy");
179 gHistPhiTPCNPoints->SetStats(kFALSE);
180
181 //3D pt-phi-NPoints: protons
182 TH3F *gHistProtonsPtPhiTPCNPoints = dynamic_cast<TH3F *>(fQA2DList->At(9));
183 TH2D *gHistProtonsPtPhi = dynamic_cast<TH2D *>gHistProtonsPtPhiTPCNPoints->Project3D("yx");
184 gHistProtonsPtPhi->SetStats(kFALSE);
185 TH2D *gHistProtonsPtTPCNPoints = dynamic_cast<TH2D *>gHistProtonsPtPhiTPCNPoints->Project3D("zx");
186 gHistProtonsPtTPCNPoints->SetStats(kFALSE);
187 TH2D *gHistProtonsPhiTPCNPoints = dynamic_cast<TH2D *>gHistProtonsPtPhiTPCNPoints->Project3D("zy");
188 gHistProtonsPhiTPCNPoints->SetStats(kFALSE);
189
e56f08ed 190 //2D eta-phi- accepted protons & antiprotons
191 TH2F *gHistEtaPhiProtons = dynamic_cast<TH2F *>(fQA2DList->At(10));
192 gHistEtaPhiProtons->SetStats(kFALSE);
193 TH2F *gHistEtaPhiAntiProtons = dynamic_cast<TH2F *>(fQA2DList->At(11));
194 gHistEtaPhiAntiProtons->SetStats(kFALSE);
195
629e3967 196 //2D dca vs pT - accepted protons & antiprotons
197 TH2F *gHistDCAxyPtProtons = dynamic_cast<TH2F *>(fQA2DList->At(12));
198 gHistDCAxyPtProtons->SetStats(kFALSE);
199 TH2F *gHistDCAzPtProtons = dynamic_cast<TH2F *>(fQA2DList->At(13));
200 gHistDCAzPtProtons->SetStats(kFALSE);
201 TH2F *gHistDCAxyPtAntiProtons = dynamic_cast<TH2F *>(fQA2DList->At(14));
202 gHistDCAxyPtAntiProtons->SetStats(kFALSE);
203 TH2F *gHistDCAzPtAntiProtons = dynamic_cast<TH2F *>(fQA2DList->At(15));
204 gHistDCAzPtAntiProtons->SetStats(kFALSE);
205
37cb8683 206 //__________________________________________________//
790140ac 207 TCanvas *cdEdx = new TCanvas("cdEdx","dE/dx (TPC)",0,0,700,400);
208 cdEdx->SetFillColor(10); cdEdx->SetHighLightColor(10); cdEdx->Divide(2,1);
209 cdEdx->cd(1)->SetLogx(); gHistdEdxP->Draw("col");
210 cdEdx->cd(2)->SetLogx(); gHistProtonsdEdxP->Draw("col");
735cc63d 211
e56f08ed 212 TCanvas *cEtaPhi = new TCanvas("cEtaPhi",
213 "eta-phi",
214 0,0,700,400);
215 cEtaPhi->SetFillColor(10);
216 cEtaPhi->SetHighLightColor(10); cEtaPhi->Divide(2,1);
217 cEtaPhi->cd(1); gHistEtaPhiProtons->Draw("colz");
218 cEtaPhi->cd(2); gHistEtaPhiAntiProtons->Draw("colz");
219
629e3967 220 TCanvas *cDCAPt = new TCanvas("cDCAPt","pT-dca",0,0,700,700);
221 cDCAPt->SetFillColor(10);
222 cDCAPt->SetHighLightColor(10); cDCAPt->Divide(2,2);
223 cDCAPt->cd(1); gHistDCAxyPtProtons->Draw("colz");
224 cDCAPt->cd(2); gHistDCAzPtProtons->Draw("colz");
225 cDCAPt->cd(3); gHistDCAxyPtAntiProtons->Draw("colz");
226 cDCAPt->cd(4); gHistDCAzPtAntiProtons->Draw("colz");
227
e56f08ed 228 /*TCanvas *cEtaPhiNPointsdEdx = new TCanvas("cEtaPhiNPointsdEdx",
37cb8683 229 "eta-phi-NPoints(dE/dx)",
230 0,0,900,600);
231 cEtaPhiNPointsdEdx->SetFillColor(10);
232 cEtaPhiNPointsdEdx->SetHighLightColor(10); cEtaPhiNPointsdEdx->Divide(3,2);
233 cEtaPhiNPointsdEdx->cd(1); gHistEtaPhi->Draw("col");
234 cEtaPhiNPointsdEdx->cd(2); gHistEtaTPCdEdxNPoints->Draw("col");
235 cEtaPhiNPointsdEdx->cd(3); gHistPhiTPCdEdxNPoints->Draw("col");
236 cEtaPhiNPointsdEdx->cd(4); gHistProtonsEtaPhi->Draw("col");
237 cEtaPhiNPointsdEdx->cd(5); gHistProtonsEtaTPCdEdxNPoints->Draw("col");
238 cEtaPhiNPointsdEdx->cd(6); gHistProtonsPhiTPCdEdxNPoints->Draw("col");
239
240 TCanvas *cEtaPhiNPoints = new TCanvas("cEtaPhiNPoints",
241 "eta-phi-NPoints",
242 0,0,900,600);
243 cEtaPhiNPoints->SetFillColor(10);
244 cEtaPhiNPoints->SetHighLightColor(10); cEtaPhiNPoints->Divide(3,2);
245 cEtaPhiNPoints->cd(1); gHistEtaPhi->Draw("col");
246 cEtaPhiNPoints->cd(2); gHistEtaTPCNPoints->Draw("col");
247 cEtaPhiNPoints->cd(3); gHistPhiTPCNPoints->Draw("col");
248 cEtaPhiNPoints->cd(4); gHistProtonsEtaPhi->Draw("col");
249 cEtaPhiNPoints->cd(5); gHistProtonsEtaTPCNPoints->Draw("col");
250 cEtaPhiNPoints->cd(6); gHistProtonsPhiTPCNPoints->Draw("col");
251
252 TCanvas *cPtPhiNPointsdEdx = new TCanvas("cPtPhiNPointsdEdx",
253 "pt-phi-NPoints(dE/dx)",
254 0,0,900,600);
255 cPtPhiNPointsdEdx->SetFillColor(10);
256 cPtPhiNPointsdEdx->SetHighLightColor(10); cPtPhiNPointsdEdx->Divide(3,2);
257 cPtPhiNPointsdEdx->cd(1); gHistPtPhi->Draw("col");
258 cPtPhiNPointsdEdx->cd(2); gHistPtTPCdEdxNPoints->Draw("col");
259 cPtPhiNPointsdEdx->cd(3); gHistPhiTPCdEdxNPoints->Draw("col");
260 cPtPhiNPointsdEdx->cd(4); gHistProtonsPtPhi->Draw("col");
261 cPtPhiNPointsdEdx->cd(5); gHistProtonsPtTPCdEdxNPoints->Draw("col");
262 cPtPhiNPointsdEdx->cd(6); gHistProtonsPhiTPCdEdxNPoints->Draw("col");
263
264 TCanvas *cPtPhiNPoints = new TCanvas("cPtPhiNPoints",
265 "pt-phi-NPoints",
266 0,0,900,600);
267 cPtPhiNPoints->SetFillColor(10);
268 cPtPhiNPoints->SetHighLightColor(10); cPtPhiNPoints->Divide(3,2);
269 cPtPhiNPoints->cd(1); gHistPtPhi->Draw("col");
270 cPtPhiNPoints->cd(2); gHistPtTPCNPoints->Draw("col");
271 cPtPhiNPoints->cd(3); gHistPhiTPCNPoints->Draw("col");
272 cPtPhiNPoints->cd(4); gHistProtonsPtPhi->Draw("col");
273 cPtPhiNPoints->cd(5); gHistProtonsPtTPCNPoints->Draw("col");
e56f08ed 274 cPtPhiNPoints->cd(6); gHistProtonsPhiTPCNPoints->Draw("col");*/
37cb8683 275
735cc63d 276 //Accepted protons
277 TList *fQAProtonsAcceptedList = dynamic_cast<TList *>(gListGlobalQA->At(1));
278 TH1F *gProtonsITSClustersPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(0));
279 TH1F *gProtonsChi2PerClusterITSPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(1));
280 TH1F *gProtonsTPCClustersPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(2));
281 TH1F *gProtonsChi2PerClusterTPCPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(3));
282 TH1F *gProtonsExtCov11Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(4));
283 TH1F *gProtonsExtCov22Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(5));
284 TH1F *gProtonsExtCov33Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(6));
285 TH1F *gProtonsExtCov44Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(7));
286 TH1F *gProtonsExtCov55Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(8));
287 TH1F *gProtonsSigmaToVertexPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(9));
288 TH1F *gProtonsSigmaToVertexTPCPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(10));
289 TH1F *gProtonsDCAXYPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(11));
290 TH1F *gProtonsDCAXYTPCPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(12));
291 TH1F *gProtonsDCAZPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(13));
292 TH1F *gProtonsDCAZTPCPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(14));
293 TH1F *gProtonsConstrainChi2Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(15));
294 TH1F *gProtonsITSRefitPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(16));
295 TH1F *gProtonsTPCRefitPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(17));
296 TH1F *gProtonsESDpidPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(18));
297 TH1F *gProtonsTPCpidPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(19));
298 TH1F *gProtonsPointOnITSLayer1Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(20));
299 TH1F *gProtonsPointOnITSLayer2Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(21));
300 TH1F *gProtonsPointOnITSLayer3Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(22));
301 TH1F *gProtonsPointOnITSLayer4Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(23));
302 TH1F *gProtonsPointOnITSLayer5Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(24));
303 TH1F *gProtonsPointOnITSLayer6Pass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(25));
304 TH1F *gProtonsNumberOfTPCdEdxPointsPass = dynamic_cast<TH1F *>(fQAProtonsAcceptedList->At(26));
305
306 //Rejected protons
307 TList *fQAProtonsRejectedList = dynamic_cast<TList *>(gListGlobalQA->At(2));
308 TH1F *gProtonsITSClustersReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(0));
309 TH1F *gProtonsChi2PerClusterITSReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(1));
310 TH1F *gProtonsTPCClustersReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(2));
311 TH1F *gProtonsChi2PerClusterTPCReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(3));
312 TH1F *gProtonsExtCov11Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(4));
313 TH1F *gProtonsExtCov22Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(5));
314 TH1F *gProtonsExtCov33Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(6));
315 TH1F *gProtonsExtCov44Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(7));
316 TH1F *gProtonsExtCov55Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(8));
317 TH1F *gProtonsSigmaToVertexReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(9));
318 TH1F *gProtonsSigmaToVertexTPCReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(10));
319 TH1F *gProtonsDCAXYReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(11));
320 TH1F *gProtonsDCAXYTPCReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(12));
321 TH1F *gProtonsDCAZReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(13));
322 TH1F *gProtonsDCAZTPCReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(14));
323 TH1F *gProtonsConstrainChi2Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(15));
324 TH1F *gProtonsITSRefitReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(16));
325 TH1F *gProtonsTPCRefitReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(17));
326 TH1F *gProtonsESDpidReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(18));
327 TH1F *gProtonsTPCpidReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(19));
328 TH1F *gProtonsPointOnITSLayer1Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(20));
329 TH1F *gProtonsPointOnITSLayer2Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(21));
330 TH1F *gProtonsPointOnITSLayer3Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(22));
331 TH1F *gProtonsPointOnITSLayer4Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(23));
332 TH1F *gProtonsPointOnITSLayer5Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(24));
333 TH1F *gProtonsPointOnITSLayer6Reject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(25));
334 TH1F *gProtonsNumberOfTPCdEdxPointsReject = dynamic_cast<TH1F *>(fQAProtonsRejectedList->At(26));
335
336 //Accepted antiprotons
337 TList *fQAAntiProtonsAcceptedList = dynamic_cast<TList *>(gListGlobalQA->At(3));
338 TH1F *gAntiProtonsITSClustersPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(0));
339 TH1F *gAntiProtonsChi2PerClusterITSPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(1));
340 TH1F *gAntiProtonsTPCClustersPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(2));
341 TH1F *gAntiProtonsChi2PerClusterTPCPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(3));
342 TH1F *gAntiProtonsExtCov11Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(4));
343 TH1F *gAntiProtonsExtCov22Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(5));
344 TH1F *gAntiProtonsExtCov33Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(6));
345 TH1F *gAntiProtonsExtCov44Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(7));
346 TH1F *gAntiProtonsExtCov55Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(8));
347 TH1F *gAntiProtonsSigmaToVertexPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(9));
348 TH1F *gAntiProtonsSigmaToVertexTPCPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(10));
349 TH1F *gAntiProtonsDCAXYPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(11));
350 TH1F *gAntiProtonsDCAXYTPCPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(12));
351 TH1F *gAntiProtonsDCAZPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(13));
352 TH1F *gAntiProtonsDCAZTPCPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(14));
353 TH1F *gAntiProtonsConstrainChi2Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(15));
354 TH1F *gAntiProtonsITSRefitPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(16));
355 TH1F *gAntiProtonsTPCRefitPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(17));
356 TH1F *gAntiProtonsESDpidPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(18));
357 TH1F *gAntiProtonsTPCpidPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(19));
358 TH1F *gAntiProtonsPointOnITSLayer1Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(20));
359 TH1F *gAntiProtonsPointOnITSLayer2Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(21));
360 TH1F *gAntiProtonsPointOnITSLayer3Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(22));
361 TH1F *gAntiProtonsPointOnITSLayer4Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(23));
362 TH1F *gAntiProtonsPointOnITSLayer5Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(24));
363 TH1F *gAntiProtonsPointOnITSLayer6Pass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(25));
364 TH1F *gAntiProtonsNumberOfTPCdEdxPointsPass = dynamic_cast<TH1F *>(fQAAntiProtonsAcceptedList->At(26));
365
366 //Rejected antiprotons
367 TList *fQAAntiProtonsRejectedList = dynamic_cast<TList *>(gListGlobalQA->At(4));
368 TH1F *gAntiProtonsITSClustersReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(0));
369 TH1F *gAntiProtonsChi2PerClusterITSReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(1));
370 TH1F *gAntiProtonsTPCClustersReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(2));
371 TH1F *gAntiProtonsChi2PerClusterTPCReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(3));
372 TH1F *gAntiProtonsExtCov11Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(4));
373 TH1F *gAntiProtonsExtCov22Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(5));
374 TH1F *gAntiProtonsExtCov33Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(6));
375 TH1F *gAntiProtonsExtCov44Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(7));
376 TH1F *gAntiProtonsExtCov55Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(8));
377 TH1F *gAntiProtonsSigmaToVertexReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(9));
378 TH1F *gAntiProtonsSigmaToVertexTPCReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(10));
379 TH1F *gAntiProtonsDCAXYReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(11));
380 TH1F *gAntiProtonsDCAXYTPCReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(12));
381 TH1F *gAntiProtonsDCAZReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(13));
382 TH1F *gAntiProtonsDCAZTPCReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(14));
383 TH1F *gAntiProtonsConstrainChi2Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(15));
384 TH1F *gAntiProtonsITSRefitReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(16));
385 TH1F *gAntiProtonsTPCRefitReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(17));
386 TH1F *gAntiProtonsESDpidReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(18));
387 TH1F *gAntiProtonsTPCpidReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(19));
388 TH1F *gAntiProtonsPointOnITSLayer1Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(20));
389 TH1F *gAntiProtonsPointOnITSLayer2Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(21));
390 TH1F *gAntiProtonsPointOnITSLayer3Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(22));
391 TH1F *gAntiProtonsPointOnITSLayer4Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(23));
392 TH1F *gAntiProtonsPointOnITSLayer5Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(24));
393 TH1F *gAntiProtonsPointOnITSLayer6Reject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(25));
394 TH1F *gAntiProtonsNumberOfTPCdEdxPointsReject = dynamic_cast<TH1F *>(fQAAntiProtonsRejectedList->At(26));
395
396 //__________________________________________________//
790140ac 397 TCanvas *c1 = new TCanvas("c1","ITS clusters",0,0,600,400);
735cc63d 398 c1->SetFillColor(10); c1->SetHighLightColor(10);
399 c1->Divide(2,1);
400 c1->cd(1); gProtonsITSClustersPass->Draw();
401 gProtonsITSClustersReject->Draw("same");
402 c1->cd(2); gAntiProtonsITSClustersPass->Draw();
403 gAntiProtonsITSClustersReject->Draw("same");
404
790140ac 405 TCanvas *c2 = new TCanvas("c2","chi^2 per ITS cluster",0,100,600,400);
735cc63d 406 c2->SetFillColor(10); c2->SetHighLightColor(10);
407 c2->Divide(2,1);
408 c2->cd(1); gProtonsChi2PerClusterITSPass->Draw();
409 gProtonsChi2PerClusterITSReject->Draw("same");
410 c2->cd(2); gAntiProtonsChi2PerClusterITSPass->Draw();
411 gAntiProtonsChi2PerClusterITSReject->Draw("same");
412
790140ac 413 TCanvas *c3 = new TCanvas("c3","TPC clusters",0,200,600,400);
735cc63d 414 c3->SetFillColor(10); c3->SetHighLightColor(10);
415 c3->Divide(2,1);
416 c3->cd(1); gProtonsTPCClustersPass->Draw();
417 gProtonsTPCClustersReject->Draw("same");
418 c3->cd(2); gAntiProtonsTPCClustersPass->Draw();
419 gAntiProtonsTPCClustersReject->Draw("same");
420
790140ac 421 TCanvas *c4 = new TCanvas("c4","chi^2 per TPC cluster",0,300,600,400);
735cc63d 422 c4->SetFillColor(10); c4->SetHighLightColor(10);
423 c4->Divide(2,1);
424 c4->cd(1); gProtonsChi2PerClusterTPCPass->Draw();
425 gProtonsChi2PerClusterTPCReject->Draw("same");
426 c4->cd(2); gAntiProtonsChi2PerClusterTPCPass->Draw();
427 gAntiProtonsChi2PerClusterTPCReject->Draw("same");
428
37cb8683 429 if(gProtonsExtCov11Pass->GetEntries() != 0) {
430 TCanvas *c5 = new TCanvas("c5","Cov11",0,400,600,400);
431 c5->SetFillColor(10); c5->SetHighLightColor(10);
432 c5->Divide(2,1);
433 c5->cd(1)->SetLogy(); gProtonsExtCov11Pass->Draw();
434 gProtonsExtCov11Reject->Draw("same");
435 c5->cd(2)->SetLogy(); gAntiProtonsExtCov11Pass->Draw();
436 gAntiProtonsExtCov11Reject->Draw("same");
437 }
438
439 if(gProtonsExtCov11Pass->GetEntries() != 0) {
440 TCanvas *c6 = new TCanvas("c6","Cov22",0,500,600,400);
441 c6->SetFillColor(10); c6->SetHighLightColor(10);
442 c6->Divide(2,1);
443 c6->cd(1)->SetLogy(); gProtonsExtCov22Pass->Draw();
444 gProtonsExtCov22Reject->Draw("same");
445 c6->cd(2)->SetLogy(); gAntiProtonsExtCov22Pass->Draw();
446 gAntiProtonsExtCov22Reject->Draw("same");
447 }
448
449 if(gProtonsExtCov11Pass->GetEntries() != 0) {
450 TCanvas *c7 = new TCanvas("c7","Cov33",600,0,600,400);
451 c7->SetFillColor(10); c7->SetHighLightColor(10);
452 c7->Divide(2,1);
453 c7->cd(1)->SetLogy(); gProtonsExtCov33Pass->Draw();
454 gProtonsExtCov33Reject->Draw("same");
455 c7->cd(2)->SetLogy(); gAntiProtonsExtCov33Pass->Draw();
456 gAntiProtonsExtCov33Reject->Draw("same");
457 }
458
459 if(gProtonsExtCov11Pass->GetEntries() != 0) {
460 TCanvas *c8 = new TCanvas("c8","Cov44",600,100,600,400);
461 c8->SetFillColor(10); c8->SetHighLightColor(10);
462 c8->Divide(2,1);
463 c8->cd(1)->SetLogy(); gProtonsExtCov44Pass->Draw();
464 gProtonsExtCov44Reject->Draw("same");
465 c8->cd(2)->SetLogy(); gAntiProtonsExtCov44Pass->Draw();
466 gAntiProtonsExtCov44Reject->Draw("same");
467 }
468
469 if(gProtonsExtCov11Pass->GetEntries() != 0) {
470 TCanvas *c9 = new TCanvas("c9","Cov55",600,200,600,400);
471 c9->SetFillColor(10); c9->SetHighLightColor(10);
472 c9->Divide(2,1);
473 c9->cd(1)->SetLogy(); gProtonsExtCov55Pass->Draw();
474 gProtonsExtCov55Reject->Draw("same");
475 c9->cd(2)->SetLogy(); gAntiProtonsExtCov55Pass->Draw();
476 gAntiProtonsExtCov55Reject->Draw("same");
477 }
478
479 if(gProtonsSigmaToVertexPass->GetEntries() != 0) {
480 TCanvas *c10 = new TCanvas("c10","N-sigma to Vertex",600,300,600,400);
481 c10->SetFillColor(10); c10->SetHighLightColor(10);
482 c10->Divide(2,1);
483 c10->cd(1)->SetLogy(); gProtonsSigmaToVertexPass->Draw();
484 gProtonsSigmaToVertexReject->Draw("same");
485 c10->cd(2)->SetLogy(); gAntiProtonsSigmaToVertexPass->Draw();
486 gAntiProtonsSigmaToVertexReject->Draw("same");
487 }
488
489 if(gProtonsSigmaToVertexTPCPass->GetEntries() != 0) {
490 TCanvas *c11 = new TCanvas("c11","N-sigma to Vertex (TPC)",600,400,600,400);
491 c11->SetFillColor(10); c11->SetHighLightColor(10);
492 c11->Divide(2,1);
493 c11->cd(1)->SetLogy(); gProtonsSigmaToVertexTPCPass->Draw();
494 gProtonsSigmaToVertexTPCReject->Draw("same");
495 c11->cd(2)->SetLogy(); gAntiProtonsSigmaToVertexTPCPass->Draw();
496 gAntiProtonsSigmaToVertexTPCReject->Draw("same");
497 }
498
499 if(gProtonsDCAXYPass->GetEntries() != 0) {
500 TCanvas *c12 = new TCanvas("c12","dca(xy)",600,500,600,400);
501 c12->SetFillColor(10); c12->SetHighLightColor(10);
502 c12->Divide(2,1);
503 c12->cd(1)->SetLogy(); gProtonsDCAXYPass->Draw();
504 gProtonsDCAXYReject->Draw("same");
505 c12->cd(2)->SetLogy(); gAntiProtonsDCAXYPass->Draw();
506 gAntiProtonsDCAXYReject->Draw("same");
507 }
508
509 if(gProtonsDCAXYTPCPass->GetEntries() != 0) {
510 TCanvas *c13 = new TCanvas("c13","dca(xy - TPC)",1200,0,600,400);
511 c13->SetFillColor(10); c13->SetHighLightColor(10);
512 c13->Divide(2,1);
513 c13->cd(1)->SetLogy(); gProtonsDCAXYTPCPass->Draw();
514 gProtonsDCAXYTPCReject->Draw("same");
515 c13->cd(2)->SetLogy(); gAntiProtonsDCAXYTPCPass->Draw();
516 gAntiProtonsDCAXYTPCReject->Draw("same");
517 }
518
519 if(gProtonsDCAZPass->GetEntries() != 0) {
520 TCanvas *c14 = new TCanvas("c14","dca(z)",1200,100,600,400);
521 c14->SetFillColor(10); c14->SetHighLightColor(10);
522 c14->Divide(2,1);
523 c14->cd(1)->SetLogy(); gProtonsDCAZPass->Draw();
524 gProtonsDCAZReject->Draw("same");
525 c14->cd(2)->SetLogy(); gAntiProtonsDCAZPass->Draw();
526 gAntiProtonsDCAZReject->Draw("same");
527 }
528
529 if(gProtonsDCAZTPCPass->GetEntries() != 0) {
530 TCanvas *c15 = new TCanvas("c15","dca(z - TPC)",1200,200,600,400);
531 c15->SetFillColor(10); c15->SetHighLightColor(10);
532 c15->Divide(2,1);
533 c15->cd(1)->SetLogy(); gProtonsDCAZTPCPass->Draw();
534 gProtonsDCAZTPCReject->Draw("same");
535 c15->cd(2)->SetLogy(); gAntiProtonsDCAZTPCPass->Draw();
536 gAntiProtonsDCAZTPCReject->Draw("same");
537 }
735cc63d 538
790140ac 539 TCanvas *c16 = new TCanvas("c16","TPC clusters (dE/dx)",1200,300,600,400);
735cc63d 540 c16->SetFillColor(10); c16->SetHighLightColor(10);
541 c16->Divide(2,1);
542 c16->cd(1); gProtonsNumberOfTPCdEdxPointsPass->Draw();
543 gProtonsNumberOfTPCdEdxPointsReject->Draw("same");
544 c16->cd(2); gAntiProtonsNumberOfTPCdEdxPointsPass->Draw();
545 gAntiProtonsNumberOfTPCdEdxPointsReject->Draw("same");
546
547 //================Vertex QA================//
548 TList *gListVertexQA = dynamic_cast<TList *>(listQA->At(1));
549 TH1F *gHistVx = dynamic_cast<TH1F *>(gListVertexQA->At(0));
550 TH1F *gHistVxAccepted = dynamic_cast<TH1F *>(gListVertexQA->At(1));
551 gHistVxAccepted->SetFillColor(10);
552 TH1F *gHistVy = dynamic_cast<TH1F *>(gListVertexQA->At(2));
553 TH1F *gHistVyAccepted = dynamic_cast<TH1F *>(gListVertexQA->At(3));
554 gHistVyAccepted->SetFillColor(10);
555 TH1F *gHistVz = dynamic_cast<TH1F *>(gListVertexQA->At(4));
556 TH1F *gHistVzAccepted = dynamic_cast<TH1F *>(gListVertexQA->At(5));
557 gHistVzAccepted->SetFillColor(10);
e56f08ed 558 TH1F *gHistNumberOfContributors = dynamic_cast<TH1F *>(gListVertexQA->At(6));
559 gHistNumberOfContributors->SetFillColor(10);
735cc63d 560
790140ac 561 TCanvas *cVertex = new TCanvas("cVertex","Vertex QA",0,0,900,400);
735cc63d 562 cVertex->SetFillColor(10); cVertex->SetHighLightColor(10);
563 cVertex->Divide(3,1);
790140ac 564 cVertex->cd(1)->SetLogy(); gHistVx->Draw(); gHistVxAccepted->Draw("same");
565 cVertex->cd(2)->SetLogy(); gHistVy->Draw(); gHistVyAccepted->Draw("same");
566 cVertex->cd(3)->SetLogy(); gHistVz->Draw(); gHistVzAccepted->Draw("same");
e56f08ed 567
568 TCanvas *cVertexNContributors = new TCanvas("cVertexNContributors",
569 "Vertex QA",0,0,400,400);
570 gHistNumberOfContributors->Draw();
735cc63d 571}
629e3967 572
573//________________________________________________________//
574void PrintYields(TH1 *h) {
575 Double_t sum = 0.0, error = 0.0;
576 for(Int_t iBin = 1; iBin <= h->GetNbinsX(); iBin++) {
577 sum += h->GetBinContent(iBin);
578 error += TMath::Power(h->GetBinError(iBin),2);
579 }
580 error = TMath::Sqrt(error);
581
582 Printf("==================================");
583 Printf("Histogram: %s",h->GetName());
584 Printf("Yields: %lf - %lf",sum,error);
585 Printf("==================================");
586}