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