1 #ifndef ALIDNDPTANALYSIS_H
2 #define ALIDNDPTANALYSIS_H
4 //------------------------------------------------------------------------------
5 // AlidNdPtAnalysis class used for dNdPt analysis.
7 // Author: J.Otwinowski 04/11/2008
8 //------------------------------------------------------------------------------
20 class AliESDtrackCuts;
21 class AliVertexerTracks;
24 class AliESDfriendTrack;
29 class AlidNdPtAnalysis : public AlidNdPt {
32 AlidNdPtAnalysis(Char_t* name, Char_t* title);
39 virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);
41 // Merge output objects (needed by PROOF)
42 virtual Long64_t Merge(TCollection* const list);
44 // Analyse output histograms
45 virtual void Analyse();
47 // Export objects to folder
48 virtual TFolder *ExportToFolder(TObjArray * const array=0);
50 // Get analysis folder
51 TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
53 // Fill control histograms
54 void SetHistogramsOn(const Bool_t histOn=kTRUE) {fHistogramsOn = histOn;}
55 Bool_t IsHistogramsOn() const {return fHistogramsOn;}
57 // Define 0-multiplicity bin for LHC
58 // background calculation
59 static Bool_t IsBinZeroSPDvtx(const AliESDEvent* esdEvent);
60 static Bool_t IsBinZeroTrackSPDvtx(const AliESDEvent* esdEvent);
62 // Create folder for analysed histograms
63 TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");
66 void FillHistograms(AliESDtrack *const esdTrack, AliStack *const stack, const Double_t zv, AlidNdPtHelper::TrackObject trackObj);
67 void FillHistograms(AliStack *const stack, Int_t label, AlidNdPtHelper::TrackObject trackObj);
68 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);
71 THnSparseF *GetEventMultCorrelationMatrix() const {return fEventMultCorrelationMatrix;}
72 THnSparseF *GetTrackPtCorrelationMatrix() const {return fTrackPtCorrelationMatrix;}
75 THnSparseF *GetGenEventMatrix() const {return fGenEventMatrix;}
76 THnSparseF *GetGenSDEventMatrix() const {return fGenSDEventMatrix;}
77 THnSparseF *GetGenDDEventMatrix() const {return fGenDDEventMatrix;}
78 THnSparseF *GetGenNDEventMatrix() const {return fGenNDEventMatrix;}
79 THnSparseF *GetGenNSDEventMatrix() const {return fGenNSDEventMatrix;}
81 THnSparseF *GetTriggerEventMatrix() const {return fTriggerEventMatrix;}
82 THnSparseF *GetTriggerSDEventMatrix() const {return fTriggerSDEventMatrix;}
83 THnSparseF *GetTriggerDDEventMatrix() const {return fTriggerDDEventMatrix;}
84 THnSparseF *GetTriggerNDEventMatrix() const {return fTriggerNDEventMatrix;}
85 THnSparseF *GetTriggerNSDEventMatrix() const {return fTriggerNSDEventMatrix;}
87 THnSparseF *GetRecEventMatrix() const {return fRecEventMatrix;}
88 THnSparseF *GetRecSDEventMatrix() const {return fRecSDEventMatrix;}
89 THnSparseF *GetRecDDEventMatrix() const {return fRecDDEventMatrix;}
90 THnSparseF *GetRecNDEventMatrix() const {return fRecNDEventMatrix;}
91 THnSparseF *GetRecNSDEventMatrix() const {return fRecNSDEventMatrix;}
94 THnSparseF *GetRecCandleEventMatrix() const {return fRecCandleEventMatrix;}
97 THnSparseF *GetGenTrackEventMatrix() const {return fGenTrackEventMatrix;}
98 THnSparseF *GetGenTrackSDEventMatrix() const {return fGenTrackSDEventMatrix;}
99 THnSparseF *GetGenTrackDDEventMatrix() const {return fGenTrackDDEventMatrix;}
100 THnSparseF *GetGenTrackNDEventMatrix() const {return fGenTrackNDEventMatrix;}
101 THnSparseF *GetGenTrackNSDEventMatrix() const {return fGenTrackNSDEventMatrix;}
103 THnSparseF *GetTriggerTrackEventMatrix() const {return fTriggerTrackEventMatrix;}
104 THnSparseF *GetTriggerTrackSDEventMatrix() const {return fTriggerTrackSDEventMatrix;}
105 THnSparseF *GetTriggerTrackDDEventMatrix() const {return fTriggerTrackDDEventMatrix;}
106 THnSparseF *GetTriggerTrackNDEventMatrix() const {return fTriggerTrackNDEventMatrix;}
107 THnSparseF *GetTriggerTrackNSDEventMatrix() const {return fTriggerTrackNSDEventMatrix;}
109 THnSparseF *GetRecTrackEventMatrix() const {return fRecTrackEventMatrix;}
110 THnSparseF *GetRecTrackSDEventMatrix() const {return fRecTrackSDEventMatrix;}
111 THnSparseF *GetRecTrackDDEventMatrix() const {return fRecTrackDDEventMatrix;}
112 THnSparseF *GetRecTrackNDEventMatrix() const {return fRecTrackNDEventMatrix;}
113 THnSparseF *GetRecTrackNSDEventMatrix() const {return fRecTrackNSDEventMatrix;}
116 THnSparseF *GetGenTrackMatrix() const {return fGenTrackMatrix;}
117 THnSparseF *GetGenPrimTrackMatrix() const {return fGenPrimTrackMatrix;}
118 THnSparseF *GetRecPrimTrackMatrix() const {return fRecPrimTrackMatrix;}
120 THnSparseF *GetRecTrackMatrix() const {return fRecTrackMatrix;}
121 THnSparseF *GetRecSecTrackMatrix() const {return fRecSecTrackMatrix;}
122 THnSparseF *GetRecMultTrackMatrix() const {return fRecMultTrackMatrix;}
125 // control histograms
127 THnSparseF *GetMCEventHist1() const {return fMCEventHist1;}
128 THnSparseF *GetRecEventHist1() const {return fRecEventHist1;}
129 THnSparseF *GetRecEventHist2() const {return fRecEventHist2;}
130 THnSparseF *GetRecMCEventHist1() const {return fRecMCEventHist1;}
131 THnSparseF *GetRecMCEventHist2() const {return fRecMCEventHist2;}
132 THnSparseF *GetRecMCEventHist3() const {return fRecMCEventHist3;}
134 THnSparseF *GetMCTrackHist1(Int_t i) const {return fMCTrackHist1[i];}
135 THnSparseF *GetMCPrimTrackHist1(Int_t i) const {return fMCPrimTrackHist1[i];}
136 THnSparseF *GetMCPrimTrackHist2(Int_t i) const {return fMCPrimTrackHist2[i];}
137 THnSparseF *GetMCSecTrackHist1(Int_t i) const {return fMCSecTrackHist1[i];}
139 THnSparseF *GetRecTrackHist1(Int_t i) const {return fRecTrackHist1[i];}
140 THnSparseF *GetRecTrackMultHist1(Int_t i) const {return fRecTrackMultHist1[i];}
142 THnSparseF *GetRecMCTrackHist1() const {return fRecMCTrackHist1;}
143 THnSparseF *GetMCMultRecTrackHist1() const {return fMCMultRecTrackHist1;}
145 THnSparseF *GetRecTrackHist2() const {return fRecTrackHist2;}
149 // Generic histograms to be corrected
151 THnSparseF *GetRecEventHist() const {return fRecEventHist;}
152 THnSparseF *GetRecTrackHist() const {return fRecTrackHist;}
157 TFolder *fAnalysisFolder; // folder for analysed histograms
158 Bool_t fHistogramsOn; // switch on/off filling of control histograms
161 // correlation matrices (histograms)
164 // event rec. track vs true track multiplicity correlation matrix
165 THnSparseF *fEventMultCorrelationMatrix; //-> mult:mult_true_tracks
167 // rec. track pt vs true track pt correlation matrix for given eta
168 THnSparseF *fTrackPtCorrelationMatrix; //-> Pt:mcPt:mcEta
171 // event level correction
175 THnSparseF *fGenEventMatrix; //-> mcZv:multMB (inelastic)
176 THnSparseF *fGenSDEventMatrix; //-> mcZv:multMB (single diffractive)
177 THnSparseF *fGenDDEventMatrix; //-> mcZv:multMB (single diffractive)
178 THnSparseF *fGenNDEventMatrix; //-> mcZv:multMB (non diffractive)
179 THnSparseF *fGenNSDEventMatrix; //-> mcZv:multMB (non single diffractive)
181 // trigger bias corrections (fTriggerEventMatrix / fGenEventMatrix)
182 THnSparseF *fTriggerEventMatrix; //-> mcZv:multMB
183 THnSparseF *fTriggerSDEventMatrix; //-> mcZv:multMB
184 THnSparseF *fTriggerDDEventMatrix; //-> mcZv:multMB
185 THnSparseF *fTriggerNDEventMatrix; //-> mcZv:multMB
186 THnSparseF *fTriggerNSDEventMatrix; //-> mcZv:multMB
188 // event vertex rec. eff correction (fRecEventMatrix / fTriggerEventMatrix)
189 THnSparseF *fRecEventMatrix; //-> mcZv:multMB
190 THnSparseF *fRecSDEventMatrix; //-> mcZv:multMB
191 THnSparseF *fRecDDEventMatrix; //-> mcZv:multMB
192 THnSparseF *fRecNDEventMatrix; //-> mcZv:multMB
193 THnSparseF *fRecNSDEventMatrix; //-> mcZv:multMB
197 // track-event level correction
200 THnSparseF *fGenTrackEventMatrix; //-> mcZv:mcPt:mcEta
201 THnSparseF *fGenTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
202 THnSparseF *fGenTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
203 THnSparseF *fGenTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
204 THnSparseF *fGenTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
206 // trigger bias corrections (fTriggerTrackEventMatrix / fGenTrackEventMatrix)
207 THnSparseF *fTriggerTrackEventMatrix; //-> mcZv:mcPt:mcEta
208 THnSparseF *fTriggerTrackSDEventMatrix; //-> mcZv:mcPt:mcEta
209 THnSparseF *fTriggerTrackDDEventMatrix; //-> mcZv:mcPt:mcEta
210 THnSparseF *fTriggerTrackNDEventMatrix; //-> mcZv:mcPt:mcEta
211 THnSparseF *fTriggerTrackNSDEventMatrix; //-> mcZv:mcPt:mcEta
213 // event vertex rec. corrections (fRecTrackEventMatrix / fTriggerTrackEventMatrix)
214 THnSparseF *fRecTrackEventMatrix; //-> mcZv:Pt:mcEta
215 THnSparseF *fRecTrackSDEventMatrix; //-> mcZv:Pt:mcEta
216 THnSparseF *fRecTrackDDEventMatrix; //-> mcZv:Pt:mcEta
217 THnSparseF *fRecTrackNDEventMatrix; //-> mcZv:Pt:mcEta
218 THnSparseF *fRecTrackNSDEventMatrix; //-> mcZv:Pt:mcEta
221 // track level correction
224 // track rec. efficiency correction (fRecPrimTrackMatrix / fGenPrimTrackMatrix)
225 THnSparseF *fGenTrackMatrix; //-> mcZv:mcPt:mcEta
226 THnSparseF *fGenPrimTrackMatrix; //-> mcZv:mcPt:mcEta
227 THnSparseF *fRecPrimTrackMatrix; //-> mcZv:mcPt:mcEta
229 // secondary track contamination correction (fRecSecTrackMatrix / fRecTrackMatrix)
230 THnSparseF *fRecTrackMatrix; //-> mcZv:mcPt:mcEta
231 THnSparseF *fRecSecTrackMatrix; //-> mcZv:mcPt:mcEta
233 // multiple rec. track corrections (fRecMultTrackMatrix / fRecTrackMatrix)
234 THnSparseF *fRecMultTrackMatrix; //-> mcZv:Pt:mcEta
237 // ESD and MC control analysis histograms
240 // THnSparse event histograms
241 THnSparseF *fMCEventHist1; //-> mcXv:mcYv:mcZv
242 THnSparseF *fRecEventHist1; //-> Xv:Yv:Zv
243 THnSparseF *fRecEventHist2; //-> Zv:multMB:mult
244 THnSparseF *fRecMCEventHist1; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv
245 THnSparseF *fRecMCEventHist2; //-> Xv-mcXv:Zv-mcZv:mult
246 THnSparseF *fRecMCEventHist3; //-> mult:EventType (ND, DD, SD)
248 // THnSparse track histograms
249 // [0] - after charged track selection, [1] - after acceptance cuts, [2] - after esd track cuts
251 THnSparseF *fMCTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:mcPhi
252 THnSparseF *fMCPrimTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
253 THnSparseF *fMCPrimTrackHist2[AlidNdPtHelper::kCutSteps]; //-> pdg:mech:mother
254 THnSparseF *fMCSecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> mcPt:mcEta:pid:mech:mother
256 THnSparseF *fRecTrackHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:Eta:Phi
257 THnSparseF *fRecTrackMultHist1[AlidNdPtHelper::kCutSteps]; //-> Pt:mult
259 THnSparseF *fRecMCTrackHist1; //-> mcPt:mcEta:(Pt-mcPt)/mcPt:(Eta-mcEta)
261 //multple reconstructed tracks
262 THnSparseF *fMCMultRecTrackHist1; //-> mcPt:mcEta:pid
264 // track control histograms
265 THnSparseF *fRecTrackHist2; //-> nclust:chi2:Pt:Eta:Phi
268 // Generic histograms to be corrected
270 THnSparseF *fRecEventHist; //-> Zv:multMB
271 THnSparseF *fRecTrackHist; //-> Zv:pT:eta
274 // candle events track corrections
276 THnSparseF *fRecCandleEventMatrix; //-> Zv:multMB
278 AlidNdPtAnalysis(const AlidNdPtAnalysis&); // not implemented
279 AlidNdPtAnalysis& operator=(const AlidNdPtAnalysis&); // not implemented
281 ClassDef(AlidNdPtAnalysis,4);