2 #ifndef AlidNdPtAnalysisPbPb_H
3 #define AlidNdPtAnalysisPbPb_H
6 //------------------------------------------------------------------------------
7 // AlidNdPtAnalysisPbPb class used for dNdPt analysis.in PbPb collision
9 // Author: J.Otwinowski 04/11/2008
10 // last change: 2011-04-04 by M.Knichel
11 //------------------------------------------------------------------------------
23 class AliESDtrackCuts;
24 class AliVertexerTracks;
27 class AliESDfriendTrack;
29 class AliTriggerAnalysis;
33 class AlidNdPtAnalysisPbPb : public AlidNdPt {
35 AlidNdPtAnalysisPbPb();
36 AlidNdPtAnalysisPbPb(Char_t* name, Char_t* title);
37 ~AlidNdPtAnalysisPbPb();
43 virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
45 // Merge output objects (needed by PROOF)
46 virtual Long64_t Merge(TCollection* const list);
48 // Analyse output histograms
49 virtual void Analyse();
51 // Export objects to folder
52 virtual TFolder *ExportToFolder(TObjArray * const array=0);
54 // Get analysis folder
55 TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
57 // Fill control histograms
58 void SetHistogramsOn(const Bool_t histOn=kTRUE) {fHistogramsOn = histOn;}
59 Bool_t IsHistogramsOn() const {return fHistogramsOn;}
61 // Create folder for analysed histograms
62 TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
64 // Set binning for Histograms (if not set default binning is used)
65 void SetBinsMult(Int_t nbins, Double_t* edges) { fMultNbins = nbins; fBinsMult = CloneArray(nbins+1,edges); }
66 void SetBinsPt(Int_t nbins, Double_t* edges) { fPtNbins = nbins; fBinsPt = CloneArray(nbins+1,edges); }
67 void SetBinsPtCorr(Int_t nbins, Double_t* edges) { fPtCorrNbins = nbins; fBinsPtCorr = CloneArray(nbins+1,edges); }
68 void SetBinsEta(Int_t nbins, Double_t* edges) { fEtaNbins = nbins; fBinsEta = CloneArray(nbins+1,edges); }
69 void SetBinsZv(Int_t nbins, Double_t* edges) { fZvNbins = nbins; fBinsZv= CloneArray(nbins+1,edges); }
70 void SetBinsCentrality(Int_t nbins, Double_t* edges) { fCentralityNbins = nbins; fBinsCentrality = CloneArray(nbins+1,edges); }
73 void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, AlidNdPtHelper::TrackObject trackObj, Float_t centralityF);
74 void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj, Float_t centralityF);
75 void FillHistograms(TObjArray *const allChargedTracks,Int_t *const labelsAll,Int_t multAll,Int_t *const labelsAcc,Int_t multAcc,Int_t *const labelsRec,Int_t multRec, Float_t centralityF);
78 THnSparseF *GetTrackPtCorrelationMatrix() const {return fTrackPtCorrelationMatrix;}
80 THnSparseF *GetGenEventMatrix() const {return fGenEventMatrix;}
81 THnSparseF *GetTriggerEventMatrix() const {return fTriggerEventMatrix;}
82 THnSparseF *GetRecEventMatrix() const {return fRecEventMatrix;}
84 THnSparseF *GetGenTrackEventMatrix() const {return fGenTrackEventMatrix;}
85 THnSparseF *GetTriggerTrackEventMatrix() const {return fTriggerTrackEventMatrix;}
86 THnSparseF *GetRecTrackEventMatrix() const {return fRecTrackEventMatrix;}
88 THnSparseF *GetGenTrackMatrix() const {return fGenTrackMatrix;}
89 THnSparseF *GetGenPrimTrackMatrix() const {return fGenPrimTrackMatrix;}
90 THnSparseF *GetRecPrimTrackMatrix() const {return fRecPrimTrackMatrix;}
92 THnSparseF *GetRecTrackMatrix() const {return fRecTrackMatrix;}
93 THnSparseF *GetRecSecTrackMatrix() const {return fRecSecTrackMatrix;}
94 THnSparseF *GetRecMultTrackMatrix() const {return fRecMultTrackMatrix;}
98 THnSparseF *GetMCEventHist1() const {return fMCEventHist1;}
99 THnSparseF *GetRecEventHist1() const {return fRecEventHist1;}
100 THnSparseF *GetRecEventHist2() const {return fRecEventHist2;}
103 THnSparseF *GetRecMCEventHist1() const {return fRecMCEventHist1;}
104 THnSparseF *GetRecMCTrackHist1() const {return fRecMCTrackHist1;}
106 THnSparseF *GetRecMCEventHist2() const {return fRecMCEventHist2;}
108 THnSparseF *GetMCTrackHist1(Int_t i) const {return fMCTrackHist1[i];}
109 THnSparseF *GetMCPrimTrackHist1(Int_t i) const {return fMCPrimTrackHist1[i];}
110 THnSparseF *GetMCPrimTrackHist2(Int_t i) const {return fMCPrimTrackHist2[i];}
111 THnSparseF *GetMCSecTrackHist1(Int_t i) const {return fMCSecTrackHist1[i];}
113 THnSparseF *GetRecTrackHist1(Int_t i) const {return fRecTrackHist1[i];}
114 THnSparseF *GetRecTrackHist2(Int_t i) const {return fRecTrackHist2[i];}
115 THnSparseF *GetRecTrackMultHist1(Int_t i) const {return fRecTrackMultHist1[i];}
118 THnSparseF *GetMCMultRecTrackHist1() const {return fMCMultRecTrackHist1;}
120 THnSparseF *GetRecTrackHist3() const {return fRecTrackHist3;}
122 TString GetCentralityEstimator() const {return fCentralityEstimator; }
124 void SetCentralityEstimator(TString centEst="V0M") { fCentralityEstimator = centEst; }
129 TFolder *fAnalysisFolder; // folder for analysed histograms
130 Bool_t fHistogramsOn; // switch on/off filling of control histograms
133 // correlation matrices (histograms)
135 // rec. track pt vs true track pt correlation matrix for given eta
136 THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta:centrality
139 // event level correction
142 THnSparseF *fGenEventMatrix; //-> mcZv:multMB:centrality
144 // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
145 THnSparseF *fTriggerEventMatrix; //-> mcZv:multMB:centrality
147 // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
148 THnSparseF *fRecEventMatrix; //-> mcZv:multMB:centrality
150 // track-event level correction
151 THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta:centrality
153 // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
154 THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta:centrality
156 // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
157 THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta:centrality
160 // track level correction
162 // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)
163 THnSparseF *fGenTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
164 THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
165 THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
166 // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)
167 THnSparseF *fRecTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
168 THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta:centrality
169 // multiple rec. track corrections (fRecMultTrackMatrix / fRecTrackMatrix)
170 THnSparseF *fRecMultTrackMatrix; //-> mcZv:Pt:mcEta:centrality
173 // ESD and MC control analysis histograms
175 // THnSparse event histograms
176 THnSparseF *fMCEventHist1; //-> mcXv:mcYv:mcZv:centrality
177 THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv:centrality
178 THnSparseF *fRecEventHist2; //-> Zv:multMB:mult:centrality
179 THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv:centrality
180 THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:mult:centrality
182 // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
183 THnSparseF *fMCTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:mcPhi:centrality
184 THnSparseF *fMCPrimTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother:centrality
185 THnSparseF *fMCPrimTrackHist2[AlidNdPtHelper::kCutSteps]; //-> pdg:mech:mother:centrality
186 THnSparseF *fMCSecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother:centrality
188 THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:Eta:Phi:centrality
189 THnSparseF *fRecTrackHist2[AlidNdPtHelper::kCutSteps]; //-> Zv:Pt:Eta:centrality
190 THnSparseF *fRecTrackMultHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:mult:centrality
191 THnSparseF *fRecMCTrackHist1; //-> mcPt:mcEta:(Pt-mcPt)/mcPt:(Eta-mcEta):centrality
193 //multple reconstructed tracks
194 THnSparseF *fMCMultRecTrackHist1; //-> mcPt:mcEta:pid:centrality
195 // track control histograms
196 THnSparseF *fRecTrackHist3; //-> nclust:chi2:Pt:Eta:Phi:centrality
198 AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis object;
199 TString fCentralityEstimator; // use centrality can be "VOM" (default), "FMD", "TRK", "TKL", "CL0", "CL1", "V0MvsFMD", "TKLvsV0M", "ZEMvsZDC"
201 //binning for THNsparse
207 Int_t fCentralityNbins;
210 Double_t* fBinsPtCorr;
213 Double_t* fBinsCentrality;
218 AlidNdPtAnalysisPbPb(const AlidNdPtAnalysisPbPb&); // not implemented
219 AlidNdPtAnalysisPbPb& operator=(const AlidNdPtAnalysisPbPb&); // not implemented
221 ClassDef(AlidNdPtAnalysisPbPb,6);