]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/AliAnalysisTaskElecHadronCorrel.h
e772f10f72df243d1305591dcd701bf5f6ecf36d
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskElecHadronCorrel.h
1 #ifndef ALIANALYSISTASKELECHADRONCORREL_H
2 #define ALIANALYSISTASKELECHADRONCORREL_H
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-Hadron DeltaPhi Correlation       //
10 //                                                                    //
11 //  Author: Deepa Thomas (Utrecht University)                         //
12 //                                                                    //
13 ////////////////////////////////////////////////////////////////////////
14
15 class THnSparse;
16 class TH2F;
17 class TLorentzVector;
18
19 class AliEMCALTrack;
20 class AliMagF;
21 class AliESDEvent;
22 class AliAODEvent;
23 class AliEMCALGeometry;
24 class AliEMCALRecoUtils;
25 class AliAnalysisFilter;
26 class AliESDtrackCuts;
27 class AliESDtrack;
28 class AliAODTrack;
29 class AliHFEcontainer;
30 class AliHFEcuts;
31 class AliHFEpid;
32 class AliHFEpidQAmanager;
33 class AliCFManager;
34 //class AliEventPoolManager;
35
36 #include "AliLog.h"
37 #include "AliAnalysisTaskSE.h"
38 #include "AliCentrality.h"
39
40 class AliAnalysisTaskElecHadronCorrel : public AliAnalysisTaskSE {
41   public:
42     AliAnalysisTaskElecHadronCorrel();
43     AliAnalysisTaskElecHadronCorrel(const char *name);
44     virtual ~AliAnalysisTaskElecHadronCorrel();
45
46     virtual void   UserCreateOutputObjects();
47     virtual void   UserExec(Option_t *option);
48     virtual void   Terminate(Option_t *);
49
50     Bool_t IsAODanalysis() const { return TestBit(kAODanalysis); };
51     Bool_t IsESDanalysis() const { return !TestBit(kAODanalysis); };
52
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 &centralitypass); //to use only events with the correct centrality....
63
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();
68   */
69     private:
70
71     enum{
72       kAODanalysis = BIT(20),
73     };
74
75     Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
76
77     AliVEvent                 *fVevent;         //V event object
78     AliESDEvent                    *fESD;                       //ESD object
79     AliAODEvent                    *fAOD;                       //AOD object
80     AliEMCALGeometry    *fGeom;                 // emcal geometry 
81
82     TList                       *fOutputList;           //output list
83
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
100
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 
146
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
163     TH1F        *fcentrality;//
164     TH1F        *fElecPhi;//
165     TH1F        *fElecPhiTPChalf;//
166     TH2F        *fElecPhiPt;//
167 //    TH1F        *fElecPhiTPC;//
168 //    TH1F        *fElecPhiTPCEovP;//
169     TH1F        *fHadronPhi;//
170     TH1F        *fHadronPhiTPChalf;//
171     TH2F        *fHadronPhiPt;//
172 /*    TH1F        *fTrackHFEcuts;//
173     TH1F        *fTrakPhiSPD1;//
174     TH1F        *fTrakPhiSPD2;//
175     TH1F        *fTrakPhiSPDOr;//
176     TH1F        *fTrakPhiSPDAnd;//
177     TH1F        *fTrackHFEcutsITS;//
178 */
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;//
197 */
198     TH1F        *fHadronPt;//
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 
203
204     AliAnalysisTaskElecHadronCorrel(const AliAnalysisTaskElecHadronCorrel&); // not implemented
205     AliAnalysisTaskElecHadronCorrel& operator=(const AliAnalysisTaskElecHadronCorrel&); // not implemented
206
207     ClassDef(AliAnalysisTaskElecHadronCorrel, 2); //!example of analysis
208 };
209 /*
210 class AliehDPhiBasicParticle : public AliVParticle
211 {
212   public:
213     AliehDPhiBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t charge)
214       : fEta(eta), fPhi(phi), fpT(pt), fCharge(charge)
215     {
216     }
217     ~AliehDPhiBasicParticle() {}
218
219     // kinematics
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; }
226
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; }
231
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; }
235
236
237     virtual Double_t E()          const { AliFatal("Not implemented"); return 0; }
238     virtual Double_t M()          const { AliFatal("Not implemented"); return 0; }
239
240     virtual Double_t Eta()        const { return fEta; }
241     virtual Double_t Y()          const { AliFatal("Not implemented"); return 0; }
242
243     virtual Short_t Charge()      const { return fCharge; }
244     virtual Int_t   GetLabel()    const { AliFatal("Not implemented"); return 0; }
245     // PID
246     virtual Int_t   PdgCode()     const { AliFatal("Not implemented"); return 0; }
247     virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
248
249   private:
250     Float_t fEta;      // eta
251     Float_t fPhi;      // phi
252     Float_t fpT;       // pT
253     Short_t fCharge;   // charge
254
255     ClassDef( AliehDPhiBasicParticle, 1); // class which contains only quantities requires for this analysis to reduce memory consumption for event mixing
256 };
257 */
258 #endif
259
260