1 #if !defined(__CINT__) || defined(__MAKECINT__)
6 #include <TGridResult.h>
7 #include <TPaveStats.h>
10 #include <TGraphErrors.h>
15 #include <TLegendEntry.h>
21 void PlotGeneral(TFile* fildat, TCanvas**& clist, Int_t& cnum);
22 void PlotITSsa(TFile* fildat, TCanvas**& clist, Int_t& cnum);
23 void PlotSDD(TFile* fildat, TCanvas**& clist, Int_t& cnum);
24 void GetGainModuleLevelSSD(TFile* fildat, TCanvas**& clist, Int_t& cnum);
25 void VertexQAMacro(TFile *fildat, TCanvas **&clist, Int_t &cnum);
26 void PlotSPD(TFile* fildat, TFile* filMC, TCanvas**& clist, Int_t& cnum);
27 Bool_t PlotITSTPCMatchingEff(TFile *f, TCanvas**& clist,Int_t& cnum);
28 void SetDrawAtt(Int_t markerstyle,Int_t markercolor,Int_t markersize,Int_t linecolor,Int_t linewidth,TH1 *h1);
29 Double_t LangausFun(Double_t *x, Double_t *par);
30 void SaveC(TFile &fout, TCanvas**& clist, Int_t cnum);
31 TString GetRunNumber();
33 // the run number is available to all the functions. Its value is set by AliITSQAchecks
37 //_______________________________________________________________________
38 void AliITSQAchecks(TString option="grid",
40 TString period="LHC11h",
41 TString qaTrain="QA90",
42 TString filenamedata="QAresults.root", TString filenameMC="alien:///alice/data/2011/LHC11h/000167706/ESDs/pass1_HLT/QA90/QAresults.root"){
43 // option: "local" if filenamedata is the name of a local file
46 // period: LHC period (e.g. LHC11h)
47 // qaTrain: QA train specifier
48 // filenamedata: QAresults.root is by default the file name with the results
49 // filenameMC: file name for MC comparison. If the names begins with alien:
50 // the file is accessed through alien, otherwise is taken as local
51 // Select here what you want to display
52 // the complete selection string is
53 // "general ITSSA SPD SDD SSD vertex ITSTPC"
54 // Contact: Stefania Beole': beole@to.infn.it
60 TString selection("general ITSSA SPD SDD SSD vertex ITSTPC");
61 gROOT->SetStyle("Plain");
62 gStyle->SetOptStat(1111);
66 if(period.Contains("LHC10")) year=2010;
67 else if(period.Contains("LHC09")) year=2009;
69 if(option.Contains("local")){
70 fildat=new TFile(filenamedata.Data());
71 printf("Opened file %s\n",fildat->GetName());
73 TGrid::Connect("alien:");
74 if(qaTrain.Contains("QA")){
75 path=Form("/alice/data/%d/%s/%09d/ESDs/pass1_HLT/%s/",year,period.Data(),nRun,qaTrain.Data());
77 path=Form("/alice/data/%d/%s/%09d/ESDs/pass1_HLT/",year,period.Data(),nRun);
79 filenamedata = "alien://"+path+"QAresults.root";
80 fildat=TFile::Open(filenamedata.Data());
82 if(option.Contains("local") && filenameMC.Contains("alien"))TGrid::Connect("alien:");
83 TFile* filMC=TFile::Open(filenameMC.Data());
86 TFile fout("Outfil.root","recreate");
87 if(selection.Contains("general")){
88 PlotGeneral(fildat,clist,cnum);
89 printf("GENERAL - cnum = %d\n",cnum);
90 SaveC(fout,clist,cnum);
92 if(selection.Contains("ITSSA")){
93 PlotITSsa(fildat,clist,cnum);
94 printf("ITSSA - cnum = %d\n",cnum);
95 SaveC(fout,clist,cnum);
97 if(selection.Contains("SDD")){
98 PlotSDD(fildat,clist,cnum);
99 printf("SDD - cnum = %d\n",cnum);
100 SaveC(fout,clist,cnum);
102 if(selection.Contains("SSD")){
103 GetGainModuleLevelSSD(fildat,clist,cnum);
104 printf("SSD - cnum = %d\n",cnum);
105 SaveC(fout,clist,cnum);
107 if(selection.Contains("vertex")){
108 VertexQAMacro(fildat,clist,cnum);
109 printf("VERTEX - cnum = %d\n",cnum);
110 SaveC(fout,clist,cnum);
112 if(selection.Contains("SPD")){
113 PlotSPD(fildat,filMC,clist,cnum);
114 printf("SPD - cnum = %d\n",cnum);
115 SaveC(fout,clist,cnum);
117 if(selection.Contains("ITSTPC")){
118 PlotITSTPCMatchingEff(fildat,clist,cnum);
119 printf("ITSTPC - cnum = %d\n",cnum);
120 SaveC(fout,clist,cnum);
127 //_______________________________________________________________________
128 void PlotGeneral(TFile* fildat, TCanvas**& clist, Int_t& cnum){
129 TDirectoryFile* df=(TDirectoryFile*)fildat->Get("SDD_Performance");
131 printf("SDD_Performance MISSING -> Exit\n");
134 TList* l=(TList*)df->Get("coutputRP");
136 printf("coutputRP TList MISSING -> Exit\n");
139 cnum=1; // number of canvases
140 clist= new TCanvas* [1];//array of pointers to TCanvases
141 gROOT->SetStyle("Plain");
142 gStyle->SetOptStat(1111);
143 TH1F* hcllay=(TH1F*)l->FindObject("hCluInLay");
144 TH1F* hev=(TH1F*)l->FindObject("hNEvents");
145 Int_t nTotEvents=hev->GetBinContent(2);
146 Int_t nTrigEvents=hev->GetBinContent(3);
147 Int_t nEvents=nTotEvents;
148 printf("---- Statistics ----\n");
149 printf("Number of Events = %d\n",nTotEvents);
151 printf("Number of Triggered Events = %d\n",nTrigEvents);
154 printf("No request on the trigger done when running the task\n");
157 Double_t norm=hcllay->GetBinContent(1);
159 hcllay->Scale(1./norm);
160 hcllay->SetTitle("");
161 hcllay->GetXaxis()->SetRange(2,7);
162 hcllay->SetMinimum(0.);
163 hcllay->SetMaximum(1.1);
164 hcllay->SetMarkerStyle(23);
165 TString ctitle=GetRunNumber()+"General checks: PointPerLayer";
166 TCanvas* ceffL=new TCanvas("ceffL",ctitle,1000,800);
168 // ceffL->Divide(1,2);
172 TLatex* tg=new TLatex(0.15,0.2,"Fraction of tracks with point in ITS layer");
173 tg->SetTextSize(0.04);
177 TString testo="Run "+GetRunNumber();
178 TLatex* tg2 = new TLatex(0.15,0.85,testo.Data());
179 tg2->SetTextSize(0.04);
181 tg2->SetTextColor(2);
183 hcllay->GetXaxis()->SetTitle("Layer");
184 hcllay->GetYaxis()->SetTitle("Fraction of tracks with point in layer");
186 ceffL->SaveAs("track_points_per_layer.pdf");
192 //_______________________________________________________________________
193 //////////////////////////////////////////////////////////////////////
194 /// ITSsa ////////////////////////////////////////////////////////////
195 //////////////////////////////////////////////////////////////////////
196 void PlotITSsa(TFile* fildat, TCanvas**& clist, Int_t& cnum){
197 TDirectoryFile* df=(TDirectoryFile*)fildat->Get("TracksITSsa");
198 if(!df) df=(TDirectoryFile*)fildat->Get("ITSsaTracks");
200 printf("ITSsa_Performance MISSING -> Exit\n");
204 TList* l=(TList*)df->Get("clistITSsaTracks");
206 printf("clistITSsaTracks TList MISSING -> Exit\n");
209 cnum=2; // number of canvases
210 clist= new TCanvas* [2];//array of pointers to TCanvases
211 gROOT->SetStyle("Plain");
212 gStyle->SetOptStat(1111);
215 TH1F* hPtTPCITS=(TH1F*)l->FindObject("hPtTPCITS");
216 TH1F* hPtITSsa=(TH1F*)l->FindObject("hPtITSsa");
217 TH1F* hPtITSpureSA=(TH1F*)l->FindObject("hPtITSpureSA");
219 TH2F* hEtaPhiTPCITS=(TH2F*)l->FindObject("hEtaPhiTPCITS");
220 TH2F* hEtaPhiITSsa=(TH2F*)l->FindObject("hEtaPhiITSsa");
221 TH2F* hEtaPhiITSpureSA=(TH2F*)l->FindObject("hEtaPhiITSpureSA");
223 TH1F* hRatio=(TH1F*)hPtTPCITS->Clone("hRatio");
224 TH1F* hRatio1=(TH1F*)hPtTPCITS->Clone("hRatio1");
225 hRatio->Add(hPtITSsa);
226 hRatio->Divide(hPtITSpureSA);
228 hRatio1->Divide(hPtITSsa);
229 hRatio1->SetStats(0);
231 TString ctitle=GetRunNumber()+"ITS standalone: performance vs Pt";
232 TCanvas* cITSsa1=new TCanvas("cITSsa1",ctitle,1200,1200);
234 cITSsa1->Divide(1,2);
236 // hPtITSpureSA->Draw();
237 // hPtITSpureSA->GetXaxis()->SetTitle("Pt (GeV/c)");
239 // TPaveStats *st1=(TPaveStats*)hPtITSpureSA->GetListOfFunctions()->FindObject("stats");
240 // st1->SetY1NDC(0.71);
241 // st1->SetY2NDC(0.9);
242 hPtTPCITS->SetLineColor(2);
243 hPtTPCITS->GetXaxis()->SetTitle("Pt (GeV/c)");
244 // hPtTPCITS->Draw("sames");
247 TPaveStats *st2=(TPaveStats*)hPtTPCITS->GetListOfFunctions()->FindObject("stats");
250 st2->SetTextColor(2);
252 hPtITSsa->SetLineColor(4);
253 hPtITSsa->Draw("sames");
255 TPaveStats *st3=(TPaveStats*)hPtITSsa->GetListOfFunctions()->FindObject("stats");
258 st3->SetTextColor(4);
259 TLegend* leg=new TLegend(0.5,0.5,0.69,0.79);
260 leg->SetFillColor(0);
261 TLegendEntry* ent=leg->AddEntry(hPtTPCITS,"TPC+ITS","L");
262 ent->SetTextColor(hPtTPCITS->GetLineColor());
263 ent=leg->AddEntry(hPtITSsa,"ITSsa","L");
264 ent->SetTextColor(hPtITSsa->GetLineColor());
265 // to be used only with pp data (ITS pure SA)
266 // ent=leg->AddEntry(hPtITSpureSA,"ITS pureSA","L");
267 //ent->SetTextColor(hPtITSpureSA->GetLineColor());
272 hRatio1->GetXaxis()->SetTitle("Pt (GeV/c)");
273 hRatio1->GetYaxis()->SetTitle("TPCITS/ITSsa");
274 // hRatio->GetYaxis()->SetTitle("(TPCITS+ITSsa)/ITSpureSA");
276 TLatex* tratio=new TLatex(0.2,0.75,"TPC+ITS/ITSsa vs Pt");
278 tratio->SetTextColor(1);
281 cITSsa1->SaveAs("ITSsa1.pdf");
282 gStyle->SetPalette(1);
283 hEtaPhiITSpureSA->SetStats(0);
284 hEtaPhiITSpureSA->SetTitle("ITS pureSA");
285 hEtaPhiITSsa->SetStats(0);
286 hEtaPhiITSsa->SetTitle("ITSsa tracks");
287 hEtaPhiTPCITS->SetStats(0);
288 hEtaPhiTPCITS->SetTitle("TPC+ITS tracks");
289 ctitle=GetRunNumber()+"Eta-phi distribution for ITSsa and TPC+ITS tracks";
290 TCanvas* cITSsa2=new TCanvas("cITSsa2",ctitle,1200,800);
292 // cITSsa2->Divide(3,1); for ITSpuresa
293 cITSsa2->Divide(2,1);
295 // TPad* p1=new TPad("p1","Tracking: tracks distribution in EtaPhi",0,0.5,1.,1.);
298 // hEtaPhiITSpureSA->Draw("colz");
299 // hEtaPhiITSpureSA->GetXaxis()->SetTitle("Eta");
300 // hEtaPhiITSpureSA->GetYaxis()->SetTitle("Phi");
303 hEtaPhiITSsa->Draw("colz");
304 hEtaPhiITSsa->GetXaxis()->SetTitle("Eta");
305 hEtaPhiITSsa->GetYaxis()->SetTitle("Phi");
308 hEtaPhiTPCITS->Draw("colz");
309 hEtaPhiTPCITS->GetXaxis()->SetTitle("Eta");
310 hEtaPhiTPCITS->GetYaxis()->SetTitle("Phi");
312 cITSsa2->SaveAs("ITSsa2.pdf");
315 //-----------------------------------------------------
316 // /////////// Plot SDD ////////////
317 //_______________________________________________________________________
318 void SetDrawAtt(Int_t markerstyle,Int_t markercolor,Int_t markersize,Int_t linecolor,Int_t linewidth,TH1 *h1){
321 h1->SetMarkerStyle(markerstyle);
322 h1->SetMarkerColor(markercolor);
323 h1->SetMarkerSize(markersize);
324 h1->SetLineColor(linecolor);
325 h1->SetLineWidth(linewidth);
328 //_______________________________________________________________________
329 Double_t LangausFun(Double_t *x, Double_t *par) {
332 //par[0]=Width (scale) parameter of Landau density
333 //par[1]=Most Probable (MP, location) parameter of Landau density
334 //par[2]=Total area (integral -inf to inf, normalization constant)
335 //par[3]=Width (sigma) of convoluted Gaussian function
337 //In the Landau distribution (represented by the CERNLIB approximation),
338 //the maximum is located at x=-0.22278298 with the location parameter=0.
339 //This shift is corrected within this function, so that the actual
340 //maximum is identical to the MP parameter.
343 Double_t invsq2pi = 0.3989422804014; // (2 pi)^(-1/2)
344 Double_t mpshift = -0.22278298; // Landau maximum location
347 Double_t np = 100.0; // number of convolution steps
348 Double_t sc = 5.0; // convolution extends to +-sc Gaussian sigmas
360 // MP shift correction
361 mpc = par[1] - mpshift * par[0];
363 // Range of convolution integral
364 xlow = x[0] - sc * par[3];
365 xupp = x[0] + sc * par[3];
367 step = (xupp-xlow) / np;
369 // Convolution integral of Landau and Gaussian by sum
370 for(i=1.0; i<=np/2; i++) {
371 xx = xlow + (i-.5) * step;
372 fland = TMath::Landau(xx,mpc,par[0]) / par[0];
373 sum += fland * TMath::Gaus(x[0],xx,par[3]);
375 xx = xupp - (i-.5) * step;
376 fland = TMath::Landau(xx,mpc,par[0]) / par[0];
377 sum += fland * TMath::Gaus(x[0],xx,par[3]);
380 return (par[2] * step * sum * invsq2pi / par[3]);
383 //_________________________________________________________________________
384 void PlotSDD(TFile* fildat, TCanvas**& clist, Int_t& cnum){
385 TDirectoryFile* df=(TDirectoryFile*)fildat->Get("SDD_Performance");
387 printf("SDD_Performance MISSING -> Exit\n");
390 TList* l=(TList*)df->Get("coutputRP");
392 printf("coutputRP TList MISSING -> Exit\n");
395 cnum=1; // number of canvases
396 clist= new TCanvas* [cnum];//array of pointers to TCanvases
397 gROOT->SetStyle("Plain");
398 gStyle->SetOptStat(1111);
399 TH1F* htimT=(TH1F*)l->FindObject("hDrTimTPAll");
400 TH1F* htimTe=(TH1F*)l->FindObject("hDrTimTPExtra");
401 TH1F* htimTne=(TH1F*)l->FindObject("hDrTimTPNoExtra");
405 htimT->SetLineWidth(2);
406 htimTe->SetLineWidth(2);
407 htimTne->SetLineWidth(2);
408 // TH1F* hev=(TH1F*)l->FindObject("hNEvents");
409 // Int_t nTotEvents=hev->GetBinContent(2);
410 // Int_t nTrigEvents=hev->GetBinContent(3);
411 // Int_t nEvents=nTotEvents;
412 // printf("---- Statistics ----\n");
413 // printf("Number of Events = %d\n",nTotEvents);
414 // if(nTrigEvents>0){
415 // printf("Number of Triggered Events = %d\n",nTrigEvents);
416 // nEvents=nTrigEvents;
418 // printf("No request on the trigger done when running the task\n");
421 // Double_t norm=hcllay->GetBinContent(1);
423 // hcllay->Scale(1./norm);
424 // hcllay->SetTitle("");
425 // hcllay->GetXaxis()->SetRange(2,7);
426 // hcllay->SetMinimum(0.);
427 // hcllay->SetMaximum(1.1);
428 // hcllay->SetMarkerStyle(23);
429 // TCanvas* ceffL=new TCanvas("ceffL","General: PointPerLayer",800,1000);
431 // ceffL->Divide(1,2);
433 // ceffL->SetGridy();
435 // hcllay->GetXaxis()->SetTitle("Layer");
436 // hcllay->GetYaxis()->SetTitle("Fraction of tracks with point in layer");
441 TGraphErrors* gmpv=new TGraphErrors(0);
442 TGraphErrors* gsigg=new TGraphErrors(0);
443 TGraphErrors* gsigl=new TGraphErrors(0);
448 TF1 *lfun = new TF1("LangausFun",LangausFun,50.,300.,4);
449 for(Int_t it=0; it<8; it++){
450 hSigTim[it]=(TH1F*)l->FindObject(Form("hSigTimeInt%d",it));
451 if(hSigTim[it]->GetEntries()>200){
452 lfun->SetLineWidth(2);
453 lfun->SetParameter(0,5.);
454 lfun->SetParameter(1,80.);
455 lfun->SetParameter(2,hSigTim[it]->GetEntries()/10.);
456 lfun->SetParameter(3,10.);
457 lfun->SetParLimits(3,0.,20);
459 // hSigTim[it]->Fit("LangausFun","QLR");
460 hSigTim[it]->Fit("LangausFun","ON");
461 hSigTim[it]->GetXaxis()->SetTitle(Form("dE/dx, time interval %d",it+1));
462 hSigTim[it]->GetYaxis()->SetTitle("Events");
463 Float_t mpv=lfun->GetParameter(1);
464 Float_t empv=lfun->GetParError(1);
465 Float_t sig=lfun->GetParameter(3);
466 Float_t esig=lfun->GetParError(3);
467 Float_t sigl=lfun->GetParameter(0);
468 Float_t esigl=lfun->GetParError(0);
469 gmpv->SetPoint(iPoint,(Float_t)it,mpv);
470 gmpv->SetPointError(iPoint,0.,empv);
471 gsigg->SetPoint(iPoint,(Float_t)it,sig);
472 gsigg->SetPointError(iPoint,0.,esig);
473 gsigl->SetPoint(iPoint,(Float_t)it,sigl);
474 gsigl->SetPointError(iPoint,0.,esigl);
476 printf("Bin %d - MPV=%.3f \t SigmaLandau=%.3f \t SigmaGaus=%.3f\n",it,mpv,sigl,sig);
479 TString ctitle=GetRunNumber()+"SDD: DriftTime - dE/dx";
480 TCanvas* ctim=new TCanvas("ctim",ctitle,800,1000);
485 // htimTe->SetLineColor(2);
486 // htimTe->Draw("same");
487 htimTne->SetLineColor(4);
489 htimTne->GetXaxis()->SetTitle("Drift Time (ns)");
490 htimTne->GetYaxis()->SetTitle("TrackPoints");
491 htimTne->GetYaxis()->SetTitleOffset(1.2);
492 // TLatex* ta=new TLatex(0.5,0.85,"All Clusters");
494 // ta->SetTextColor(1);
496 // TLatex* te=new TLatex(0.5,0.8,"Extra Clusters");
498 // te->SetTextColor(2);
500 // TLatex* tn=new TLatex(0.3,0.3,"Non-Extra Clusters");
501 TLatex* tn=new TLatex(0.3,0.3,"Clusters on SDD modules");
505 TLine* tlin3=new TLine(450.,0.,450.,htimTne->GetMaximum());
506 tlin3->SetLineColor(2);
507 tlin3->SetLineWidth(2);
508 tlin3->SetLineStyle(7);
510 TLine* tlin4=new TLine(620.,0.,620.,htimTne->GetMaximum());
511 tlin4->SetLineColor(2);
512 tlin4->SetLineWidth(2);
513 tlin4->SetLineStyle(7);
515 TLatex* tlimit1=new TLatex(0.2,0.5,"Range for t0");
517 tlimit1->SetTextColor(2);
519 TLine* tlin5=new TLine(6200.,0.,6200.,htimTne->GetMaximum());
520 tlin5->SetLineColor(2);
521 tlin5->SetLineStyle(7);
522 tlin5->SetLineWidth(2);
524 TLine* tlin6=new TLine(5150.,0.,5150.,htimTne->GetMaximum());
525 tlin6->SetLineColor(2);
526 tlin6->SetLineWidth(2);
527 tlin6->SetLineStyle(7);
529 TLatex* tlimit2=new TLatex(0.6,0.5,"Range for falling edge");
531 tlimit2->SetTextColor(2);
535 // TCanvas* cpars=new TCanvas("cpars","Params",800,600);
537 gPad->SetLeftMargin(0.14);
538 gPad->SetFrameLineWidth(2);
541 gmpv->SetMarkerStyle(20);
542 gmpv->SetMinimum(75);
543 gmpv->SetMaximum(90);
544 gmpv->GetXaxis()->SetLimits(-0.2,6.8);
546 gmpv->GetXaxis()->SetTitle("Drift Time interval number");
547 gmpv->GetYaxis()->SetTitle("Landau MPV (keV)");
548 gmpv->GetXaxis()->SetTitleSize(0.05);
549 gmpv->GetYaxis()->SetTitleSize(0.05);
550 gmpv->GetYaxis()->SetTitleOffset(1.2);
551 TLatex* tex=new TLatex(0.2,0.75,"dE/dx MPV vs Drift time interval");
553 tex->SetTextColor(1);
557 ctim->SaveAs("SDD.pdf");
560 //_______________________________________________________________________
561 //////////////// SSD ///////////////////////
562 //_______________________________________________________________________
563 void GetGainModuleLevelSSD(TFile* fildat, TCanvas**& clist, Int_t& cnum)
565 gROOT->SetStyle("Plain");
566 gStyle->SetOptStat(1111);
567 gStyle->SetPalette(1,0);
569 clist=new TCanvas*[1];
571 TDirectoryFile* df=(TDirectoryFile*)fildat->Get("PWG1dEdxSSDQA");
572 TList* listin=(TList*)df->Get("SSDdEdxQA");
575 fHistQ=(TH2F*)listin ->FindObject("QACharge");
576 fHistQ->SetStats(111);
577 fHistQ->SetTitle("SSD Charge vs module number");
579 TH2F* fHistCR=(TH2F*)listin ->FindObject("QAChargeRatio");
580 fHistCR->SetStats(0);
581 fHistCR->SetTitle("SSD Charge Ratio vs module number");
585 TH1F* fHistMPVs=new TH1F("SSD HistMPVS","HistMPVs;MPV;N",75,70,95);
587 TH1F* fHistCRmean=new TH1F("SSD HistCRmean","HistCRmean;CRmean;N",200,-1,1);
589 TH1F *fMPVGraph = new TH1F("SSD MPV","MPVgraph;Module number;MPV",1698,-0.5,1697.5);
590 fMPVGraph->SetMarkerColor(kRed);
591 fMPVGraph->SetMarkerSize(0.5);
592 fMPVGraph->SetMarkerStyle(22);
593 fMPVGraph->SetStats(111111);
595 TH1F *fCRmeanGraph = new TH1F("SSD CRmeangraph","CRmeangraph;Module number;MPV",1698,-0.5,1697.5);
596 fCRmeanGraph->SetMarkerColor(kBlue);
597 fCRmeanGraph->SetMarkerSize(0.5);
598 fCRmeanGraph->SetMarkerStyle(23);
599 fCRmeanGraph->SetStats(111111);
604 // ofstream outfiletxtbad;
605 //outfiletxtbad.open("QALHC11eCPass1_bis/badModules.txt");
606 for (int i =0;i<1698;i++)
613 TH1D* fHist1DCR= fHistCR->ProjectionY(tmpCR,i+1,i+1);
614 Double_t mean=fHist1DCR->GetMean();
615 if(!(TMath::Abs(mean)<1.0)||fHist1DCR->GetEntries()<10)
617 fHistCRmean->Fill(mean);
618 fCRmeanGraph->SetBinContent(i+1,mean);
619 fCRmeanGraph->SetBinError(i+1,fHist1DCR->GetRMS());
620 fCRmeanGraph->GetYaxis()->SetTitle("CR");
621 TH1D* fHist1DQ=fHistQ->ProjectionY(tmpQ,i+1,i+1);
623 if(fHist1DQ->GetEntries()<ntofit)
625 //outfiletxtbad<<"Low statistic \t module= "<<i<<" netries="<<fHist1DQ->GetEntries()<<endl;
631 Float_t range=fHist1DQ->GetBinCenter(fHist1DQ->GetMaximumBin());
632 TF1 *f1 = new TF1(tmpQ,LangausFun,range*0.45,range*3.0,4);
633 f1->SetParameters(7.0,range,1.0,5.5);
634 Float_t normalization=fHist1DQ->GetEntries()*fHist1DQ->GetXaxis()->GetBinWidth(2)/f1->Integral(range*0.45,range*3.0);
635 f1->SetParameters(7.0,range,normalization,5.5);
636 //f1->SetParameters(7.0,range,fHist1DQ->GetMaximum(),5.5);
637 f1->SetParNames("sigma Landau","MPV","N","sigma Gaus");
638 f1->SetParLimits(0,2.0,100.0);
639 f1->SetParLimits(3,0.0,100.0);
640 if(fHist1DQ->Fit(tmpQ,"BRQON")==0)
642 mpv[i]=f1->GetParameter(1);
643 fHistMPVs->Fill(mpv[i]);
644 fMPVGraph->SetBinContent(i+1,f1->GetParameter(1));
645 fMPVGraph->SetBinError(i+1,f1->GetParError(1));
648 //outfiletxtbad<<"MPV lower than 75 \t module="<<i<<endl;
652 // outfiletxtbad<<"MPV higher than 100 \t module="<<i<<endl;
654 if(f1->GetParError(1)>1.0)
656 //outfiletxtbad<<"MPV high error on MPV \t module="<<i<<endl;
662 //outfiletxtbad<<"BAD FIT \t module="<<i<<endl;
668 TString ctitle=GetRunNumber()+"SSD Calibration 1";
669 TCanvas *c1SSD = new TCanvas("c1SSD",ctitle,1000,1000);
673 fHistQ->DrawCopy("colz");
675 fHistCR->DrawCopy("colz");
677 // TCanvas *c2SSD = new TCanvas("c2SSD","SSD Calibration 2",1000,1000);
679 //c2SSD->Divide(2,2);
681 fMPVGraph->DrawCopy();
682 TLine* tlin0=new TLine(0.,80.,1698.,80.);
683 tlin0->SetLineColor(2);
684 tlin0->SetLineWidth(2);
686 TLine* tlin01=new TLine(0.,90.,1698.,90.);
687 tlin01->SetLineColor(2);
688 tlin01->SetLineWidth(2);
689 tlin01->Draw("same");
691 fHistMPVs->DrawCopy();
693 fCRmeanGraph->DrawCopy();
694 TLine* tlin1=new TLine(0.,0.2,1698.,0.2);
695 tlin1->SetLineColor(2);
696 tlin1->SetLineWidth(2);
698 TLine* tlin2=new TLine(0.,-0.2,1698.,-0.2);
699 tlin2->SetLineColor(2);
700 tlin2->SetLineWidth(2);
702 TLatex* ta1=new TLatex(0.2,0.8,"SSD Calibration");
704 ta1->SetTextSize(0.05);
705 ta1->SetTextColor(2);
708 fHistCRmean->DrawCopy();
710 c1SSD->SaveAs("SSD.pdf");
713 //_______________________________________________________________________
714 void VertexQAMacro(TFile *fildat, TCanvas **&clist, Int_t &cnum){
716 TDirectoryFile *dir = (TDirectoryFile*)fildat->Get("Vertex_Performance");
718 Printf("Vertex directory not found... check!");
721 TList *lt = (TList*)dir->Get("cOutputVtxESD");
724 clist = new TCanvas*[1];
727 TH1F *xVtxSPD = (TH1F*)lt->FindObject("fhSPDVertexX");
728 TH1F *yVtxSPD = (TH1F*)lt->FindObject("fhSPDVertexY");
729 TH1F *zVtxSPD = (TH1F*)lt->FindObject("fhSPDVertexZ");
731 TH1F *zVtxSPD_Zonly = (TH1F*)lt->FindObject("fhSPDVertexZonly");
734 Printf("using SPD 3D histo, Zonly not available");
735 zVtxSPD_Zonly = (TH1F*)lt->FindObject("fhSPDVertexZ");
738 TH1F *xVtxTRK = (TH1F*)lt->FindObject("fhTRKVertexX");
739 TH1F *yVtxTRK = (TH1F*)lt->FindObject("fhTRKVertexY");
740 TH1F *zVtxTRK = (TH1F*)lt->FindObject("fhTRKVertexZ");
742 TH2F *hntrksSPDvsSPDcls = (TH2F*)lt->FindObject("fhntrksSPDvsSPDcls");
743 TH2F *hntrksZvsSPDcls = (TH2F*)lt->FindObject("fhntrksZvsSPDcls");
745 Bool_t histoCorelation = kTRUE;
747 if(!hntrksZvsSPDcls){
748 Printf("skipping the second part, no 2D histos available");
749 histoCorelation=kFALSE;
752 TString ctitle=GetRunNumber()+"TRKandSPD3DxVtx";
753 TCanvas *TRK_SPD3D_Vtx = new TCanvas("TRKandSPD3DVtx",ctitle,1000,1000);
754 TRK_SPD3D_Vtx->Divide(3,2);
755 clist[0]=TRK_SPD3D_Vtx;
756 gStyle->SetOptFit(111);
758 TRK_SPD3D_Vtx->cd(1);
759 xVtxSPD->SetMarkerStyle(20);
760 xVtxSPD->SetLineWidth(3);
761 xVtxSPD->SetMarkerColor(kBlue+2);
762 TF1 *fx = new TF1("gaus", "gaus", -1, 1);
763 xVtxTRK->SetMarkerStyle(20);
764 xVtxTRK->SetLineWidth(4);
765 xVtxTRK->SetLineColor(2);
767 xVtxTRK->Fit("gaus", "M");
768 xVtxSPD->Draw("PE SAME");
769 xVtxTRK->GetXaxis()->SetRangeUser(-0.05, 0.15);
770 xVtxSPD->GetXaxis()->SetRangeUser(-0.05, 0.15);
772 TLatex* tVTX1=new TLatex(0.15,0.85,"VertexSPD");
774 tVTX1->SetTextColor(kBlue+2);
776 TLatex* tVTX2=new TLatex(0.15,0.8,"VertexTRK");
778 tVTX2->SetTextColor(2);
781 TRK_SPD3D_Vtx->cd(2);
782 yVtxSPD->SetMarkerStyle(20);
783 yVtxSPD->SetLineWidth(3);
784 yVtxSPD->SetMarkerColor(kBlue+2);
785 TF1 *fy = new TF1("gaus", "gaus", -1, 1);
786 yVtxTRK->SetMarkerStyle(20);
787 yVtxTRK->SetLineWidth(3);
788 yVtxTRK->SetLineColor(2);
790 yVtxTRK->Fit("gaus", "M");
791 yVtxSPD->Draw("PE SAME");
792 yVtxTRK->GetXaxis()->SetRangeUser(0.15, 0.4);
793 yVtxSPD->GetXaxis()->SetRangeUser(0.15, 0.4);
795 TLatex* tVTX3=new TLatex(0.15,0.85,"VertexSPD");
797 tVTX3->SetTextColor(kBlue+2);
799 TLatex* tVTX4=new TLatex(0.15,0.8,"VertexTRK");
801 tVTX4->SetTextColor(2);
806 TRK_SPD3D_Vtx->cd(3);
808 TF1 *fz = new TF1("gaus", "gaus", -20, 20);
809 zVtxTRK->SetMarkerStyle(20);
810 zVtxTRK->SetLineWidth(3);
811 zVtxTRK->SetMarkerColor(2);
812 zVtxTRK->SetLineColor(2);
814 zVtxTRK->Fit("gaus", "M");
815 zVtxSPD->SetMarkerStyle(20);
816 zVtxSPD->SetLineWidth(1);
817 zVtxSPD->SetLineColor(kBlue+2);
818 zVtxSPD->SetMarkerColor(kBlue+2);
819 zVtxSPD->SetMarkerSize(0.8);
820 zVtxSPD->Draw("PE SAME");
821 TLatex* tVTX5=new TLatex(0.15,0.85,"VertexSPD");
823 tVTX5->SetTextColor(kBlue+2);
825 TLatex* tVTX6=new TLatex(0.15,0.8,"VertexTRK");
827 tVTX6->SetTextColor(2);
832 // TCanvas *corrContrSPDClusters = new TCanvas("corrContrSPDClusters", "corrContrSPDClusters");
833 // corrContrSPDClusters->Divide(3,1);
834 //clist[1]=corrContrSPDClusters;
835 TRK_SPD3D_Vtx->cd(4);
836 // corrContrSPDClusters->cd(1);
837 zVtxSPD_Zonly->SetLineWidth(3);
838 zVtxSPD_Zonly->SetLineColor(kBlue+2);
839 zVtxSPD_Zonly->Draw();
840 TLatex* tVTX7=new TLatex(0.15,0.8,"Vertex Z only");
842 tVTX7->SetTextColor(2);
846 TRK_SPD3D_Vtx->cd(5);
847 //corrContrSPDClusters->cd(2);
848 hntrksSPDvsSPDcls->SetMarkerStyle(20);
849 hntrksSPDvsSPDcls->Draw();
851 TRK_SPD3D_Vtx->cd(6);
852 // corrContrSPDClusters->cd(3);
853 hntrksZvsSPDcls->SetMarkerStyle(20);
854 hntrksZvsSPDcls->Draw();
856 TRK_SPD3D_Vtx->SaveAs("vertex.pdf");
862 //_______________________________________________________________________
863 void PlotSPD(TFile *fildat, TFile *filMC, TCanvas **&clist, Int_t &cnum){
865 gROOT->SetStyle("Plain");
866 gStyle->SetPalette(1);
867 gStyle->SetOptStat(0);
868 gStyle->SetOptFit(111);
869 cnum=2; // number of canvases
870 clist= new TCanvas* [2];//array of pointers to TCanvases
872 TDirectoryFile *spddata = (TDirectoryFile*)fildat->Get("SPD_Performance");
874 TList *fListData = (TList*)spddata->Get("coutput1");
876 TString fTitleData = "Data";
877 TString fTitleMc = "MC";
880 Double_t nevtsData = ((TH1I*)(fListData->FindObject("hEventsProcessed")))->GetEntries();
881 printf(" #events in %s : %f \n",fTitleData.Data(),nevtsData);
883 TDirectoryFile *spdmc = (TDirectoryFile*)filMC->Get("SPD_Performance");
885 TList *fListMc = (TList*)spdmc->Get("coutput1");
886 Double_t nevtsMc = ((TH1I*)(fListMc->FindObject("hEventsProcessed")))->GetEntries();
887 printf(" #events in %s : %f \n",fTitleMc.Data(),nevtsMc);
888 //printf("Available functions : \n - ratiomodules() \n - ratiochips() \n - mapsinner(isShowMaps) \n - phiTracklet() \n - phiTrackletsZ() \n - foEfficiency() \n");
890 TH2F *trackData = (TH2F*)fListData->FindObject("hSPDphivsSPDeta");
891 trackData->SetTitle(Form("%s %s",trackData->GetTitle(),fTitleData.Data()));
892 TH1D *trackDataPhi = trackData->ProjectionY();
893 if(!trackDataPhi) printf("NO 1 \n");
894 //trackDataPhi->SetTitle(Form("%s %s",trackDataPhi->GetTitle(),fTitleData.Data()));
895 trackDataPhi->SetTitle("Tracklets vs Phi");
897 //trackDataPhi->SetLineColor(kRed);
898 //trackDataPhi->DrawCopy();
899 TH1D *trackDataEta = trackData->ProjectionX();
900 if(!trackDataEta) printf("NO 2 \n");
901 trackDataEta->SetTitle("Tracklets vs eta");
902 //trackDataEta->SetTitle(Form("%s %s",trackDataEta->GetTitle(),fTitleData.Data()));
904 // trackDataEta->SetLineColor(kRed);
905 // trackDataEta->DrawCopy();
907 TH1F etaData, phiData;
908 trackDataEta->Copy(etaData);
909 trackDataPhi->Copy(phiData);
911 TH1F etaFrac, phiFrac, mcEta, mcPhi;
912 trackDataEta->Copy(etaFrac);
913 trackDataPhi->Copy(phiFrac);
915 TH2F *trackMc = (TH2F*)fListMc->FindObject("hSPDphivsSPDeta");
916 trackMc->SetTitle(Form("%s %s",trackMc->GetTitle(),fTitleMc.Data()));
918 TString ctitle = GetRunNumber()+"tracklets";
919 TCanvas *tracklets = new TCanvas("tracklets",ctitle,1200,600);
921 tracklets->Divide(2,1);
923 tracklets->cd(1)->SetRightMargin(0.15);
924 //trackData->SetTitle(Form("%s %s",trackData->GetTitle(),fTitleData.Data()));
925 trackData->SetTitle("Data 2011");
926 trackData->DrawCopy("colz");
928 tracklets->cd(2)->SetRightMargin(0.15);
929 //trackMc->SetTitle(Form("%s %s",trackMc->GetTitle(),fTitleMc.Data()));
930 trackMc->SetTitle("Data 2010");
931 TH1D *h = (TH1D*)trackMc->DrawCopy("colz");
932 // fTitleData.ReplaceAll(" ","");
933 // fTitleMc.ReplaceAll(" ","");
934 // tracklets->SaveAs(Form("trackletsPhiEtaMaps_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));
935 tracklets->SaveAs("SPDtracklets.pdf");
937 TH1D *trackMcPhi = trackMc->ProjectionY();
938 trackMcPhi->SetTitle(Form("%s",h->GetTitle()));
940 // trackMcPhi->DrawCopy();
941 TH1D *trackMcEta = trackMc->ProjectionX();
942 trackMcEta->SetTitle(Form("%s",h->GetTitle()));
944 // trackMcEta->DrawCopy();
946 //rawDist->SaveAs(Form("trackletsPhiEtaRaw_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));
949 trackMcEta->Copy(etaMc);
950 trackMcPhi->Copy(phiMc);
952 trackMcEta->Copy(mcEta);
953 trackMcPhi->Copy(mcPhi);
955 etaFrac.Scale(1./etaFrac.GetEntries());
956 mcEta.Scale(1./mcEta.GetEntries());
957 etaFrac.Add(&mcEta,-1);
958 etaFrac.Divide(&mcEta);
960 phiFrac.Scale(1./phiFrac.GetEntries());
961 mcPhi.Scale(1./mcPhi.GetEntries());
962 phiFrac.Add(&mcPhi,-1);
963 phiFrac.Divide(&mcPhi);
965 ctitle = GetRunNumber()+"tracklets and ratios vs eta and phi";
966 TCanvas *track = new TCanvas("track",ctitle,1200,1200);
970 phiData.SetLineColor(kRed);
971 phiData.SetLineWidth(2);
972 phiData.Scale(1./phiData.GetEntries());
974 phiMc.Scale(1./phiMc.GetEntries());
975 // TLatex* tphi=new TLatex(0.6,0.85,"Red = data; Blue =MC");
976 TLatex* tphi=new TLatex(0.6,0.85,"Red = LHC11h; Blue = LHC10h");
978 tphi->SetTextSize(0.04);
979 tphi->SetTextColor(1);
981 phiMc.DrawCopy("same");
983 etaData.SetLineColor(kRed);
984 etaData.SetLineWidth(2);
985 etaData.Scale(1./etaData.GetEntries());
987 etaMc.Scale(1./etaMc.GetEntries());
989 etaMc.DrawCopy("same");
990 // track->SaveAs(Form("trackletsPhiEtaNorm_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));
992 // TCanvas *frac = new TCanvas("frac","fractions",1200,600);
996 // phiFrac.SetTitle(Form(" #Delta#varphi/#varphi_{%s} %s - %s ",fTitleMc.Data(),fTitleData.Data(),fTitleMc.Data()));
997 phiFrac.SetLineColor(1);
998 // TLatex* tratio=new TLatex(0.2,0.85,"Data/MC");
999 TLatex* tratio=new TLatex(0.2,0.85,"Data 2011/ Data 2010");
1001 // tratio->SetTextSize();
1002 tratio->SetTextColor(1);
1006 // etaFrac.SetTitle(Form(" #Delta#eta/#eta_{%s} %s - %s ",fTitleMc.Data(),fTitleData.Data(),fTitleMc.Data()));
1007 etaFrac.SetLineColor(1);
1009 // track->SaveAs(Form("trackletsPhiEtaNorm_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));
1010 // frac->SaveAs(Form("relativeRatios_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));
1012 track->SaveAs("SPD_eta_phi.pdf");
1015 //_______________________________________________________________________
1016 Bool_t PlotITSTPCMatchingEff(TFile *f, TCanvas**& clist,Int_t& cnum) {
1019 clist = new TCanvas*[1];
1021 // clist = new TCanvas* [1];
1022 TString ctitle = GetRunNumber()+"ITS-TPC match";
1023 TCanvas* cITSTPCmatch = new TCanvas("cITSTPCmatch",ctitle,10,10,1200,600);
1024 clist[0]=cITSTPCmatch;
1025 cITSTPCmatch->Divide(2,1);
1026 cITSTPCmatch->cd(1);
1029 cITSTPCmatch->cd(2);
1033 // clist = cITSTPCmatch;
1035 if(!f) return kFALSE;
1039 TDirectoryFile *dir=0;
1041 // count active SPD HSs
1042 dir=(TDirectoryFile*)f->GetDirectory("SPD_Performance");
1043 if(dir) listSPD = (TList*)dir->Get("coutput1");
1044 if(!dir) return kFALSE;
1046 Float_t spdFrac[2]={0.,0.};
1047 TH1F *hnHSsSPD=new TH1F("hnHSsSPD","Active HSs in SPD layers 1 and 2; layer; HSs",2,0.5,2.5);
1050 TH1F *hFiredChip = (TH1F*)listSPD->FindObject("hFiredChip");
1051 Int_t nHSsInner=0,nHSsOuter=0;
1052 for(Int_t i=0;i<400;i++) if(hFiredChip->GetBinContent(i)>0) nHSsInner++;
1053 for(Int_t i=400;i<1200;i++) if(hFiredChip->GetBinContent(i)>0) nHSsOuter++;
1054 nHSsInner = (Int_t)(nHSsInner/10);
1055 nHSsOuter = (Int_t)(nHSsOuter/10);
1056 hnHSsSPD->SetBinContent(1,nHSsInner);
1057 hnHSsSPD->SetBinContent(2,nHSsOuter);
1058 spdFrac[0]=(Float_t)nHSsInner/40.;
1059 spdFrac[1]=(Float_t)nHSsOuter/80.;
1061 TGraph *spdFrac0=new TGraph(1);
1062 spdFrac0->SetPoint(0,0.08,spdFrac[0]);
1063 spdFrac0->SetMarkerColor(1); spdFrac0->SetMarkerStyle(20);
1064 TGraph *spdFrac1=new TGraph(1);
1065 spdFrac1->SetPoint(0,0.08,spdFrac[1]);
1066 spdFrac1->SetMarkerColor(1); spdFrac1->SetMarkerStyle(24);
1067 TLegend *l2=new TLegend(0.1,0.62,0.5,0.93);
1068 l2->SetBorderSize(1);
1069 l2->AddEntry(spdFrac0,"Frac. active SPD0","p");
1070 l2->AddEntry(spdFrac1,"Frac. active SPD1","p");
1073 // Efficiencies for CENTRAL
1075 dir=(TDirectoryFile*)f->GetDirectory("ITS_Performance");
1076 if(dir) list = (TList*)dir->Get("cOutputITS_3500_10000");
1077 if(!list) return kFALSE;
1079 TH1F *fHistPtTPCInAcc = (TH1F*)list->FindObject("fHistPtTPCInAcc");
1080 TH1F *fHistPtITSMI6InAcc = (TH1F*)list->FindObject("fHistPtITSMI6InAcc");
1081 TH1F *fHistPtITSMI5InAcc = (TH1F*)list->FindObject("fHistPtITSMI5InAcc");
1082 TH1F *fHistPtITSMI4InAcc = (TH1F*)list->FindObject("fHistPtITSMI4InAcc");
1083 TH1F *fHistPtITSMI3InAcc = (TH1F*)list->FindObject("fHistPtITSMI3InAcc");
1084 TH1F *fHistPtITSMI2InAcc = (TH1F*)list->FindObject("fHistPtITSMI2InAcc");
1085 TH1F *fHistPtITSMISPDInAcc = (TH1F*)list->FindObject("fHistPtITSMISPDInAcc");
1086 TH1F *fHistPtITSMIoneSPDInAcc = (TH1F*)list->FindObject("fHistPtITSMIoneSPDInAcc");
1087 TH1F *fHistPtITSTPCsel = (TH1F*)list->FindObject("fHistPtITSTPCsel");
1088 TH1F *fHistPtITSMIge2InAcc = (TH1F*)fHistPtITSMI6InAcc->Clone("fHistPtITSMIge2InAcc");
1089 fHistPtITSMIge2InAcc->Add(fHistPtITSMI5InAcc);
1090 fHistPtITSMIge2InAcc->Add(fHistPtITSMI4InAcc);
1091 fHistPtITSMIge2InAcc->Add(fHistPtITSMI3InAcc);
1092 fHistPtITSMIge2InAcc->Add(fHistPtITSMI2InAcc);
1095 TLegend *l3=new TLegend(0.5,0.62,0.95,0.93);
1096 l3->SetBorderSize(1);
1097 cITSTPCmatch->cd(1);
1098 fHistPtITSMIge2InAcc->SetTitle("Fraction of prolonged tracks with N ITS points: central");
1099 fHistPtITSMIge2InAcc->SetYTitle("ITS+TPC / TPC");
1100 fHistPtITSMIge2InAcc->Divide(fHistPtITSMIge2InAcc,fHistPtTPCInAcc,1,1,"B");
1101 fHistPtITSMIge2InAcc->SetMaximum(1.6);
1102 fHistPtITSMIge2InAcc->SetMinimum(0);
1103 fHistPtITSMIge2InAcc->GetXaxis()->SetRangeUser(0.1,30);
1104 fHistPtITSMIge2InAcc->Draw();
1105 l3->AddEntry(fHistPtITSMIge2InAcc,">=2 cls","l");
1106 fHistPtITSMI6InAcc->Divide(fHistPtITSMI6InAcc,fHistPtTPCInAcc,1,1,"B");
1107 fHistPtITSMI6InAcc->SetLineColor(2);
1108 l3->AddEntry(fHistPtITSMI6InAcc,"6 cls","l");
1109 fHistPtITSMI6InAcc->Draw("same");
1110 fHistPtITSMI5InAcc->Divide(fHistPtITSMI5InAcc,fHistPtTPCInAcc,1,1,"B");
1111 fHistPtITSMI5InAcc->SetLineColor(3);
1112 l3->AddEntry(fHistPtITSMI5InAcc,"5 cls","l");
1113 fHistPtITSMI5InAcc->Draw("same");
1114 fHistPtITSMI4InAcc->Divide(fHistPtITSMI4InAcc,fHistPtTPCInAcc,1,1,"B");
1115 fHistPtITSMI4InAcc->SetLineColor(4);
1116 l3->AddEntry(fHistPtITSMI4InAcc,"4 cls","l");
1117 fHistPtITSMI4InAcc->Draw("same");
1118 fHistPtITSMI3InAcc->Divide(fHistPtITSMI3InAcc,fHistPtTPCInAcc,1,1,"B");
1119 fHistPtITSMI3InAcc->SetLineColor(6);
1120 l3->AddEntry(fHistPtITSMI3InAcc,"3 cls","l");
1121 fHistPtITSMI3InAcc->Draw("same");
1122 fHistPtITSMI2InAcc->Divide(fHistPtITSMI2InAcc,fHistPtTPCInAcc,1,1,"B");
1123 fHistPtITSMI2InAcc->SetLineColor(7);
1124 l3->AddEntry(fHistPtITSMI2InAcc,"2 cls","l");
1125 fHistPtITSMI2InAcc->Draw("same");
1126 fHistPtITSMISPDInAcc->Divide(fHistPtITSMISPDInAcc,fHistPtTPCInAcc,1,1,"B");
1127 fHistPtITSMISPDInAcc->SetLineColor(9);
1128 l3->AddEntry(fHistPtITSMISPDInAcc,"2SPD + any","l");
1129 fHistPtITSMISPDInAcc->Draw("same");
1130 fHistPtITSMIoneSPDInAcc->Divide(fHistPtITSMIoneSPDInAcc,fHistPtTPCInAcc,1,1,"B");
1131 fHistPtITSMIoneSPDInAcc->SetLineColor(15);
1132 l3->AddEntry(fHistPtITSMIoneSPDInAcc,">=1SPD + any","l");
1133 fHistPtITSMIoneSPDInAcc->Draw("same");
1134 fHistPtITSTPCsel->Divide(fHistPtITSTPCsel,fHistPtTPCInAcc,1,1,"B");
1135 fHistPtITSTPCsel->SetLineColor(kAzure+1);
1136 l3->AddEntry(fHistPtITSTPCsel,">=1SPD + any + d_{0} cut","l");
1137 fHistPtITSTPCsel->Draw("same");
1138 fHistPtITSMIge2InAcc->Draw("same");
1141 spdFrac0->Draw("p");
1142 spdFrac1->Draw("p");
1145 // Efficiencies for PERIPHERAL
1147 dir=(TDirectoryFile*)f->GetDirectory("ITS_Performance");
1148 if(dir) list = (TList*)dir->Get("cOutputITS_70_310");
1149 if(!list) return kFALSE;
1151 fHistPtTPCInAcc = (TH1F*)list->FindObject("fHistPtTPCInAcc");
1152 fHistPtITSMI6InAcc = (TH1F*)list->FindObject("fHistPtITSMI6InAcc");
1153 fHistPtITSMI5InAcc = (TH1F*)list->FindObject("fHistPtITSMI5InAcc");
1154 fHistPtITSMI4InAcc = (TH1F*)list->FindObject("fHistPtITSMI4InAcc");
1155 fHistPtITSMI3InAcc = (TH1F*)list->FindObject("fHistPtITSMI3InAcc");
1156 fHistPtITSMI2InAcc = (TH1F*)list->FindObject("fHistPtITSMI2InAcc");
1157 fHistPtITSMISPDInAcc = (TH1F*)list->FindObject("fHistPtITSMISPDInAcc");
1158 fHistPtITSMIoneSPDInAcc = (TH1F*)list->FindObject("fHistPtITSMIoneSPDInAcc");
1159 fHistPtITSTPCsel = (TH1F*)list->FindObject("fHistPtITSTPCsel");
1160 fHistPtITSMIge2InAcc = (TH1F*)fHistPtITSMI6InAcc->Clone("fHistPtITSMIge2InAcc");
1161 fHistPtITSMIge2InAcc->Add(fHistPtITSMI5InAcc);
1162 fHistPtITSMIge2InAcc->Add(fHistPtITSMI4InAcc);
1163 fHistPtITSMIge2InAcc->Add(fHistPtITSMI3InAcc);
1164 fHistPtITSMIge2InAcc->Add(fHistPtITSMI2InAcc);
1167 cITSTPCmatch->cd(2);
1168 fHistPtITSMIge2InAcc->SetTitle("Fraction of prolonged tracks with N ITS points: peripheral");
1169 fHistPtITSMIge2InAcc->SetYTitle("ITS+TPC / TPC");
1170 fHistPtITSMIge2InAcc->Divide(fHistPtITSMIge2InAcc,fHistPtTPCInAcc,1,1,"B");
1171 fHistPtITSMIge2InAcc->SetMaximum(1.6);
1172 fHistPtITSMIge2InAcc->SetMinimum(0);
1173 fHistPtITSMIge2InAcc->GetXaxis()->SetRangeUser(0.1,30);
1174 fHistPtITSMIge2InAcc->Draw();
1175 fHistPtITSMI6InAcc->Divide(fHistPtITSMI6InAcc,fHistPtTPCInAcc,1,1,"B");
1176 fHistPtITSMI6InAcc->SetLineColor(2);
1177 fHistPtITSMI6InAcc->Draw("same");
1178 fHistPtITSMI5InAcc->Divide(fHistPtITSMI5InAcc,fHistPtTPCInAcc,1,1,"B");
1179 fHistPtITSMI5InAcc->SetLineColor(3);
1180 fHistPtITSMI5InAcc->Draw("same");
1181 fHistPtITSMI4InAcc->Divide(fHistPtITSMI4InAcc,fHistPtTPCInAcc,1,1,"B");
1182 fHistPtITSMI4InAcc->SetLineColor(4);
1183 fHistPtITSMI4InAcc->Draw("same");
1184 fHistPtITSMI3InAcc->Divide(fHistPtITSMI3InAcc,fHistPtTPCInAcc,1,1,"B");
1185 fHistPtITSMI3InAcc->SetLineColor(6);
1186 fHistPtITSMI3InAcc->Draw("same");
1187 fHistPtITSMI2InAcc->Divide(fHistPtITSMI2InAcc,fHistPtTPCInAcc,1,1,"B");
1188 fHistPtITSMI2InAcc->SetLineColor(7);
1189 fHistPtITSMI2InAcc->Draw("same");
1190 fHistPtITSMISPDInAcc->Divide(fHistPtITSMISPDInAcc,fHistPtTPCInAcc,1,1,"B");
1191 fHistPtITSMISPDInAcc->SetLineColor(9);
1192 fHistPtITSMISPDInAcc->Draw("same");
1193 fHistPtITSMIoneSPDInAcc->Divide(fHistPtITSMIoneSPDInAcc,fHistPtTPCInAcc,1,1,"B");
1194 fHistPtITSMIoneSPDInAcc->SetLineColor(15);
1195 fHistPtITSMIoneSPDInAcc->Draw("same");
1196 fHistPtITSTPCsel->Divide(fHistPtITSTPCsel,fHistPtTPCInAcc,1,1,"B");
1197 fHistPtITSTPCsel->SetLineColor(kAzure+1);
1198 fHistPtITSTPCsel->Draw("same");
1199 fHistPtITSMIge2InAcc->Draw("same");
1202 spdFrac0->Draw("p");
1203 spdFrac1->Draw("p");
1204 cITSTPCmatch->SaveAs("TPCITSmatching.pdf");
1208 //_______________________________________________________________________
1209 void SaveC(TFile &fout, TCanvas**& clist, Int_t cnum){
1210 TDirectory *current = gDirectory;
1212 for(Int_t i=0;i<cnum;i++)clist[i]->Write();
1217 //_______________________________________________________________________
1218 TString GetRunNumber(){
1219 // returns a string with the run number
1221 sprintf(rn,"%d ",gRunNumber);