]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/hfe/AliAnalysisTaskEMCalHFEpA.h
Fix function name (Vardanush)
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskEMCalHFEpA.h
CommitLineData
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
20class TH1F;
21class TH2F;
22class AliESDEvent;
23class AliESDtrackCuts;
24class AliESDtrack;
25class AliHFEcontainer;
26class AliHFEcuts;
27class AliHFEpid;
28class AliHFEpidQAmanager;
29class AliCFManager;
30class AliPIDResponse;
31class AliCentrality;
32class AliAODEvent;
33class AliVEvent;
34class AliAODMCHeader;
35class AliSelectNonHFE;
36class AliEventPoolManager;
37class AliEventPool;
38class 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 48class AliAnalysisTaskEMCalHFEpA : public AliAnalysisTaskSE
49{
9a1f999b 50 //______________________________________________________________________
51public:
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 //______________________________________________________________________
96private:
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 390class AliEHCParticle : public TObject {
391public:
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 400protected:
401private:
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