25 #include <Riostream.h> 26 #include <TClonesArray.h> 32 #include <TProfile2D.h> 33 #include <TDatabasePDG.h> 35 #include <AliAnalysisDataSlot.h> 36 #include <AliAnalysisDataContainer.h> 37 #include "AliAnalysisManager.h" 38 #include "AliESDtrack.h" 39 #include "AliESDVertex.h" 40 #include "AliVertexerTracks.h" 42 #include "AliPIDResponse.h" 43 #include "AliTPCPIDResponse.h" 44 #include "AliAODHandler.h" 45 #include "AliAODEvent.h" 46 #include "AliAODVertex.h" 47 #include "AliAODTrack.h" 48 #include "AliAODMCParticle.h" 49 #include "AliAODMCHeader.h" 53 #include "AliAnalysisTaskSE.h" 54 #include "AliCounterCollection.h" 64 #include "AliInputEventHandler.h" 65 #include "AliMultSelection.h" 72 #include "AliTRDTriggerAnalysis.h" 90 , fOutputCounters(0x0)
91 , fOutputCheckCentrality(0x0)
92 , fOutputEvSelection(0x0)
100 , fSimpleMode(kFALSE)
101 , fUseSelectionBit(kTRUE)
103 , fFillDistrTrackEffChecks(kFALSE)
106 , fHisNentriesSelBit(0)
109 , fHisTOFstartTimeMask(0)
110 , fHisTOFstartTimeRes(0)
111 , fHisTOFstartTimeDistrib(0)
113 , fHisTOFtimeKaonHyptime(0)
114 , fHisTOFtimeKaonHyptimeAC(0)
115 , fHisTOFsigmaKSigPid(0)
116 , fHisTOFsigmaPionSigPid(0)
117 , fHisTOFsigmaProtonSigPid(0)
118 , fHisTOFsigPid3sigPion(0)
119 , fHisTOFsigPid3sigKaon(0)
120 , fHisTOFsigPid3sigProton(0)
125 , fHisTPCsigmaPion(0)
126 , fHisTPCsigmaProton(0)
127 , fHisTPCsigNvsPtAllTracks(0)
128 , fHisTPCsigNvsPhiAllTracks(0)
129 , fHisTPCsigNvsEtaAllTracks(0)
130 , fHisTPCsigNvsPtDaughters(0)
131 , fHisTPCsigNvsPhiDaughters(0)
132 , fHisTPCsigNvsEtaDaughters(0)
133 , fHisTOFsigmaMCKSigPid(0)
134 , fHisTOFsigmaMCPionSigPid(0)
135 , fHisTOFsigmaMCProtonSigPid(0)
137 , fHisTPCsigmaMCPion(0)
138 , fHisTPCsigmaMCProton(0)
140 , fHisnClsITSselTr(0)
142 , fHisnClsITSSAspdAny(0)
143 , fHisnClsITSSAspdIn(0)
144 , fHisnClsITSSAspdOut(0)
146 , fHisnLayerITSselTr(0)
150 , fHisptGoodTrFromDaugh(0)
151 , fHisptGoodTrFromDaugh_filt(0)
157 , fHisd0dauphi_filt(0)
161 , fHisd0zdauphi_filt(0)
162 , fHisd0TracksSPDin(0)
163 , fHisd0TracksSPDany(0)
164 , fHisd0TracksFilterBit4(0)
165 , fHisd0TracksTPCITSSPDany(0)
167 , fHisPhiDaughters(0)
168 , fHisEtaDaughters(0)
169 , fHisEtavsPhiDaughters(0)
170 , fHisNTPCclsvsPtDaughters(0)
171 , fHisNTPCclsvsPhiDaughters(0)
172 , fHisNTPCclsvsEtaDaughters(0)
173 , fHisNTPCCrossedRowsvsPtDaughters(0)
174 , fHisNTPCCrossedRowsvsPhiDaughters(0)
175 , fHisNTPCCrossedRowsvsEtaDaughters(0)
176 , fHisRatioCRowsOverFclsvsPtDaughters(0)
177 , fHisRatioCRowsOverFclsvsPhiDaughters(0)
178 , fHisRatioCRowsOverFclsvsEtaDaughters(0)
179 , fHisNITSclsvsPtDaughters(0)
180 , fHisNITSclsvsPhiDaughters(0)
181 , fHisNITSclsvsEtaDaughters(0)
182 , fHisSPDclsDaughters(0)
184 , fHisPhiAllTracks(0)
185 , fHisEtaAllTracks(0)
186 , fHisEtavsPhiAllTracks(0)
187 , fHisNTPCclsvsPtAllTracks(0)
188 , fHisNTPCclsvsPhiAllTracks(0)
189 , fHisNTPCclsvsEtaAllTracks(0)
190 , fHisNTPCCrossedRowsvsPtAllTracks(0)
191 , fHisNTPCCrossedRowsvsPhiAllTracks(0)
192 , fHisNTPCCrossedRowsvsEtaAllTracks(0)
193 , fHisRatioCRowsOverFclsvsPtAllTracks(0)
194 , fHisRatioCRowsOverFclsvsPhiAllTracks(0)
195 , fHisRatioCRowsOverFclsvsEtaAllTracks(0)
196 , fHisNITSclsvsPtAllTracks(0)
197 , fHisNITSclsvsPhiAllTracks(0)
198 , fHisNITSclsvsEtaAllTracks(0)
199 , fHisSPDclsAllTracks(0)
204 , fHisptFakeTrFromDaugh(0)
205 , fHisptFakeTrFromDaughFilt(0)
207 , fHisNtracklets01(0)
208 , fHisNtracklets01AllEv(0)
213 , fHisNtrackletsIn(0)
215 , fHisNtrackletsOut(0)
217 , fHisMultvsPercentile(0)
218 , fHisntrklvsPercentile(0)
219 , fHisntrklvsPercentile01(0)
220 , fHisntrklvsPercentile01AllEv(0)
221 , fHisnTPCTracksvsPercentile(0)
222 , fHisnTPCITSTracksvsPercentile(0)
223 , fHisnTPCITS1SPDTracksvsPercentile(0)
224 , fHisStdEstimSignalPercentile(0)
225 , fHisStdEstimSignalNtrackletsIn(0)
226 , fHisStdEstimSignal(0)
227 , fHisStdPercentileSecondPercentile(0)
228 , fHisStdSignalSecondSignal(0)
229 , fHisStdPercentileOldFrwPercentile(0)
230 , fHisStdPercentileOldFrwPercentileDev(0)
237 , fHisxvtxSelEvWithD(0)
238 , fHisyvtxSelEvWithD(0)
239 , fHiszvtxSelEvWithD(0)
241 , fHisWhichVertSelEv(0)
246 , fHisWhyEvRejected(0)
247 , fHisnClsITSvsNtrackletsSel(0)
248 , fHiszvtxvsSPDzvtx(0)
249 , fHiszvtxvsSPDzvtxSel(0)
250 , fHiszvtxvsSPDzvtxSelWithD(0)
252 , fHisTPCVZE_AngleQ(0)
253 , fHisCentVsMultRPS(0)
262 for (
Int_t iii=0; iii<3; iii++) {
451 for (
Int_t iii=0; iii<3; iii++) {
458 DefineOutput(1,TList::Class());
460 if (
fOnOff[1]) DefineOutput(2,TList::Class());
462 if (
fOnOff[0]) DefineOutput(3,TList::Class());
466 DefineOutput(4,AliRDHFCutsDplustoKpipi::Class());
469 DefineOutput(4,AliRDHFCutsD0toKpi::Class());
472 DefineOutput(4,AliRDHFCutsDStartoKpipi::Class());
475 DefineOutput(4,AliRDHFCutsDstoKKpi::Class());
478 DefineOutput(4,AliRDHFCutsD0toKpipipi::Class());
481 DefineOutput(4,AliRDHFCutsLctopKpi::Class());
484 DefineOutput(4,AliRDHFCutsLctoV0::Class());
489 DefineOutput(5,TList::Class());
491 DefineOutput(6,TList::Class());
494 if(
fOnOff[3]) DefineOutput(7,TList::Class());
495 if(
fOnOff[4]) DefineOutput(8,TList::Class());
527 if(fDebug > 1) printf(
"AnalysisTaskSEHFQA::Init() \n");
567 AliFatal(
"Bad initialization for the decay channe - Exiting...");
571 const char* nameoutput=GetOutputSlot(4)->GetContainer()->GetName();
573 copycut->SetName(nameoutput);
578 AliFatal(
"Failing initializing AliRDHFCuts object - Exiting...");
590 if(fDebug > 1) printf(
"AnalysisTaskSEHFQA::UserCreateOutputObjects() \n");
595 fOutputEntries->SetName(GetOutputSlot(1)->GetContainer()->GetName());
598 TString hnameEntries=
"hNentries";
599 fHisNentries=
new TH1F(hnameEntries.Data(),
"Counts the number of events", 15,-0.5,14.5);
601 fHisNentries->GetXaxis()->SetBinLabel(2,
"nEvents Matched dAOD");
602 fHisNentries->GetXaxis()->SetBinLabel(3,
"Mismatched dAOD (Event numbers)");
603 fHisNentries->GetXaxis()->SetBinLabel(4,
"Mismatched dAOD (TProcessID)");
604 fHisNentries->GetXaxis()->SetBinLabel(5,
"Mismatched Old New Centrality");
607 fHisNentries->GetXaxis()->SetBinLabel(8,
"No VertexingHF");
608 fHisNentries->GetXaxis()->SetBinLabel(9,
"nCandidates(AnCuts)");
609 fHisNentries->GetXaxis()->SetBinLabel(10,
"EventsWithGoodVtx");
610 fHisNentries->GetXaxis()->SetBinLabel(11,
"N candidates");
612 fHisNentries->GetXaxis()->SetBinLabel(12,
"MC Cand from c");
613 fHisNentries->GetXaxis()->SetBinLabel(13,
"MC Cand from b");
614 fHisNentries->GetXaxis()->SetBinLabel(14,
"N fake Trks");
615 fHisNentries->GetXaxis()->SetBinLabel(15,
"N true Trks");
620 hnameEntries=
"HasSelBit";
621 fHisNentriesSelBit=
new TH2F(hnameEntries.Data(),
"Counts the number of events with SelectionBit", 5,0.,5.,100,0.,30.);
636 fOutputPID->SetName(GetOutputSlot(2)->GetContainer()->GetName());
639 fHisTOFflags=
new TH1F(
"hTOFflags",
"TOF flags",7,-0.5,6.5);
646 fHisTOFflags->GetXaxis()->SetBinLabel(6,
"kTOFmismatch");
650 fHisTOFsig=
new TH1F(hname.Data(),
"Distribution of TOF signal;TOF time [ps];Entries", 100, -2.e3,40.e3);
652 hname=
"hTOFstartTimeMask";
663 hname=
"hTOFstartTimeRes";
664 fHisTOFstartTimeRes=
new TH1F(hname.Data(),
"TOF start time resolution; Resolution (ps) ;Entries", 100, 0.,300.);
666 hname=
"hTOFstartTimeDistrib";
667 fHisTOFstartTimeDistrib=
new TH1F(hname.Data(),
"TOF start time distribution; Start time ;Entries", 400, -1000.,1000.);
670 fHisTOFtime=
new TH1F(hname.Data(),
"Distribution of TOF time Kaon;TOF time(Kaon) [ps];Entries", 1000, 0.,50000.);
672 hname=
"hTOFtimeKaonHyptime";
673 fHisTOFtimeKaonHyptime=
new TH2F(hname.Data(),
"TOFtime - timeHypothesisForKaon;p[GeV/c];TOFtime - timeHypothesisForKaon [ps]",500,0.,10.,1000,-20000.,20000.);
675 hname=
"hTOFtimeKaonHyptimeAC";
676 fHisTOFtimeKaonHyptimeAC=
new TH2F(hname.Data(),
"TOFtime - timeHypothesisForKaon;p[GeV/c];TOFtime - timeHypothesisForKaon [ps]",500,0.,10.,1000,-20000.,20000.);
678 hname=
"hTOFsigmaKSigPid";
679 fHisTOFsigmaKSigPid=
new TH2F(hname.Data(),
"(TOFsignal-timeK)/tofSigPid;p[GeV/c];(TOFsignal-timeK)/tofSigPid",500,0.,10.,400,-20,20);
681 hname=
"hTOFsigmaPionSigPid";
682 fHisTOFsigmaPionSigPid=
new TH2F(hname.Data(),
"(TOFsignal-time#pi)/tofSigPid;p[GeV/c];(TOFsignal-time#pi)/tofSigPid",500,0.,10.,400,-20,20);
684 hname=
"hTOFsigmaProtonSigPid";
685 fHisTOFsigmaProtonSigPid=
new TH2F(hname.Data(),
"(TOFsignal-timep)/tofSigPid;p[GeV/c];(TOFsignal-time p)/tofSigPid",500,0.,10.,400,-20,20);
687 hname=
"hTOFsigPid3sigPion";
690 hname=
"hTOFsigPid3sigKaon";
693 hname=
"hTOFsigPid3sigProton";
699 fHisTPCsig=
new TH1F(hname.Data(),
"Distribution of TPC signal;TPC sig;Entries", 100, 35.,100.);
702 fHisTPCsigvsp=
new TH2F(hname.Data(),
"TPCsig vs p;TPC p[GeV/c];TPCsig",500,0.,10.,1000,35.,100.);
704 hname=
"hTPCsigvspAC";
705 fHisTPCsigvspAC=
new TH2F(hname.Data(),
"TPCsig vs p;TPCp[GeV/c];TPCsig",500,0.,10.,1000,35.,100.);
708 fHisTPCsigmaK=
new TH2F(hname.Data(),
"TPC Sigma for K as a function of momentum;p[GeV/c];Sigma Kaon",500,0.,10.,400,-20,20);
710 hname=
"hTPCsigmaPion";
711 fHisTPCsigmaPion=
new TH2F(hname.Data(),
"TPC Sigma for #pi as a function of momentum;p[GeV/c];Sigma #pi",500,0.,10.,400,-20,20);
713 hname=
"hTPCsigmaProton";
714 fHisTPCsigmaProton=
new TH2F(hname.Data(),
"TPC Sigma for proton as a function of momentum;p[GeV/c];Sigma Proton",500,0.,10.,400,-20,20);
740 hname=
"hTPCsigNvsPtAllTracks";
741 fHisTPCsigNvsPtAllTracks=
new TH2F(hname.Data(),
"Distribution of n. points used for TPC dE/dx vs. p_{T};p_{T} [GeV/c]; n. points", 200, 0.,20.,161,-0.5,160.5);
743 hname=
"hTPCsigNvsPhiAllTracks";
744 fHisTPCsigNvsPhiAllTracks=
new TH2F(hname.Data(),
"Distribution of n. points used for TPC dE/dx vs. #phi;#phi [rad]; n. points", 100, 0.,2*TMath::Pi(),161,-0.5,160.5);
746 hname=
"hTPCsigNvsEtaAllTracks";
747 fHisTPCsigNvsEtaAllTracks=
new TH2F(hname.Data(),
"Distribution of n. points used for TPC dE/dx vs. #eta;eta; n. points", 80,-2.,2.,161,-0.5,160.5);
749 hname=
"hTPCsigNvsPtDaughters";
750 fHisTPCsigNvsPtDaughters=
new TH2F(hname.Data(),
"Distribution of n. points used for TPC dE/dx vs. p_{T};p_{T} [GeV/c]; n. points", 200, 0.,20.,161,-0.5,160.5);
752 hname=
"hTPCsigNvsPhiDaughters";
753 fHisTPCsigNvsPhiDaughters=
new TH2F(hname.Data(),
"Distribution of n. points used for TPC dE/dx vs. #phi;#phi [rad]; n. points", 100, 0.,2*TMath::Pi(),161,-0.5,160.5);
755 hname=
"hTPCsigNvsEtaDaughters";
756 fHisTPCsigNvsEtaDaughters=
new TH2F(hname.Data(),
"Distribution of n. points used for TPC dE/dx vs. #eta;eta; n. points", 80,-2.,2.,161,-0.5,160.5);
769 hname=
"hTOFsigmaMCKSigPid";
770 fHisTOFsigmaMCKSigPid=
new TH2F(hname.Data(),
"(TOFsignal-timeK)/tofSigPid;p[GeV/c];(TOFsignal-timeK)/tofSigPid",500,0.,10.,400,-20,20);
772 hname=
"hTOFsigmaMCPionSigPid";
773 fHisTOFsigmaMCPionSigPid=
new TH2F(hname.Data(),
"(TOFsignal-time#pi)/tofSigPid;p[GeV/c];(TOFsignal-time#pi)/tofSigPid",500,0.,10.,400,-20,20);
775 hname=
"hTOFsigmaMCProtonSigPid";
779 hname=
"hTPCsigmaMCK";
780 fHisTPCsigmaMCK=
new TH2F(hname.Data(),
"TPC Sigma for K as a function of momentum;p[GeV/c];Sigma Kaon",500,0.,10.,400,-20,20);
782 hname=
"hTPCsigmaMCPion";
783 fHisTPCsigmaMCPion=
new TH2F(hname.Data(),
"TPC Sigma for #pi as a function of momentum;p[GeV/c];Sigma #pi",500,0.,10.,400,-20,20);
785 hname=
"hTPCsigmaMCProton";
786 fHisTPCsigmaMCProton=
new TH2F(hname.Data(),
"TPC Sigma for proton as a function of momentum;p[GeV/c];Sigma Proton",500,0.,10.,400,-20,20);
802 fOutputTrack->SetName(GetOutputSlot(3)->GetContainer()->GetName());
805 fHisnClsITS=
new TH1F(hname.Data(),
"Distribution of number of ITS clusters;nITScls;Entries",7,-0.5,6.5);
807 hname=
"hnClsITSselTr";
808 fHisnClsITSselTr=
new TH1F(hname.Data(),
"Distribution of number of ITS clusters selected tracks;nITScls;Entries",7,-0.5,6.5);
811 fHisnClsITSSA=
new TH1F(hname.Data(),
"Distribution of number of ITS clusters(ITS-SA);nITScls;Entries",7,-0.5,6.5);
812 hname=
"hnClsITS-SA-SPDAny";
813 fHisnClsITSSAspdAny=
new TH1F(hname.Data(),
"Distribution of number of ITS clusters(ITS-SA) - SPD kAny;nITScls;Entries",7,-0.5,6.5);
814 hname=
"hnClsITS-SA-SPDIn";
815 fHisnClsITSSAspdIn=
new TH1F(hname.Data(),
"Distribution of number of ITS clusters(ITS-SA) - SPDin;nITScls;Entries",7,-0.5,6.5);
816 hname=
"hnClsITS-SA-SPDOut";
817 fHisnClsITSSAspdOut=
new TH1F(hname.Data(),
"Distribution of number of ITS clusters(ITS-SA) - SPDout;nITScls;Entries",7,-0.5,6.5);
821 fHisnLayerITS=
new TH1F(hname.Data(),
"Number of tracks with point in layer;ITS layer;",7,-1.5,5.5);
830 hname=
"hnLayerITSselTr";
831 fHisnLayerITSselTr=
new TH1F(hname.Data(),
"Number of selected tracks with point in layer;ITS layer;",7,-1.5,5.5);
840 hname=
"hnLayerITSsa";
841 fHisnLayerITSsa=
new TH1F(hname.Data(),
"Number of ITSsa tracks with point in layer;ITS layer;",7,-1.5,5.5);
851 fHisnClsSPD=
new TH1F(hname.Data(),
"Distribution of number of SPD clusters;nSPDcls;Entries",3,-0.5,2.5);
854 fHisptGoodTr=
new TH1F(hname.Data(),
"Pt distribution of 'good' tracks;p_{t}[GeV];Entries/0.05 GeV/c",400,0.,20.);
858 hname=
"hptGoodTrFromDaugh";
859 fHisptGoodTrFromDaugh=
new TH1F(hname.Data(),
"Pt distribution of 'good' candidate's daughters;p_{t}[GeV];Entries/0.05 GeV/c",400,0.,20.);
862 hname=
"hptGoodTrFromDaugh_filt";
863 fHisptGoodTrFromDaugh_filt=
new TH1F(hname.Data(),
"Pt distribution of 'good' candidate's daughters, cuts level;p_{t}[GeV];Entries/0.05 GeV/c",400,0.,20.);
868 hname=
"hdistrGoodTr";
869 fHisdistrGoodTr=
new TH1F(hname.Data(),
"Distribution of number of 'good' candidate's daughters per event;no.good-tracks/ev;Entries",4000,-0.5,3999.5);
873 fHisdistrSelTr=
new TH1F(hname.Data(),
"Distribution of number of Selected tracks per event;no.good-tracks/ev;Entries",4000,-0.5,3999.5);
877 fHisd0dau=
new TH1F(hname.Data(),
"Impact parameter (rphi) distribution of D daughter tracks;d_{0rphi}[cm];Entries/10^{3} cm",200,-0.1,0.1);
880 fHisd0dau_filt=
new TH1F(hname.Data(),
"Impact parameter (rphi) distribution of D daughter tracks, cut level;d_{0rphi}[cm];Entries/10^{3} cm",200,-0.1,0.1);
883 fHisd0dauphi=
new TH2F(hname.Data(),
"Impact parameter (rphi) distribution of D daughter tracks versus #phi; #phi [rad]; d_{0rphi} [cm]",400,0,6.3,200,-0.1,0.1);
885 hname=
"hd0dauphi_filt";
886 fHisd0dauphi_filt=
new TH2F(hname.Data(),
"Impact parameter (rphi) distribution of D daughter tracks versus #phi, cut level; #phi [rad]; d_{0rphi} [cm]",400,0,6.3,200,-0.1,0.1);
889 fHisd0zdau=
new TH1F(hname.Data(),
"Impact parameter (z) distribution of D daughter tracks;d_{0z}[cm];Entries/10^{3} cm",200,-0.1,0.1);
891 hname=
"hd0zdau_filt";
892 fHisd0zdau_filt=
new TH1F(hname.Data(),
"Impact parameter (z) distribution of D daughter tracks, cut level;d_{0z}[cm];Entries/10^{3} cm",200,-0.1,0.1);
896 fHisd0zdauphi=
new TH2F(hname.Data(),
"Impact parameter (z) distribution of D daughter tracks versus #phi; #phi [rad]; d_{0z} [cm]",400,0,6.3,200,-0.1,0.1);
898 hname=
"hd0zdauphi_filt";
899 fHisd0zdauphi_filt=
new TH2F(hname.Data(),
"Impact parameter (z) distribution of D daughter tracks versus #phi, filtering level; #phi [rad]; d_{0z} [cm]",400,0,6.3,200,-0.1,0.1);
901 hname=
"hd0TracksSPDin";
902 fHisd0TracksSPDin=
new TH1F(hname.Data(),
"Impact parameter (rphi) distribution of AOD tracks kITSrefit, SPDinner; d_{0rphi}[cm];Entries",200,-0.5,0.5);
904 hname=
"hd0TracksSPDany";
905 fHisd0TracksSPDany=
new TH1F(hname.Data(),
"Impact parameter (rphi) distribution of AOD tracks kITSrefit, SPDany; d_{0rphi}[cm];Entries",200,-0.5,0.5);
907 hname=
"hd0TracksFilterBit4";
908 fHisd0TracksFilterBit4=
new TH1F(hname.Data(),
"Impact parameter (rphi) distribution of AOD tracks FilterBit4; d_{0rphi}[cm];Entries",200,-0.5,0.5);
910 hname=
"hd0TracksTPCITSSPDany";
911 fHisd0TracksTPCITSSPDany=
new TH1F(hname.Data(),
"Impact parameter (rphi) distribution of AOD tracks TPC+ITScuts+SPDany; d_{0rphi}[cm];Entries",200,-0.5,0.5);
915 hname=
"hPtDaughters";
916 fHisPtDaughters=
new TH1F(hname.Data(),
"p_{T} distributions of the daughter tracks;p_{T} [GeV/c];Entries",200,0.,20.);
918 hname=
"hPhiDaughters";
919 fHisPhiDaughters=
new TH1F(hname.Data(),
"#phi distribution of the daughter tracks;#phi [rad];Entries",100,0.,2*(TMath::Pi()));
921 hname=
"hEtaDaughters";
922 fHisEtaDaughters=
new TH1F(hname.Data(),
"#eta distribution of the daughter tracks;#eta;Entries",80,-2.,2.);
924 hname=
"hEtavsPhiDaughters";
925 fHisEtavsPhiDaughters=
new TH2F(hname.Data(),
"#eta vs #phi distribution of the daughter tracks;#phi;#eta",100,0.,2*(TMath::Pi()),80,-2.,2.);
927 hname=
"hNTPCclsvsPtDaughters";
928 fHisNTPCclsvsPtDaughters=
new TH2F(hname.Data(),
"N TPC clusters vs p_{T} distribution of the daughter tracks;p_{T} [GeV/c];N TPC cls",200,0.,20.,85,-0.5,169.5);
930 hname=
"hNTPCclsvsPhiDaughters";
931 fHisNTPCclsvsPhiDaughters=
new TH2F(hname.Data(),
"N TPC clusters vs #phi distribution of the daughter tracks;#phi [rad];N TPC cls",100,0.,2*(TMath::Pi()),85,-0.5,169.5);
933 hname=
"hNTPCclsvsEtaDaughters";
934 fHisNTPCclsvsEtaDaughters=
new TH2F(hname.Data(),
"N TPC clusters vs #eta distribution of the daughter tracks;#eta;N TPC cls",80,-2.,2.,85,-0.5,169.5);
936 hname=
"hNTPCCrossedRowsvsPtDaughters";
937 fHisNTPCCrossedRowsvsPtDaughters=
new TH2F(hname.Data(),
"N TPC crossed rows vs p_{T} distribution of the daughter tracks;p_{T} [GeV/c];N TPC cros. rows",200,0.,20.,100,-0.5,199.5);
939 hname=
"hNTPCCrossedRowsvsPhiDaughters";
940 fHisNTPCCrossedRowsvsPhiDaughters=
new TH2F(hname.Data(),
"N TPC crossed rows vs #phi distribution of the daughter tracks;#phi [rad];N TPC cros. rows",100,0.,2*(TMath::Pi()),100,-0.5,199.5);
942 hname=
"hNTPCCrossedRowsvsEtaDaughters";
945 hname=
"hRatioCRowsOverFclsvsPtDaughters";
948 hname=
"hRatioCRowsOverFclsvsPhiDaughters";
951 hname=
"hRatioCRowsOverFclsvsEtaDaughters";
954 hname=
"hNITSclsvsPtDaughters";
955 fHisNITSclsvsPtDaughters=
new TH2F(hname.Data(),
"N ITS clusters vs p_{T} distribution of the daughter tracks;p_{T} [GeV/c];N ITS cls",200,0.,20,7,-0.5,6.5);
957 hname=
"hNITSclsvsPhiDaughters";
958 fHisNITSclsvsPhiDaughters=
new TH2F(hname.Data(),
"N ITS clusters vs #phi distribution of the daughter tracks;#phi [rad];N ITS cls",100,0.,2*(TMath::Pi()),7,-0.5,6.5);
960 hname=
"hNITSclsvsEtaDaughters";
961 fHisNITSclsvsEtaDaughters=
new TH2F(hname.Data(),
"N ITS clusters vs #eta distribution of the daughter tracks;#eta;N ITS cls",80,-2.,2.,7,-0.5,6.5);
963 hname=
"hSPDclsDaughters";
964 fHisSPDclsDaughters =
new TH1F(hname.Data(),
"N SPD points distribution;;Entries",4,-0.5,3.5);
970 hname=
"hPtAllTracks";
971 fHisPtAllTracks=
new TH1F(hname.Data(),
"p_{T} distributions of the AOD tracks (ID>0);p_{T} [GeV/c];Entries",200,0.,20.);
973 hname=
"hPhiAllTracks";
974 fHisPhiAllTracks=
new TH1F(hname.Data(),
"#phi distribution of the AOD tracks (ID>0);#phi [rad];Entries",100,0.,2*(TMath::Pi()));
976 hname=
"hEtaAllTracks";
977 fHisEtaAllTracks=
new TH1F(hname.Data(),
"#eta distribution of the AOD tracks (ID>0);#eta;Entries",80,-2.,2.);
979 hname=
"hEtavsPhiAllTracks";
980 fHisEtavsPhiAllTracks=
new TH2F(hname.Data(),
"#eta vs #phi distribution of the AOD tracks (ID>0);#phi;#eta",100,0.,2*(TMath::Pi()),80,-2.,2.);
982 hname=
"hNTPCclsvsPtAllTracks";
983 fHisNTPCclsvsPtAllTracks=
new TH2F(hname.Data(),
"N TPC clusters vs p_{T} distribution of the AOD tracks (ID>0);p_{T} [GeV/c];N TPC cls",200,0.,20,85,-0.5,169.5);
985 hname=
"hNTPCclsvsPhiAllTracks";
986 fHisNTPCclsvsPhiAllTracks=
new TH2F(hname.Data(),
"N TPC clusters vs #phi distribution of the AOD tracks (ID>0);#phi [rad];N TPC cls",100,0.,2*(TMath::Pi()),85,-0.5,169.5);
988 hname=
"hNTPCclsvsEtaAllTracks";
989 fHisNTPCclsvsEtaAllTracks=
new TH2F(hname.Data(),
"N TPC clusters vs #eta distribution of the AOD tracks (ID>0);#eta;N TPC cls",80,-2.,2.,85,-0.5,169.5);
991 hname=
"hNTPCCrossedRowsvsPtAllTracks";
994 hname=
"hNTPCCrossedRowsvsPhiAllTracks";
995 fHisNTPCCrossedRowsvsPhiAllTracks=
new TH2F(hname.Data(),
"N TPC crossed rows vs #phi distribution of the AOD tracks;#phi [rad];N TPC cros. rows",100,0.,2*(TMath::Pi()),100,-0.5,199.5);
997 hname=
"hNTPCCrossedRowsvsEtaAllTracks";
1000 hname=
"hRatioCRowsOverFclsvsPtAllTracks";
1003 hname=
"hRatioCRowsOverFclsvsPhiAllTracks";
1006 hname=
"hRatioCRowsOverFclsvsEtaAllTracks";
1009 hname=
"hNITSclsvsPtAllTracks";
1010 fHisNITSclsvsPtAllTracks=
new TH2F(hname.Data(),
"N ITS clusters vs p_{T} distribution of the AOD tracks (ID>0);p_{T} [GeV/c];N ITS cls",200,0.,20,7,-0.5,6.5);
1012 hname=
"hNITSclsvsPhiAllTracks";
1013 fHisNITSclsvsPhiAllTracks=
new TH2F(hname.Data(),
"N ITS clusters vs #phi distribution of the AOD tracks (ID>0);#phi [rad];N ITS cls",100,0.,2*(TMath::Pi()),7,-0.5,6.5);
1015 hname=
"hNITSclsvsEtaAllTracks";
1016 fHisNITSclsvsEtaAllTracks=
new TH2F(hname.Data(),
"N ITS clusters vs #eta distribution of the AOD tracks (ID>0);#eta;N ITS cls",80,-2.,2.,7,-0.5,6.5);
1018 hname=
"hSPDclsAllTracks";
1019 fHisSPDclsAllTracks =
new TH1F(hname.Data(),
"N SPD points distribution AOD tracks (ID>0);;Entries",4,-0.5,3.5);
1091 hname=
"hdistrFakeTr";
1092 fHisdistrFakeTr=
new TH1F(hname.Data(),
"Distribution of number of fake tracks per event;no.fake-tracks/ev;Entries",4000,-0.5,3999.5);
1096 fHisd0f=
new TH1F(hname.Data(),
"Impact parameter distribution of fake tracks;d_{0}[cm];Entries/10^{3} cm",200,-0.1,0.1);
1099 fHisd0f_filt=
new TH1F(hname.Data(),
"Impact parameter distribution of fake tracks, cut level;d_{0}[cm];Entries/10^{3} cm",200,-0.1,0.1);
1103 fHisptFakeTr=
new TH1F(hname.Data(),
"Pt distribution of fake tracks;p_{t}[GeV];Entries/0.05 GeV/c",400,0.,20.);
1106 hname=
"hptFakeTrFromDaugh";
1107 fHisptFakeTrFromDaugh=
new TH1F(hname.Data(),
"Pt distribution of fake tracks from daughters;p_{t}[GeV];Entries/0.05 GeV/c",400,0.,20.);
1111 hname=
"hptFakeTrFromDaugh_filt";
1112 fHisptFakeTrFromDaughFilt=
new TH1F(hname.Data(),
"Pt distribution of fake tracks from daughters, cut level;p_{t}[GeV];Entries/0.05 GeV/c",400,0.,20.);
1130 fOutputCounters->SetName(GetOutputSlot(5)->GetContainer()->GetName());
1132 AliCounterCollection *stdEstimator=
new AliCounterCollection(
"stdEstimator");
1133 stdEstimator->AddRubric(
"run",500000);
1134 stdEstimator->AddRubric(
"centralityclass",
"-10_0/0_10/10_20/20_30/30_40/40_50/50_60/60_70/70_80/80_90/90_100/-990_-980");
1135 stdEstimator->Init();
1136 AliCounterCollection *secondEstimator=
new AliCounterCollection(
"secondEstimator");
1137 secondEstimator->AddRubric(
"run",500000);
1138 secondEstimator->AddRubric(
"centralityclass",
"-10_0/0_10/10_20/20_30/30_40/40_50/50_60/60_70/70_80/80_90/90_100/-990_-980");
1139 secondEstimator->Init();
1149 TString hname=
"hNtrackletsIn";
1150 fHisNtrackletsIn=
new TH1F(hname.Data(),
"Number of tracklets in Centrality range;ntracklets;Entries",5000,-0.5,4999.5);
1153 fHisMultIn=
new TH1F(hname.Data(),
"Multiplicity;multiplicity in Centrality range;Entries",10000,-0.5,9999.5);
1155 hname=
"hNtrackletsOut";
1156 fHisNtrackletsOut=
new TH1F(hname.Data(),
"Number of tracklets out of Centrality range;ntracklets;Entries",5000,-0.5,4999.5);
1159 fHisMultOut=
new TH1F(hname.Data(),
"Multiplicity out of Centrality range;multiplicity;Entries",10000,-0.5,9999.5);
1161 hname=
"hMultvsPercentile";
1162 fHisMultvsPercentile=
new TH2F(hname.Data(),
"Multiplicity vs Percentile;multiplicity;percentile",10000,-0.5,9999.5,240,-10.,110);
1164 hname=
"hntrklvsPercentile";
1165 fHisntrklvsPercentile=
new TH2F(hname.Data(),
"N tracklets vs Percentile;ntracklets;percentile",5000,-0.5,4999.5,240,-10.,110);
1167 hname=
"hntrklvsPercentile01";
1168 fHisntrklvsPercentile01=
new TH2F(hname.Data(),
"N tracklets vs Percentile |#eta|<1;ntracklets;percentile",5000,-0.5,4999.5,240,-10.,110);
1170 hname=
"hntrklvsPercentile01AllEv";
1173 hname=
"hnTPCTracksvsPercentile";
1176 hname=
"hnTPCITSTracksvsPercentile";
1179 hname=
"hnTPCITS1SPDTracksvsPercentile";
1182 hname=
"hStdEstimSignalPercentile";
1185 hname=
"hStdEstimSignalNtrackletsIn";
1186 fHisStdEstimSignalNtrackletsIn =
new TH2F(hname.Data(),
"Std estimator signal vs Number of tracklets in the CC;Std estimator signal;number of tracklets",1000,-0.5,9999.5,5000,-0.5,4999.5);
1188 hname=
"hStdEstimSignal";
1191 hname=
"hStdPercentileSecondPercentile";
1192 fHisStdPercentileSecondPercentile =
new TH2F(hname.Data(),
"Std estimator Percentile Vs Second Estimator Percentile;Std estimator percentile;Second estimator percentile",120,-10.,110,120,-10.,110);
1194 hname=
"hStdSignalSecondSignal";
1195 fHisStdSignalSecondSignal =
new TH2F(hname.Data(),
"Std estimator signal Vs Second Estimator signal;Std estimator;Second estimator",1000,-0.5,9999.5,1000,-0.5,9999.5);
1197 hname=
"hStdPercentileOldFrwPercentile";
1198 fHisStdPercentileOldFrwPercentile =
new TH2F(hname.Data(),
"Std estimator Percentile Vs Old Framework estimator Percentile;Std estimator percentile;Old framework estimator percentile",120,-10.,110,120,-10.,110);
1200 hname=
"hStdPercentileOldFrwPercentileDev";
1233 fHisNtracklets=
new TH1F(hname.Data(),
"Number of tracklets;ntracklets;Entries",5000,-0.5,4999.5);
1234 hname=
"hNtracklets01";
1235 fHisNtracklets01=
new TH1F(hname.Data(),
"Number of tracklets |#eta|<1;ntracklets;Entries",5000,-0.5,4999.5);
1236 hname=
"hNtracklets01AllEv";
1237 fHisNtracklets01AllEv=
new TH1F(hname.Data(),
"Number of tracklets |#eta|<1 - All events;ntracklets;Entries",5000,-0.5,4999.5);
1239 fHisMult=
new TH1F(hname.Data(),
"Multiplicity;multiplicity;Entries",10000,-0.5,9999.5);
1241 fHisMultFBit4=
new TH1F(hname.Data(),
"Multiplicity (global+tracklet) with filter bit 4;multiplicity;Entries",10000,-0.5,9999.5);
1242 hname=
"hMultComb05";
1243 fHisMultComb05=
new TH1F(hname.Data(),
"Multiplicity (global+tracklet) in |#eta|<0.5;multiplicity;Entries",10000,-0.5,9999.5);
1244 hname=
"hMultComb08";
1245 fHisMultComb08=
new TH1F(hname.Data(),
"Multiplicity (global+tracklet) in |#eta|<0.8;multiplicity;Entries",10000,-0.5,9999.5);
1262 AliCounterCollection *evselection=
new AliCounterCollection(
"evselection");
1263 evselection->AddRubric(
"run",500000);
1264 evselection->AddRubric(
"evnonsel",
"zvtx");
1265 evselection->Init();
1267 fHisxvtx=
new TH1F(
"hxvtx",
"Distribution of x_{VTX};x_{VTX} [cm];Entries",800,-1,1);
1268 fHisyvtx=
new TH1F(
"hyvtx",
"Distribution of y_{VTX};y_{VTX} [cm];Entries",800,-1,1);
1269 fHiszvtx=
new TH1F(
"hzvtx",
"Distribution of z_{VTX};z_{VTX} [cm];Entries",800,-30,30);
1270 fHisxvtxSelEv=
new TH1F(
"hxvtxSelEv",
"Distribution of x_{VTX} Selected Ev;x_{VTX} [cm];Entries",800,-1,1);
1271 fHisyvtxSelEv=
new TH1F(
"hyvtxSelEv",
"Distribution of y_{VTX} Selected Ev;y_{VTX} [cm];Entries",800,-1,1);
1272 fHiszvtxSelEv=
new TH1F(
"hzvtxSelEv",
"Distribution of z_{VTX} Selected Ev;z_{VTX} [cm];Entries",800,-30,30);
1273 fHisxvtxSelEvWithD=
new TH1F(
"hxvtxSelEvWithD",
"Distribution of x_{VTX} Selected Ev w/ D mesons;x_{VTX} [cm];Entries",800,-1,1);
1274 fHisyvtxSelEvWithD=
new TH1F(
"hyvtxSelEvWithD",
"Distribution of y_{VTX} Selected Ev w/ D mesons;y_{VTX} [cm];Entries",800,-1,1);
1275 fHiszvtxSelEvWithD=
new TH1F(
"hzvtxSelEvWithD",
"Distribution of z_{VTX} Selected Ev w/ D mesons;z_{VTX} [cm];Entries",800,-30,30);
1276 fHisWhichVert=
new TH1F(
"hWhichVert",
"Vertex Type",4,-1.5,2.5);
1287 fHisnClsITSvsNtrackletsSel=
new TH2F(
"hnClsITSvsNtrackletsSel",
"number of SPD clusters vs number of SPD tracklets; n. SPD clusters; Ntracklets",200,0,6000,500,0,20000);
1288 fHiszvtxvsSPDzvtx=
new TH2F(
"hzvtxvsSPDzvtx",
"event primary z-vertex vs SPD z-vertex - before event selection; PV z-vertex [cm]; SPD z-vertex [cm]",800,-30,30,800,-30,30);
1289 fHiszvtxvsSPDzvtxSel=
new TH2F(
"hzvtxvsSPDzvtxSel",
"event primary z-vertex vs SPD z-vertex - after event selection; PV z-vertex [cm]; SPD z-vertex [cm]",800,-30,30,800,-30,30);
1290 fHiszvtxvsSPDzvtxSelWithD=
new TH2F(
"hzvtxvsSPDzvtxSelWithD",
"event primary z-vertex vs SPD z-vertex - after event selection w/ D mesons; PV z-vertex [cm]; SPD z-vertex [cm]",800,-30,30,800,-30,30);
1292 fHisTrigCent=
new TH2F(
"hTrigCent",
"Centrality vs. Trigger types",24,-1.5,22.5,12,-10,110);
1305 fHisTrigCent->GetXaxis()->SetBinLabel(13,
"kEMCGAMMA7");
1307 fHisTrigCent->GetXaxis()->SetBinLabel(15,
"kEMCGAMMA8");
1318 fHisTrigMul=
new TH2F(
"hTrigMul",
"Multiplicity vs. Trigger types",24,-1.5,22.5,1000,0.,10000.);
1326 fHisTrigMul->GetXaxis()->SetBinLabel(8,
"kSemiCent");
1330 fHisTrigMul->GetXaxis()->SetBinLabel(12,
"kEMCJET7");
1331 fHisTrigMul->GetXaxis()->SetBinLabel(13,
"kEMCGAMMA7");
1332 fHisTrigMul->GetXaxis()->SetBinLabel(14,
"kEMCJET8");
1333 fHisTrigMul->GetXaxis()->SetBinLabel(15,
"kEMCGAMMA8");
1337 fHisTrigMul->GetXaxis()->SetBinLabel(19,
"TRDHJT");
1338 fHisTrigMul->GetXaxis()->SetBinLabel(20,
"TRDHSE");
1339 fHisTrigMul->GetXaxis()->SetBinLabel(21,
"HighMult");
1342 fHisTrigMul->GetXaxis()->SetBinLabel(24,
"Others");
1370 fHisTrigMulSel=
new TH2F(
"hTrigMulSel",
"Multiplicity after selection vs. Trigger types",24,-1.5,22.5,1000,0.,10000.);
1396 AliCounterCollection *trigCounter=
new AliCounterCollection(
"trigCounter");
1397 trigCounter->AddRubric(
"run",500000);
1398 trigCounter->AddRubric(
"triggerType",
"All/Any/MB/Cent/SemiCent/EMCAL/MUON/NoPhysSelMUON/NoPhysSelEvNot7/NoPhysSelCMUP1/NoPhysSelMB/NoPhysSelCent/NoPhysSelSemiCent/CINT7/INT8");
1399 trigCounter->Init();
1401 AliCounterCollection *trigCounter2=
new AliCounterCollection(
"trigCounter2");
1402 trigCounter2->AddRubric(
"run",500000);
1403 trigCounter2->AddRubric(
"triggerType",
"All/Any/MB/CINT7/INT8/NoPhysSelEvNot7/NoPhysSelMB/HighMult/SPI7/SPI8/EMC1/EMC7/EMC8/EMCJET7/EMCJET8/EMCGAMMA/TRD/TRDHJT/TRDHSE");
1404 trigCounter2->Init();
1445 fOutputFlowObs->SetName(GetOutputSlot(8)->GetContainer()->GetName());
1450 fHisFEvents =
new TH2F(
"hFlowEvents",
"FlowEvent Selection",7,0,7,7,-10,60);
1451 fHisFEvents->GetXaxis()->SetBinLabel(1,
"REACHED");
1452 fHisFEvents->GetXaxis()->SetBinLabel(2,
"TRIGGERED");
1456 fHisFEvents->GetXaxis()->SetBinLabel(6,
"Triggered + vtx cut");
1457 fHisFEvents->GetXaxis()->SetBinLabel(7,
"UnexpectedBehaviour");
1460 TString ref[3] = {
"FB1",
"FB128",
"VZE"};
1461 Int_t etabin[3] = {40,40,20};
1463 for(
Int_t i=0; i<3; ++i) {
1464 fHisQ[i]=
new TProfile2D( Form(
"h%s_Q",ref[i].
Data()),
1465 Form(
"Q_{2} components for %s",ref[i].
Data()),
1467 fHisQ[i]->GetXaxis()->SetBinLabel(1,
"Qx^{-}");
1468 fHisQ[i]->GetXaxis()->SetBinLabel(2,
"Qy^{-}");
1469 fHisQ[i]->GetXaxis()->SetBinLabel(3,
"Qx^{+}");
1470 fHisQ[i]->GetXaxis()->SetBinLabel(4,
"Qy^{+}");
1471 fHisQ[i]->GetYaxis()->SetTitle(
"Centrality");
1475 Form(
"#Psi_{2} for %s",ref[i].
Data()),
1476 72,0,TMath::Pi(),12,0,60);
1477 fHisAngleQ[i]->GetXaxis()->SetTitle( Form(
"#Psi_{2}^{%s}",ref[i].
Data()) );
1478 fHisAngleQ[i]->GetYaxis()->SetTitle(
"Centrality");
1482 Form(
"Eta vs Phi for %s",ref[i].
Data()),
1483 144,0,TMath::TwoPi(),etabin[i],-1.0*etamax[i],+1.0*etamax[i],12,0,60);
1486 fHisPhiEta[i]->GetZaxis()->SetTitle(
"Centrality");
1490 fHisTPCVZE_AngleQ =
new TH3F(
"hTPCVZE_AngleQ",
"#Psi_{2}^{VZERO} vs #Psi_{2}^{TPC}", 72,0,TMath::Pi(),72,0,TMath::Pi(),12,0,60);
1496 fHisCentVsMultRPS =
new TH2F(
"hCentVsMultRPS",
" Centrality Vs. Multiplicity RPs",5000, 0, 5000.,12,0,60 );
1538 if (matchingAODdeltaAODlevel==-1)
fHisNentries->Fill(2);
1539 if (matchingAODdeltaAODlevel==0)
fHisNentries->Fill(3);
1540 if (matchingAODdeltaAODlevel<0 || (matchingAODdeltaAODlevel==0 &&
fAODProtection==1)) {
1550 TClonesArray *arrayProng =0;
1553 TClonesArray *arrayProngD0toKpi =0;
1554 TClonesArray *arrayProng3Prong =0;
1555 TClonesArray *arrayProng4Prong =0;
1556 TClonesArray *arrayProngDstar =0;
1557 TClonesArray *arrayProngCascades =0;
1560 Int_t *pdgdaughters=0x0;
1563 if(!aod && AODEvent() && IsStandardAOD()) {
1569 AliAODHandler* aodHandler = (AliAODHandler*)
1570 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
1571 if(aodHandler->GetExtensions()) {
1573 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
1576 arrayProng3Prong =(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm3Prong");
1577 arrayProng4Prong =(TClonesArray*)aodFromExt->GetList()->FindObject(
"Charm4Prong");
1578 arrayProngD0toKpi =(TClonesArray*)aodFromExt->GetList()->FindObject(
"D0toKpi");
1579 arrayProngDstar =(TClonesArray*)aodFromExt->GetList()->FindObject(
"Dstar");
1580 arrayProngCascades=(TClonesArray*)aodFromExt->GetList()->FindObject(
"CascadesHF");
1585 arrayProng=arrayProng3Prong;
1588 pdgdaughters =
new Int_t[3];
1589 pdgdaughters[0]=211;
1590 pdgdaughters[1]=321;
1591 pdgdaughters[2]=211;
1595 arrayProng=arrayProngD0toKpi;
1598 pdgdaughters =
new Int_t[2];
1599 pdgdaughters[0]=211;
1600 pdgdaughters[1]=321;
1604 arrayProng=arrayProngDstar;
1607 pdgdaughters =
new Int_t[3];
1608 pdgdaughters[1]=211;
1609 pdgdaughters[0]=321;
1610 pdgdaughters[2]=211;
1614 arrayProng=arrayProng3Prong;
1617 pdgdaughters =
new Int_t[3];
1618 pdgdaughters[0]=321;
1619 pdgdaughters[1]=321;
1620 pdgdaughters[2]=211;
1624 arrayProng=arrayProng4Prong;
1627 pdgdaughters =
new Int_t[4];
1628 pdgdaughters[0]=321;
1629 pdgdaughters[1]=211;
1630 pdgdaughters[2]=211;
1631 pdgdaughters[3]=211;
1635 arrayProng=arrayProng3Prong;
1638 pdgdaughters =
new Int_t[3];
1639 pdgdaughters[0]=2212;
1640 pdgdaughters[1]=321;
1641 pdgdaughters[2]=211;
1645 arrayProng=arrayProngCascades;
1648 pdgdaughters =
new Int_t[3];
1649 pdgdaughters[0]=2212;
1650 pdgdaughters[1]=211;
1651 pdgdaughters[2]=211;
1658 arrayProng3Prong =(TClonesArray*)aod->GetList()->FindObject(
"Charm3Prong");
1659 arrayProng4Prong =(TClonesArray*)aod->GetList()->FindObject(
"Charm4Prong");
1660 arrayProngD0toKpi =(TClonesArray*)aod->GetList()->FindObject(
"D0toKpi");
1661 arrayProngDstar =(TClonesArray*)aod->GetList()->FindObject(
"Dstar");
1662 arrayProngCascades=(TClonesArray*)aod->GetList()->FindObject(
"CascadesHF");
1667 arrayProng=arrayProng3Prong;
1670 pdgdaughters =
new Int_t[3];
1671 pdgdaughters[0]=211;
1672 pdgdaughters[1]=321;
1673 pdgdaughters[2]=211;
1677 arrayProng=arrayProngD0toKpi;
1680 pdgdaughters =
new Int_t[2];
1681 pdgdaughters[0]=211;
1682 pdgdaughters[1]=321;
1686 arrayProng=arrayProngDstar;
1689 pdgdaughters =
new Int_t[3];
1690 pdgdaughters[1]=211;
1691 pdgdaughters[0]=321;
1692 pdgdaughters[2]=211;
1696 arrayProng=arrayProng3Prong;
1699 pdgdaughters =
new Int_t[3];
1700 pdgdaughters[0]=321;
1701 pdgdaughters[1]=321;
1702 pdgdaughters[2]=211;
1706 arrayProng=arrayProng4Prong;
1709 pdgdaughters =
new Int_t[4];
1710 pdgdaughters[0]=321;
1711 pdgdaughters[1]=211;
1712 pdgdaughters[2]=211;
1713 pdgdaughters[3]=211;
1717 arrayProng=arrayProng3Prong;
1720 pdgdaughters =
new Int_t[3];
1721 pdgdaughters[0]=2212;
1722 pdgdaughters[1]=321;
1723 pdgdaughters[2]=211;
1727 arrayProng=arrayProngCascades;
1730 pdgdaughters =
new Int_t[3];
1731 pdgdaughters[0]=2212;
1732 pdgdaughters[1]=211;
1733 pdgdaughters[2]=211;
1740 AliInfo(
"Branch not found! The output will contain only track related histograms\n");
1745 TClonesArray *mcArray = 0;
1746 AliAODMCHeader *mcHeader = 0;
1749 delete [] pdgdaughters;
1756 mcArray = (TClonesArray*)aod->GetList()->FindObject(AliAODMCParticle::StdBranchName());
1758 printf(
"AliAnalysisTaskSEHFQA::UserExec: MC particles branch not found!\n");
1759 delete [] pdgdaughters;
1764 mcHeader = (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1766 printf(
"AliAnalysisTaskSEHFQA::UserExec: MC header branch not found!\n");
1767 delete [] pdgdaughters;
1773 UInt_t evSelMask=((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
1775 AliAODHeader * header =
dynamic_cast<AliAODHeader*
>(aod->GetHeader());
1776 if(!header) AliFatal(
"Not a standard AOD");
1778 Double_t multiplicity=header->GetRefMultiplicity();
1779 Int_t runNumber = aod->GetRunNumber();
1780 TString trigClass=aod->GetFiredTriggerClasses();
1781 Int_t nAODtracks=aod->GetNumberOfTracks();
1782 Int_t nSelTracksTPCOnly=0;
1783 Int_t nSelTracksTPCITS=0;
1784 Int_t nSelTracksTPCITS1SPD=0;
1785 Int_t ntracksFBit4=0;
1787 AliTRDTriggerAnalysis trdSelection;
1788 trdSelection.CalcTriggers(aod);
1791 if(aod->GetTriggerMask()==0 &&
1792 (runNumber>=195344 && runNumber<=195677)){
1793 AliDebug(3,
"Event rejected because of null trigger mask");
1794 delete [] pdgdaughters;
1799 for (
Int_t k=0;k<nAODtracks;k++){
1800 AliAODTrack* track=
dynamic_cast<AliAODTrack*
>(aod->GetTrack(k));
1801 if(!track) AliFatal(
"Not a standard AOD");
1802 if(track->GetID()<0)
continue;
1803 Int_t nclsTot=0,nclsSPD=0;
1804 for(
Int_t l=0;l<6;l++) {
1805 if(TESTBIT(track->GetITSClusterMap(),l)) {
1806 nclsTot++;
if(l<2) nclsSPD++;
1809 UShort_t nTPCClus=track->GetTPCClusterMap().CountBits();
1810 if(TMath::Abs(track->Eta())<0.8 && nTPCClus>=70 && track->GetStatus()&AliESDtrack::kTPCrefit){
1811 if(track->TestFilterBit(1)) nSelTracksTPCOnly++;
1812 if(track->GetStatus()&AliESDtrack::kITSrefit){
1814 if(nclsSPD>0) nSelTracksTPCITS1SPD++;
1817 if(track->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)){
1827 AliCounterCollection* trigCount=(AliCounterCollection*)
fOutputEvSelection->FindObject(
"trigCounter");
1828 AliCounterCollection* trigCount2=(AliCounterCollection*)
fOutputEvSelection->FindObject(
"trigCounter2");
1832 trigCount->Count(Form(
"triggerType:All/Run:%d",runNumber));
1833 trigCount2->Count(Form(
"triggerType:All/Run:%d",runNumber));
1835 if(aod->GetEventType()!=7 || trigClass.Contains(
"BEAMB")){
1836 trigCount->Count(Form(
"triggerType:NoPhysSelEvNot7/Run:%d",runNumber));
1837 trigCount2->Count(Form(
"triggerType:NoPhysSelEvNot7/Run:%d",runNumber));
1838 }
else if(trigClass.Contains(
"CMUP1")){
1839 trigCount->Count(Form(
"triggerType:NoPhysSelCMUP1/Run:%d",runNumber));
1840 }
else if(trigClass.Contains(
"MUON")){
1841 trigCount->Count(Form(
"triggerType:NoPhysSelMUON/Run:%d",runNumber));
1842 }
else if(trigClass.Contains(
"CPBI2_B1-B") || trigClass.Contains(
" CPBI2WU_B1-B")){
1843 trigCount->Count(Form(
"triggerType:NoPhysSelMB/Run:%d",runNumber));
1844 trigCount2->Count(Form(
"triggerType:NoPhysSelMB/Run:%d",runNumber));
1845 }
else if(trigClass.Contains(
"CCENT") || trigClass.Contains(
"CVHN")){
1846 trigCount->Count(Form(
"triggerType:NoPhysSelCent/Run:%d",runNumber));
1847 }
else if(trigClass.Contains(
"CSEMI") || trigClass.Contains(
"CVLN")){
1848 trigCount->Count(Form(
"triggerType:NoPhysSelSemiCent/Run:%d",runNumber));
1851 if(evSelMask & AliVEvent::kAny){
1854 trigCount->Count(Form(
"triggerType:Any/Run:%d",runNumber));
1855 trigCount2->Count(Form(
"triggerType:Any/Run:%d",runNumber));
1857 if(evSelMask & AliVEvent::kMB){
1860 trigCount->Count(Form(
"triggerType:MB/Run:%d",runNumber));
1861 trigCount2->Count(Form(
"triggerType:MB/Run:%d",runNumber));
1863 if(evSelMask & AliVEvent::kINT7){
1866 trigCount->Count(Form(
"triggerType:CINT7/Run:%d",runNumber));
1867 trigCount2->Count(Form(
"triggerType:CINT7/Run:%d",runNumber));
1869 if(evSelMask & AliVEvent::kINT8){
1872 trigCount->Count(Form(
"triggerType:INT8/Run:%d",runNumber));
1873 trigCount2->Count(Form(
"triggerType:INT8/Run:%d",runNumber));
1875 if(evSelMask & AliVEvent::kCINT5){
1879 if(evSelMask & AliVEvent::kCentral){
1882 trigCount->Count(Form(
"triggerType:Cent/Run:%d",runNumber));
1884 if(evSelMask & AliVEvent::kSemiCentral){
1887 trigCount->Count(Form(
"triggerType:SemiCent/Run:%d",runNumber));
1890 if(evSelMask & AliVEvent::kEMC1){
1893 trigCount->Count(Form(
"triggerType:EMCAL/Run:%d",runNumber));
1894 trigCount2->Count(Form(
"triggerType:EMC1/Run:%d",runNumber));
1896 if((evSelMask & AliVEvent::kEMC7) && trigClass.Contains(
"CEMC7")){
1899 trigCount->Count(Form(
"triggerType:EMCAL/Run:%d",runNumber));
1900 trigCount2->Count(Form(
"triggerType:EMC7/Run:%d",runNumber));
1902 if((evSelMask & AliVEvent::kEMC8) && trigClass.Contains(
"CEMC8")){
1905 trigCount->Count(Form(
"triggerType:EMCAL/Run:%d",runNumber));
1906 trigCount2->Count(Form(
"triggerType:EMC8/Run:%d",runNumber));
1908 if(evSelMask & AliVEvent::kEMCEJE){
1909 trigCount->Count(Form(
"triggerType:EMCAL/Run:%d",runNumber));
1910 if(trigClass.Contains(
"CEMC7EJE")) {
1911 trigCount2->Count(Form(
"triggerType:EMCJET7/Run:%d",runNumber));
1916 else if(trigClass.Contains(
"CEMC8EJE")) {
1917 trigCount2->Count(Form(
"triggerType:EMCJET8/Run:%d",runNumber));
1922 if(evSelMask & AliVEvent::kEMCEGA){
1923 if(trigClass.Contains(
"CEMC7EGA")) {
1926 }
else if (trigClass.Contains(
"CEMC8EGA")){
1931 trigCount->Count(Form(
"triggerType:EMCAL/Run:%d",runNumber));
1932 trigCount2->Count(Form(
"triggerType:EMCGAMMA/Run:%d",runNumber));
1934 if(evSelMask & (((AliVEvent::kCMUS5 | AliVEvent::kMUSH7) | (AliVEvent::kMUL7 | AliVEvent::kMUU7)) | (AliVEvent::kMUS7 | AliVEvent::kMUON))){
1937 trigCount->Count(Form(
"triggerType:MUON/Run:%d",runNumber));
1939 if(evSelMask & (AliVEvent::kPHI1 | AliVEvent::kPHI7)){
1943 if(evSelMask & (AliVEvent::kTRD)){
1946 trigCount2->Count(Form(
"triggerType:TRD/Run:%d",runNumber));
1948 if((evSelMask & AliVEvent::kTRD) && trdSelection.IsFired(AliTRDTriggerAnalysis::kHJT)){
1951 trigCount2->Count(Form(
"triggerType:TRDHJT/Run:%d",runNumber));
1953 if((evSelMask & AliVEvent::kTRD) && trdSelection.IsFired(AliTRDTriggerAnalysis::kHSE)){
1956 trigCount2->Count(Form(
"triggerType:TRDHSE/Run:%d",runNumber));
1958 if(evSelMask & (AliVEvent::kHighMult)){
1961 trigCount2->Count(Form(
"triggerType:HighMult/Run:%d",runNumber));
1963 if(evSelMask & AliVEvent::kSPI7){
1964 if(trigClass.Contains(
"CSPI7")) {
1967 trigCount2->Count(Form(
"triggerType:SPI7/Run:%d",runNumber));
1970 if(evSelMask & AliVEvent::kSPI){
1971 if(trigClass.Contains(
"CSPI8")) {
1974 trigCount2->Count(Form(
"triggerType:SPI8/Run:%d",runNumber));
1977 if(evSelMask & (AliVEvent::kDG5 | AliVEvent::kZED)){
1986 Double_t magField = aod->GetMagneticField();
1987 if(!aod->GetPrimaryVertex() || TMath::Abs(magField)<0.001) {
1988 delete [] pdgdaughters;
1996 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
1999 vtx1->GetCovarianceMatrix(cov);
2000 const AliESDVertex vESD(pos,cov,100.,100);
2002 TString primTitle = vtx1->GetTitle();
2003 if(primTitle.Contains(
"VertexerTracks") && vtx1->GetNContributors()>0)
fHisNentries->Fill(9);
2012 Bool_t evSelbyCentrality=kTRUE,evSelected=kTRUE,evSelByVertex=kTRUE,evselByPileup=kTRUE,evSelByPS=kTRUE;
2023 evselByPileup=kFALSE;
2027 evSelbyCentrality=kFALSE;
2031 evSelByVertex=kFALSE;
2038 evSelByVertex=kFALSE;
2039 if(
fOnOff[3]) ((AliCounterCollection*)
fOutputEvSelection->FindObject(
"evselection"))->Count(Form(
"evnonsel:zvtx/Run:%d",runNumber));
2047 if(evSelected &&
fOnOff[3]){
2050 if(evSelMask & AliVEvent::kAny) {
2053 if(evSelMask & AliVEvent::kMB) {
2056 if(evSelMask & AliVEvent::kINT7){
2059 if(evSelMask & AliVEvent::kINT8){
2062 if(evSelMask & AliVEvent::kCINT5){
2065 if(evSelMask & AliVEvent::kCentral){
2068 if(evSelMask & AliVEvent::kSemiCentral){
2071 if(evSelMask & AliVEvent::kEMC1){
2075 if((evSelMask & AliVEvent::kEMC7) && trigClass.Contains(
"CEMC7")){
2079 if((evSelMask & AliVEvent::kEMC8) && trigClass.Contains(
"CEMC8")){
2083 if((evSelMask & AliVEvent::kEMCEJE) && trigClass.Contains(
"CEMC7EJE")){
2087 if((evSelMask & AliVEvent::kEMCEGA) && trigClass.Contains(
"CEMC7EGA")){
2091 if((evSelMask & AliVEvent::kEMCEJE) && trigClass.Contains(
"CEMC8EJE")){
2095 if((evSelMask & AliVEvent::kEMCEGA) && trigClass.Contains(
"CEMC8EGA")){
2099 if(evSelMask & (((AliVEvent::kCMUS5 | AliVEvent::kMUSH7) | (AliVEvent::kMUL7 | AliVEvent::kMUU7)) | (AliVEvent::kMUS7 | AliVEvent::kMUON))){
2102 if(evSelMask & (AliVEvent::kPHI1 | AliVEvent::kPHI7)){
2105 if(evSelMask & (AliVEvent::kTRD)){
2109 if((evSelMask & AliVEvent::kTRD) && trdSelection.IsFired(AliTRDTriggerAnalysis::kHJT)){
2113 if((evSelMask & AliVEvent::kTRD) && trdSelection.IsFired(AliTRDTriggerAnalysis::kHSE)){
2117 if(evSelMask & (AliVEvent::kHighMult)){
2120 if(evSelMask & AliVEvent::kSPI7){
2121 if(trigClass.Contains(
"CSPI7")) {
2126 if(evSelMask & AliVEvent::kSPI){
2127 if(trigClass.Contains(
"CSPI8")) {
2132 if(evSelMask & (AliVEvent::kDG5 | AliVEvent::kZED)){
2137 if(evSelected || (!evSelbyCentrality && evSelByVertex && evselByPileup && evSelByPS)){
2144 Int_t mincent=stdCent-stdCent%10;
2147 AliAODVZERO *vzeroAOD = (AliAODVZERO*)aod->GetVZEROData();
2148 AliAODZDC *zdcAOD = (AliAODZDC*)aod->GetZDCData();
2149 const Double_t *towerZNASignal = zdcAOD->GetZNATowerEnergy();
2153 stdSignal = vzeroAOD->GetMTotV0A() + vzeroAOD->GetMTotV0C();
2156 stdSignal = vzeroAOD->GetMTotV0A();
2159 stdSignal = towerZNASignal[0];
2168 secondSignal = vzeroAOD->GetMTotV0A() + vzeroAOD->GetMTotV0C();
2171 secondSignal = vzeroAOD->GetMTotV0A();
2174 secondSignal = towerZNASignal[0];
2186 if(mincent==100)mincent--;
2187 ((AliCounterCollection*)
fOutputCounters->FindObject(
"stdEstimator"))->Count(Form(
"centralityclass:%d_%d/Run:%d",mincent,mincent+10,runNumber));
2189 mincent=secondCent-secondCent%10;
2190 if(secondCentf==-1) {
2194 if(mincent==100)mincent--;
2195 ((AliCounterCollection*)
fOutputCounters->FindObject(
"secondEstimator"))->Count(Form(
"centralityclass:%d_%d/Run:%d",mincent,mincent+10,runNumber));
2202 fHisMultIn->Fill(header->GetRefMultiplicity());
2217 AliMultSelection *multSelectionOld = (AliMultSelection*) aod -> FindListObject(
"MultSelection");
2218 Float_t oldFrmwCent = multSelectionOld ? multSelectionOld->GetMultiplicityPercentile(
"V0M") : -1;
2222 Double_t differenceCent = TMath::Abs( stdCentf - oldFrmwCent );
2234 fHisNtracklets->Fill(aod->GetTracklets()->GetNumberOfTracklets());
2236 fHisMult->Fill(header->GetRefMultiplicity());
2244 if(evSelected || (!evSelbyCentrality && evSelByVertex && evselByPileup && evSelByPS) || (!evSelByVertex && evselByPileup && evSelByPS)){
2255 const AliVVertex *vertex = aod->GetPrimaryVertex();
2260 if(vertex->GetNContributors()<=0) vtxTyp=-1;
2262 if(title.Contains(
"Z")) vtxTyp=2;
2263 if(title.Contains(
"3D")) vtxTyp=1;
2268 const AliVVertex *vSPD = aod->GetPrimaryVertexSPD();
2278 Int_t nCls = aod->GetNumberOfITSClusters(0) + aod->GetNumberOfITSClusters(1);
2284 delete [] pdgdaughters;
2291 delete [] pdgdaughters;
2296 Int_t nCand3Prong = arrayProng3Prong->GetEntriesFast();
2297 Int_t nCandD0toKpi = arrayProngD0toKpi->GetEntriesFast();
2298 Int_t nCandDstar = arrayProngDstar->GetEntriesFast();
2301 if(arrayProngCascades)nCandCasc = arrayProngCascades->GetEntriesFast();
2305 for (
Int_t iCand = 0; iCand < nCand3Prong; iCand++) {
2319 for (
Int_t iCand = 0; iCand < nCandD0toKpi; iCand++) {
2330 for (
Int_t iCand = 0; iCand < nCandDstar; iCand++) {
2341 if(arrayProngCascades){
2342 for (
Int_t iCand = 0; iCand < nCandCasc; iCand++) {
2350 AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
2351 AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
2354 AliTPCPIDResponse* tpcres=
new AliTPCPIDResponse();
2359 tpcres->SetBetheBlochParameters(alephParameters[0],alephParameters[1],alephParameters[2],alephParameters[3],alephParameters[4]);
2364 Int_t isGoodTrack=0, isFakeTrack=0, isSelTrack=0;
2366 if(aod) ntracks=aod->GetNumberOfTracks();
2370 for (
Int_t k=0;k<ntracks;k++){
2371 AliAODTrack* track=
dynamic_cast<AliAODTrack*
>(aod->GetTrack(k));
2372 if(!track) AliFatal(
"Not a standard AOD");
2374 if(track->GetID()<0)
continue;
2376 if(!track->PropagateToDCA(vtx1,magField,99999.,d0z0,covd0z0))
continue;
2377 if(track->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)){
2380 ULong_t trStatus=track->GetStatus();
2381 if(trStatus&AliESDtrack::kITSrefit){
2382 if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)){
2384 if(track->HasPointOnITSLayer(0)){
2391 if (!((trStatus & AliVTrack::kTPCrefit) == AliVTrack::kTPCrefit) ||
2392 !((trStatus & AliVTrack::kITSrefit) == AliVTrack::kITSrefit)){
2395 if(!track->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)){
2398 if(TMath::Abs(track->Eta())>0.9){
2401 Float_t nCrossedRowsTPC = track->GetTPCClusterInfo(2,1);
2402 Float_t ratioCrossedRowsOverFindableClustersTPC = 1.0;
2403 if (track->GetTPCNclsF()>0) {
2404 ratioCrossedRowsOverFindableClustersTPC = nCrossedRowsTPC/track->GetTPCNclsF();
2407 Bool_t selTrackNoSPD=selTrack;
2409 if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)){
2414 AliAODPid *pid = track->GetDetPid();
2415 if(!pid && fDebug>1) cout<<
"No AliAODPid found"<<endl;
2419 pid->GetIntegratedTimes(times);
2422 pid->GetTOFpidResolution(tofRes);
2426 if (trStatus&AliESDtrack::kTPCout)
fHisTOFflags->Fill(1.);
2427 if (trStatus&AliESDtrack::kTOFout)
fHisTOFflags->Fill(2.);
2428 if (trStatus&AliESDtrack::kTIME)
fHisTOFflags->Fill(3.);
2429 if (trStatus&AliESDtrack::kTOFpid)
fHisTOFflags->Fill(4.);
2430 if (trStatus&AliESDtrack::kTOFmismatch)
fHisTOFflags->Fill(5.);
2435 if(pidResp->ComputeTOFProbability(track,AliPID::kSPECIES,prob)==AliPIDResponse::kDetPidOk){
2441 if(selTrack && isTOFok){
2442 Double_t tofTime=pid->GetTOFsignal();
2443 AliTOFHeader* tofH=(AliTOFHeader*)aod->GetTOFHeader();
2444 if (tofH && (TMath::Abs(tofRes[0]) <= 1.E-16) ) {
2446 AliTOFPIDResponse tofResp=pidResp->GetTOFResponse();
2447 Double_t startTime = tofResp.GetStartTime(track->P());
2448 Float_t startTimeRes = tofResp.GetStartTimeRes(track->P());
2449 Int_t startTimeMask = tofResp.GetStartTimeMask(track->P());
2454 for (
Int_t type=0;type<AliPID::kSPECIES;type++) tofRes[type]=tofResp.GetExpectedSigma(track->P(),times[type],AliPID::ParticleMassZ(type));
2459 if (pid->GetTOFsignal()< 0)
fHisTOFsig->Fill(-1);
2462 nsigma[0]=pidResp->NumberOfSigmasTOF(track,AliPID::kPion);
2463 nsigma[1]=pidResp->NumberOfSigmasTOF(track,AliPID::kKaon);
2470 Int_t label=track->GetLabel();
2471 if(label<=0)
continue;
2472 AliMCParticle* mcpart=(AliMCParticle*)mcArray->At(label);
2474 Int_t abspdgcode=TMath::Abs(mcpart->PdgCode());
2482 for (
Int_t iS=2; iS<5; iS++){
2483 if ( TMath::Abs(nsigma[iS-2])<3.){
2502 if(pidHF && pidHF->
CheckStatus(track,
"TPC") && selTrack){
2504 Double_t TPCp=pid->GetTPCmomentum();
2505 Double_t TPCsignal=pid->GetTPCsignal();
2506 UShort_t TPCsignalN=pid->GetTPCsignalN();
2521 Int_t label=track->GetLabel();
2522 if(label<=0)
continue;
2523 AliMCParticle* mcpart=(AliMCParticle*)mcArray->At(label);
2525 Int_t abspdgcode=TMath::Abs(mcpart->PdgCode());
2533 if(
fFillDistrTrackEffChecks && track->GetStatus()&AliESDtrack::kITSrefit && track->GetStatus()&AliESDtrack::kTPCrefit){
2542 Int_t nclsTot=0,nclsSPD=0;
2549 for(
Int_t l=0;l<6;l++) {
2550 if(TESTBIT(track->GetITSClusterMap(),l)) {
2553 nclsTot++;
if(l<2) nclsSPD++;
2559 if(
fFillDistrTrackEffChecks && track->GetStatus()&AliESDtrack::kITSrefit && track->GetStatus()&AliESDtrack::kTPCrefit){
2577 if(!(track->HasPointOnITSLayer(0)) && !(track->HasPointOnITSLayer(1))){
2580 if(track->HasPointOnITSLayer(0) && !(track->HasPointOnITSLayer(1))){
2583 if(!(track->HasPointOnITSLayer(0)) && track->HasPointOnITSLayer(1)){
2586 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)){
2595 if(track->Pt()>0.3 &&
2596 TMath::Abs(track->Eta())<0.8 &&
2597 track->GetStatus()&AliESDtrack::kITSrefit &&
2598 track->GetStatus()&AliESDtrack::kTPCrefit &&
2602 if(!(track->GetStatus()&AliESDtrack::kTPCin) && track->GetStatus()&AliESDtrack::kITSrefit && !(track->GetStatus()&AliESDtrack::kITSpureSA)){
2604 if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1))
2606 if(track->HasPointOnITSLayer(0))
2608 if(track->HasPointOnITSLayer(1))
2611 for(
Int_t l=0;l<6;l++) {
2612 if(TESTBIT(track->GetITSClusterMap(),l)) {
2619 label=track->GetLabel();
2625 if (track->Pt()>0.3 &&
2626 track->GetStatus()&AliESDtrack::kTPCrefit &&
2627 track->GetStatus()&AliESDtrack::kITSrefit &&
2657 Int_t nCand = arrayProng->GetEntriesFast();
2662 for (
Int_t iCand = 0; iCand < nCand; iCand++) {
2676 Int_t pdgDgLctoV0bachelor[2]={2212,310};
2677 Int_t pdgDgV0toDaughters[2]={211,211};
2678 Int_t mcLabelK0S = (
dynamic_cast<AliAODRecoCascadeHF*
>(d))->MatchToMC(pdg,pdgDgLctoV0bachelor[1],pdgDgLctoV0bachelor,pdgDgV0toDaughters,mcArray,kTRUE);
2679 pdgDgLctoV0bachelor[1]=3122, pdgDgLctoV0bachelor[0]=211;
2680 pdgDgV0toDaughters[0]=2212, pdgDgV0toDaughters[1]=211;
2681 Int_t mcLabelLambda = (
dynamic_cast<AliAODRecoCascadeHF*
>(d))->MatchToMC(pdg,pdgDgLctoV0bachelor[1],pdgDgLctoV0bachelor,pdgDgV0toDaughters,mcArray,kTRUE);
2682 if (mcLabelK0S!=-1 || mcLabelLambda!=-1) AliInfo(Form(
"mcLabelK0S=%d - mcLabelLambda=%d",mcLabelK0S,mcLabelLambda));
2684 if (mcLabelK0S!=-1 && mcLabelLambda!=-1)
2685 AliInfo(
"Strange: current Lc->V0+bachelor candidate has two MC different labels!");
2686 else if (mcLabelK0S>-1 && mcLabelLambda==-1)
2688 else if (mcLabelLambda>-1 && mcLabelK0S==-1)
2689 labD = mcLabelLambda;
2692 labD = d->MatchToMC(pdg,mcArray,ndaugh,pdgdaughters);
2695 AliAODMCParticle *partD = (AliAODMCParticle*)mcArray->At(labD);
2696 Int_t label=partD->GetMother();
2697 AliAODMCParticle *mot = (AliAODMCParticle*)mcArray->At(label);
2699 mot = (AliAODMCParticle*)mcArray->At(label);
2700 label=mot->GetMother();
2703 Int_t pdgMotCode = mot->GetPdgCode();
2709 const AliVVertex *vertex = aod->GetPrimaryVertex();
2710 const AliVVertex *vSPD = aod->GetPrimaryVertexSPD();
2719 for(
Int_t id=0;
id<ndaugh;
id++){
2721 AliAODTrack* track=0;
2725 track=(AliAODTrack*)(dynamic_cast<AliAODRecoCascadeHF*>(d))->GetBachelor();
2727 track=(AliAODTrack*)(dynamic_cast<AliAODRecoCascadeHF*>(d))->Getv0PositiveTrack();
2729 track=(AliAODTrack*)(dynamic_cast<AliAODRecoCascadeHF*>(d))->Getv0NegativeTrack();
2732 track=(AliAODTrack*)d->GetDaughter(
id);
2741 if(
fReadMC)label=track->GetLabel();
2752 Double_t phidaughter = d->PhiProng(
id);
2753 if(phidaughter<0) phidaughter=2.0*TMath::Pi()+phidaughter;
2756 Bool_t isDCA=track->PropagateToDCA(vtx1,magField,9999.,d0rphiz,covd0);
2765 Bool_t isGoodCandidate = kFALSE;
2766 Double_t pdgMass = TDatabasePDG::Instance()->GetParticle(pdg)->Mass();
2769 if (isSelectedCand==1 || isSelectedCand==3) {
2770 if (TMath::Abs((dynamic_cast<AliAODRecoDecayHF2Prong*>(d))->InvMassD0() - pdgMass) < 0.04) isGoodCandidate=kTRUE;
2772 if (isSelectedCand==2 || isSelectedCand==3) {
2773 if (TMath::Abs((dynamic_cast<AliAODRecoDecayHF2Prong*>(d))->InvMassD0bar() - pdgMass) < 0.04) isGoodCandidate=kTRUE;
2776 if (TMath::Abs((dynamic_cast<AliAODRecoDecayHF3Prong*>(d))->InvMassDplus() - pdgMass) < 0.04) isGoodCandidate=kTRUE;
2779 if (isGoodCandidate) {
2780 const AliVVertex *vertex = aod->GetPrimaryVertex();
2781 const AliVVertex *vSPD = aod->GetPrimaryVertexSPD();
2796 if(
fReadMC)label=track->GetLabel();
2803 fHisd0f->Fill(d->Getd0Prong(
id));
2807 Double_t phidaughter = d->PhiProng(
id);
2808 if(phidaughter<0) phidaughter=2.0*TMath::Pi()+phidaughter;
2811 Bool_t isDCA=track->PropagateToDCA(vtx1,magField,9999.,d0rphiz,covd0);
2822 Double_t nTPCCrossedRows = track->GetTPCClusterInfo(2,1);
2823 Double_t ratioCrossedRowsOverFcls = 1.0;
2824 if(track->GetTPCNclsF()>0){
2825 ratioCrossedRowsOverFcls = (nTPCCrossedRows)/(track->GetTPCNclsF());
2827 for(
Int_t l=0;l<6;l++) {
2828 if(TESTBIT(track->GetITSClusterMap(),l)) {
2853 if(!(track->HasPointOnITSLayer(0)) && !(track->HasPointOnITSLayer(1))){
2856 if(track->HasPointOnITSLayer(0) && !(track->HasPointOnITSLayer(1))){
2859 if(!(track->HasPointOnITSLayer(0)) && track->HasPointOnITSLayer(1)){
2862 if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)){
2868 AliAODPid *pid = track->GetDetPid();
2880 if (isSelectedCand &&
fOnOff[1]){
2883 AliAODPid *pid = track->GetDetPid();
2886 pid->GetIntegratedTimes(times);
2888 Double_t tofTime=pid->GetTOFsignal();
2889 AliTOFHeader* tofH=(AliTOFHeader*)aod->GetTOFHeader();
2891 pid->GetTOFpidResolution(tofRes);
2892 if (tofH && (TMath::Abs(tofRes[0]) <= 1.E-16) ) {
2893 AliTOFPIDResponse tofResp=pidHF->
GetPidResponse()->GetTOFResponse();
2894 Double_t startTime=tofResp.GetStartTime(track->P());
2911 delete [] pdgdaughters;
2927 UInt_t mask=((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
2928 UInt_t trigger=AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral;
2929 if(mask & trigger) {
2931 if (mask & AliVEvent::kMB)
fHisFEvents->Fill(2.,cc);
2932 if (mask & AliVEvent::kCentral)
fHisFEvents->Fill(3.,cc);
2933 if (mask & AliVEvent::kSemiCentral)
fHisFEvents->Fill(4.,cc);
2935 if(cc<0 || cc>60) rejected=
true;
2936 const AliVVertex *vertex = aod->GetPrimaryVertex();
2939 if(rejected)
return;
2957 for(
Int_t i=0; i!=3; ++i) {
2976 vQ = vQaQb[0]+vQaQb[1];
2979 if( dMa<2 || dMb<2 ) {
2983 psi[i] = vQ.Phi()/2;
2985 fHisQ[i]->Fill(0,cc,vQaQb[0].X()/dMa,dMa);
2986 fHisQ[i]->Fill(1,cc,vQaQb[0].Y()/dMa,dMa);
2987 fHisQ[i]->Fill(2,cc,vQaQb[1].X()/dMb,dMb);
2988 fHisQ[i]->Fill(3,cc,vQaQb[1].Y()/dMb,dMb);
2993 if(!track)
continue;
3013 printf(
"ERROR: %s not available\n",GetOutputSlot(1)->GetContainer()->GetName());
3019 printf(
"ERROR: %s not available\n",GetOutputSlot(2)->GetContainer()->GetName());
3025 printf(
"ERROR: %s not available\n",GetOutputSlot(3)->GetContainer()->GetName());
Bool_t fOnOff[5]
flag to use or not the selection bit
Float_t GetMaxCentrality() const
TH2F * fHisTPCsigNvsEtaAllTracks
! Histo. of output slot #2 (fOutputPID)
Bool_t IsEventRejectedDueToCentrality() const
TH2F * fHiszvtxvsSPDzvtxSel
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisd0dau_filt
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisd0zdau
! Histo. of output slot #3 (fOutputTrack)
Bool_t IsEventRejectedDueToZVertexOutsideFiducialRegion() const
TH2F * fHisNTPCCrossedRowsvsPhiDaughters
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisRatioCRowsOverFclsvsPtDaughters
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisRatioCRowsOverFclsvsEtaDaughters
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisnClsITSvsNtrackletsSel
! Histo. of output slot #7 (fOutputEvSelection)
TH2F * fHisRatioCRowsOverFclsvsEtaAllTracks
! Histo. of output slot #3 (fOutputTrack)
Bool_t IsEventRejectedDueToNotRecoVertex() const
TH2F * fHisNentriesSelBit
! Histo. of output slot #1 (fOutputEntries)
TH1F * fHisNtracklets
! Histo. of output slot #3 (fOutputTrack)
void SetMaxChi2PerClusterTPC(Float_t a)
TH1F * fHisMultComb08
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisTPCsigmaMCPion
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisd0TracksSPDin
! Histo. of output slot #3 (fOutputTrack)
TList * fOutputCounters
! list sent on output slot 5
TH1F * fHisNtrackletsIn
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHisRatioCRowsOverFclsvsPtAllTracks
! Histo. of output slot #3 (fOutputTrack)
Bool_t fUseSelectionBit
if true, don't do candidates (much faster in PbPb)
TH1F * fHisnClsITSSAspdOut
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisTOFstartTimeRes
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisntrklvsPercentile01AllEv
! Histo. of output slot #6 (fOutputCheckCentrality)
TH1F * fHisPhiAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisMultComb05
! Histo. of output slot #3 (fOutputTrack)
virtual void UserCreateOutputObjects()
Implementation of interface methods.
TH2F * fHisnTPCITS1SPDTracksvsPercentile
! Histo. of output slot #6 (fOutputCheckCentrality)
Bool_t HasSelectionBit(Int_t i) const
TH2F * fHisTPCsigmaProton
! Histo. of output slot #2 (fOutputPID)
Int_t GetNumberOfRPs() const
TH2F * fHisNTPCclsvsPtDaughters
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisTPCsigNvsPhiAllTracks
! Histo. of output slot #2 (fOutputPID)
Int_t GetnSigmaTPC(AliAODTrack *track, Int_t species, Double_t &sigma) const
TH2F * fHisStdEstimSignalNtrackletsIn
! Histo. of output slot #6 (fOutputCheckCentrality)
TH1F * fHisPtAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisdistrFakeTr
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisTPCsigNvsPhiDaughters
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisStdSignalSecondSignal
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHisAngleQ[3]
! Histo. of output slot #8 (fOutputFlowObs)
static Int_t CheckMatchingAODdeltaAODevents()
TH2F * fHisNTPCCrossedRowsvsPhiAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisRatioCRowsOverFclsvsPhiAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisptGoodTr
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisnClsITS
! Histo. of output slot #3 (fOutputTrack)
Bool_t IsEventRejectedDueToVertexContributors() const
TList * fOutputEvSelection
! list sent on output slot 7
TH1F * fHisdistrGoodTr
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisNTPCclsvsEtaDaughters
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisnClsITSSAspdIn
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisd0TracksSPDany
! Histo. of output slot #3 (fOutputTrack)
AliFlowEvent * fFlowEvent
! to handle the reusage of the flowEvent object
TString GetMultSelectionObjectName() const
TH1F * fHiszvtxSelEvWithD
! Histo. of output slot #7 (fOutputEvSelection)
void SetPhiMin(Double_t min)
TH1F * fHisEtaAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHiszvtx
! Histo. of output slot #7 (fOutputEvSelection)
Bool_t FillRecoCand(AliVEvent *event, AliAODRecoDecayHF3Prong *rd3)
TH1F * fHisNentries
! Histo. of output slot #1 (fOutputEntries)
TH2F * fHisTPCsigmaK
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisEtavsPhiDaughters
! Histo. of output slot #3 (fOutputTrack)
void SetParamType(trackParameterType paramType)
ULong_t GetSelectionMap() const
TH1F * fHisyvtx
! Histo. of output slot #7 (fOutputEvSelection)
TH2F * fHisntrklvsPercentile01
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHisnTPCITSTracksvsPercentile
! Histo. of output slot #6 (fOutputCheckCentrality)
Double_t GetMaxVtxZ() const
TH1F * fHisMultFBit4
! Histo. of output slot #3 (fOutputTrack)
void SetAODfilterBit(UInt_t a)
TH2F * fHisCentVsMultRPS
! Histo. of output slot #8 (fOutputFlowObs)
TH1F * fHisyvtxSelEvWithD
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisEtaDaughters
! Histo. of output slot #3 (fOutputTrack)
Bool_t InRPSelection() const
Bool_t FillRecoCasc(AliVEvent *event, AliAODRecoCascadeHF *rc, Bool_t isDStar, Bool_t recoSecVtx=kFALSE)
TH2F * fHisEtavsPhiAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisd0zdau_filt
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisTPCsigvsp
! Histo. of output slot #2 (fOutputPID)
AliAODPidHF * GetPidHF() const
AliFlowTrack * GetTrack(Int_t i)
TH1F * fHisNtracklets01
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisptFakeTr
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisStdEstimSignalPercentile
! Histo. of output slot #6 (fOutputCheckCentrality)
TH1F * fHisxvtxSelEv
! Histo. of output slot #7 (fOutputEvSelection)
TH2F * fHisNTPCCrossedRowsvsEtaDaughters
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisTOFsigmaMCProtonSigPid
! Histo. of output slot #2 (fOutputPID)
Class for cuts on AOD reconstructed D+->Kpipi.
AliRDHFCuts::ECentrality fEstimator
void SetPtRange(Float_t r1, Float_t r2)
TH2F * fHisTrigCentSel
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisd0f_filt
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisNTPCCrossedRowsvsPtAllTracks
! Histo. of output slot #3 (fOutputTrack)
static Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent *ev, Double_t mineta, Double_t maxeta)
TH2F * fHisd0dauphi_filt
! Histo. of output slot #3 (fOutputTrack)
void Fill(AliFlowTrackCuts *rpCuts, AliFlowTrackCuts *poiCuts)
void SetMinimalTPCdedx(Double_t d=10.)
TH1F * fHisTOFtime
! Histo. of output slot #2 (fOutputPID)
Int_t GetIsFilled() const
TProfile2D * fHisQ[3]
! Histo. of output slot #8 (fOutputFlowObs)
void GetTPCBetheBlochParams(Double_t alephParameters[5]) const
TH2F * fHisNITSclsvsEtaAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisStdPercentileOldFrwPercentileDev
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHisTOFsigmaPionSigPid
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisptFakeTrFromDaugh
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisStdPercentileOldFrwPercentile
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHisTrigCent
! Histo. of output slot #7 (fOutputEvSelection)
TH2F * fHisNITSclsvsPtDaughters
! Histo. of output slot #3 (fOutputTrack)
TList * fOutputPID
! list sent on output slot 2
Bool_t CheckStatus(AliAODTrack *track, TString detectors) const
TList * fOutputCheckCentrality
! list sent on output slot 6
TList * fOutputEntries
! list sent on output slot 1
TH2F * fHisNTPCCrossedRowsvsPtDaughters
! Histo. of output slot #3 (fOutputTrack)
virtual void UserExec(Option_t *option)
TH1F * fHisPtDaughters
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisTOFsigPid3sigKaon
! Histo. of output slot #2 (fOutputPID)
AliESDtrackCuts * GetTrackCuts() const
TH1F * fHisxvtx
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisnClsSPD
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisdistrSelTr
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisNITSclsvsPhiDaughters
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisTOFsigPid3sigPion
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisMult
! Histo. of output slot #3 (fOutputTrack)
Float_t GetCentrality(AliAODEvent *aodEvent)
Bool_t IsEventRejectedDueToPileup() const
TH2F * fHisTPCsigmaMCProton
! Histo. of output slot #2 (fOutputPID)
TH1F * fHiszvtxSelEv
! Histo. of output slot #7 (fOutputEvSelection)
TH2F * fHisTOFsigmaMCKSigPid
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisTOFsig
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisTrigMulSel
! Histo. of output slot #7 (fOutputEvSelection)
TH2F * fHisTPCsigmaMCK
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisNTPCclsvsEtaAllTracks
! Histo. of output slot #3 (fOutputTrack)
AliPIDResponse * GetPidResponse() const
TH1F * fHisnLayerITSselTr
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisd0dauphi
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisWhichVert
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisTOFstartTimeMask
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisFEvents
! Histo. of output slot #8 (fOutputFlowObs)
TH1F * fHisnClsITSSA
! Histo. of output slot #3 (fOutputTrack)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH2F * fHisd0zdauphi_filt
! Histo. of output slot #3 (fOutputTrack)
Bool_t IsEventRejectedDuePhysicsSelection() const
TH2F * fHisNTPCclsvsPhiDaughters
! Histo. of output slot #3 (fOutputTrack)
TList * fOutputFlowObs
! list sent on output slot 8
TH2F * fHisTrigMul
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisTOFsigPid3sigProton
! Histo. of output slot #2 (fOutputPID)
Bool_t fSimpleMode
flag to read MC
TH2F * fHisNITSclsvsPtAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisnLayerITS
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHiszvtxvsSPDzvtx
! Histo. of output slot #7 (fOutputEvSelection)
Bool_t IsEventRejectedDueToMismatchOldNewCentrality() const
TH2F * fHisntrklvsPercentile
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHiszvtxvsSPDzvtxSelWithD
! Histo. of output slot #7 (fOutputEvSelection)
void SetAcceptKinkDaughters(Bool_t a)
TH1F * fHisTOFstartTimeDistrib
! Histo. of output slot #2 (fOutputPID)
virtual ~AliAnalysisTaskSEHFQA()
AliFlowTrackCuts * fRFPcuts
! reference flow particle cuts
TH2F * fHisStdPercentileSecondPercentile
! Histo. of output slot #6 (fOutputCheckCentrality)
Bool_t IsEventSelected(AliVEvent *event)
void SetEvent(AliVEvent *event, AliMCEvent *mcEvent=NULL)
TH2F * fHisNITSclsvsPhiAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisNTPCclsvsPhiAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisTOFtimeKaonHyptimeAC
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisptGoodTrFromDaugh
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisd0TracksTPCITSSPDany
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisWhyEvRejected
! Histo. of output slot #7 (fOutputEvSelection)
TH2F * fHisTOFsigmaKSigPid
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisyvtxSelEv
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisMultIn
! Histo. of output slot #6 (fOutputCheckCentrality)
TH1F * fHisptGoodTrFromDaugh_filt
! Histo. of output slot #3 (fOutputTrack)
void SetMinNClustersTPC(Int_t a)
TList * fOutputTrack
! list sent on output slot 3
TH3F * fHisPhiEta[3]
! Histo. of output slot #8 (fOutputFlowObs)
Bool_t IsSelected(TObject *obj)
TH1F * fHisTOFflags
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisnClsITSSAspdAny
! Histo. of output slot #3 (fOutputTrack)
void TagSubeventsInEta(Double_t etaMinA, Double_t etaMaxA, Double_t etaMinB, Double_t etaMaxB)
void SetPhiMax(Double_t max)
TH1F * fHisnLayerITSsa
! Histo. of output slot #3 (fOutputTrack)
TH3F * fHisTPCVZE_AngleQ
! Histo. of output slot #8 (fOutputFlowObs)
void SetMinChi2PerClusterTPC(Float_t a)
TH2F * fHisTOFsigmaProtonSigPid
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisMultOut
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHisnTPCTracksvsPercentile
! Histo. of output slot #6 (fOutputCheckCentrality)
TH1F * fHisStdEstimSignal
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHisRatioCRowsOverFclsvsPhiDaughters
! Histo. of output slot #3 (fOutputTrack)
Bool_t IsEventRejectedDueToTrigger() const
TH2F * fHisNTPCclsvsPtAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisd0zdauphi
! Histo. of output slot #3 (fOutputTrack)
virtual void Get2Qsub(AliFlowVector *Qarray, Int_t n=2, TList *weightsList=0x0, Bool_t usePhiWeights=0x0, Bool_t usePtWeights=0x0, Bool_t useEtaWeights=0x0)
TH2F * fHisMultvsPercentile
! Histo. of output slot #6 (fOutputCheckCentrality)
virtual void Terminate(Option_t *option)
TH1F * fHisTPCsig
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisd0dau
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisSPDclsDaughters
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisTOFtimeKaonHyptime
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisTPCsigmaPion
! Histo. of output slot #2 (fOutputPID)
void FillFlowObs(AliAODEvent *aod)
virtual Bool_t IsInFiducialAcceptance(Double_t, Double_t) const
Int_t GetUseCentrality() const
TH1F * fHisNtrackletsOut
! Histo. of output slot #6 (fOutputCheckCentrality)
TH2F * fHisTPCsigNvsPtDaughters
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisTPCsigvspAC
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisd0TracksFilterBit4
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisWhichVertSelEv
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisPhiDaughters
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisNtracklets01AllEv
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisnClsITSselTr
! Histo. of output slot #3 (fOutputTrack)
TH1F * fHisptFakeTrFromDaughFilt
! Histo. of output slot #3 (fOutputTrack)
Bool_t IsDaughterSelected(AliAODTrack *track, const AliESDVertex *primary, AliESDtrackCuts *cuts, const AliAODEvent *aod=0x0) const
TH2F * fHisNTPCCrossedRowsvsEtaAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisTPCsigNvsPtAllTracks
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisTOFsigmaMCPionSigPid
! Histo. of output slot #2 (fOutputPID)
TH2F * fHisTPCsigNvsEtaDaughters
! Histo. of output slot #2 (fOutputPID)
TH1F * fHisxvtxSelEvWithD
! Histo. of output slot #7 (fOutputEvSelection)
TH1F * fHisd0f
! Histo. of output slot #3 (fOutputTrack)
Bool_t fFillDistrTrackEffChecks
on-off the QA on tracks (0), PID (1), centrality (2), event selection – default is {kTRUE...
TH1F * fHisSPDclsAllTracks
! Histo. of output slot #3 (fOutputTrack)
TH2F * fHisNITSclsvsEtaDaughters
! Histo. of output slot #3 (fOutputTrack)
void SetEtaRange(Float_t r1, Float_t r2)
Int_t NumberOfTracks() const