]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/AliAnalysisTaskEMCalHFEpA.h
Fix of sigmaZ for crossing tracklets from Alex
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskEMCalHFEpA.h
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
7         ////////////////////////////////////////////////////////////////////////
8         //                                                                    //
9         //      Task for Heavy-flavour electron analysis in pPb collisions    //
10         //      (+ Electron-Hadron Jetlike Azimuthal Correlation)             //
11         //                                                                                                                                        //
12         //              version: March 18, 2014.                                                                      //
13         //                                                                    //
14         //          Authors                                                                               //
15         //              Elienos Pereira de Oliveira Filho (epereira@cern.ch)          //
16         //              Cristiane Jahnke                (cristiane.jahnke@cern.ch)                    //
17         //                                                                    //
18         ////////////////////////////////////////////////////////////////////////
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         //Lucile
40 class AliCaloTrackAODReader;
41 class AliCaloTrackReader;
42
43
44         //______________________________________________________________________
45         //Library
46 #include "AliAnalysisTaskSE.h"
47 #include "AliHFEpid.h"
48 #include "AliLog.h"
49         //______________________________________________________________________
50
51         //______________________________________________________________________
52 class AliAnalysisTaskEMCalHFEpA : public AliAnalysisTaskSE 
53 {
54                 //______________________________________________________________________
55 public:
56         AliAnalysisTaskEMCalHFEpA();
57         AliAnalysisTaskEMCalHFEpA(const char *name);
58         virtual ~AliAnalysisTaskEMCalHFEpA();
59         
60         virtual void   UserCreateOutputObjects();
61         virtual void   UserExec(Option_t *option);
62         virtual void   Terminate(Option_t *);
63         
64                 //Setters
65         void SetAssHadronPtRange(Double_t AssHadronPtMin, Double_t AssHadronPtMax) {fAssHadronPtMin = AssHadronPtMin; fAssHadronPtMax = AssHadronPtMax; };
66         void SetHFECuts(AliHFEcuts * const cuts) {fCuts = cuts;};
67         void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) {fRejectKinkMother = rejectKinkMother;};
68         void SetCorrelationAnalysis(Bool_t CorrelationFlag=kTRUE) {fCorrelationFlag = CorrelationFlag;};
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; };
75         
76         void SetdPhidEtaCut(Double_t dPhiCut, Double_t dEtaCut ) { fdPhiCut = dPhiCut;fdEtaCut = dEtaCut ;};
77         
78         void SetEoverPCut(Double_t EoverPCutMin,Double_t EoverPCutMax ) { fEoverPCutMin = EoverPCutMin; fEoverPCutMax = EoverPCutMax; };
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         
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;};
88         void SetUseTrigger() { fUseTrigger=kTRUE;};
89         void SetUseShowerShapeCut(Bool_t UseShowerShapeCut=kFALSE) { fUseShowerShapeCut=UseShowerShapeCut;};
90         void SetBackground(Bool_t FillBackground=kFALSE) { fFillBackground=FillBackground;};
91         void SetEMCalTriggerEG1() { fEMCEG1=kTRUE; };
92         void SetEMCalTriggerEG2() { fEMCEG2=kTRUE; };
93         void SetCentralityEstimator(Int_t Estimator) { fEstimator=Estimator; }; //0 = V0A, 1 = Other
94         void SetAdditionalCuts(Double_t PtMinAsso, Int_t TpcNclsAsso) {fPtMinAsso = PtMinAsso; fTpcNclsAsso = TpcNclsAsso;};
95         void SetSPDCutForHadrons() {fAssocWithSPD = kTRUE;};
96         
97                 //Getters
98         AliHFEpid *GetPID() const {return fPID;};
99                 //______________________________________________________________________
100         
101                 //______________________________________________________________________
102 private:
103         
104                 //Function to process track cuts
105         Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
106                 //Function to process eh analysis
107         void ElectronHadronCorrelation(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack);
108                 //Function to find non-HFE and fill histos
109         void Background(AliVTrack *track, Int_t trackIndex, AliVParticle *vtrack, Bool_t IsTPConly);
110                 //Selected Hadrons, for mixed event analysis
111         TObjArray* SelectedHadrons();
112                 //DiHadron Correlation Background
113         void DiHadronCorrelation(AliVTrack *track, Int_t trackIndex);
114                 //Find Mothers (Finde HFE and NonHFE from MC information)
115         Bool_t FindMother(Int_t mcIndex);
116         
117                 //Flags for specifics analysis
118         Bool_t                          fCorrelationFlag;
119         Bool_t                          fIsMC;
120         Bool_t                          fUseEMCal;
121         Bool_t                          fUseTrigger;
122         Bool_t                          fUseShowerShapeCut;
123         Bool_t                          fFillBackground;
124         Bool_t                          fAssocWithSPD;
125         
126         
127         Bool_t                          fEMCEG1;
128         Bool_t                          fEMCEG2;
129         
130                 //Used in the function FindMother
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         
140                 //General variables
141         AliESDEvent                     *fESD;
142         AliAODEvent                     *fAOD;                          /// new
143         AliVEvent                       *fVevent;                       /// new
144         AliESDtrackCuts         *fPartnerCuts;
145         TList                           *fOutputList;
146         AliPIDResponse                  *fPidResponse;
147         AliSelectNonHFE                 *fNonHFE;
148         
149                 //For the case of AOD analysis
150         Bool_t                                  fIsAOD;                                 //flag for AOD analysis
151         
152                 //For Centrality Selection
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         
162                 //EMCal
163         
164         AliVCluster                             *fClus;
165                 //AliESDCaloCluster             *fClusESD;
166         
167                 //Histograms
168         TH1F                            *fNevent;
169         TH1F                            *fPtElec_Inc;
170         
171         TH1F                            *fPtPrim;
172         TH1F                            *fPtSec;
173         TH1F                            *fPtPrim2;
174         TH1F                            *fPtSec2;
175         
176         
177         TH1F                            *fCharge_n;
178         TH1F                            *fCharge_p;
179         
180         TH2D                            *fTime;
181         TH2D                            *fTime2;
182         TH2D                            *ftimingEle;
183         TH2D                            *ftimingEle2;   
184         
185         TH1F                            *fPtElec_ULS;
186         TH1F                            *fPtElec_LS;
187         
188         TH1F                            *fPtElec_ULS_NoPid;
189         TH1F                            *fPtElec_LS_NoPid;
190         
191         TH1F                            *fPtElec_ULS_MC;
192         TH1F                            *fPtElec_ULS_MC_weight;
193         
194         TH1F                            *fPtElec_ULS2;
195         TH1F                            *fPtElec_LS2;
196         
197         TH1F                            *fPtElec_ULS_weight;
198         TH1F                            *fPtElec_LS_weight;
199         TH1F                            *fPtElec_ULS2_weight;
200         TH1F                            *fPtElec_LS2_weight;
201         
202                 //PID Histograms
203         
204         TH2F                            *fTOF01;
205         TH2F                            *fTOF02;
206         TH2F                            *fTOF03;
207
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;
219         TH2F                            *fShowerShapeCut;
220         TH2F                            *fShowerShapeM02_EoverP;
221         TH2F                            *fShowerShapeM20_EoverP;
222         TH2F                            *fShowerShape_ha;
223         TH2F                            *fShowerShape_ele;
224         
225         TH2F                            *fTPCnsigma_eta;
226         TH2F                            *fTPCnsigma_phi;
227         
228         
229         TH1F                            **fECluster;
230         TH1F                            *fECluster_pure;
231         TH2F                            **fEtaPhi;
232         TH2F                            *fEtaPhi_num;
233         TH2F                            *fEtaPhi_den;
234         
235         TH2F                            *fpt_reco_pt_MC_num;
236         TH2F                            *fpt_reco_pt_MC_den;
237         
238         TH1F                            **fVtxZ;
239         
240         TH1F                            *fVtxZ_new1;
241         TH1F                            *fVtxZ_new2;
242         TH1F                            *fVtxZ_new3;
243         TH1F                            *fVtxZ_new4;
244         
245         TH1F                            **fEtad;
246         TH1F                            **fNTracks;
247         
248         TH2F                            **fNTracks_pt;
249         TH2F                            **fNTracks_eta;
250         TH2F                            **fNTracks_phi;
251         
252         TH1F                            **fNClusters;
253         TH2F                            **fTPCNcls_EoverP;
254         TH2F                            **fTPCNcls_pid;
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         
281                 //Electron-Hadron Correlation Histograms
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         
301         TH1F                            *fInvMass2;
302         TH1F                            *fInvMassBack2;
303         TH1F                            *fDCA2;
304         TH1F                            *fDCABack2;
305         TH1F                            *fOpAngle2;
306         TH1F                            *fOpAngleBack2;
307         
308         Double_t                        fMassCut;
309         Double_t                        fEtaCutMin;
310         Double_t                        fEtaCutMax;
311         
312         Double_t                        fdPhiCut;
313         Double_t                        fdEtaCut;
314         
315         Double_t                        fEoverPCutMin;
316         Double_t                        fEoverPCutMax;
317         Double_t                        fM20CutMin;
318         Double_t                        fM20CutMax;
319         Double_t                        fM02CutMin;
320         Double_t                        fM02CutMax;
321         
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         
330         //Correlation Function
331         Double_t                        fAssHadronPtMin;
332         Double_t                        fAssHadronPtMax;
333         
334                 //Non-HFE reconstruction efficiency
335         TH1F                            *fPtBackgroundBeforeReco;
336         TH1F                            *fPtBackgroundBeforeReco2;
337         TH1F                            *fPtBackgroundBeforeReco_weight;
338         TH1F                            *fPtBackgroundBeforeReco2_weight;
339         
340         TH2F                            *fpT_m_electron;
341         TH2F                            *fpT_gm_electron;
342         
343         TH1F                            *fPtBackgroundAfterReco;
344         
345         Double_t                        fPtMinAsso;
346         Int_t                   fTpcNclsAsso;
347         
348                 //Tracking Efficiency
349         TH1F                            *fPtMCparticleAll;
350         TH1F                            *fPtMCparticleAll_nonPrimary;
351         TH1F                            *fPtMCparticleAlle_nonPrimary;
352         TH1F                            *fPtMCparticleAlle_Primary;
353
354         TH1F                            *fPtMCparticleReco;
355         TH1F                            *fPtMCparticleReco_nonPrimary;
356         TH1F                            *fPtMCparticleAllHfe1;
357         TH1F                            *fPtMCparticleRecoHfe1;
358         TH1F                            *fPtMCparticleAllHfe2;
359         TH1F                            *fPtMCparticleRecoHfe2;
360         TH1F                            *fPtMCelectronAfterAll;
361         TH1F                            *fPtMCelectronAfterAll_unfolding;
362         TH1F                            *fPtMCelectronAfterAll_nonPrimary;
363         TH1F                            *fPtMCelectronAfterAll_Primary;
364         
365         TH1F                            *fPtMCpi0;
366         TH1F                            *fPtMCeta;
367         TH1F                            *fPtMCpi02;
368         TH1F                            *fPtMCeta2;
369         
370         TH1F                            *fPtMC_EMCal_All;
371         TH1F                            *fPtMC_EMCal_Selected;
372         TH1F                            *fPtMC_TPC_All;
373         TH1F                            *fPtMC_TPC_Selected;
374         TH1F                            *fPt_track_match_den;
375         TH1F                            *fPt_track_match_num;
376         
377                 
378         TH1F                            *fPtMCWithLabel;
379         TH1F                            *fPtMCWithoutLabel;
380         TH1F                            *fPtIsPhysicaPrimary;
381         
382                 //For the HFE package
383         AliHFEcuts                      *fCuts;                                 // Cut Collection for HFE
384                                                                                                                 //Lucile
385                                                                                                                 //AliCaloTrackAODReader                         *reader; 
386         AliCFManager            *fCFM;                                  // Correction Framework Manager
387         AliHFEpid                       *fPID;                                  // PID
388         AliHFEpidQAmanager      *fPIDqa;                                                // PID QA manager
389         
390                 //Others
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;
401         AliAODMCParticle        *fMCparticle2;
402         AliAODMCParticle        *fMCparticleMother;
403         AliAODMCParticle        *fMCparticleGMother;
404         AliAODMCParticle        *fMCparticleGGMother;
405         AliAODMCParticle        *fMCparticleGGGMother;
406         AliMCEventHandler       *fEventHandler;
407         AliMCEvent                      *fMCevent;
408         
409                 //______________________________________________________________________
410                 //Mixed event analysis
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;
427                 //______________________________________________________________________
428         
429                 //______________________________________________________________________
430                 //Di-hadron correlation
431         TH2F                            **fCEtaPhi_Inc_DiHadron;
432         TH1F                            *fPtTrigger_Inc;
433                 //______________________________________________________________________
434         
435         AliAnalysisTaskEMCalHFEpA(const AliAnalysisTaskEMCalHFEpA&);                    // not implemented
436         AliAnalysisTaskEMCalHFEpA& operator=(const AliAnalysisTaskEMCalHFEpA&);                 // not implemented
437         
438         ClassDef(AliAnalysisTaskEMCalHFEpA, 1);                                                                 // example of analysis
439                                                                                                                                                         //______________________________________________________________________
440 };
441
442         ///_________________________________________________________________________________________________
443         ///Class copied from : $ALICE_ROOT/PWGCF/Correlations/DPhi/AliAnalysisTaskLongRangeCorrelations.h
444         ///Author: Christoph Mayer
445 class AliEHCParticle : public TObject {
446 public:
447         AliEHCParticle(Double_t eta=0, Double_t phi=0, Double_t pt=0)
448     : fEta(eta), fPhi(phi), fPt(pt) {}
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         
455 protected:
456 private:
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);
465 } ;
466         ///_________________________________________________________________________________________________
467
468 #endif