]>
Commit | Line | Data |
---|---|---|
c852fdae | 1 | #ifndef AliAnalysisTaskEMCalHFEpA_cxx |
2 | #define AliAnalysisTaskEMCalHFEpA_cxx | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
9a1f999b | 7 | //////////////////////////////////////////////////////////////////////// |
8 | // // | |
9 | // Task for Heavy-flavour electron analysis in pPb collisions // | |
10 | // (+ Electron-Hadron Jetlike Azimuthal Correlation) // | |
11 | // // | |
12 | // version: September 12th, 2013. // | |
13 | // // | |
14 | // Authors // | |
15 | // Elienos Pereira de Oliveira Filho (epereira@cern.ch) // | |
16 | // Cristiane Jahnke (cristiane.jahnke@cern.ch) // | |
17 | // // | |
18 | //////////////////////////////////////////////////////////////////////// | |
c852fdae | 19 | |
20 | class TH1F; | |
21 | class TH2F; | |
22 | class AliESDEvent; | |
23 | class AliESDtrackCuts; | |
24 | class AliESDtrack; | |
25 | class AliHFEcontainer; | |
26 | class AliHFEcuts; | |
27 | class AliHFEpid; | |
28 | class AliHFEpidQAmanager; | |
29 | class AliCFManager; | |
30 | class AliPIDResponse; | |
31 | class AliCentrality; | |
32 | class AliAODEvent; | |
33 | class AliVEvent; | |
34 | class AliAODMCHeader; | |
35 | class AliSelectNonHFE; | |
36 | class AliEventPoolManager; | |
37 | class AliEventPool; | |
38 | class TObjArray; | |
39 | ||
9a1f999b | 40 | //______________________________________________________________________ |
41 | //Library | |
c852fdae | 42 | #include "AliAnalysisTaskSE.h" |
43 | #include "AliHFEpid.h" | |
44 | #include "AliLog.h" | |
9a1f999b | 45 | //______________________________________________________________________ |
c852fdae | 46 | |
9a1f999b | 47 | //______________________________________________________________________ |
c852fdae | 48 | class AliAnalysisTaskEMCalHFEpA : public AliAnalysisTaskSE |
49 | { | |
9a1f999b | 50 | //______________________________________________________________________ |
51 | public: | |
c852fdae | 52 | AliAnalysisTaskEMCalHFEpA(); |
53 | AliAnalysisTaskEMCalHFEpA(const char *name); | |
54 | virtual ~AliAnalysisTaskEMCalHFEpA(); | |
9a1f999b | 55 | |
c852fdae | 56 | virtual void UserCreateOutputObjects(); |
57 | virtual void UserExec(Option_t *option); | |
58 | virtual void Terminate(Option_t *); | |
9a1f999b | 59 | |
60 | //Setters | |
c852fdae | 61 | void SetHFECuts(AliHFEcuts * const cuts) {fCuts = cuts;}; |
62 | void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) {fRejectKinkMother = rejectKinkMother;}; | |
a89620c8 | 63 | void SetCorrelationAnalysis(Bool_t CorrelationFlag=kTRUE) {fCorrelationFlag = CorrelationFlag;}; |
c852fdae | 64 | void SetMCanalysis() {fIsMC = kTRUE;}; |
65 | void SetCentrality(Double_t CentralityMin, Double_t CentralityMax) { fCentralityMin = CentralityMin; fCentralityMax = CentralityMax; fHasCentralitySelection = kTRUE; }; | |
66 | void SetAODanalysis(Bool_t IsAOD) {fIsAOD = IsAOD;}; | |
67 | void SetEventMixing(Bool_t EventMixingFlag) { fEventMixingFlag = EventMixingFlag;}; | |
68 | void SetNonHFEmassCut(Double_t MassCut) { fMassCut = MassCut; fMassCutFlag = kTRUE;}; | |
69 | void SetEtaCut(Double_t EtaCutMin,Double_t EtaCutMax ) { fEtaCutMin = EtaCutMin; fEtaCutMax = EtaCutMax; }; | |
a6f21076 | 70 | |
71 | void SetdPhidEtaCut(Double_t dPhiCut, Double_t dEtaCut ) { fdPhiCut = dPhiCut;fdEtaCut = dEtaCut ;}; | |
72 | ||
c852fdae | 73 | void SetEoverPCut(Double_t EoverPCutMin,Double_t EoverPCutMax ) { fEoverPCutMin = EoverPCutMin; fEoverPCutMax = EoverPCutMax; }; |
a6f21076 | 74 | |
75 | void SetM02Cut(Double_t M02CutMin,Double_t M02CutMax ) { fM02CutMin = M02CutMin; fM02CutMax = M02CutMax; }; | |
76 | void SetM20Cut(Double_t M20CutMin,Double_t M20CutMax ) { fM20CutMin = M20CutMin; fM20CutMax = M20CutMax; }; | |
77 | ||
78 | ||
c852fdae | 79 | void SetNonHFEangleCut(Double_t AngleCut) { fAngleCut = AngleCut; fAngleCutFlag = kTRUE;}; |
80 | void SetNonHFEchi2Cut(Double_t Chi2Cut) { fChi2Cut = Chi2Cut; fChi2CutFlag = kTRUE;}; | |
81 | void SetNonHFEdcaCut(Double_t DCAcut) { fDCAcut = DCAcut; fDCAcutFlag = kTRUE;}; | |
82 | void SetUseEMCal() { fUseEMCal=kTRUE;}; | |
a89620c8 | 83 | void SetUseShowerShapeCut(Bool_t UseShowerShapeCut=kFALSE) { fUseShowerShapeCut=UseShowerShapeCut;}; |
84 | void SetBackground(Bool_t FillBackground=kFALSE) { fFillBackground=FillBackground;}; | |
c852fdae | 85 | void SetEMCalTriggerEG1() { fEMCEG1=kTRUE; }; |
86 | void SetEMCalTriggerEG2() { fEMCEG2=kTRUE; }; | |
87 | void SetCentralityEstimator(Int_t Estimator) { fEstimator=Estimator; }; //0 = V0A, 1 = Other | |
9a1f999b | 88 | void SetAdditionalCuts(Double_t PtMinAsso, Int_t TpcNclsAsso) {fPtMinAsso = PtMinAsso; fTpcNclsAsso = TpcNclsAsso;}; |
2c8e1f6c | 89 | void SetSPDCutForHadrons() {fAssocWithSPD = kTRUE;}; |
c852fdae | 90 | |
9a1f999b | 91 | //Getters |
c852fdae | 92 | AliHFEpid *GetPID() const {return fPID;}; |
9a1f999b | 93 | //______________________________________________________________________ |
c852fdae | 94 | |
9a1f999b | 95 | //______________________________________________________________________ |
96 | private: | |
97 | ||
98 | //Function to process track cuts | |
c852fdae | 99 | Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track); |
9a1f999b | 100 | //Function to process eh analysis |
c852fdae | 101 | void ElectronHadronCorrelation(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack); |
9a1f999b | 102 | //Function to find non-HFE and fill histos |
9a4682da | 103 | void Background(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack, Bool_t IsTPConly); |
9a1f999b | 104 | //Selected Hadrons, for mixed event analysis |
c852fdae | 105 | TObjArray* SelectedHadrons(); |
9a1f999b | 106 | //DiHadron Correlation Background |
c852fdae | 107 | void DiHadronCorrelation(AliVTrack *track, Int_t trackIndex); |
9a1f999b | 108 | //Find Mothers (Finde HFE and NonHFE from MC information) |
c852fdae | 109 | Bool_t FindMother(Int_t mcIndex); |
9a1f999b | 110 | |
111 | //Flags for specifics analysis | |
c852fdae | 112 | Bool_t fCorrelationFlag; |
113 | Bool_t fIsMC; | |
114 | Bool_t fUseEMCal; | |
a89620c8 | 115 | Bool_t fUseShowerShapeCut; |
116 | Bool_t fFillBackground; | |
2c8e1f6c | 117 | Bool_t fAssocWithSPD; |
9a4682da | 118 | |
9a1f999b | 119 | |
c852fdae | 120 | Bool_t fEMCEG1; |
121 | Bool_t fEMCEG2; | |
9a1f999b | 122 | |
123 | //Used in the function FindMother | |
c852fdae | 124 | Bool_t fIsHFE1; |
125 | Bool_t fIsHFE2; | |
126 | Bool_t fIsNonHFE; | |
127 | Bool_t fIsFromD; | |
128 | Bool_t fIsFromB; | |
129 | Bool_t fIsFromPi0; | |
130 | Bool_t fIsFromEta; | |
131 | Bool_t fIsFromGamma; | |
132 | ||
9a1f999b | 133 | //General variables |
c852fdae | 134 | AliESDEvent *fESD; |
135 | AliAODEvent *fAOD; /// new | |
136 | AliVEvent *fVevent; /// new | |
137 | AliESDtrackCuts *fPartnerCuts; | |
138 | TList *fOutputList; | |
139 | AliPIDResponse *fPidResponse; | |
140 | AliSelectNonHFE *fNonHFE; | |
141 | ||
9a1f999b | 142 | //For the case of AOD analysis |
c852fdae | 143 | Bool_t fIsAOD; //flag for AOD analysis |
144 | ||
9a1f999b | 145 | //For Centrality Selection |
c852fdae | 146 | AliCentrality *fCentrality; |
147 | Double_t fCentralityMin; | |
148 | Double_t fCentralityMax; | |
149 | Bool_t fHasCentralitySelection; | |
150 | TH1F *fCentralityHist; | |
151 | TH1F *fCentralityHistPass; | |
152 | Float_t fZvtx; | |
153 | Int_t fEstimator; | |
154 | ||
9a1f999b | 155 | //EMCal |
a89620c8 | 156 | |
c852fdae | 157 | AliVCluster *fClus; |
9a1f999b | 158 | //AliESDCaloCluster *fClusESD; |
c852fdae | 159 | |
9a1f999b | 160 | //Histograms |
c852fdae | 161 | TH1F *fNevent; |
162 | TH1F *fPtElec_Inc; | |
9a1f999b | 163 | |
a6f21076 | 164 | |
165 | TH1F *fCharge_n; | |
166 | TH1F *fCharge_p; | |
167 | ||
a89620c8 | 168 | TH2D *fTime; |
169 | TH2D *fTime2; | |
170 | TH2D *ftimingEle; | |
171 | TH2D *ftimingEle2; | |
172 | ||
c852fdae | 173 | TH1F *fPtElec_ULS; |
174 | TH1F *fPtElec_LS; | |
9a4682da | 175 | TH1F *fPtElec_ULS2; |
176 | TH1F *fPtElec_LS2; | |
c852fdae | 177 | |
2c8e1f6c | 178 | TH1F *fPtElec_ULS_weight; |
179 | TH1F *fPtElec_LS_weight; | |
180 | TH1F *fPtElec_ULS2_weight; | |
181 | TH1F *fPtElec_LS2_weight; | |
182 | ||
9a1f999b | 183 | //PID Histograms |
2c8e1f6c | 184 | |
185 | TH2F *fTOF01; | |
186 | TH2F *fTOF02; | |
187 | TH2F *fTOF03; | |
188 | ||
c852fdae | 189 | TH1F *fpid; |
190 | ||
191 | TH2F **fEoverP_pt; | |
192 | TH2F **fEoverP_tpc; | |
193 | ||
194 | TH1F **fTPC_pt; | |
195 | TH2F **fTPC_p; | |
196 | ||
197 | TH1F **fTPCnsigma_pt; | |
198 | TH2F **fTPCnsigma_p; | |
199 | TH2F *fTPCnsigma_pt_2D; | |
a89620c8 | 200 | TH2F *fShowerShapeCut; |
9a4682da | 201 | TH2F *fShowerShapeM02_EoverP; |
202 | TH2F *fShowerShapeM20_EoverP; | |
203 | TH2F *fShowerShape_ha; | |
204 | TH2F *fShowerShape_ele; | |
c852fdae | 205 | |
206 | TH2F *fTPCnsigma_eta; | |
207 | TH2F *fTPCnsigma_phi; | |
208 | ||
9a1f999b | 209 | |
c852fdae | 210 | TH1F **fECluster; |
211 | TH2F **fEtaPhi; | |
212 | TH1F **fVtxZ; | |
213 | TH1F **fNTracks; | |
214 | TH1F **fNClusters; | |
215 | TH2F **fTPCNcls_EoverP; | |
216 | ||
217 | TH1F **fEta; | |
218 | TH1F **fPhi; | |
219 | TH1F **fR; | |
220 | TH2F **fR_EoverP; | |
221 | TH1F **fNcells; | |
222 | TH2F **fNcells_EoverP; | |
223 | TH1F **fNcells_electrons; | |
224 | TH1F **fNcells_hadrons; | |
225 | TH1F **fECluster_ptbins; | |
226 | TH1F **fEoverP_ptbins; | |
227 | TH1F **fEoverP_wSSCut; | |
228 | TH2F **fM02_EoverP; | |
229 | TH2F **fM20_EoverP; | |
230 | TH2F **fTPCnsigma_eta_electrons; | |
231 | TH2F **fTPCnsigma_eta_hadrons; | |
232 | ||
233 | TH2F *fEoverP_pt_pions; | |
234 | ||
235 | TH2F *ftpc_p_EoverPcut; | |
236 | TH2F *fnsigma_p_EoverPcut; | |
237 | ||
238 | TH2F *fEoverP_pt_pions2; | |
239 | TH2F *fNcells_pt; | |
240 | TH2F *fEoverP_pt_hadrons; | |
241 | ||
9a1f999b | 242 | //Electron-Hadron Correlation Histograms |
c852fdae | 243 | TH2F **fCEtaPhi_Inc; |
244 | ||
245 | TH2F **fCEtaPhi_ULS; | |
246 | TH2F **fCEtaPhi_LS; | |
247 | TH2F **fCEtaPhi_ULS_NoP; | |
248 | TH2F **fCEtaPhi_LS_NoP; | |
249 | ||
250 | TH2F **fCEtaPhi_ULS_Weight; | |
251 | TH2F **fCEtaPhi_LS_Weight; | |
252 | TH2F **fCEtaPhi_ULS_NoP_Weight; | |
253 | TH2F **fCEtaPhi_LS_NoP_Weight; | |
254 | ||
255 | TH1F *fInvMass; | |
256 | TH1F *fInvMassBack; | |
257 | TH1F *fDCA; | |
258 | TH1F *fDCABack; | |
259 | TH1F *fOpAngle; | |
260 | TH1F *fOpAngleBack; | |
261 | ||
9a4682da | 262 | TH1F *fInvMass2; |
263 | TH1F *fInvMassBack2; | |
264 | TH1F *fDCA2; | |
265 | TH1F *fDCABack2; | |
266 | TH1F *fOpAngle2; | |
267 | TH1F *fOpAngleBack2; | |
268 | ||
c852fdae | 269 | Double_t fMassCut; |
270 | Double_t fEtaCutMin; | |
271 | Double_t fEtaCutMax; | |
a6f21076 | 272 | |
273 | Double_t fdPhiCut; | |
274 | Double_t fdEtaCut; | |
275 | ||
c852fdae | 276 | Double_t fEoverPCutMin; |
277 | Double_t fEoverPCutMax; | |
a6f21076 | 278 | Double_t fM20CutMin; |
279 | Double_t fM20CutMax; | |
280 | Double_t fM02CutMin; | |
281 | Double_t fM02CutMax; | |
282 | ||
c852fdae | 283 | Double_t fAngleCut; |
284 | Double_t fChi2Cut; | |
285 | Double_t fDCAcut; | |
286 | Bool_t fMassCutFlag; | |
287 | Bool_t fAngleCutFlag; | |
288 | Bool_t fChi2CutFlag; | |
289 | Bool_t fDCAcutFlag; | |
290 | ||
9a1f999b | 291 | //Non-HFE reconstruction efficiency |
c852fdae | 292 | TH1F *fPtBackgroundBeforeReco; |
9a4682da | 293 | TH1F *fPtBackgroundBeforeReco2; |
2c8e1f6c | 294 | TH1F *fPtBackgroundBeforeReco_weight; |
295 | TH1F *fPtBackgroundBeforeReco2_weight; | |
296 | ||
9a4682da | 297 | TH1F *fPtBackgroundAfterReco; |
298 | ||
9a1f999b | 299 | Double_t fPtMinAsso; |
300 | Int_t fTpcNclsAsso; | |
9a4682da | 301 | |
9a1f999b | 302 | //Tracking Efficiency |
c852fdae | 303 | TH1F *fPtMCparticleAll; |
9a1f999b | 304 | TH1F *fPtMCparticleAll_nonPrimary; |
305 | TH1F *fPtMCparticleAlle_nonPrimary; | |
2c8e1f6c | 306 | TH1F *fPtMCparticleAlle_Primary; |
9a1f999b | 307 | |
c852fdae | 308 | TH1F *fPtMCparticleReco; |
9a1f999b | 309 | TH1F *fPtMCparticleReco_nonPrimary; |
c852fdae | 310 | TH1F *fPtMCparticleAllHfe1; |
311 | TH1F *fPtMCparticleRecoHfe1; | |
312 | TH1F *fPtMCparticleAllHfe2; | |
313 | TH1F *fPtMCparticleRecoHfe2; | |
314 | TH1F *fPtMCelectronAfterAll; | |
9a1f999b | 315 | TH1F *fPtMCelectronAfterAll_nonPrimary; |
2c8e1f6c | 316 | TH1F *fPtMCelectronAfterAll_Primary; |
c852fdae | 317 | |
318 | TH1F *fPtMCpi0; | |
9a1f999b | 319 | TH1F *fPtMCeta; |
c852fdae | 320 | |
321 | TH1F *fPtMC_EMCal_All; | |
322 | TH1F *fPtMC_EMCal_Selected; | |
323 | TH1F *fPtMC_TPC_All; | |
324 | TH1F *fPtMC_TPC_Selected; | |
325 | ||
326 | TH1F *fPtMCWithLabel; | |
327 | TH1F *fPtMCWithoutLabel; | |
328 | TH1F *fPtIsPhysicaPrimary; | |
329 | ||
9a1f999b | 330 | //For the HFE package |
c852fdae | 331 | AliHFEcuts *fCuts; // Cut Collection for HFE |
332 | AliCFManager *fCFM; // Correction Framework Manager | |
333 | AliHFEpid *fPID; // PID | |
334 | AliHFEpidQAmanager *fPIDqa; // PID QA manager | |
335 | ||
9a1f999b | 336 | //Others |
c852fdae | 337 | AliStack *fMCstack; // |
338 | Bool_t fRejectKinkMother; // | |
339 | TParticle *fMCtrack; | |
340 | TParticle *fMCtrackMother; | |
341 | TParticle *fMCtrackGMother; | |
342 | TParticle *fMCtrackGGMother; | |
343 | TParticle *fMCtrackGGGMother; | |
344 | TClonesArray *fMCarray; | |
345 | AliAODMCHeader *fMCheader; | |
346 | AliAODMCParticle *fMCparticle; | |
347 | AliAODMCParticle *fMCparticleMother; | |
348 | AliAODMCParticle *fMCparticleGMother; | |
349 | AliAODMCParticle *fMCparticleGGMother; | |
350 | AliAODMCParticle *fMCparticleGGGMother; | |
351 | AliMCEventHandler *fEventHandler; | |
352 | AliMCEvent *fMCevent; | |
9a1f999b | 353 | |
354 | //______________________________________________________________________ | |
355 | //Mixed event analysis | |
c852fdae | 356 | AliEventPoolManager *fPoolMgr; |
357 | AliEventPool *fPool; | |
358 | TObjArray *fTracksClone; | |
359 | TObjArray *fTracks; | |
360 | ||
361 | TH2F **fCEtaPhi_Inc_EM; | |
362 | ||
363 | TH2F **fCEtaPhi_ULS_EM; | |
364 | TH2F **fCEtaPhi_LS_EM; | |
365 | ||
366 | TH2F **fCEtaPhi_ULS_Weight_EM; | |
367 | TH2F **fCEtaPhi_LS_Weight_EM; | |
368 | ||
369 | TH1F *fPoolNevents; | |
370 | ||
371 | Bool_t fEventMixingFlag; | |
9a1f999b | 372 | //______________________________________________________________________ |
373 | ||
374 | //______________________________________________________________________ | |
375 | //Di-hadron correlation | |
c852fdae | 376 | TH2F **fCEtaPhi_Inc_DiHadron; |
377 | TH1F *fPtTrigger_Inc; | |
9a1f999b | 378 | //______________________________________________________________________ |
379 | ||
c852fdae | 380 | AliAnalysisTaskEMCalHFEpA(const AliAnalysisTaskEMCalHFEpA&); // not implemented |
381 | AliAnalysisTaskEMCalHFEpA& operator=(const AliAnalysisTaskEMCalHFEpA&); // not implemented | |
9a1f999b | 382 | |
c852fdae | 383 | ClassDef(AliAnalysisTaskEMCalHFEpA, 1); // example of analysis |
9a1f999b | 384 | //______________________________________________________________________ |
c852fdae | 385 | }; |
386 | ||
9a1f999b | 387 | ///_________________________________________________________________________________________________ |
388 | ///Class copied from : $ALICE_ROOT/PWGCF/Correlations/DPhi/AliAnalysisTaskLongRangeCorrelations.h | |
389 | ///Author: Christoph Mayer | |
c852fdae | 390 | class AliEHCParticle : public TObject { |
391 | public: | |
9a1f999b | 392 | AliEHCParticle(Double_t eta=0, Double_t phi=0, Double_t pt=0) |
c852fdae | 393 | : fEta(eta), fPhi(phi), fPt(pt) {} |
9a1f999b | 394 | virtual ~AliEHCParticle() {} |
395 | ||
396 | Double_t Eta() const { return fEta; } | |
397 | Double_t Phi() const { return fPhi; } | |
398 | Double_t Pt() const { return fPt; } | |
399 | ||
c852fdae | 400 | protected: |
401 | private: | |
9a1f999b | 402 | AliEHCParticle(const AliEHCParticle&); |
403 | AliEHCParticle& operator=(const AliEHCParticle&); | |
404 | ||
405 | Double_t fEta; | |
406 | Double_t fPhi; | |
407 | Double_t fPt; | |
408 | ||
409 | ClassDef(AliEHCParticle, 1); | |
c852fdae | 410 | } ; |
9a1f999b | 411 | ///_________________________________________________________________________________________________ |
c852fdae | 412 | |
413 | #endif |