1 #ifndef ALIANALYSISTASKELECHADRONCORREL_H
2 #define ALIANALYSISTASKELECHADRONCORREL_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 ////////////////////////////////////////////////////////////////////////
9 // Task for Heavy Flavour Electron-Hadron DeltaPhi Correlation //
11 // Author: Deepa Thomas (Utrecht University) //
13 ////////////////////////////////////////////////////////////////////////
23 class AliEMCALGeometry;
24 class AliEMCALRecoUtils;
25 class AliAnalysisFilter;
26 class AliESDtrackCuts;
29 class AliHFEcontainer;
32 class AliHFEpidQAmanager;
34 //class AliEventPoolManager;
37 #include "AliAnalysisTaskSE.h"
38 #include "AliCentrality.h"
40 class AliAnalysisTaskElecHadronCorrel : public AliAnalysisTaskSE {
42 AliAnalysisTaskElecHadronCorrel();
43 AliAnalysisTaskElecHadronCorrel(const char *name);
44 virtual ~AliAnalysisTaskElecHadronCorrel();
46 virtual void UserCreateOutputObjects();
47 virtual void UserExec(Option_t *option);
48 virtual void Terminate(Option_t *);
50 Bool_t IsAODanalysis() const { return TestBit(kAODanalysis); };
51 Bool_t IsESDanalysis() const { return !TestBit(kAODanalysis); };
53 void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
54 void SetInvariantMassCut (Double_t invmass) {fInvmassCut = invmass;};
55 AliHFEpid *GetPID() const { return fPID; }
56 void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) { fRejectKinkMother = rejectKinkMother; };
57 void SelectPhotonicElectron(Int_t itrack, AliVTrack *track, Bool_t &fFlagPhotonicElec);
58 void ElectronHadCorrel(Int_t itrack, AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4);
59 void ElectronHadCorrelNoPartner(Int_t itrack,Int_t jtrack, AliVTrack *track, TH2F *DphiPtNew,TH2F *DphiPtNew1,TH2F *DphiPtNew2,TH2F *DphiPtNew3,TH2F *DphiPtNew4);
60 void HadronInfo(Int_t itrack);
61 void SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod); //select centrality
62 void CheckCentrality(AliVEvent *event,Bool_t ¢ralitypass); //to use only events with the correct centrality....
64 void SetAODAnalysis() { SetBit(kAODanalysis, kTRUE); };
65 void SetESDAnalysis() { SetBit(kAODanalysis, kFALSE); };
66 /* void MixedEvent(AliAODTrack *track, TH2F *DphiPt, TH2F *DphiPt1, TH2F *DphiPt2);
67 TObjArray* CloneAndReduceTrackList();
72 kAODanalysis = BIT(20),
75 Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
77 AliVEvent *fVevent; //V event object
78 AliESDEvent *fESD; //ESD object
79 AliAODEvent *fAOD; //AOD object
80 AliEMCALGeometry *fGeom; // emcal geometry
82 TList *fOutputList; //output list
84 AliESDtrackCuts *fTrackCuts1; //ESD track cuts
85 AliESDtrackCuts *fTrackCuts2; //ESD track cuts
86 AliHFEcuts *fCuts; //Cut Collection
87 Bool_t fIdentifiedAsOutInz; //Out Of Range in z
88 Bool_t fPassTheEventCut; //Pass The Event Cut
89 Bool_t fRejectKinkMother; //Reject Kink Mother
90 Double_t fVz; //z position of the primary vertex
91 AliCFManager *fCFM; //!Correction Framework Manager
92 AliHFEpid *fPID; //PID
93 AliHFEpidQAmanager *fPIDqa; //! PID QA manager
94 Double_t fInvmassCut; //invariant mass cut value
95 Double_t fCentrality; // event centrality for QA
96 Double_t fCentralityMin; // lower bound of cenrality bin
97 Double_t fCentralityMax; // upper bound of centrality bin
98 const char *fkCentralityMethod; // method used to determine centrality (V0 by default)
99 // AliEventPoolManager* fPoolMgr; //! event pool manager
101 TH1F *fNoEvents; //no of events
102 // TH1F *fTrkpt; //track pt
103 TH2F *fTrkEovPBef; //track E/p before HFE pid
104 TH2F *fTrkEovPBefHad; //track E/p before HFE pid
105 // TH2F *fdEdxBef; //track dEdx vs p before HFE pid
106 TH2F *fSemiIncElecDphi; //Semi Inclusive elec - had DPhi
107 TH2F *fSemiIncElecDphi1; //Semi Inclusive elec - had DPhi
108 TH2F *fSemiIncElecDphi2; //Semi Inclusive elec - had DPhi
109 TH2F *fSemiIncElecDphi3; //Semi Inclusive elec - had DPhi
110 TH2F *fSemiIncElecDphi4; //Semi Inclusive elec - had DPhi
111 TH2F *fPhotElecDphi; //Photon elec - had DPhi
112 TH2F *fPhotElecDphi1; //Photon elec - had DPhi
113 TH2F *fPhotElecDphi2; //Photon elec - had DPhi
114 TH2F *fPhotElecDphi3; //Photon elec - had DPhi
115 TH2F *fPhotElecDphi4; //Photon elec - had DPhi
116 TH2F *fInclusiveElecDphi; //Inclusive elec - had DPhi
117 TH2F *fInclusiveElecDphi1; //Inclusive elec - had DPhi
118 TH2F *fInclusiveElecDphi2; //Inclusive elec - had DPhi
119 TH2F *fInclusiveElecDphi3; //Inclusive elec - had DPhi
120 TH2F *fInclusiveElecDphi4; //Inclusive elec - had DPhi
121 TH2F *fDphiULSMassLow; //Dphi - ULS, mass< mass cut
122 TH2F *fDphiULSMassLow1; //Dphi - ULS, mass< mass cut
123 TH2F *fDphiULSMassLow2; //Dphi - ULS, mass< mass cut
124 TH2F *fDphiULSMassLow3; //Dphi - ULS, mass< mass cut
125 TH2F *fDphiULSMassLow4; //Dphi - ULS, mass< mass cut
126 TH2F *fDphiLSMassLow; //Dphi - LS, mass< mass cut
127 TH2F *fDphiLSMassLow1; //Dphi - LS, mass< mass cut
128 TH2F *fDphiLSMassLow2; //Dphi - LS, mass< mass cut
129 TH2F *fDphiLSMassLow3; //Dphi - LS, mass< mass cut
130 TH2F *fDphiLSMassLow4; //Dphi - LS, mass< mass cut
131 TH2F *fDphiULSMassLowNoPartner; //Dphi - ULS, mass< mass cut no partner
132 TH2F *fDphiULSMassLowNoPartner1; //Dphi - ULS, mass< mass cut no partner
133 TH2F *fDphiULSMassLowNoPartner2; //Dphi - ULS, mass< mass cut no partner
134 TH2F *fDphiULSMassLowNoPartner3; //Dphi - ULS, mass< mass cut no partner
135 TH2F *fDphiULSMassLowNoPartner4; //Dphi - ULS, mass< mass cut no partner
136 TH2F *fDphiLSMassLowNoPartner; //Dphi - LS, mass< mass cut
137 TH2F *fDphiLSMassLowNoPartner1; //Dphi - LS, mass< mass cut
138 TH2F *fDphiLSMassLowNoPartner2; //Dphi - LS, mass< mass cut
139 TH2F *fDphiLSMassLowNoPartner3; //Dphi - LS, mass< mass cut
140 TH2F *fDphiLSMassLowNoPartner4; //Dphi - LS, mass< mass cut
141 TH1F *fPhotoElecPt; //photonic elec pt
142 TH1F *fSemiInclElecPt; //Semi inclusive ele pt
143 TH1F *fInclusiveElecPt; // Inclusive elec pt
144 TH1F *fULSElecPt; //ULS elec Pt
145 TH1F *fLSElecPt;// LS elec pt
147 TH1F *fTrackPtBefTrkCuts; //Track pt before track cuts
148 TH1F *fTrackPtAftTrkCuts; //Track pt after track cuts
149 TH2F *fTPCnsigma; //TPC n sigma vs p
150 TH1F *fNCellv1; //No of cells in cluster, all EMCAL cluster
151 TH1F *fClsEv1; //Cluster energy, all EMCAL cluster
152 TH1F *fNClusv1; //No of clusters in event, all EMCAL cluster
153 TH1F *fInvmassLS1; //LS Invmass for all rec par
154 TH1F *fInvmassLS2; //LS Invmass for all rec par
155 TH1F *fInvmassLS3; //LS Invmass for all rec par
156 TH1F *fInvmassLS4; //LS Invmass for all rec par
157 TH1F *fInvmassLS5; //LS Invmass for all rec par
158 TH1F *fInvmassULS1;//ULS Invmass for all rec par
159 TH1F *fInvmassULS2;//ULS Invmass for all rec par
160 TH1F *fInvmassULS3;//ULS Invmass for all rec par
161 TH1F *fInvmassULS4;//ULS Invmass for all rec par
162 TH1F *fInvmassULS5;//ULS Invmass for all rec par
165 TH1F *fElecPhiTPChalf;//
167 // TH1F *fElecPhiTPC;//
168 // TH1F *fElecPhiTPCEovP;//
170 TH1F *fHadronPhiTPChalf;//
171 TH2F *fHadronPhiPt;//
172 /* TH1F *fTrackHFEcuts;//
173 TH1F *fTrakPhiSPD1;//
174 TH1F *fTrakPhiSPD2;//
175 TH1F *fTrakPhiSPDOr;//
176 TH1F *fTrakPhiSPDAnd;//
177 TH1F *fTrackHFEcutsITS;//
179 /* TH1F *fNoMixedEvents;//
180 TH2F *fMixStat; //no of events in pool vs multplicity
181 TH2F *fMixStat1; //no of events in pool vs zvtx
182 TH2F *fMixedIncElecDphi; //Mixed event - inclusive elec DPhi
183 TH2F *fMixedIncElecDphi1; //Mixed event - inclusive elec DPhi
184 TH2F *fMixedIncElecDphi2; //Mixed event - inclusive elec DPhi
185 TH2F *fMixedPhotElecDphi; //
186 TH2F *fMixedPhotElecDphi1; //
187 TH2F *fMixedPhotElecDphi2; //
188 TH2F *fMixedSemiIncElecDphi; //
189 TH2F *fMixedSemiIncElecDphi1; //
190 TH2F *fMixedSemiIncElecDphi2; //
191 TH2F *fMixedDphiULSMassLow;//
192 TH2F *fMixedDphiULSMassLow1;//
193 TH2F *fMixedDphiULSMassLow2;//
194 TH2F *fMixedDphiLSMassLow;//
195 TH2F *fMixedDphiLSMassLow1;//
196 TH2F *fMixedDphiLSMassLow2;//
199 TH1F *fCentralityPass; // ! QA histogram of events that pass centrality cut
200 TH1F *fCentralityNoPass; //! QA histogram of events that do not pass centrality cut
201 // THnSparse *fSparseElectron;//!Electron info
202 // Double_t *fvalueElectron;//!Electron info
204 AliAnalysisTaskElecHadronCorrel(const AliAnalysisTaskElecHadronCorrel&); // not implemented
205 AliAnalysisTaskElecHadronCorrel& operator=(const AliAnalysisTaskElecHadronCorrel&); // not implemented
207 ClassDef(AliAnalysisTaskElecHadronCorrel, 2); //!example of analysis
210 class AliehDPhiBasicParticle : public AliVParticle
213 AliehDPhiBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t charge)
214 : fEta(eta), fPhi(phi), fpT(pt), fCharge(charge)
217 ~AliehDPhiBasicParticle() {}
220 virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }
221 virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }
222 virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }
223 virtual Double_t Pt() const { return fpT; }
224 virtual Double_t P() const { AliFatal("Not implemented"); return 0; }
225 virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
227 virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
228 virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
229 virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
230 virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
232 virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0; }
233 virtual Double_t Phi() const { return fPhi; }
234 virtual Double_t Theta() const { AliFatal("Not implemented"); return 0; }
237 virtual Double_t E() const { AliFatal("Not implemented"); return 0; }
238 virtual Double_t M() const { AliFatal("Not implemented"); return 0; }
240 virtual Double_t Eta() const { return fEta; }
241 virtual Double_t Y() const { AliFatal("Not implemented"); return 0; }
243 virtual Short_t Charge() const { return fCharge; }
244 virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; }
246 virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; }
247 virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
253 Short_t fCharge; // charge
255 ClassDef( AliehDPhiBasicParticle, 1); // class which contains only quantities requires for this analysis to reduce memory consumption for event mixing