1 #if !defined(__CINT__) || defined(__MAKECINT__)
6 #include <TGraphErrors.h>
11 #include <TGridResult.h>
19 #include <TLegendEntry.h>
20 #include <Riostream.h>
21 #include "AliITSgeomTGeo.h"
24 TString pdfFileNames="";
25 void MakePlot(Int_t run1=-1,Int_t run2=99999999,TString ntupleFileName="TrendingITS.root");
26 void PlotITSSA(TFile *fil,Int_t *myIndex,Int_t kRunsToPlot);
27 void FillITSSAntuple(TFile* f,TNtuple* nt, Int_t nrun);
28 void AliITSQAtrend(TString runListFile="LHC11hNo.txt",TString ntupleFileName="TrendingITS.root");
30 ////////////////////////////////////////////////////////////////
31 // Please, read this comment before using this macro
33 // INPUT FILE: a text file (by default LHC11hNo.txt) which contains
34 // a list of the complete path+file name of the QAresults root files
35 // (without the alien:// prefix).
36 // One file per line. The order is irrelevant.
40 // Function AliITSQAtrend():
41 // it looks for a local root file named TrendingITS.root,
42 // where the ntuples used to build the trending plots are
43 // stored. This file is used to generate incrementally the ntuple contents:
44 // when you add a new entry in the LHC11hNo.txt file and you have a
45 // local copy of the TrendingITS.root file, only the additional run will
46 // be processed. The whole list is processed only the first time you use the
47 // macro. Please, bear in mind that this macro is RAM-intensive: all the
48 // ntuples are kept in memory. It is better to add few runs to the list at
49 // each time, according to the RAM of your computer.
50 // The function AliITSQAtrend does not produce any plot.
52 // Function MakePlot(run1,run2):
53 // it produces the plots. For each canvas a PDF file is created.
54 // A PDF file with all the canvases merged is also produced
55 // The first two argument define a range for the runs to be displayed
56 // These two arguments are optional: by default, all the runs
57 // found in the ntuples are displayed
58 ////////////////////////////////////////////////////////////////
62 void MakePlot(Int_t run1,Int_t run2,TString ntupleFileName){
65 printf("****** ERROR: invalid run range %d - %d\n",run1,run2);
69 TFile* fil=new TFile(ntupleFileName.Data(),"read");
71 printf("File with ntuple does not exist\n");
74 TNtuple* ntsdd=(TNtuple*)fil->Get("ntsdd");
77 Float_t meanTrPts3,errmeanTrPts3,meanTrPts4,errmeanTrPts4;
78 Float_t minDrTime,errminDrTime,meanDrTime,errmeanDrTime;
79 Float_t fracTrackWithClu1,fracTrackWithClu2,errfracTrackWithClu1,errfracTrackWithClu2;
80 Float_t fracTrackWithClu3,fracTrackWithClu4,errfracTrackWithClu3,errfracTrackWithClu4;
81 Float_t fracTrackWithClu5,fracTrackWithClu6,errfracTrackWithClu5,errfracTrackWithClu6;
82 Float_t fracExtra,errfracExtra;
83 Float_t meandEdxLay3,errmeandEdxLay3,meandEdxLay4,errmeandEdxLay4;
84 Float_t meandEdxTB0,errmeandEdxTB0,meandEdxTB5,errmeandEdxTB5;
85 Float_t nMod95,nMod80,nMod60,nModEmpty;
87 ntsdd->SetBranchAddress("nrun",&nrun);
88 ntsdd->SetBranchAddress("fracTrackWithClu1",&fracTrackWithClu1);
89 ntsdd->SetBranchAddress("errfracTrackWithClu1",&errfracTrackWithClu1);
90 ntsdd->SetBranchAddress("fracTrackWithClu2",&fracTrackWithClu2);
91 ntsdd->SetBranchAddress("errfracTrackWithClu2",&errfracTrackWithClu2);
92 ntsdd->SetBranchAddress("fracTrackWithClu3",&fracTrackWithClu3);
93 ntsdd->SetBranchAddress("errfracTrackWithClu3",&errfracTrackWithClu3);
94 ntsdd->SetBranchAddress("fracTrackWithClu4",&fracTrackWithClu4);
95 ntsdd->SetBranchAddress("errfracTrackWithClu4",&errfracTrackWithClu4);
96 ntsdd->SetBranchAddress("fracTrackWithClu5",&fracTrackWithClu5);
97 ntsdd->SetBranchAddress("errfracTrackWithClu5",&errfracTrackWithClu5);
98 ntsdd->SetBranchAddress("fracTrackWithClu6",&fracTrackWithClu6);
99 ntsdd->SetBranchAddress("errfracTrackWithClu6",&errfracTrackWithClu6);
100 ntsdd->SetBranchAddress("nMod95",&nMod95);
101 ntsdd->SetBranchAddress("nMod80",&nMod80);
102 ntsdd->SetBranchAddress("nMod60",&nMod60);
103 ntsdd->SetBranchAddress("nModEmpty",&nModEmpty);
105 ntsdd->SetBranchAddress("meanTrPts3",&meanTrPts3);
106 ntsdd->SetBranchAddress("errmeanTrPts3",&errmeanTrPts3);
107 ntsdd->SetBranchAddress("meanTrPts4",&meanTrPts4);
108 ntsdd->SetBranchAddress("errmeanTrPts4",&errmeanTrPts4);
109 ntsdd->SetBranchAddress("minDrTime",&minDrTime);
110 ntsdd->SetBranchAddress("errminDrTime",&errminDrTime);
111 ntsdd->SetBranchAddress("meanDrTime",&meanDrTime);
112 ntsdd->SetBranchAddress("errmeanDrTime",&errmeanDrTime);
113 ntsdd->SetBranchAddress("fracExtra",&fracExtra);
114 ntsdd->SetBranchAddress("errfracExtra",&errfracExtra);
115 ntsdd->SetBranchAddress("meandEdxTB0",&meandEdxTB0);
116 ntsdd->SetBranchAddress("errmeandEdxTB0",&errmeandEdxTB0);
117 ntsdd->SetBranchAddress("meandEdxTB5",&meandEdxTB5);
118 ntsdd->SetBranchAddress("errmeandEdxTB5",&errmeandEdxTB5);
119 ntsdd->SetBranchAddress("meandEdxLay3",&meandEdxLay3);
120 ntsdd->SetBranchAddress("errmeandEdxLay3",&errmeandEdxLay3);
121 ntsdd->SetBranchAddress("meandEdxLay4",&meandEdxLay4);
122 ntsdd->SetBranchAddress("errmeandEdxLay4",&errmeandEdxLay4);
124 // Sort entries according to run number in the chosen range
125 // Same order is assumed for all the subsequent ntuples
126 Int_t nr=ntsdd->GetEntries();
127 Int_t *myIndex = new Int_t [nr];
128 Int_t *noRuns = new Int_t [nr];
130 printf("Processing runs from %d up to %d\n",run1,run2);
131 for(Int_t i=0; i<nr;i++){
133 Int_t intrun = static_cast<Int_t>(nrun+0.01);
134 if(intrun>=run1 && intrun<=run2){
135 printf("Accepting run number %d in position %d\n",intrun,kRunsToPlot);
141 printf("Rejecting run number %d - out of range\n",intrun);
144 TMath::Sort(nr,noRuns,myIndex,kFALSE);
145 printf("Total number of runs accepted fot display %d\n",kRunsToPlot);
146 if(kRunsToPlot==0)return;
147 for(Int_t i=0;i<kRunsToPlot;i++)printf("Position %d ) Run: %d\n",i,noRuns[myIndex[i]]);
149 TH1F* histotrp3=new TH1F("histotrp3","",kRunsToPlot,0.,kRunsToPlot);
150 TH1F* histotrp4=new TH1F("histotrp4","",kRunsToPlot,0.,kRunsToPlot);
151 TH1F* histominTime=new TH1F("histominTime","",kRunsToPlot,0.,kRunsToPlot);
152 TH1F* histomeanTime=new TH1F("histomeanTime","",kRunsToPlot,0.,kRunsToPlot);
153 TH1F* histofracExtra=new TH1F("histofracExtra","",kRunsToPlot,0.,kRunsToPlot);
154 TH1F* histodEdxTB0=new TH1F("histodEdxTB0","",kRunsToPlot,0.,kRunsToPlot);
155 TH1F* histodEdxTB5=new TH1F("histodEdxTB5","",kRunsToPlot,0.,kRunsToPlot);
156 TH1F* histodEdxLay3=new TH1F("histodEdxLay3","",kRunsToPlot,0.,kRunsToPlot);
157 TH1F* histodEdxLay4=new TH1F("histodEdxLay4","",kRunsToPlot,0.,kRunsToPlot);
158 TH1F* histoTrackClu1=new TH1F("histoTrackClu1","",kRunsToPlot,0.,kRunsToPlot);
159 TH1F* histoTrackClu2=new TH1F("histoTrackClu2","",kRunsToPlot,0.,kRunsToPlot);
160 TH1F* histoTrackClu3=new TH1F("histoTrackClu3","",kRunsToPlot,0.,kRunsToPlot);
161 TH1F* histoTrackClu4=new TH1F("histoTrackClu4","",kRunsToPlot,0.,kRunsToPlot);
162 TH1F* histoTrackClu5=new TH1F("histoTrackClu5","",kRunsToPlot,0.,kRunsToPlot);
163 TH1F* histoTrackClu6=new TH1F("histoTrackClu6","",kRunsToPlot,0.,kRunsToPlot);
165 TH1F* histoNmodEffBelow95=new TH1F("histoNmodEffBelow95","",kRunsToPlot,0.,kRunsToPlot);
166 TH1F* histoNmodEffBelow80=new TH1F("histoNmodEffBelow80","",kRunsToPlot,0.,kRunsToPlot);
167 TH1F* histoNmodEffBelow60=new TH1F("histoNmodEffBelow60","",kRunsToPlot,0.,kRunsToPlot);
168 TH1F* histoNmodEmpty=new TH1F("histoNmodEmpty","",kRunsToPlot,0.,kRunsToPlot);
170 for(Int_t i=0; i<kRunsToPlot;i++){
171 ntsdd->GetEvent(myIndex[i]);
172 histoTrackClu1->SetBinContent(i+1,fracTrackWithClu1);
173 histoTrackClu1->SetBinError(i+1,errfracTrackWithClu1);
174 histoTrackClu1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
175 histoTrackClu2->SetBinContent(i+1,fracTrackWithClu2);
176 histoTrackClu2->SetBinError(i+1,errfracTrackWithClu2);
177 histoTrackClu2->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
178 histoTrackClu3->SetBinContent(i+1,fracTrackWithClu3);
179 histoTrackClu3->SetBinError(i+1,errfracTrackWithClu3);
180 histoTrackClu3->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
181 histoTrackClu4->SetBinContent(i+1,fracTrackWithClu4);
182 histoTrackClu4->SetBinError(i+1,errfracTrackWithClu4);
183 histoTrackClu4->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
184 histoTrackClu5->SetBinContent(i+1,fracTrackWithClu5);
185 histoTrackClu5->SetBinError(i+1,errfracTrackWithClu5);
186 histoTrackClu5->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
187 histoTrackClu6->SetBinContent(i+1,fracTrackWithClu6);
188 histoTrackClu6->SetBinError(i+1,errfracTrackWithClu6);
189 histoTrackClu6->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
190 histominTime->SetBinContent(i+1,minDrTime);
191 histominTime->SetBinError(i+1,errminDrTime);
192 histominTime->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
193 histomeanTime->SetBinContent(i+1,meanDrTime);
194 histomeanTime->SetBinError(i+1,errmeanDrTime);
195 histomeanTime->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
196 histotrp3->SetBinContent(i+1,meanTrPts3);
197 histotrp3->SetBinError(i+1,errmeanTrPts3);
198 histotrp3->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
199 histotrp4->SetBinContent(i+1,meanTrPts4);
200 histotrp4->SetBinError(i+1,errmeanTrPts3);
201 histotrp4->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
202 histofracExtra->SetBinContent(i+1,fracExtra);
203 histofracExtra->SetBinError(i+1,errfracExtra);
204 histofracExtra->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
205 histodEdxTB0->SetBinContent(i+1,meandEdxTB0);
206 histodEdxTB0->SetBinError(i+1,errmeandEdxTB0);
207 histodEdxTB0->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
208 histodEdxTB5->SetBinContent(i+1,meandEdxTB5);
209 histodEdxTB5->SetBinError(i+1,errmeandEdxTB5);
210 histodEdxTB5->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
211 histodEdxLay3->SetBinContent(i+1,meandEdxLay3);
212 histodEdxLay3->SetBinError(i+1,errmeandEdxLay3);
213 histodEdxLay3->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
214 histodEdxLay4->SetBinContent(i+1,meandEdxLay4);
215 histodEdxLay4->SetBinError(i+1,errmeandEdxLay4);
216 histodEdxLay4->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
218 histoNmodEffBelow95->SetBinContent(i+1,nMod95);
219 histoNmodEffBelow95->SetBinError(i+1,0.0000001);
220 histoNmodEffBelow95->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
221 histoNmodEffBelow80->SetBinContent(i+1,nMod80);
222 histoNmodEffBelow80->SetBinError(i+1,0.0000001);
223 histoNmodEffBelow80->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
224 histoNmodEffBelow60->SetBinContent(i+1,nMod60);
225 histoNmodEffBelow60->SetBinError(i+1,0.0000001);
226 histoNmodEffBelow60->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
227 histoNmodEmpty->SetBinContent(i+1,nModEmpty);
228 histoNmodEmpty->SetBinError(i+1,0.000001);
229 histoNmodEmpty->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrun));
235 TNtuple* ntssd=(TNtuple*)fil->Get("ntssd");
237 Float_t nrunSSD, meandEdxLay5,errmeandEdxLay5,meandEdxLay6,errmeandEdxLay6;
238 Float_t ChargeRatioL5,errChargeratioL5,ChargeRatioL6, errChargeratioL6, moduleOff;
240 ntssd->SetBranchAddress("nrun",&nrunSSD);
241 ntssd->SetBranchAddress("meandEdxLay5",&meandEdxLay5);
242 ntssd->SetBranchAddress("errmeandEdxLay5",&errmeandEdxLay5);
243 ntssd->SetBranchAddress("meandEdxLay6",&meandEdxLay6);
244 ntssd->SetBranchAddress("errmeandEdxLay6",&errmeandEdxLay6);
245 ntssd->SetBranchAddress("ChargeRatioL5",&ChargeRatioL5);
246 ntssd->SetBranchAddress("errChargeratioL5",&errChargeratioL5);
247 ntssd->SetBranchAddress("ChargeRatioL6",&ChargeRatioL6);
248 ntssd->SetBranchAddress("errChargeratioL6",&errChargeratioL6);
249 ntssd->SetBranchAddress("moduleOff",&moduleOff);
251 TH1F* histodEdxLay5=new TH1F("histodEdxLay5","",kRunsToPlot,0.,kRunsToPlot);
252 TH1F* histodEdxLay6=new TH1F("histodEdxLay6","",kRunsToPlot,0.,kRunsToPlot);
254 TH1F* histoChargeRatioLay5=new TH1F("histoChargeRatioLay5","",kRunsToPlot,0.,kRunsToPlot);
255 TH1F* histoChargeRatioLay6=new TH1F("histoChargeRatioLay6","",kRunsToPlot,0.,kRunsToPlot);
257 TH1F* histoEmpty=new TH1F("histoEmpty","",kRunsToPlot,0.,kRunsToPlot);
259 for(Int_t i=0; i<kRunsToPlot;i++){
261 ntssd->GetEvent(myIndex[i]);
263 histodEdxLay5->SetBinContent(i+1,meandEdxLay5);
264 histodEdxLay5->SetBinError(i+1,errmeandEdxLay5);
265 histodEdxLay5->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunSSD));
267 histodEdxLay6->SetBinContent(i+1,meandEdxLay6);
268 histodEdxLay6->SetBinError(i+1,errmeandEdxLay6);
269 histodEdxLay6->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunSSD));
271 histoChargeRatioLay5->SetBinContent(i+1,ChargeRatioL5);
272 histoChargeRatioLay5->SetBinError(i+1,errChargeratioL5);
273 histoChargeRatioLay5->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunSSD));
275 histoChargeRatioLay6->SetBinContent(i+1,ChargeRatioL6);
276 histoChargeRatioLay6->SetBinError(i+1,errChargeratioL6);
277 histoChargeRatioLay6->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunSSD));
279 histoEmpty->SetBinContent(i+1,moduleOff);
280 histoEmpty->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunSSD));
286 TNtuple* ntmatching=(TNtuple*)fil->Get("ntmatching");
324 Float_t errEffSPDPt02;
326 Float_t errEffSPDPt1;
328 Float_t errEffSPDPt10;
329 Float_t EffoneSPDPt02;
330 Float_t errEffoneSPDPt02;
331 Float_t EffoneSPDPt1;
332 Float_t errEffoneSPDPt1;
333 Float_t EffoneSPDPt10;
334 Float_t errEffoneSPDPt10;
336 Float_t errEffTOTPt02;
338 Float_t errEffTOTPt1;
340 Float_t errEffTOTPt10;
342 ntmatching->SetBranchAddress("nrun",&nrunMatch);
343 // ntmatching->SetBranchAddress("nrunMatch",&nrunMatch);
344 ntmatching->SetBranchAddress("FracSPD1",&FracSPD1);
345 ntmatching->SetBranchAddress("errFracSPD1",&errFracSPD1);
346 ntmatching->SetBranchAddress("FracSPD2",&FracSPD2);
347 ntmatching->SetBranchAddress("errFracSPD2",&errFracSPD2);
348 ntmatching->SetBranchAddress("Eff6Pt02",&Eff6Pt02);
349 ntmatching->SetBranchAddress("errEff6Pt02",&errEff6Pt02);
350 ntmatching->SetBranchAddress("Eff6Pt1",&Eff6Pt1);
351 ntmatching->SetBranchAddress("errEff6Pt1",&errEff6Pt1);
352 ntmatching->SetBranchAddress("Eff6Pt10",&Eff6Pt10);
353 ntmatching->SetBranchAddress("errEff6Pt10",&errEff6Pt10);
354 ntmatching->SetBranchAddress("Eff5Pt02",&Eff5Pt02);
355 ntmatching->SetBranchAddress("errEff5Pt02",&errEff5Pt02);
356 ntmatching->SetBranchAddress("Eff5Pt1",&Eff5Pt1);
357 ntmatching->SetBranchAddress("errEff5Pt1",&errEff5Pt1);
358 ntmatching->SetBranchAddress("Eff5Pt10",&Eff5Pt10);
359 ntmatching->SetBranchAddress("errEff5Pt10",&errEff5Pt10);
360 ntmatching->SetBranchAddress("Eff4Pt02",&Eff4Pt02);
361 ntmatching->SetBranchAddress("errEff4Pt02",&errEff4Pt02);
362 ntmatching->SetBranchAddress("Eff4Pt1",&Eff4Pt1);
363 ntmatching->SetBranchAddress("errEff4Pt1",&errEff4Pt1);
364 ntmatching->SetBranchAddress("Eff4Pt10",&Eff4Pt10);
365 ntmatching->SetBranchAddress("errEff4Pt10",&errEff4Pt10);
366 ntmatching->SetBranchAddress("Eff3Pt02",&Eff3Pt02);
367 ntmatching->SetBranchAddress("errEff3Pt02",&errEff3Pt02);
368 ntmatching->SetBranchAddress("Eff3Pt1",&Eff3Pt1);
369 ntmatching->SetBranchAddress("errEff3Pt1",&errEff3Pt1);
370 ntmatching->SetBranchAddress("Eff3Pt10",&Eff3Pt10);
371 ntmatching->SetBranchAddress("errEff3Pt10",&errEff3Pt10);
372 ntmatching->SetBranchAddress("Eff2Pt02",&Eff2Pt02);
373 ntmatching->SetBranchAddress("errEff2Pt02",&errEff2Pt02);
374 ntmatching->SetBranchAddress("Eff2Pt1",&Eff2Pt1);
375 ntmatching->SetBranchAddress("errEff2Pt1",&errEff2Pt1);
376 ntmatching->SetBranchAddress("Eff2Pt10",&Eff2Pt10);
377 ntmatching->SetBranchAddress("errEff2Pt10",&errEff2Pt10);
378 ntmatching->SetBranchAddress("EffSPDPt02",&EffSPDPt02);
379 ntmatching->SetBranchAddress("errEffSPDPt02",&errEffSPDPt02);
380 ntmatching->SetBranchAddress("EffSPDPt1",&EffSPDPt1);
381 ntmatching->SetBranchAddress("errEffSPDPt1",&errEffSPDPt1);
382 ntmatching->SetBranchAddress("EffSPDPt10",&EffSPDPt10);
383 ntmatching->SetBranchAddress("errEffSPDPt10",&errEffSPDPt10);
384 ntmatching->SetBranchAddress("EffoneSPDPt02",&EffoneSPDPt02);
385 ntmatching->SetBranchAddress("errEffoneSPDPt02",&errEffoneSPDPt02);
386 ntmatching->SetBranchAddress("EffoneSPDPt1",&EffoneSPDPt1);
387 ntmatching->SetBranchAddress("errEffoneSPDPt1",&errEffoneSPDPt1);
388 ntmatching->SetBranchAddress("EffoneSPDPt10",&EffoneSPDPt10);
389 ntmatching->SetBranchAddress("errEffoneSPDPt10",&errEffoneSPDPt10);
390 ntmatching->SetBranchAddress("EffTOTPt02",&EffTOTPt02);
391 ntmatching->SetBranchAddress("errEffTOTPt02",&errEffTOTPt02);
392 ntmatching->SetBranchAddress("EffTOTPt1",&EffTOTPt1);
393 ntmatching->SetBranchAddress("errEffTOTPt1",&errEffTOTPt1);
394 ntmatching->SetBranchAddress("EffTOTPt10",&EffTOTPt10);
395 ntmatching->SetBranchAddress("errEffTOTPt10",&errEffTOTPt10);
398 TH1F *hFracSPD1 = new TH1F("hFracSPD1","SPD inner; run number; Fraction of HSs",kRunsToPlot,0.,kRunsToPlot);
399 hFracSPD1->SetLineColor(kGreen+2);
400 hFracSPD1->SetMarkerColor(kGreen+2);
401 hFracSPD1->SetMarkerStyle(20);
403 TH1F *hFracSPD2 = new TH1F("hFracSPD2","SPD outer; run number; Fraction of HSs",kRunsToPlot,0.,kRunsToPlot);
404 hFracSPD2->SetLineColor(kYellow+2);
405 hFracSPD2->SetMarkerColor(kYellow+2);
406 hFracSPD2->SetMarkerStyle(20);
408 TH1F *hEffSPDPt02 = new TH1F("hEffSPDPt02","Efficiency - P_{T} = 0.2; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
409 hEffSPDPt02->SetLineWidth(2);
410 hEffSPDPt02->SetLineColor(kAzure+1);
411 hEffSPDPt02->SetMarkerColor(kAzure+1);
412 hEffSPDPt02->SetMarkerStyle(20);
414 TH1F *hEffSPDPt1 = new TH1F("hEffSPDPt1","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
415 hEffSPDPt1->SetLineWidth(2);
416 hEffSPDPt1->SetLineColor(kAzure+1);
417 hEffSPDPt1->SetMarkerColor(kAzure+1);
418 hEffSPDPt1->SetMarkerStyle(20);
420 TH1F *hEffSPDPt10 = new TH1F("hEffSPDPt10","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
421 hEffSPDPt10->SetLineWidth(2);
422 hEffSPDPt10->SetLineColor(kAzure+1);
423 hEffSPDPt10->SetMarkerColor(kAzure+1);
424 hEffSPDPt10->SetMarkerStyle(20);
426 TH1F *hEffoneSPDPt02 = new TH1F("hEffoneSPDPt02","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
427 hEffoneSPDPt02->SetLineWidth(2);
428 hEffoneSPDPt02->SetLineColor(kGray);
429 hEffoneSPDPt02->SetMarkerColor(kGray);
430 hEffoneSPDPt02->SetMarkerStyle(20);
431 TH1F *hEffoneSPDPt1 = new TH1F("hEffoneSPDPt1","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
432 hEffoneSPDPt1->SetLineWidth(2);
433 hEffoneSPDPt1->SetLineColor(kGray);
434 hEffoneSPDPt1->SetMarkerColor(kGray);
435 hEffoneSPDPt1->SetMarkerStyle(20);
436 TH1F *hEffoneSPDPt10 = new TH1F("hEffoneSPDPt10","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
437 hEffoneSPDPt10->SetLineWidth(2);
438 hEffoneSPDPt10->SetLineColor(kGray);
439 hEffoneSPDPt10->SetMarkerColor(kGray);
440 hEffoneSPDPt10->SetMarkerStyle(20);
442 TH1F *hEff2Pt02 = new TH1F("hEff2Pt02","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
443 hEff2Pt02->SetLineWidth(2);
444 hEff2Pt02->SetLineColor(kViolet);
445 hEff2Pt02->SetMarkerColor(kViolet);
446 hEff2Pt02->SetMarkerStyle(20);
447 TH1F *hEff2Pt1 = new TH1F("hEff2Pt1","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
448 hEff2Pt1->SetLineWidth(2);
449 hEff2Pt1->SetLineColor(kViolet);
450 hEff2Pt1->SetMarkerColor(kViolet);
451 hEff2Pt1->SetMarkerStyle(20);
452 TH1F *hEff2Pt10 = new TH1F("hEff2Pt10","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
453 hEff2Pt10->SetLineWidth(2);
454 hEff2Pt10->SetLineColor(kViolet);
455 hEff2Pt10->SetMarkerColor(kViolet);
456 hEff2Pt10->SetMarkerStyle(20);
458 TH1F *hEff3Pt02 = new TH1F("hEff3Pt02","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
459 hEff3Pt02->SetLineWidth(2);
460 hEff3Pt02->SetLineColor(6);
461 hEff3Pt02->SetMarkerColor(6);
462 hEff3Pt02->SetMarkerStyle(20);
463 TH1F *hEff3Pt1 = new TH1F("hEff3Pt1","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
464 hEff3Pt1->SetLineWidth(2);
465 hEff3Pt1->SetLineColor(6);
466 hEff3Pt1->SetMarkerColor(6);
467 hEff3Pt1->SetMarkerStyle(20);
468 TH1F *hEff3Pt10 = new TH1F("hEff3Pt10","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
469 hEff3Pt10->SetLineWidth(2);
470 hEff3Pt10->SetLineColor(6);
471 hEff3Pt10->SetMarkerColor(6);
472 hEff3Pt10->SetMarkerStyle(20);
474 TH1F *hEff4Pt02 = new TH1F("hEff4Pt02","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
475 hEff4Pt02->SetLineWidth(2);
476 hEff4Pt02->SetLineColor(4);
477 hEff4Pt02->SetMarkerColor(4);
478 hEff4Pt02->SetMarkerStyle(20);
479 TH1F *hEff4Pt1 = new TH1F("hEff4Pt1","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
480 hEff4Pt1->SetLineWidth(2);
481 hEff4Pt1->SetLineColor(4);
482 hEff4Pt1->SetMarkerColor(4);
483 hEff4Pt1->SetMarkerStyle(20);
484 TH1F *hEff4Pt10 = new TH1F("hEff4Pt10","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
485 hEff4Pt10->SetLineWidth(2);
486 hEff4Pt10->SetLineColor(4);
487 hEff4Pt10->SetMarkerColor(4);
488 hEff4Pt10->SetMarkerStyle(20);
490 TH1F *hEff5Pt02 = new TH1F("hEff5Pt02","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
491 hEff5Pt02->SetLineWidth(2);
492 hEff5Pt02->SetLineColor(3);
493 hEff5Pt02->SetMarkerColor(3);
494 hEff5Pt02->SetMarkerStyle(20);
495 TH1F *hEff5Pt1 = new TH1F("hEff5Pt1","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
496 hEff5Pt1->SetLineWidth(2);
497 hEff5Pt1->SetLineColor(3);
498 hEff5Pt1->SetMarkerColor(3);
499 hEff5Pt1->SetMarkerStyle(20);
500 TH1F *hEff5Pt10 = new TH1F("hEff5Pt10","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
501 hEff5Pt10->SetLineWidth(3);
502 hEff5Pt10->SetLineColor(3);
503 hEff5Pt10->SetMarkerColor(3);
504 hEff5Pt10->SetMarkerStyle(20);
506 TH1F *hEff6Pt02 = new TH1F("hEff6Pt02","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
507 hEff6Pt02->SetLineWidth(2);
508 hEff6Pt02->SetLineColor(2);
509 hEff6Pt02->SetMarkerColor(2);
510 hEff6Pt02->SetMarkerStyle(20);
511 TH1F *hEff6Pt1 = new TH1F("hEff6Pt1","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
512 hEff6Pt1->SetLineWidth(2);
513 hEff6Pt1->SetLineColor(2);
514 hEff6Pt1->SetMarkerColor(2);
515 hEff6Pt1->SetMarkerStyle(20);
516 TH1F *hEff6Pt10 = new TH1F("hEff6Pt10","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
517 hEff6Pt10->SetLineWidth(2);
518 hEff6Pt10->SetLineColor(2);
519 hEff6Pt10->SetMarkerColor(2);
520 hEff6Pt10->SetMarkerStyle(20);
523 TH1F *hEffTOTPt02 = new TH1F("hEffTOTPt02","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
524 hEffTOTPt02->SetLineWidth(2);
525 hEffTOTPt02->SetLineColor(kBlue+2);
526 hEffTOTPt02->SetMarkerColor(kBlue+2);
527 hEffTOTPt02->SetMarkerStyle(20);
528 TH1F *hEffTOTPt1 = new TH1F("hEffTOTPt1","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
529 hEffTOTPt1->SetLineWidth(2);
530 hEffTOTPt1->SetLineColor(kBlue+2);
531 hEffTOTPt1->SetMarkerColor(kBlue+2);
532 hEffTOTPt1->SetMarkerStyle(20);
533 TH1F *hEffTOTPt10 = new TH1F("hEffTOTPt10","Efficiency; run number; TPC+ITS / TPC",kRunsToPlot,0.,kRunsToPlot);
534 hEffTOTPt10->SetLineWidth(2);
535 hEffTOTPt10->SetLineColor(kBlue+2);
536 hEffTOTPt10->SetMarkerColor(kBlue+2);
537 hEffTOTPt10->SetMarkerStyle(20);
539 // Int_t nEntriesMatch=ntmatching->GetEntries();
541 for(Int_t i=0;i<kRunsToPlot;i++){
543 ntmatching->GetEvent(myIndex[i]);
544 // Int_t bin=nrunMatch;
547 // cout<<i<<") "<<"Index= "<<myIndex[i]<<" nrun= "<<nrunMatch<<", FracSPD1= "<<FracSPD1<<", FracSPD2"<<FracSPD2<<endl;
548 hFracSPD1->SetBinContent(i+1,FracSPD1);
549 hFracSPD1->SetBinError(i+1,.01);
550 hFracSPD1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
552 // cout<<FracSPD1<<endl;
554 hFracSPD2->SetBinContent(i+1,FracSPD2);
555 hFracSPD2->SetBinError(i+1,.01);
556 hFracSPD2->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
558 // cout<<FracSPD2<<endl;
560 //-------------------------
562 hEff6Pt02->SetBinContent(i+1,Eff6Pt02);
563 hEff6Pt02->SetBinError(i+1,errEff6Pt02);
564 hEff6Pt02->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
566 hEff6Pt1->SetBinContent(i+1,Eff6Pt1);
567 hEff6Pt1->SetBinError(i+1,errEff6Pt1);
568 hEff6Pt1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
570 hEff6Pt10->SetBinContent(i+1,Eff6Pt10);
571 hEff6Pt10->SetBinError(i+1,errEff6Pt10);
572 hEff6Pt10->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
574 hEff5Pt02->SetBinContent(i+1,Eff5Pt02);
575 hEff5Pt02->SetBinError(i+1,errEff5Pt02);
576 hEff5Pt02->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
578 hEff5Pt1->SetBinContent(i+1,Eff5Pt1);
579 hEff5Pt1->SetBinError(i+1,errEff5Pt1);
580 hEff5Pt1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
582 hEff5Pt10->SetBinContent(i+1,Eff5Pt10);
583 hEff5Pt10->SetBinError(i+1,errEff5Pt10);
584 hEff5Pt10->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
586 hEff4Pt02->SetBinContent(i+1,Eff4Pt02);
587 hEff4Pt02->SetBinError(i+1,errEff4Pt1);
588 hEff4Pt02->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
590 hEff4Pt1->SetBinContent(i+1,Eff4Pt1);
591 hEff4Pt1->SetBinError(i+1,errEff4Pt1);
592 hEff4Pt1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
594 hEff4Pt10->SetBinContent(i+1,Eff4Pt10);
595 hEff4Pt10->SetBinError(i+1,errEff4Pt10);
596 hEff4Pt10->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
598 hEff3Pt02->SetBinContent(i+1,Eff3Pt02);
599 hEff3Pt02->SetBinError(i+1,errEff3Pt02);
600 hEff3Pt02->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
602 hEff3Pt1->SetBinContent(i+1,Eff3Pt1);
603 hEff3Pt1->SetBinError(i+1,errEff3Pt1);
604 hEff3Pt1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
606 hEff3Pt10->SetBinContent(i+1,Eff3Pt10);
607 hEff3Pt10->SetBinError(i+1,errEff3Pt10);
608 hEff3Pt10->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
610 hEff2Pt02->SetBinContent(i+1,Eff2Pt02);
611 hEff2Pt02->SetBinError(i+1,errEff2Pt02);
612 hEff2Pt02->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
614 hEff2Pt1->SetBinContent(i+1,Eff2Pt1);
615 hEff2Pt1->SetBinError(i+1,errEff2Pt1);
616 hEff2Pt1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
618 hEff2Pt10->SetBinContent(i+1,Eff2Pt10);
619 hEff2Pt10->SetBinError(i+1,errEff2Pt10);
620 hEff2Pt10->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
623 hEffSPDPt02->SetBinContent(i+1,EffSPDPt02);
624 hEffSPDPt02->SetBinError(i+1,errEffSPDPt02);
625 hEffSPDPt02->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
627 hEffSPDPt1->SetBinContent(i+1,EffSPDPt1);
628 hEffSPDPt1->SetBinError(i+1,errEffSPDPt1);
629 hEffSPDPt1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
631 hEffSPDPt10->SetBinContent(i+1,EffSPDPt10);
632 hEffSPDPt10->SetBinError(i+1,errEffSPDPt10);
633 hEffSPDPt10->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
635 hEffoneSPDPt02->SetBinContent(i+1,EffoneSPDPt02);
636 hEffoneSPDPt02->SetBinError(i+1,errEffoneSPDPt02);
637 hEffoneSPDPt02->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
639 hEffoneSPDPt1->SetBinContent(i+1,EffoneSPDPt1);
640 hEffoneSPDPt1->SetBinError(i+1,errEffoneSPDPt1);
641 hEffoneSPDPt1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
643 hEffoneSPDPt10->SetBinContent(i+1,EffoneSPDPt10);
644 hEffoneSPDPt10->SetBinError(i+1,errEffoneSPDPt10);
645 hEffoneSPDPt10->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
647 hEffTOTPt02->SetBinContent(i+1,EffTOTPt02);
648 hEffTOTPt02->SetBinError(i+1,errEffTOTPt02);
649 hEffTOTPt02->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
651 hEffTOTPt1->SetBinContent(i+1,EffTOTPt1);
652 hEffTOTPt1->SetBinError(i+1,errEffTOTPt1);
653 hEffTOTPt1->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
655 hEffTOTPt10->SetBinContent(i+1,EffTOTPt10);
656 hEffTOTPt10->SetBinError(i+1,errEffTOTPt10);
657 hEffTOTPt10->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunMatch));
661 //-----------------------------------
665 TNtuple* ntvertex=(TNtuple*)fil->Get("ntvertex");
667 Float_t nrunVertex,Vx,errVx,sigmaVx,errsigmaVx,Vy,errVy,sigmaVy,errsigmaVy,Vz,errVz,sigmaVz,errsigmaVz;
669 ntvertex->SetBranchAddress("nrun",&nrunVertex);
670 ntvertex->SetBranchAddress("Vx",&Vx);
671 ntvertex->SetBranchAddress("errVx",&errVx);
672 ntvertex->SetBranchAddress("sigmaVx",&sigmaVx);
673 ntvertex->SetBranchAddress("errsigmaVx",&errsigmaVx);
674 ntvertex->SetBranchAddress("Vy",&Vy);
675 ntvertex->SetBranchAddress("errVy",&errVy);
676 ntvertex->SetBranchAddress("sigmaVy",&sigmaVy);
677 ntvertex->SetBranchAddress("errsigmaVy",&errsigmaVy);
678 ntvertex->SetBranchAddress("Vz",&Vz);
679 ntvertex->SetBranchAddress("errVz",&errVz);
680 ntvertex->SetBranchAddress("sigmaVz",&sigmaVz);
681 ntvertex->SetBranchAddress("errsigmaVz",&errsigmaVz);
684 TH1F *hVx = new TH1F("hVx","Track Vertex Vx Distribution",kRunsToPlot,0.,kRunsToPlot);
685 hVx->SetLineWidth(2);
686 hVx->SetLineColor(kBlue+2);
687 hVx->SetMarkerColor(kBlue+2);
688 hVx->SetMarkerStyle(20);
690 TH1F *hVy = new TH1F("hVy","Track Vertex Vy Distribution",kRunsToPlot,0.,kRunsToPlot);
691 hVy->SetLineWidth(2);
692 hVy->SetLineColor(kBlue+2);
693 hVy->SetMarkerColor(kBlue+2);
694 hVy->SetMarkerStyle(20);
696 TH1F *hVz = new TH1F("hVz","Track Vertex Vz Distribution",kRunsToPlot,0.,kRunsToPlot);
697 hVz->SetLineWidth(2);
698 hVz->SetLineColor(kBlue+2);
699 hVz->SetMarkerColor(kBlue+2);
700 hVz->SetMarkerStyle(20);
702 TH1F *hSigmaVx = new TH1F("hSigmaVx","Track Vertex SigmaVx Distribution",kRunsToPlot,0.,kRunsToPlot);
703 hSigmaVx->SetLineWidth(2);
704 hSigmaVx->SetLineColor(kBlue+2);
705 hSigmaVx->SetMarkerColor(kBlue+2);
706 hSigmaVx->SetMarkerStyle(20);
708 TH1F *hSigmaVy = new TH1F("hSigmaVy","Track Vertex SigmaVy Distribution",kRunsToPlot,0.,kRunsToPlot);
709 hSigmaVy->SetLineWidth(2);
710 hSigmaVy->SetLineColor(kBlue+2);
711 hSigmaVy->SetMarkerColor(kBlue+2);
712 hSigmaVy->SetMarkerStyle(20);
714 TH1F *hSigmaVz = new TH1F("hSigmaVz","Track Vertex SigmaVz Distribution",kRunsToPlot,0.,kRunsToPlot);
715 hSigmaVz->SetLineWidth(2);
716 hSigmaVz->SetLineColor(kBlue+2);
717 hSigmaVz->SetMarkerColor(kBlue+2);
718 hSigmaVz->SetMarkerStyle(20);
721 // Int_t nEntriesVertex=ntvertex->GetEntries();
723 for(Int_t i=0;i<kRunsToPlot;i++){
725 ntvertex->GetEvent(myIndex[i]);
729 hVx->SetBinContent(i+1,Vx);
730 hVx->SetBinError(i+1,errVx);
731 hVx->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunVertex));
733 hVy->SetBinContent(i+1,Vy);
734 hVy->SetBinError(i+1,errVy);
735 hVy->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunVertex));
737 hVz->SetBinContent(i+1,Vz);
738 hVz->SetBinError(i+1,errVz);
739 hVz->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunVertex));
742 hSigmaVx->SetBinContent(i+1,sigmaVx);
743 hSigmaVx->SetBinError(i+1,errsigmaVx);
744 hSigmaVx->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunVertex));
746 hSigmaVy->SetBinContent(i+1,sigmaVy);
747 hSigmaVy->SetBinError(i+1,errsigmaVy);
748 hSigmaVy->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunVertex));
750 hSigmaVz->SetBinContent(i+1,sigmaVz);
751 hSigmaVz->SetBinError(i+1,errsigmaVz);
752 hSigmaVz->GetXaxis()->SetBinLabel(i+1,Form("%d",(Int_t)nrunVertex));
755 //-------- Draw Vertex histograms ---------
756 TCanvas *cVertexDisto=new TCanvas("cVertexDisto","cVertexDisto",1200,800);
757 cVertexDisto->Divide(3,2);
759 hVx->SetMinimum(0.03);
760 hVx->SetMaximum(0.08);
761 hVx->GetYaxis()->SetTitle("Vertex X coordinate");
764 hVy->SetMinimum(0.25);
765 hVy->SetMaximum(0.30);
766 hVy->GetYaxis()->SetTitle("Vertex Y coordinate");
769 hVz->SetMinimum(-1.);
771 hVz->GetYaxis()->SetTitle("Vertex Z coordinate");
774 hSigmaVx->SetMinimum(0.);
775 hSigmaVx->SetMaximum(0.01);
776 hSigmaVx->GetYaxis()->SetTitle("sigma on x coordinate");
779 hSigmaVy->SetMinimum(0.);
780 hSigmaVy->SetMaximum(0.01);
781 hSigmaVy->GetYaxis()->SetTitle("sigma on y coordinate");
784 hSigmaVz->SetMinimum(6.);
785 hSigmaVz->SetMaximum(10.);
786 hSigmaVz->GetYaxis()->SetTitle("sigma on z coordinate");
788 cVertexDisto->SaveAs("Vertex_trend.pdf");
789 pdfFileNames+=" Vertex_trend.pdf";
790 //-----------------------------------
792 gStyle->SetOptStat(0);
794 TCanvas* c5=new TCanvas("c5","Track With points in ITS");
795 histoTrackClu3->Draw();
796 histoTrackClu3->SetLineColor(1);
797 histoTrackClu3->SetMarkerStyle(20);
798 histoTrackClu3->Draw();
799 histoTrackClu3->SetMinimum(0.);
800 histoTrackClu3->SetMaximum(1.05);
801 histoTrackClu4->SetLineColor(2);
802 histoTrackClu4->SetMarkerColor(2);
803 histoTrackClu4->SetMarkerStyle(22);
804 histoTrackClu4->Draw("same");
805 histoTrackClu1->SetLineColor(kGray+1);
806 histoTrackClu1->SetMarkerColor(kGray+1);
807 histoTrackClu1->SetMarkerStyle(24);
808 histoTrackClu1->Draw("same");
809 histoTrackClu2->SetLineColor(kGray+2);
810 histoTrackClu2->SetMarkerColor(kGray+2);
811 histoTrackClu2->SetMarkerStyle(26);
812 histoTrackClu2->Draw("same");
813 histoTrackClu5->SetLineColor(4);
814 histoTrackClu5->SetMarkerColor(4);
815 histoTrackClu5->SetMarkerStyle(29);
816 histoTrackClu5->Draw("same");
817 histoTrackClu6->SetLineColor(kBlue+1);
818 histoTrackClu6->SetMarkerColor(kBlue+1);
819 histoTrackClu6->SetMarkerStyle(30);
820 histoTrackClu6->SetTitle("Fraction of tracks with points in ITS");
821 histoTrackClu6->Draw("same");
822 histoTrackClu3->GetYaxis()->SetTitle("Fraction of Tracks with Points in ITS Layers");
823 TLegend* leg3=new TLegend(0.7,0.15,0.88,0.35);
825 ent=leg3->AddEntry(histoTrackClu1,"Layer1","PL");
826 ent->SetTextColor(histoTrackClu1->GetMarkerColor());
827 ent=leg3->AddEntry(histoTrackClu2,"Layer2","PL");
828 ent->SetTextColor(histoTrackClu2->GetMarkerColor());
829 ent=leg3->AddEntry(histoTrackClu3,"Layer3","PL");
830 ent->SetTextColor(histoTrackClu3->GetMarkerColor());
831 ent=leg3->AddEntry(histoTrackClu4,"Layer4","PL");
832 ent->SetTextColor(histoTrackClu4->GetMarkerColor());
833 ent=leg3->AddEntry(histoTrackClu5,"Layer5","PL");
834 ent->SetTextColor(histoTrackClu5->GetMarkerColor());
835 ent=leg3->AddEntry(histoTrackClu6,"Layer6","PL");
836 ent->SetTextColor(histoTrackClu6->GetMarkerColor());
838 leg3->SetFillStyle(0);
840 c5->SaveAs("TrackPoints_trend.pdf");
841 pdfFileNames+=" TrackPoints_trend.pdf";
846 TCanvas* c2=new TCanvas("c2","SDD DriftTime & Charge",1200,800);
849 histominTime->Draw();
850 histominTime->SetMinimum(450);
851 histominTime->SetMaximum(550);
852 histominTime->GetYaxis()->SetTitle("Minimum Drift Time (ns)");
853 TLatex* td1=new TLatex(0.2,0.85,"SDD minimum drift time (ref=505ns)");
855 td1->SetTextColor(1);
858 histomeanTime->Draw();
859 histomeanTime->SetMinimum(3200);
860 histomeanTime->SetMaximum(3300);
861 histomeanTime->GetYaxis()->SetTitle("Average Drift Time (ns)");
862 TLatex* td2=new TLatex(0.2,0.85,"SDD average drift time");
864 // td2>SetTextColor(1);
867 // TCanvas* c4=new TCanvas("c4","Charge");
869 histodEdxTB0->SetLineColor(1);
870 histodEdxTB0->SetMarkerStyle(20);
871 histodEdxTB0->Draw();
872 histodEdxTB0->SetMinimum(90.);
873 histodEdxTB0->SetMaximum(120.);
874 histodEdxTB5->SetLineColor(4);
875 histodEdxTB5->SetMarkerColor(4);
876 histodEdxTB5->SetMarkerStyle(23);
877 // histodEdxTB5->SetMinimum(90);
878 // histodEdxTB5->SetMaximum(120);
879 histodEdxTB5->Draw("same");
880 histodEdxTB0->GetYaxis()->SetTitle("<dE/dx> (keV/300 #mum)");
881 TLegend* leg2=new TLegend(0.6,0.15,0.88,0.35);
882 ent=leg2->AddEntry(histodEdxTB0,"Small drift time","PL");
883 ent=leg2->AddEntry(histodEdxTB5,"Large drift time","PL");
884 ent->SetTextColor(histodEdxTB5->GetMarkerColor());
885 leg2->SetFillStyle(0);
887 TLatex* tc1=new TLatex(0.2,0.85,"SDD charge in different drift regions");
889 tc1->SetTextColor(1);
891 // TCanvas* c4b=new TCanvas("c4b","Charge per Layer");
893 histodEdxLay3->SetLineColor(1);
894 histodEdxLay3->SetMarkerStyle(20);
895 histodEdxLay3->Draw();
896 histodEdxLay3->SetMinimum(90.);
897 histodEdxLay3->SetMaximum(120.);
898 histodEdxLay4->SetLineColor(4);
899 histodEdxLay4->SetMarkerColor(4);
900 histodEdxLay4->SetMarkerStyle(23);
901 histodEdxLay4->Draw("same");
903 histodEdxLay5->SetLineColor(6);
904 histodEdxLay5->SetMarkerColor(6);
905 histodEdxLay5->SetMarkerStyle(22);
906 histodEdxLay5->Draw("same");
907 histodEdxLay5->SetMinimum(0.);
908 histodEdxLay6->SetLineColor(7);
909 histodEdxLay6->SetMarkerColor(7);
910 histodEdxLay6->SetMarkerStyle(24);
911 histodEdxLay6->Draw("same");
913 histodEdxLay3->GetYaxis()->SetTitle("<dE/dx> (keV/300 #mum)");
915 TLegend* leg2b=new TLegend(0.6,0.15,0.88,0.35);
916 ent=leg2b->AddEntry(histodEdxLay3,"Layer 3","PL");
917 ent=leg2b->AddEntry(histodEdxLay4,"Layer 4","PL");
918 ent=leg2b->AddEntry(histodEdxLay5,"Layer 5","PL");
919 ent=leg2b->AddEntry(histodEdxLay6,"Layer 6","PL");
920 ent->SetTextColor(histodEdxLay4->GetMarkerColor());
921 leg2b->SetFillStyle(0);
924 TLatex* tc2=new TLatex(0.2,0.85,"SDD and SSD charge in different layers");
926 tc2->SetTextColor(1);
928 c2->SaveAs("SDD_SSD_drift_charge_trend.pdf");
929 pdfFileNames+=" SDD_SSD_drift_charge_trend.pdf";
932 TCanvas *c7=new TCanvas("c7","Charge ratio");
934 histoChargeRatioLay5->SetLineColor(6);
935 histoChargeRatioLay5->SetMarkerColor(6);
936 histoChargeRatioLay5->SetMarkerStyle(20);
937 histoChargeRatioLay5->SetMinimum(-0.01);
938 histoChargeRatioLay5->SetMaximum(+0.01);
939 histoChargeRatioLay5->Draw();
940 histoChargeRatioLay6->SetLineColor(7);
941 histoChargeRatioLay6->SetMarkerColor(7);
942 histoChargeRatioLay6->SetMarkerStyle(22);
943 histoChargeRatioLay6->GetYaxis()->SetTitle("SSD charge ratio");
944 histoChargeRatioLay6->Draw("same");
945 TLegend* legCR=new TLegend(0.7,0.75,0.88,0.85);
946 ent=legCR->AddEntry(histoChargeRatioLay5,"Layer5","PL");
947 ent->SetTextColor(histoChargeRatioLay5->GetMarkerColor());
948 ent=legCR->AddEntry(histoChargeRatioLay6,"Layer6","PL");
949 ent->SetTextColor(histoChargeRatioLay6->GetMarkerColor());
950 legCR->SetFillStyle(0);
952 TLatex* tc3=new TLatex(0.2,0.85,"SSD charge ratio in different layers");
954 tc3->SetTextColor(1);
956 c7->SaveAs("SSD_chargeratio_trend.pdf");
957 pdfFileNames+=" SSD_chargeratio_trend.pdf";
958 // TCanvas *c8=new TCanvas("c8","Masked modules");
960 // histoEmpty->Draw();
962 TCanvas *cpt02=new TCanvas("cpt02","TPC-ITS matching efficiency",1200,1000);
965 hEff6Pt02->SetMinimum(0);
967 hEff5Pt02->Draw("same");
968 hEff4Pt02->Draw("same");
969 hEff3Pt02->Draw("same");
970 hEff2Pt02->Draw("same");
971 hEffSPDPt02->Draw("same");
972 hEffoneSPDPt02->Draw("same");
973 hEffTOTPt02->Draw("same");
974 hEff6Pt02->GetYaxis()->SetRangeUser(0,1);
975 TLegend* lpt02=new TLegend(0.9,0.8,1,1);
976 lpt02->AddEntry(hEff6Pt02,"6 cls","l");
977 lpt02->AddEntry(hEff5Pt02,"5 cls","l");
978 lpt02->AddEntry(hEff4Pt02,"4 cls","l");
979 lpt02->AddEntry(hEff3Pt02,"3 cls","l");
980 lpt02->AddEntry(hEff2Pt02,"2 cls","l");
981 lpt02->AddEntry(hEffSPDPt02,"2SPD + any","l");
982 lpt02->AddEntry(hEffoneSPDPt02,">=1SPD + any","l");
983 lpt02->AddEntry(hEffTOTPt02,">=2","l");
985 TLatex* tpc1=new TLatex(0.2,0.85,"TPCITS match eff Pt=0.2");
987 tpc1->SetTextColor(1);
990 // TCanvas *cpt1=new TCanvas("cpt1","cpt1");
995 hEff5Pt1->Draw("same");
996 hEff4Pt1->Draw("same");
997 hEff3Pt1->Draw("same");
998 hEff2Pt1->Draw("same");
999 hEffSPDPt1->Draw("same");
1000 hEffoneSPDPt1->Draw("same");
1001 hEffTOTPt1->Draw("same");
1002 hEff6Pt1->GetYaxis()->SetRangeUser(0,1);
1004 TLegend* lpt1=new TLegend(0.9,0.8,1,1);
1005 lpt1->AddEntry(hEff6Pt1,"6 cls","l");
1006 lpt1->AddEntry(hEff5Pt1,"5 cls","l");
1007 lpt1->AddEntry(hEff4Pt1,"4 cls","l");
1008 lpt1->AddEntry(hEff3Pt1,"3 cls","l");
1009 lpt1->AddEntry(hEff2Pt1,"2 cls","l");
1010 lpt1->AddEntry(hEffSPDPt1,"2SPD + any","l");
1011 lpt1->AddEntry(hEffoneSPDPt1,">=1SPD + any","l");
1012 lpt1->AddEntry(hEffTOTPt02,">=2","l");
1014 TLatex* tpc2=new TLatex(0.2,0.75,"TPCITS match eff Pt=1");
1016 tpc2->SetTextColor(1);
1020 // TCanvas *cpt10=new TCanvas("cpt10","cpt10");
1024 hEff5Pt10->Draw("same");
1025 hEff4Pt10->Draw("same");
1026 hEff3Pt10->Draw("same");
1027 hEff2Pt10->Draw("same");
1028 hEffSPDPt10->Draw("same");
1029 hEffoneSPDPt10->Draw("same");
1030 hEffTOTPt10->Draw("same");
1031 hEff6Pt10->GetYaxis()->SetRangeUser(0,1);
1033 TLegend* lpt10=new TLegend(0.9,0.8,1,1);
1034 lpt10->AddEntry(hEff6Pt10,"6 cls","l");
1035 lpt10->AddEntry(hEff5Pt10,"5 cls","l");
1036 lpt10->AddEntry(hEff4Pt10,"4 cls","l");
1037 lpt10->AddEntry(hEff3Pt10,"3 cls","l");
1038 lpt10->AddEntry(hEff2Pt10,"2 cls","l");
1039 lpt10->AddEntry(hEffSPDPt10,"2SPD + any","l");
1040 lpt10->AddEntry(hEffoneSPDPt10,">=1SPD + any","l");
1041 lpt10->AddEntry(hEffTOTPt02,">=2","l");
1042 lpt10->Draw("same");
1044 TLatex* tpc3=new TLatex(0.2,0.75,"TPCITS match eff Pt=10");
1046 tpc3->SetTextColor(1);
1052 // TCanvas *cSPD = new TCanvas("cSPD","cSPD",0,0,1000,300);
1053 // cSPD->SetGridy();
1054 hFracSPD1->SetMaximum(1.2);
1055 hFracSPD1->SetMinimum(0);
1056 hFracSPD1->Draw("p");
1057 hFracSPD2->Draw("same,p");
1059 TLegend* lSPD=new TLegend(0.9,0.8,1,1);
1060 lSPD->AddEntry(hFracSPD1,"Frac. SPD1 ON","l");
1061 lSPD->AddEntry(hFracSPD2,"Frac. SPD2 ON","l");
1063 TLatex* tSPD=new TLatex(0.2,0.85,"Fraction of SPD half staves ON");
1065 tSPD->SetTextColor(1);
1067 cpt02->SaveAs("TPCITS_trend.pdf");
1068 pdfFileNames+=" TPCITS_trend.pdf";
1071 //----------- ITS SA -----------
1072 PlotITSSA(fil,myIndex,kRunsToPlot);
1073 // merge the pdf files
1074 TString command("gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged");
1075 command=command+"ITS_trend.pdf "+pdfFileNames;
1076 gSystem->Exec(command.Data());
1077 printf(" Merging the pdf file: %s \n",command.Data());
1082 //____________________________________________________________________________
1083 void PlotITSSA(TFile *fil,Int_t *myIndex,Int_t kRunsToPlot){
1084 Double_t Lowbin[3]={0.1,0.5,0.9};
1085 Double_t Upbin[3]={0.2,0.6,1};
1086 gROOT->SetStyle("Plain");
1087 gStyle->SetOptTitle(0);
1088 gStyle->SetOptStat(0);
1089 gStyle->SetFillColor(0);
1090 gStyle->SetTextFont(32);
1092 TNtuple* nt = (TNtuple*)fil->Get("ntITSsa");
1093 Int_t nruns=nt->GetEntries();
1094 printf("Events = %d - Runs to be processed %d\n",nruns,kRunsToPlot);
1099 nt->SetBranchAddress("run",&run);
1100 nt->SetBranchAddress("NITSsaPtBin0",&ITSA[0]);
1101 nt->SetBranchAddress("NITSsaPtBin1",&ITSA[1]);
1102 nt->SetBranchAddress("NITSsaPtBin2",&ITSA[2]);
1103 nt->SetBranchAddress("NITSTPCPtBin0",&TPIT[0]);
1104 nt->SetBranchAddress("NITSTPCPtBin1",&TPIT[1]);
1105 nt->SetBranchAddress("NITSTPCPtBin2",&TPIT[2]);
1106 nt->SetBranchAddress("ratioPtBin0",&RAT[0]);
1107 nt->SetBranchAddress("ratioPtBin1",&RAT[1]);
1108 nt->SetBranchAddress("ratioPtBin2",&RAT[2]);
1109 TH1F *h0=new TH1F("h0","h0",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1110 TH1F *h1=new TH1F("h1","h1",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1111 TH1F *h2=new TH1F("h2","h2",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1112 TH1F *h3=new TH1F("h3","h4",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1113 TH1F *h4=new TH1F("h4","h5",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1114 TH1F *h5=new TH1F("h5","h5",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1115 TH1F *h6=new TH1F("h6","h6",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1116 TH1F *h7=new TH1F("h7","h7",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1117 TH1F *h8=new TH1F("h8","h8",kRunsToPlot,-0.5,kRunsToPlot-0.5);
1118 for(Int_t iev=0;iev<kRunsToPlot;iev++){
1119 nt->GetEvent(myIndex[iev]);
1120 //cout<<"Numeri TPCITS "<<TPIT[0]<<" "<<TPIT[1]<<" "<<TPIT[2]<<endl;
1121 h0->Fill(iev,ITSA[0]);
1122 h1->Fill(iev,ITSA[1]);
1123 h2->Fill(iev,ITSA[2]);
1124 h3->Fill(iev,TPIT[0]);
1125 h4->Fill(iev,TPIT[1]);
1126 h5->Fill(iev,TPIT[2]);
1127 h6->Fill(iev,RAT[0]);
1128 h7->Fill(iev,RAT[1]);
1129 h8->Fill(iev,RAT[2]);
1130 h0->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1131 h1->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1132 h2->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1133 h3->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1134 h4->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1135 h5->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1136 h6->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1137 h7->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1138 h8->GetXaxis()->SetBinLabel(iev+1,Form("%.0f",run));
1139 Printf("%f %f %f",ITSA[0],ITSA[1],ITSA[2]);
1142 h0->GetYaxis()->SetTitle("ITSsa tracks");
1143 h0->GetXaxis()->SetTitle("run");
1144 h1->GetYaxis()->SetTitle("ITSsa tracks");
1145 h1->GetXaxis()->SetTitle("run");
1146 h2->GetYaxis()->SetTitle("ITSsa tracks");
1147 h2->GetXaxis()->SetTitle("run");
1148 h3->GetYaxis()->SetTitle("ITS+TPC tracks");
1149 h3->GetXaxis()->SetTitle("run");
1150 h4->GetYaxis()->SetTitle("ITS+TPC tracks");
1151 h4->GetXaxis()->SetTitle("run");
1152 h5->GetYaxis()->SetTitle("ITS+TPC tracks");
1153 h5->GetXaxis()->SetTitle("run");
1154 h6->GetYaxis()->SetTitle("(TPC+ITS)/ITS");
1155 h6->GetXaxis()->SetTitle("run");
1156 h7->GetYaxis()->SetTitle("(TPC+ITS)/ITS");
1157 h7->GetXaxis()->SetTitle("run");
1158 h8->GetYaxis()->SetTitle("(TPC+ITS)/ITS");
1159 h8->GetXaxis()->SetTitle("run");
1160 h0->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[0],Upbin[0]));
1161 h1->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[1],Upbin[1]));
1162 h2->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[2],Upbin[2]));
1163 h3->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[0],Upbin[0]));
1164 h4->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[1],Upbin[1]));
1165 h5->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[2],Upbin[2]));
1166 h6->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[0],Upbin[0]));
1167 h7->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[1],Upbin[1]));
1168 h8->SetTitle(Form("%.1f GeV/c < pt < %.1f GeV/c",Lowbin[2],Upbin[2]));
1169 h0->SetMinimum(100);
1170 // h0->SetMaximum(2);
1171 h1->SetMinimum(100);
1172 // h1->SetMaximum(2);
1173 h2->SetMinimum(100);
1174 // h2->SetMaximum(2);
1175 h3->SetMinimum(100);
1176 h4->SetMinimum(100);
1177 h5->SetMinimum(100);
1180 h8->SetMaximum(20.);
1182 h0->SetMarkerStyle(22);
1183 h1->SetMarkerStyle(23);
1184 h2->SetMarkerStyle(24);
1185 h0->SetMarkerColor(2);
1186 h1->SetMarkerColor(1);
1187 h2->SetMarkerColor(4);
1188 h0->SetLineColor(2);
1189 h1->SetLineColor(1);
1190 h2->SetLineColor(4);
1192 h3->SetMarkerStyle(22);
1193 h4->SetMarkerStyle(23);
1194 h5->SetMarkerStyle(24);
1195 h3->SetMarkerColor(2);
1196 h4->SetMarkerColor(1);
1197 h5->SetMarkerColor(4);
1198 h3->SetLineColor(2);
1199 h4->SetLineColor(1);
1200 h5->SetLineColor(4);
1202 h6->SetMarkerStyle(22);
1203 h7->SetMarkerStyle(23);
1204 h8->SetMarkerStyle(24);
1205 h6->SetMarkerColor(2);
1206 h7->SetMarkerColor(1);
1207 h8->SetMarkerColor(4);
1208 h6->SetLineColor(2);
1209 h7->SetLineColor(1);
1210 h8->SetLineColor(4);
1212 TCanvas *c=new TCanvas();
1218 c->BuildLegend(0.11,0.15,0.45,0.30);
1219 TLatex* ti1=new TLatex(0.11,0.40,"ITS standalone tracks (normalized to number of events)");
1221 ti1->SetTextColor(1);
1223 c->SaveAs("ITSsa_trend.pdf");
1224 pdfFileNames+=" ITSsa_trend.pdf";
1225 TCanvas *c2=new TCanvas();
1231 c2->BuildLegend(0.11,0.15,0.45,0.30);
1232 TLatex* ti2=new TLatex(0.11,0.40,"ITS+TPC tracks (normalized to number of events)");
1234 ti2->SetTextColor(1);
1236 c2->SaveAs("ITSTPC_trend.pdf");
1237 pdfFileNames+=" ITSTPC_trend.pdf";
1239 TCanvas *c3=new TCanvas();
1245 TLatex* ti3=new TLatex(0.15,0.8,"ratio (ITS+TPC)/ITS ");
1248 c3->SaveAs("tracks_ratio_trend.pdf");
1249 pdfFileNames+=" tracks_ratio_trend.pdf";
1255 //____________________________________________________________________________
1256 void AliITSQAtrend(TString runListFile,TString ntupleFileName){
1258 TGrid::Connect("alien://");
1264 const Int_t nVariables=35;
1265 TNtuple* ntsdd=new TNtuple("ntsdd","SDD trending","nrun:fracTrackWithClu1:errfracTrackWithClu1:fracTrackWithClu2:errfracTrackWithClu2:fracTrackWithClu3:errfracTrackWithClu3:fracTrackWithClu4:errfracTrackWithClu4:fracTrackWithClu5:errfracTrackWithClu5:fracTrackWithClu6:errfracTrackWithClu6:meanTrPts3:errmeanTrPts3:meanTrPts4:errmeanTrPts4:minDrTime:errminDrTime:meanDrTime:errmeanDrTime:fracExtra:errfracExtra:meandEdxLay3:errmeandEdxLay3:meandEdxLay4:errmeandEdxLay4:meandEdxTB0:errmeandEdxTB0:meandEdxTB5:errmeandEdxTB5:nMod95:nMod80:nMod60:nModEmpty");
1266 Float_t xnt[nVariables];
1270 const Int_t nVariablesSSD=10;
1271 TNtuple* ntssd=new TNtuple("ntssd","SSD trending","nrun:meandEdxLay5:errmeandEdxLay5:meandEdxLay6:errmeandEdxLay6:ChargeRatioL5:errChargeratioL5:ChargeRatioL6:errChargeratioL6:moduleOff");
1272 Float_t xntSSD[nVariablesSSD];
1276 const Int_t nVariablesMatching=60;
1277 TNtuple* ntmatching=new TNtuple("ntmatching","Matching Efficiency","nrun:FracSPD1:errFracSPD1:FracSPD2:errFracSPD2:Eff6Pt02:errEff6Pt02:Eff6Pt1:errEff6Pt1:Eff6Pt10:errEff6Pt10:Eff5Pt02:errEff5Pt02:Eff5Pt1:errEff5Pt1:Eff5Pt10:errEff5Pt10:Eff4Pt02:errEff4Pt02:Eff4Pt1:errEff4Pt1:Eff4Pt10:errEff4Pt10:Eff3Pt02:errEff3Pt02:Eff3Pt1:errEff3Pt1:Eff3Pt10:errEff3Pt10:Eff2Pt02:errEff2Pt02:Eff2Pt1:errEff2Pt1:Eff2Pt10:errEff2Pt10:EffSPDPt02:errEffSPDPt02:EffSPDPt1:errEffSPDPt1:EffSPDPt10:errEffSPDPt10:EffoneSPDPt02:errEffoneSPDPt02:EffoneSPDPt1:errEffoneSPDPt1:EffoneSPDPt10:errEffoneSPDPt10:EffTOTPt02:errEffTOTPt02:EffTOTPt1:errEffTOTPt1:EffTOTPt10:errEffTOTPt10");
1279 Float_t xntMatching[nVariablesMatching];
1281 //--------------------------------
1285 const Int_t nVariablesVertex=15;
1286 TNtuple* ntvertex=new TNtuple("ntvertex","QA Vertex","nrun:Vx:errVx:sigmaVx:errsigmaVx:Vy:errVy:sigmaVy:errsigmaVy:Vz:errVz:sigmaVz:errsigmaVz");
1288 Float_t xntVertex[nVariablesVertex];
1290 //--------------------------------
1292 //----- Tracking ITS SA
1293 const Int_t nVariablesSA=13;
1294 Float_t xntSA[nVariablesSA];
1295 TNtuple *ntSA=new TNtuple("ntITSsa","ntITSsa","run:NITSTPCPtBin0:NITSTPCPtBin1:NITSTPCPtBin2:NITSsaPtBin0:NITSsaPtBin1:NITSsaPtBin2:NITSpureSAPtBin0:NITSpureSAPtBin1:NITSpureSAPtBin2:ratioPtBin0:ratioPtBin1:ratioPtBin2");
1297 //---------------------------------
1301 TBits* readRun=new TBits(999999);
1302 readRun->ResetAllBits();
1303 // if(!useExternalList){
1304 if(!gSystem->Exec(Form("ls -l %s > /dev/null 2>&1",ntupleFileName.Data()))){
1305 TFile* oldfil=new TFile(ntupleFileName.Data());
1307 TNtuple* ntmp=(TNtuple*)oldfil->Get("ntsdd");
1309 TNtuple* ntmpSSD=(TNtuple*)oldfil->Get("ntssd");
1311 TNtuple* ntmpMatching=(TNtuple*)oldfil->Get("ntmatching");
1313 TNtuple* ntmpVertex=(TNtuple*)oldfil->Get("ntvertex");
1315 TNtuple* ntmpSA=(TNtuple*)oldfil->Get("ntITSsa");
1322 if(ntmp->GetNvar()==ntsdd->GetNvar()){
1324 TObjArray* arr1=(TObjArray*)ntsdd->GetListOfBranches();
1325 TObjArray* arr2=(TObjArray*)ntmp->GetListOfBranches();
1326 for(Int_t iV=0; iV<ntmp->GetNvar(); iV++){
1327 TString vnam1=arr1->At(iV)->GetName();
1328 TString vnam2=arr2->At(iV)->GetName();
1329 if(vnam1!=vnam2) isOK=kFALSE;
1330 ntmp->SetBranchAddress(vnam2.Data(),&xnt[iV]);
1333 for(Int_t nE=0; nE<ntmp->GetEntries(); nE++){
1335 Int_t theRun=(Int_t)(xnt[0]+0.0001);
1336 readRun->SetBitNumber(theRun);
1343 printf("Ntuple in local file not OK -> will be recreated\n");
1346 //----------SSD----------
1348 Bool_t isOKSSD=kFALSE;
1350 if(ntmpSSD->GetNvar()==ntssd->GetNvar()){
1352 TObjArray* arr1ssd=(TObjArray*)ntssd->GetListOfBranches();
1353 TObjArray* arr2ssd=(TObjArray*)ntmpSSD->GetListOfBranches();
1354 for(Int_t iV=0; iV<ntmpSSD->GetNvar(); iV++){
1355 TString vnam1=arr1ssd->At(iV)->GetName();
1356 TString vnam2=arr2ssd->At(iV)->GetName();
1357 if(vnam1!=vnam2) isOKSSD=kFALSE;
1358 ntmpSSD->SetBranchAddress(vnam2.Data(),&xntSSD[iV]);
1361 for(Int_t nE=0; nE<ntmpSSD->GetEntries(); nE++){
1362 ntmpSSD->GetEvent(nE);
1363 Int_t theRun=(Int_t)(xntSSD[0]+0.0001);
1364 readRun->SetBitNumber(theRun);
1365 ntssd->Fill(xntSSD);
1371 printf("\n\nNtuple SSD in local file not OK -> will be recreated\n\n");
1374 //---------Matching---------
1376 Bool_t isOKMatching=kFALSE;
1378 if(ntmpMatching->GetNvar()==ntmatching->GetNvar()){
1380 TObjArray* arr1matching=(TObjArray*)ntmatching->GetListOfBranches();
1381 TObjArray* arr2matching=(TObjArray*)ntmpMatching->GetListOfBranches();
1382 for(Int_t iV=0; iV<ntmpMatching->GetNvar(); iV++){
1383 TString vnam1=arr1matching->At(iV)->GetName();
1384 TString vnam2=arr2matching->At(iV)->GetName();
1385 if(vnam1!=vnam2) isOKMatching=kFALSE;
1386 ntmpMatching->SetBranchAddress(vnam2.Data(),&xntMatching[iV]);
1389 for(Int_t nE=0; nE<ntmpMatching->GetEntries(); nE++){
1390 ntmpMatching->GetEvent(nE);
1391 Int_t theRun=(Int_t)(xntMatching[0]+0.0001);
1392 readRun->SetBitNumber(theRun);
1393 ntmatching->Fill(xntMatching);
1399 printf("\n\nNtuple Matching in local file not OK -> will be recreated\n\n");
1401 //-----------------------
1403 //---------Vertex QA---------
1405 Bool_t isOKVertex=kFALSE;
1407 if(ntmpVertex->GetNvar()==ntvertex->GetNvar()){
1409 TObjArray* arr1vertex=(TObjArray*)ntvertex->GetListOfBranches();
1410 TObjArray* arr2vertex=(TObjArray*)ntmpVertex->GetListOfBranches();
1411 for(Int_t iV=0; iV<ntmpVertex->GetNvar(); iV++){
1412 TString vnam1=arr1vertex->At(iV)->GetName();
1413 TString vnam2=arr2vertex->At(iV)->GetName();
1414 if(vnam1!=vnam2) isOKVertex=kFALSE;
1415 ntmpVertex->SetBranchAddress(vnam2.Data(),&xntVertex[iV]);
1418 for(Int_t nE=0; nE<ntmpVertex->GetEntries(); nE++){
1419 ntmpVertex->GetEvent(nE);
1420 Int_t theRun=(Int_t)(xntVertex[0]+0.0001);
1421 readRun->SetBitNumber(theRun);
1422 ntvertex->Fill(xntVertex);
1428 printf("\n\nNtuple Vertex in local file not OK -> will be recreated\n\n");
1430 //-----------------------
1432 //-----------Tracking SA ----------------
1433 Bool_t isOKSA = kFALSE;
1435 if(ntmpSA->GetNvar()==ntSA->GetNvar()){
1437 TObjArray* arr1SA=(TObjArray*)ntSA->GetListOfBranches();
1438 TObjArray* arr2SA=(TObjArray*)ntmpSA->GetListOfBranches();
1439 for(Int_t iV=0; iV<ntmpSA->GetNvar(); iV++){
1440 TString vnam1=arr1SA->At(iV)->GetName();
1441 TString vnam2=arr2SA->At(iV)->GetName();
1442 if(vnam1!=vnam2) isOKSA=kFALSE;
1443 ntmpSA->SetBranchAddress(vnam2.Data(),&xntSA[iV]);
1446 for(Int_t nE=0; nE<ntmpSA->GetEntries(); nE++){
1447 ntmpSA->GetEvent(nE);
1448 Int_t theRun=(Int_t)(xntSA[0]+0.0001);
1449 readRun->SetBitNumber(theRun);
1460 #define MAX_LINES 200
1461 #define MAX_LINE_LEN 255
1463 char strings[MAX_LINES][MAX_LINE_LEN];
1464 ifstream in(runListFile.Data());
1467 Int_t runNumb[MAX_LINES];
1468 Bool_t goout = kFALSE;
1470 in.getline(strings[j], MAX_LINE_LEN);
1471 TString aux(strings[j]);
1473 if(aux.Contains("LHC11h/")){
1476 else if(aux.Contains("LHC11h_2/")){
1480 if(!aux.IsNull())printf("Unrecognised path name %s \n",aux.Data());
1484 if(aux.Length()<lentrail)continue;
1485 aux=aux.Remove(0,lentrail);
1486 aux=aux.Remove(6,aux.Length());
1487 runNumb[j]=atoi(aux.Data());
1488 printf("%d ) - path %s \n",runNumb[j],strings[j]);
1493 printf("\n ******************* Loop on runs *********** \n");
1494 for(Int_t jru=0;jru<nrun;jru++) {
1495 printf("jru=%d - run number= %d \n",jru,runNumb[jru]);
1496 Int_t iRun=runNumb[jru];
1497 if(readRun->TestBitNumber(iRun))printf("Run %d - already processed\n",iRun);
1498 if(readRun->TestBitNumber(iRun))continue;
1499 //cout << "Value from file is " <<t << endl;
1501 printf("%s\n",strings[jru]);
1504 if(!gGrid||!gGrid->IsConnected()) {
1505 printf("gGrid not found! exit macro\n");
1509 TFile *f=TFile::Open(Form("alien://%s",strings[jru]));
1511 TDirectoryFile* df=(TDirectoryFile*)f->Get("SDD_Performance");
1513 printf("Run %d SDD_Performance MISSING -> Exit\n",iRun);
1517 TList* l=(TList*)df->Get("coutputRP");
1519 printf("Run %d coutputRP TList MISSING -> Exit\n",iRun);
1523 //-------------------
1528 TH1F* hcllay=(TH1F*)l->FindObject("hCluInLay");
1529 Float_t fracT[6]={0.,0.,0.,0.,0.,0.};
1530 Float_t efracT[6]={0.,0.,0.,0.,0.,0.};
1531 if(hcllay->GetBinContent(1)>0){
1532 for(Int_t iLay=0; iLay<6; iLay++){
1533 fracT[iLay]=hcllay->GetBinContent(iLay+2)/hcllay->GetBinContent(1);
1534 efracT[iLay]=TMath::Sqrt(fracT[iLay]*(1-fracT[iLay])/hcllay->GetBinContent(1));
1537 TH1F* hmodT=(TH1F*)l->FindObject("hTPMod");
1538 TH1F* hgamod=(TH1F*)l->FindObject("hGAMod");
1540 for(Int_t iMod=0; iMod<260;iMod++){
1541 Int_t gda=(Int_t)hgamod->GetBinContent(iMod+1);
1542 if(gda>bestMod) bestMod=gda;
1546 nChunks=(Int_t)(bestMod/512.+0.5);
1548 hgamod->Scale(1./nChunks);
1550 TH1F* hev=(TH1F*)l->FindObject("hNEvents");
1551 Int_t nTotEvents=hev->GetBinContent(2);
1552 Int_t nTrigEvents=hev->GetBinContent(3);
1553 Int_t nEvents=nTotEvents;
1554 printf("Run %d Number of Events = %d Triggered=%d\n",iRun,nTotEvents,nTrigEvents);
1556 nEvents=nTrigEvents;
1558 if(nTotEvents==0) continue;
1566 for(Int_t iMod=0; iMod<260; iMod++){
1567 Float_t tps=hmodT->GetBinContent(iMod+1);
1568 Float_t ga=hgamod->GetBinContent(iMod+1);
1569 if(ga<500) nModBadAn++;
1573 tpsN=tps/ga/(Float_t)nEvents;
1574 etpsN=TMath::Sqrt(tps)/ga/(Float_t)nEvents;
1577 sumEtp3+=(etpsN*etpsN);
1582 sumEtp4+=(etpsN*etpsN);
1588 TH1F* hapmod=(TH1F*)l->FindObject("hAllPmod");
1589 TH1F* hgpmod=(TH1F*)l->FindObject("hGoodPmod");
1590 // TH1F* hmpmod=(TH1F*)l->FindObject("hMissPmod");
1591 TH1F* hbrmod=(TH1F*)l->FindObject("hBadRegmod");
1592 TH1F* hskmod=(TH1F*)l->FindObject("hSkippedmod");
1593 TH1F* hoamod=(TH1F*)l->FindObject("hOutAccmod");
1594 TH1F* hnrmod=(TH1F*)l->FindObject("hNoRefitmod");
1599 for(Int_t imod=0; imod<260;imod++){
1600 Float_t numer=hgpmod->GetBinContent(imod+1)+hbrmod->GetBinContent(imod+1)+hoamod->GetBinContent(imod+1)+hnrmod->GetBinContent(imod+1)+hskmod->GetBinContent(imod+1);
1601 Float_t denom=hapmod->GetBinContent(imod+1);
1603 Float_t eff=numer/denom;
1604 if(eff<0.95) nBelow95++;
1605 if(eff<0.80) nBelow80++;
1606 if(eff<0.60) nBelow60++;
1608 if(hmodT->GetBinContent(imod+1)<1.){
1613 TH1F* htimT=(TH1F*)l->FindObject("hDrTimTPAll");
1614 TH1F* htimTe=(TH1F*)l->FindObject("hDrTimTPExtra");
1616 Double_t fracExtra=0.;
1617 Double_t errFracExtra=0.;
1618 if(htimT->GetEntries()>0){
1619 fracExtra=htimTe->GetEntries()/htimT->GetEntries();
1620 errFracExtra=TMath::Sqrt(htimTe->GetEntries())/htimT->GetEntries();
1622 Double_t averPoints=0.;
1623 Double_t cntBins=0.;
1624 for(Int_t iBin=1; iBin<=htimT->GetNbinsX(); iBin++){
1625 Float_t tim=htimT->GetBinCenter(iBin);
1626 if(tim>2000. && tim<4000.){
1627 averPoints+=htimT->GetBinContent(iBin);
1631 Double_t minTime=-999.;
1632 Double_t errMinTime=0.;
1634 averPoints/=cntBins;
1635 for(Int_t iBin=1; iBin<=htimT->GetNbinsX(); iBin++){
1636 if(htimT->GetBinContent(iBin)>0.5*averPoints){
1637 minTime=htimT->GetBinCenter(iBin);
1638 errMinTime=0.5*htimT->GetBinWidth(iBin);
1644 TH2F* hdedxmod=(TH2F*)l->FindObject("hdEdxVsMod");
1645 TH1D* hdedxLay3=hdedxmod->ProjectionY("hdedxLay3",1,84);
1646 TH1D* hdedxLay4=hdedxmod->ProjectionY("hdedxLay4",85,260);
1648 TH1F* hSigTim0=(TH1F*)l->FindObject("hSigTimeInt0");
1649 TH1F* hSigTim5=(TH1F*)l->FindObject("hSigTimeInt5");
1653 xnt[index++]=fracT[0];
1654 xnt[index++]=efracT[0];
1655 xnt[index++]=fracT[1];
1656 xnt[index++]=efracT[1];
1657 xnt[index++]=fracT[2];
1658 xnt[index++]=efracT[2];
1659 xnt[index++]=fracT[3];
1660 xnt[index++]=efracT[3];
1661 xnt[index++]=fracT[4];
1662 xnt[index++]=efracT[4];
1663 xnt[index++]=fracT[5];
1664 xnt[index++]=efracT[5];
1665 xnt[index++]=sumtp3/nModGood3;
1666 xnt[index++]=TMath::Sqrt(sumEtp3)/nModGood3;
1667 xnt[index++]=sumtp4/nModGood4;
1668 xnt[index++]=TMath::Sqrt(sumEtp4)/nModGood4;
1669 xnt[index++]=minTime;
1670 xnt[index++]=errMinTime;
1671 xnt[index++]=htimT->GetMean();
1672 xnt[index++]=htimT->GetMeanError();
1673 xnt[index++]=fracExtra;
1674 xnt[index++]=errFracExtra;
1675 xnt[index++]=hdedxLay3->GetMean();
1676 xnt[index++]=hdedxLay3->GetMeanError();
1677 xnt[index++]=hdedxLay4->GetMean();
1678 xnt[index++]=hdedxLay4->GetMeanError();
1679 xnt[index++]=hSigTim0->GetMean();
1680 xnt[index++]=hSigTim0->GetMeanError();
1681 xnt[index++]=hSigTim5->GetMean();
1682 xnt[index++]=hSigTim5->GetMeanError();
1683 xnt[index++]=(Float_t)nBelow95;
1684 xnt[index++]=(Float_t)nBelow80;
1685 xnt[index++]=(Float_t)nBelow60;
1686 xnt[index++]=(Float_t)nZeroP;
1689 cout<<"\n\nirun sDD"<<iRun<<endl<<endl;
1693 //TFile* fSSD=TFile::Open(fileNameLong.Data());
1695 //TDirectoryFile* dfSSD=(TDirectoryFile*)fSSD->Get("PWGPPdEdxSSDQA");
1696 TDirectoryFile* dfSSD=(TDirectoryFile*)f->Get("PWGPPdEdxSSDQA");
1698 printf("Run %d SDD_Performance MISSING -> Exit\n",iRun);
1702 TList* lSSD=(TList*)dfSSD->Get("SSDdEdxQA");
1704 printf("Run %d coutputRP TList MISSING -> Exit\n",iRun);
1709 TH2F* QAchargeRatio=(TH2F*)lSSD->FindObject("QAChargeRatio");
1710 TH2F* QAcharge=(TH2F*)lSSD->FindObject("QACharge");
1712 Int_t biny = QAcharge->GetXaxis()->FindBin(747);
1713 Int_t maxy = QAcharge->GetXaxis()->GetXmax();
1714 // Int_t miny = QAcharge->GetXaxis()->GetXmin();
1719 TH1D *hChargeL5=QAcharge->ProjectionY("hChargeL5",0,biny);
1720 TH1D *hChargeL6=QAcharge->ProjectionY("hChargeL6",biny,maxy);
1722 cout<< hChargeL5->GetMean()<< " " << hChargeL5->GetRMS()<<endl;
1723 cout<< hChargeL6->GetMean()<< " " << hChargeL6->GetRMS()<<endl;
1725 TH1D *hChargeRatioL5=QAchargeRatio->ProjectionY("hChargeRatioL5",0,biny);
1726 TH1D *hChargeRatioL6=QAchargeRatio->ProjectionY("hChargeRatioL6",biny,maxy);
1728 cout<< hChargeRatioL5->GetMean()<< " " << hChargeRatioL5->GetRMS()<<endl;
1729 cout<< hChargeRatioL6->GetMean()<< " " << hChargeRatioL6->GetRMS()<<endl;
1731 if(QAcharge->GetEntries()< 45000)
1735 for(Int_t i =0;i<1698;i++){
1740 TH1D* fHist1DQ= QAcharge->ProjectionY(tmpQ,i+1,i+1);
1741 Double_t mean=fHist1DQ->GetMean();
1743 if(TMath::Abs(mean)<1.0 ||fHist1DQ->GetEntries()<10)
1752 cout<<"contFull: " <<contFull<<" contEmpty: "<<contEmpty<<endl;
1753 cout<<hChargeL5->GetMean()<<endl;
1756 xntSSD[indexSSD++]=iRun;
1757 xntSSD[indexSSD++]=(Float_t)hChargeL5->GetMean();
1758 xntSSD[indexSSD++]=(Float_t)hChargeL5->GetMeanError();
1759 xntSSD[indexSSD++]=(Float_t)hChargeL6->GetMean();
1760 xntSSD[indexSSD++]=(Float_t)hChargeL6->GetMeanError();
1761 xntSSD[indexSSD++]=(Float_t)hChargeRatioL5->GetMean();
1762 xntSSD[indexSSD++]=(Float_t)hChargeRatioL5->GetMeanError();
1763 xntSSD[indexSSD++]=(Float_t)hChargeRatioL6->GetMean();
1764 xntSSD[indexSSD++]=(Float_t)hChargeRatioL6->GetMeanError();
1765 xntSSD[indexSSD++]=(Float_t)contEmpty;
1766 ntssd->Fill(xntSSD);
1768 cout<<xnt<<endl<<endl;
1770 cout<<"\n\nirun ssd "<<iRun<<endl<<endl;
1772 cout<< iRun<<" "<<hChargeL5->GetMean()<<" "<< hChargeL5->GetRMS()<<" "<<hChargeL6->GetMean()<<" "<<hChargeRatioL5->GetMean()<<" "<<" "<<hChargeRatioL5->GetRMS()<<" "<<hChargeRatioL6->GetMean()<<" "<<hChargeRatioL6->GetRMS()<<" "<<contEmpty<<endl;
1774 cout<<xntSSD[0]<<" "<<xntSSD[1]<<" "<<xntSSD[2]<<" "<<xntSSD[3]<<endl;;
1776 //--------------matching
1778 TDirectoryFile *dirMatch=(TDirectoryFile*)f->GetDirectory("ITS_Performance");
1780 TList *listSPD=NULL;
1783 list = (TList*)dirMatch->Get("cOutputITS_3500_10000"); //LHC11h
1784 if(!list)list = (TList*)dirMatch->Get("cOutputITS"); // LHC11e
1786 dirMatch=(TDirectoryFile*)f->GetDirectory("SPD_Performance");
1787 if(dirMatch) listSPD = (TList*)dirMatch->Get("coutput1");
1789 // if(!list) return kFALSE;
1791 Float_t ioValues[30];
1792 Float_t ioErrors[30];
1793 for(Int_t jj=0;jj<30;jj++){
1800 TH1F *hFiredChip = (TH1F*)listSPD->FindObject("hFiredChip");
1801 Int_t nHSsInner=0,nHSsOuter=0;
1802 for(Int_t i=0;i<400;i++) if(hFiredChip->GetBinContent(i)>0) nHSsInner++;
1803 for(Int_t i=400;i<1200;i++) if(hFiredChip->GetBinContent(i)>0) nHSsOuter++;
1804 nHSsInner = (Int_t)(nHSsInner/10);
1805 nHSsOuter = (Int_t)(nHSsOuter/10);
1806 // hnHSsSPD->SetBinContent(1,nHSsInner);
1807 // hnHSsSPD->SetBinContent(2,nHSsOuter);
1809 ioValues[0]=(Float_t)nHSsInner/40.;
1810 ioValues[1]=(Float_t)nHSsOuter/80.;
1812 TH1F *fHistPtTPCInAcc = (TH1F*)list->FindObject("fHistPtTPCInAcc");
1814 TH1F *fHistPtITSMI6InAcc = (TH1F*)list->FindObject("fHistPtITSMI6InAcc");
1815 TH1F *fHistPtITSMI5InAcc = (TH1F*)list->FindObject("fHistPtITSMI5InAcc");
1816 TH1F *fHistPtITSMI4InAcc = (TH1F*)list->FindObject("fHistPtITSMI4InAcc");
1817 TH1F *fHistPtITSMI3InAcc = (TH1F*)list->FindObject("fHistPtITSMI3InAcc");
1818 TH1F *fHistPtITSMI2InAcc = (TH1F*)list->FindObject("fHistPtITSMI2InAcc");
1819 TH1F *fHistPtITSMISPDInAcc = (TH1F*)list->FindObject("fHistPtITSMISPDInAcc");
1820 TH1F *fHistPtITSMIoneSPDInAcc = (TH1F*)list->FindObject("fHistPtITSMIoneSPDInAcc");
1823 TH1F *fHistPtITSMIge2InAcc = (TH1F*)fHistPtITSMI6InAcc->Clone("fHistPtITSMIge2InAcc");
1824 fHistPtITSMIge2InAcc->Add(fHistPtITSMI5InAcc);
1825 fHistPtITSMIge2InAcc->Add(fHistPtITSMI4InAcc);
1826 fHistPtITSMIge2InAcc->Add(fHistPtITSMI3InAcc);
1827 fHistPtITSMIge2InAcc->Add(fHistPtITSMI2InAcc);
1831 fHistPtITSMI6InAcc->Divide(fHistPtITSMI6InAcc,fHistPtTPCInAcc,1,1,"B");
1832 ptbin=fHistPtITSMI6InAcc->FindBin(0.201);
1833 ioValues[2]=fHistPtITSMI6InAcc->GetBinContent(ptbin);
1834 ioErrors[2]=fHistPtITSMI6InAcc->GetBinError(ptbin);
1835 ptbin=fHistPtITSMI6InAcc->FindBin(1.001);
1836 ioValues[3]=fHistPtITSMI6InAcc->GetBinContent(ptbin);
1837 ioErrors[3]=fHistPtITSMI6InAcc->GetBinError(ptbin);
1838 ptbin=fHistPtITSMI6InAcc->FindBin(10.001);
1839 ioValues[4]=fHistPtITSMI6InAcc->GetBinContent(ptbin);
1840 ioErrors[4]=fHistPtITSMI6InAcc->GetBinError(ptbin);
1842 fHistPtITSMI5InAcc->Divide(fHistPtITSMI5InAcc,fHistPtTPCInAcc,1,1,"B");
1844 ptbin=fHistPtITSMI5InAcc->FindBin(0.201);
1845 ioValues[5]=fHistPtITSMI5InAcc->GetBinContent(ptbin);
1846 ioErrors[5]=fHistPtITSMI5InAcc->GetBinError(ptbin);
1847 ptbin=fHistPtITSMI5InAcc->FindBin(1.001);
1848 ioValues[6]=fHistPtITSMI5InAcc->GetBinContent(ptbin);
1849 ioErrors[6]=fHistPtITSMI5InAcc->GetBinError(ptbin);
1850 ptbin=fHistPtITSMI5InAcc->FindBin(10.001);
1851 ioValues[7]=fHistPtITSMI5InAcc->GetBinContent(ptbin);
1852 ioErrors[7]=fHistPtITSMI5InAcc->GetBinError(ptbin);
1854 fHistPtITSMI4InAcc->Divide(fHistPtITSMI4InAcc,fHistPtTPCInAcc,1,1,"B");
1856 ptbin=fHistPtITSMI4InAcc->FindBin(0.201);
1857 ioValues[9]=fHistPtITSMI4InAcc->GetBinContent(ptbin);
1858 ioErrors[9]=fHistPtITSMI4InAcc->GetBinError(ptbin);
1859 ptbin=fHistPtITSMI4InAcc->FindBin(1.001);
1860 ioValues[10]=fHistPtITSMI4InAcc->GetBinContent(ptbin);
1861 ioErrors[10]=fHistPtITSMI4InAcc->GetBinError(ptbin);
1862 ptbin=fHistPtITSMI4InAcc->FindBin(10.001);
1863 ioValues[11]=fHistPtITSMI4InAcc->GetBinContent(ptbin);
1864 ioErrors[11]=fHistPtITSMI4InAcc->GetBinError(ptbin);
1866 fHistPtITSMI3InAcc->Divide(fHistPtITSMI3InAcc,fHistPtTPCInAcc,1,1,"B");
1868 ptbin=fHistPtITSMI3InAcc->FindBin(0.201);
1869 ioValues[12]=fHistPtITSMI3InAcc->GetBinContent(ptbin);
1870 ioErrors[12]=fHistPtITSMI3InAcc->GetBinError(ptbin);
1871 ptbin=fHistPtITSMI3InAcc->FindBin(1.001);
1872 ioValues[13]=fHistPtITSMI3InAcc->GetBinContent(ptbin);
1873 ioErrors[13]=fHistPtITSMI3InAcc->GetBinError(ptbin);
1874 ptbin=fHistPtITSMI3InAcc->FindBin(10.001);
1875 ioValues[14]=fHistPtITSMI3InAcc->GetBinContent(ptbin);
1876 ioErrors[14]=fHistPtITSMI3InAcc->GetBinError(ptbin);
1878 fHistPtITSMI2InAcc->Divide(fHistPtITSMI2InAcc,fHistPtTPCInAcc,1,1,"B");
1880 ptbin=fHistPtITSMI2InAcc->FindBin(0.201);
1881 ioValues[15]=fHistPtITSMI2InAcc->GetBinContent(ptbin);
1882 ioErrors[15]=fHistPtITSMI2InAcc->GetBinError(ptbin);
1883 ptbin=fHistPtITSMI2InAcc->FindBin(1.001);
1884 ioValues[16]=fHistPtITSMI2InAcc->GetBinContent(ptbin);
1885 ioErrors[16]=fHistPtITSMI2InAcc->GetBinError(ptbin);
1886 ptbin=fHistPtITSMI2InAcc->FindBin(10.001);
1887 ioValues[17]=fHistPtITSMI2InAcc->GetBinContent(ptbin);
1888 ioErrors[17]=fHistPtITSMI2InAcc->GetBinError(ptbin);
1890 fHistPtITSMISPDInAcc->Divide(fHistPtITSMISPDInAcc,fHistPtTPCInAcc,1,1,"B");
1891 ptbin=fHistPtITSMISPDInAcc->FindBin(0.201);
1892 ioValues[18]=fHistPtITSMISPDInAcc->GetBinContent(ptbin);
1893 ioErrors[18]=fHistPtITSMISPDInAcc->GetBinError(ptbin);
1894 ptbin=fHistPtITSMISPDInAcc->FindBin(1.001);
1895 ioValues[19]=fHistPtITSMISPDInAcc->GetBinContent(ptbin);
1896 ioErrors[19]=fHistPtITSMISPDInAcc->GetBinError(ptbin);
1897 ptbin=fHistPtITSMISPDInAcc->FindBin(10.001);
1898 ioValues[20]=fHistPtITSMISPDInAcc->GetBinContent(ptbin);
1899 ioErrors[20]=fHistPtITSMISPDInAcc->GetBinError(ptbin);
1901 fHistPtITSMIoneSPDInAcc->Divide(fHistPtITSMIoneSPDInAcc,fHistPtTPCInAcc,1,1,"B");
1903 ptbin=fHistPtITSMIoneSPDInAcc->FindBin(0.201);
1904 ioValues[21]=fHistPtITSMIoneSPDInAcc->GetBinContent(ptbin);
1905 ioErrors[21]=fHistPtITSMIoneSPDInAcc->GetBinError(ptbin);
1906 ptbin=fHistPtITSMIoneSPDInAcc->FindBin(1.001);
1907 ioValues[22]=fHistPtITSMIoneSPDInAcc->GetBinContent(ptbin);
1908 ioErrors[22]=fHistPtITSMIoneSPDInAcc->GetBinError(ptbin);
1909 ptbin=fHistPtITSMIoneSPDInAcc->FindBin(10.001);
1910 ioValues[23]=fHistPtITSMIoneSPDInAcc->GetBinContent(ptbin);
1911 ioErrors[23]=fHistPtITSMIoneSPDInAcc->GetBinError(ptbin);
1914 fHistPtITSMIge2InAcc->Divide(fHistPtITSMIge2InAcc,fHistPtTPCInAcc,1,1,"B");
1915 ptbin=fHistPtITSMIge2InAcc->FindBin(0.201);
1916 ioValues[24]=fHistPtITSMIge2InAcc->GetBinContent(ptbin);
1917 ioErrors[24]=fHistPtITSMIge2InAcc->GetBinError(ptbin);
1918 ptbin=fHistPtITSMIge2InAcc->FindBin(1.001);
1919 ioValues[25]=fHistPtITSMIge2InAcc->GetBinContent(ptbin);
1920 ioErrors[25]=fHistPtITSMIge2InAcc->GetBinError(ptbin);
1921 ptbin=fHistPtITSMIge2InAcc->FindBin(10.001);
1922 ioValues[26]=fHistPtITSMIge2InAcc->GetBinContent(ptbin);
1923 ioErrors[26]=fHistPtITSMIge2InAcc->GetBinError(ptbin);
1925 Int_t indexMatching=0;
1926 xntMatching[indexMatching++]=iRun;
1927 xntMatching[indexMatching++]=ioValues[0];
1928 xntMatching[indexMatching++]=ioErrors[0];
1929 xntMatching[indexMatching++]=ioValues[1];
1930 xntMatching[indexMatching++]=ioErrors[1];
1931 xntMatching[indexMatching++]=ioValues[2];
1932 xntMatching[indexMatching++]=ioErrors[2];
1933 xntMatching[indexMatching++]=ioValues[3];
1934 xntMatching[indexMatching++]=ioErrors[3];
1935 xntMatching[indexMatching++]=ioValues[4];
1936 xntMatching[indexMatching++]=ioErrors[4];
1937 xntMatching[indexMatching++]=ioValues[5];
1938 xntMatching[indexMatching++]=ioErrors[5];
1939 xntMatching[indexMatching++]=ioValues[6];
1940 xntMatching[indexMatching++]=ioErrors[6];
1941 xntMatching[indexMatching++]=ioValues[7];
1942 xntMatching[indexMatching++]=ioErrors[7];
1943 xntMatching[indexMatching++]=ioValues[8];
1944 xntMatching[indexMatching++]=ioErrors[8];
1945 xntMatching[indexMatching++]=ioValues[9];
1946 xntMatching[indexMatching++]=ioErrors[9];
1947 xntMatching[indexMatching++]=ioValues[10];
1948 xntMatching[indexMatching++]=ioErrors[10];
1949 xntMatching[indexMatching++]=ioValues[11];
1950 xntMatching[indexMatching++]=ioErrors[11];
1951 xntMatching[indexMatching++]=ioValues[12];
1952 xntMatching[indexMatching++]=ioErrors[12];
1953 xntMatching[indexMatching++]=ioValues[13];
1954 xntMatching[indexMatching++]=ioErrors[13];
1955 xntMatching[indexMatching++]=ioValues[14];
1956 xntMatching[indexMatching++]=ioErrors[14];
1957 xntMatching[indexMatching++]=ioValues[15];
1958 xntMatching[indexMatching++]=ioErrors[15];
1959 xntMatching[indexMatching++]=ioValues[16];
1960 xntMatching[indexMatching++]=ioErrors[16];
1961 xntMatching[indexMatching++]=ioValues[17];
1962 xntMatching[indexMatching++]=ioErrors[17];
1963 xntMatching[indexMatching++]=ioValues[18];
1964 xntMatching[indexMatching++]=ioErrors[18];
1965 xntMatching[indexMatching++]=ioValues[19];
1966 xntMatching[indexMatching++]=ioErrors[19];
1967 xntMatching[indexMatching++]=ioValues[20];
1968 xntMatching[indexMatching++]=ioErrors[20];
1969 xntMatching[indexMatching++]=ioValues[21];
1970 xntMatching[indexMatching++]=ioErrors[21];
1971 xntMatching[indexMatching++]=ioValues[22];
1972 xntMatching[indexMatching++]=ioErrors[22];
1973 xntMatching[indexMatching++]=ioValues[23];
1974 xntMatching[indexMatching++]=ioErrors[23];
1975 xntMatching[indexMatching++]=ioValues[24];
1976 xntMatching[indexMatching++]=ioErrors[24];
1977 xntMatching[indexMatching++]=ioValues[25];
1978 xntMatching[indexMatching++]=ioErrors[25];
1979 xntMatching[indexMatching++]=ioValues[26];
1980 xntMatching[indexMatching++]=ioErrors[26];
1982 ntmatching->Fill(xntMatching);
1984 //---------------------------
1986 TDirectoryFile *dirVertex = (TDirectoryFile*)f->Get("Vertex_Performance");
1988 Printf("Vertex directory not found... check!");
1991 TList *lt = (TList*)dirVertex->Get("cOutputVtxESD");
1993 TH1F *xVtxTRK = (TH1F*)lt->FindObject("fhTRKVertexX");
1994 TH1F *yVtxTRK = (TH1F*)lt->FindObject("fhTRKVertexY");
1995 TH1F *zVtxTRK = (TH1F*)lt->FindObject("fhTRKVertexZ");
1997 TF1 *fxTRK = new TF1("gausx", "gaus", -1, 1);
1998 xVtxTRK->Fit("gausx", "M");
2000 TF1 *fyTRK = new TF1("gausy", "gaus", -1, 1);
2001 yVtxTRK->Fit("gausy","M");
2002 cout<<fyTRK->GetParameter(1)<<endl;
2003 cout<<fyTRK->GetParError(1)<<endl;
2004 cout<<fyTRK->GetParameter(2)<<endl;
2005 cout<<fyTRK->GetParError(2)<<endl;
2007 TF1 *fzTRK = new TF1("gausz", "gaus", -1, 1);
2008 zVtxTRK->Fit("gausz","M");
2009 cout<<fzTRK->GetParameter(1)<<endl;
2010 cout<<fzTRK->GetParError(1)<<endl;
2011 cout<<fzTRK->GetParameter(2)<<endl;
2012 cout<<fzTRK->GetParError(2)<<endl;
2015 Int_t indexVertex=0;
2016 xntVertex[indexVertex++]=iRun;
2017 xntVertex[indexVertex++]=(Float_t)fxTRK->GetParameter(1);
2018 xntVertex[indexVertex++]=(Float_t)fxTRK->GetParError(1);
2019 xntVertex[indexVertex++]=(Float_t)fxTRK->GetParameter(2);
2020 xntVertex[indexVertex++]=(Float_t)fxTRK->GetParError(2);
2021 xntVertex[indexVertex++]=(Float_t)fyTRK->GetParameter(1);
2022 xntVertex[indexVertex++]=(Float_t)fyTRK->GetParError(1);
2023 xntVertex[indexVertex++]=(Float_t)fyTRK->GetParameter(2);
2024 xntVertex[indexVertex++]=(Float_t)fyTRK->GetParError(2);
2025 xntVertex[indexVertex++]=(Float_t)fzTRK->GetParameter(1);
2026 xntVertex[indexVertex++]=(Float_t)fzTRK->GetParError(1);
2027 xntVertex[indexVertex++]=(Float_t)fzTRK->GetParameter(2);
2028 xntVertex[indexVertex++]=(Float_t)fzTRK->GetParError(2);
2029 ntvertex->Fill(xntVertex);
2033 //---------------------------
2035 //-------------- ITS SA ---------------
2037 FillITSSAntuple(f,ntSA,iRun);
2041 TFile* outfil=new TFile(ntupleFileName.Data(),"recreate");
2045 ntmatching->Write();
2058 //____________________________________________________________________________
2059 void FillITSSAntuple(TFile* f,TNtuple* nt, Int_t nrun){
2060 static const Int_t nVariables=13;
2061 static Float_t xnt[nVariables];
2062 TH1F *hPtTPCITS=0x0;
2064 TH1F *hPtITSpureSA=0x0;
2065 Double_t Lowbin[3]={0.1,0.5,0.9};
2066 Double_t Upbin[3]={0.2,0.6,1};
2067 Double_t NTPCITS[3];
2069 Double_t NITSpureSA[3];
2071 TDirectory *dirFile=(TDirectory*)f->Get("ITSsaTracks");
2072 TList *cOutput = (TList*)dirFile->Get("clistITSsaTracks");
2073 // histogram with number of events: in the first cell there is the number of the events
2074 // in the second, the number of events with SPD vertex.
2075 // normalization will be done to the second number
2076 TH1F *hnev =(TH1F*)cOutput->FindObject("hNEvents");
2077 Double_t noEvents = hnev->GetBinContent(1);
2078 if(noEvents<1.)noEvents=1.; // protection to avoid division by zero
2079 hPtTPCITS=(TH1F*)cOutput->FindObject("hPtTPCITS");
2080 hPtITSsa=(TH1F*)cOutput->FindObject("hPtITSsa");
2081 hPtITSpureSA=(TH1F*)cOutput->FindObject("hPtITSpureSA");
2083 for(Int_t ibin=0;ibin<=2;ibin++){
2084 NTPCITS[ibin]=hPtTPCITS->Integral(hPtTPCITS->FindBin(Lowbin[ibin]),hPtTPCITS->FindBin(Upbin[ibin]))/noEvents;
2085 NITSsa[ibin]=hPtITSsa->Integral(hPtITSsa->FindBin(Lowbin[ibin]),hPtITSsa->FindBin(Upbin[ibin]))/noEvents;
2086 NITSpureSA[ibin]=hPtITSpureSA->Integral(hPtITSpureSA->FindBin(Lowbin[ibin]),hPtITSpureSA->FindBin(Upbin[ibin]))/noEvents;
2087 if(NTPCITS[ibin]!=0 && NITSsa[ibin]!=0)Ratio[ibin]=NTPCITS[ibin]/NITSsa[ibin];
2092 xnt[index++]=(Float_t)nrun;
2093 xnt[index++]=NTPCITS[0];
2094 xnt[index++]=NTPCITS[1];
2095 xnt[index++]=NTPCITS[2];
2096 xnt[index++]=NITSsa[0];
2097 xnt[index++]=NITSsa[1];
2098 xnt[index++]=NITSsa[2];
2099 xnt[index++]=NITSpureSA[0];
2100 xnt[index++]=NITSpureSA[1];
2101 xnt[index++]=NITSpureSA[2];
2102 xnt[index++]=Ratio[0];
2103 xnt[index++]=Ratio[1];
2104 xnt[index++]=Ratio[2];