]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/AliAnalysisTaskElecHadronCorrel.h
update package
[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 #include "AliSelectNonHFE.h"
40
41 class AliAnalysisTaskElecHadronCorrel : public AliAnalysisTaskSE {
42   public:
43     AliAnalysisTaskElecHadronCorrel();
44     AliAnalysisTaskElecHadronCorrel(const char *name);
45     virtual ~AliAnalysisTaskElecHadronCorrel();
46
47     virtual void   UserCreateOutputObjects();
48     virtual void   UserExec(Option_t *option);
49     virtual void   Terminate(Option_t *);
50
51     Bool_t IsAODanalysis() const { return TestBit(kAODanalysis); };
52     Bool_t IsESDanalysis() const { return !TestBit(kAODanalysis); };
53
54     void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
55     void SetInvariantMassCut (Double_t invmass) {fInvmassCut = invmass;};
56     AliHFEpid *GetPID() const { return fPID; }
57     void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) { fRejectKinkMother = rejectKinkMother; };
58     void SelectPhotonicElectron(Int_t itrack, AliVTrack *track, Bool_t &fFlagPhotonicElec);
59     void SelectPhotonicElectronDCAMet(Int_t itrack, AliVTrack *track, AliPIDResponse *pidResponse);
60     void ElectronHadCorrel(Int_t itrack, AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4);      
61     void ElectronHadCorrelEtaFarSide(Int_t itrack, AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4);    
62     void ElectronHadCorrelEtaBins(Int_t itrack, AliVTrack *track, TH2F *DphiPtEta1, TH2F *DphiPtEta11,TH2F *DphiPtEta12,TH2F *DphiPtEta13,TH2F *DphiPtEta14,TH2F *DphiPtEta2, TH2F *DphiPtEta21,TH2F *DphiPtEta22,TH2F *DphiPtEta23,TH2F *DphiPtEta24); 
63     // void ElectronHadCorrelEtaBins(Int_t itrack, AliVTrack *track, TH3F *DphiPtEta1, TH3F *DphiPtEta11,TH3F *DphiPtEta12,TH3F *DphiPtEta13,TH3F *DphiPtEta14);        
64     void ElectronHadCorrelNoPartner(Int_t itrack,Int_t jtrack, AliVTrack *track, TH2F *DphiPtNew,TH2F *DphiPtNew1,TH2F *DphiPtNew2,TH2F *DphiPtNew3,TH2F *DphiPtNew4);  
65     void ElectronHadCorrelNoPartnerDCAMet(Int_t itrack,AliVTrack *track,Int_t * AssoList, Int_t NAsso,TH2F *DphiPtNew,TH2F *DphiPtNew1,TH2F *DphiPtNew2,TH2F *DphiPtNew3,TH2F *DphiPtNew4);     
66     void ElectronHadCorrelEtaBinsNoPartner(Int_t itrack,Int_t jtrack, AliVTrack *track, TH2F *DphiPtEta1, TH2F *DphiPtEta11,TH2F *DphiPtEta12,TH2F *DphiPtEta13,TH2F *DphiPtEta14,TH2F *DphiPtEta2, TH2F *DphiPtEta21,TH2F *DphiPtEta22,TH2F *DphiPtEta23,TH2F *DphiPtEta24);   
67     // void ElectronHadCorrelEtaBinsNoPartner(Int_t itrack,Int_t jtrack, AliVTrack *track, TH3F *DphiPtEta1, TH3F *DphiPtEta11,TH3F *DphiPtEta12,TH3F *DphiPtEta13,TH3F *DphiPtEta14);  
68     void HadronInfo(Int_t itrack);
69
70     void SetEventTriggerSelectionMB(Bool_t TriggerMB) {fTriggerMB = TriggerMB;};
71     void SetTriggerSelection(Bool_t TriggerCentral) {fTriggerCentral = TriggerCentral;};
72     void    SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod); //select centrality
73     void    CheckCentrality(AliVEvent *event,Bool_t &centralitypass); //to use only events with the correct centrality....
74
75     void SetAODAnalysis() { SetBit(kAODanalysis, kTRUE); };
76     void SetESDAnalysis() { SetBit(kAODanalysis, kFALSE); };
77
78     void SetTPCnsigmaCutsElecSelection(Double_t nsigMin, Double_t nsigMax) {fTPCnsigEleMin=nsigMin; fTPCnsigEleMax=nsigMax;};
79     void SetTPCnsigmaCutsHadSelection(Double_t nsigMin, Double_t nsigMax) {fTPCnsigHadMin=nsigMin; fTPCnsigHadMax=nsigMax;};
80     void SetShowerShapeCutsM02(Double_t M02CutMin, Double_t M02CutMax){fM02CutMin=M02CutMin; fM02CutMax=M02CutMax;};
81     void SetShowerShapeCutsM20(Double_t M20CutMin, Double_t M20CutMax){fM20CutMin=M20CutMin; fM20CutMax=M20CutMax;};
82     void SetShowerShapeCutsDisp(Double_t DispCutMin, Double_t DispCutMax){fDispCutMin=DispCutMin; fDispCutMax=DispCutMax;};
83     void SetEovPCuts(Double_t EovPMin, Double_t EovPMax){fEovPMin=EovPMin;fEovPMax=EovPMax;};
84     void SetTPCNClsHad(Int_t TPCNClsHad) {fTPCNClsHad = TPCNClsHad;};
85     void SetAssoElecITSrefit(Bool_t AssoEleITSref){fAssoEleITSref = AssoEleITSref;};
86     void SetAssoElecTPCNCls(Int_t AssoElecTPCNCls){fAssoElecTPCNCls = AssoElecTPCNCls;};
87     void MixedEvent(AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1, TH2F *DphiPt2, TH2F *DphiPt3, TH2F *DphiPt4);
88     TObjArray* CloneAndReduceTrackList();
89
90   private:
91
92     enum{
93       kAODanalysis = BIT(20),
94     };
95
96     Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
97
98     AliVEvent                 *fVevent;         //V event object
99     AliESDEvent                    *fESD;                       //ESD object
100     AliAODEvent                    *fAOD;                       //AOD object
101     AliEMCALGeometry    *fGeom;                 // emcal geometry 
102     AliPIDResponse *fpidResponse; //pid response
103
104     TList                       *fOutputList;           //output list
105
106     AliESDtrackCuts             *fTrackCuts1;           //ESD track cuts
107     AliESDtrackCuts             *fTrackCuts2;           //ESD track cuts
108     AliHFEcuts                  *fCuts;                 //Cut Collection
109     Bool_t                            fIdentifiedAsOutInz;    //Out Of Range in z
110     Bool_t                      fPassTheEventCut;       //Pass The Event Cut
111     Bool_t                         fRejectKinkMother;      //Reject Kink Mother
112     Double_t                  fVz;                    //z position of the primary vertex
113     AliCFManager                *fCFM;                  //!Correction Framework Manager
114     AliHFEpid                 *fPID;                  //PID
115     AliHFEpidQAmanager  *fPIDqa;                //! PID QA manager
116     Double_t                    fInvmassCut;            //invariant mass cut value
117     Double_t             fCentrality; // event centrality for QA
118     Double_t             fCentralityMin; // lower bound of cenrality bin
119     Double_t             fCentralityMax; // upper bound of centrality bin
120     const char           *fkCentralityMethod; // method used to determine centrality (V0 by default)   
121     Double_t   fTPCnsigEleMin;//
122     Double_t   fTPCnsigEleMax;//
123     Double_t   fTPCnsigHadMin;//
124     Double_t   fTPCnsigHadMax;//
125     Double_t   fM02CutMin;//
126     Double_t   fM02CutMax;//
127     Double_t   fM20CutMin;//
128     Double_t   fM20CutMax;//
129     Double_t   fDispCutMin;//
130     Double_t   fDispCutMax;//
131     Double_t   fEovPMin;//
132     Double_t   fEovPMax;//
133     Bool_t     fTriggerCentral;//
134     Bool_t     fTriggerMB;//
135     Int_t      fTPCNClsHad;//
136     Bool_t     fAssoEleITSref;//
137     Int_t      fAssoElecTPCNCls;//
138
139
140     AliSelectNonHFE *fNonHFE; //!
141     AliEventPoolManager*     fPoolMgr;         //! event pool manager
142
143     TH1F                        *fNoEvents;             //no of events
144     //    TH1F                  *fTrkpt;                //track pt
145     TH2F                        *fTrkEovPAft;           //track E/p after HFE pid
146     //   TH2F                   *fTrkEovPBefHad;                //track E/p before HFE pid
147     //    TH2F                  *fdEdxBef;              //track dEdx vs p before HFE pid
148     TH2F                        *fSemiIncElecDphi;      //Semi Inclusive elec - had DPhi
149     TH2F                        *fSemiIncElecDphi1;     //Semi Inclusive elec - had DPhi
150     TH2F                        *fSemiIncElecDphi2;     //Semi Inclusive elec - had DPhi
151     TH2F                        *fSemiIncElecDphi3;     //Semi Inclusive elec - had DPhi
152     TH2F                        *fSemiIncElecDphi4;     //Semi Inclusive elec - had DPhi
153     TH2F                        *fPhotElecDphi;         //Photon elec - had DPhi
154     TH2F                        *fPhotElecDphi1;        //Photon elec - had DPhi
155     TH2F                        *fPhotElecDphi2;        //Photon elec - had DPhi
156     TH2F                        *fPhotElecDphi3;        //Photon elec - had DPhi
157     TH2F                        *fPhotElecDphi4;        //Photon elec - had DPhi
158     TH2F                        *fInclusiveElecDphi;    //Inclusive elec - had DPhi
159     TH2F                        *fInclusiveElecDphi1;   //Inclusive elec - had DPhi
160     TH2F                        *fInclusiveElecDphi2;   //Inclusive elec - had DPhi
161     TH2F                        *fInclusiveElecDphi3;   //Inclusive elec - had DPhi
162     TH2F                        *fInclusiveElecDphi4;   //Inclusive elec - had DPhi
163     TH2F       *fInclusiveElecDphiEtaFS;    //Inclusive elec EtaFS- had DPhi
164     TH2F       *fInclusiveElecDphiEtaFS1;   //Inclusive elec EtaFS- had DPhi
165     TH2F       *fInclusiveElecDphiEtaFS2;   //Inclusive elec EtaFS- had DPhi
166     TH2F       *fInclusiveElecDphiEtaFS3;   //Inclusive elec EtaFS- had DPhi
167     TH2F       *fInclusiveElecDphiEtaFS4;   //Inclusive elec EtaFS- had DPhi
168     TH2F                        *fDphiULSMassLow;       //Dphi - ULS, mass< mass cut
169     TH2F                        *fDphiULSMassLow1;      //Dphi - ULS, mass< mass cut
170     TH2F                        *fDphiULSMassLow2;      //Dphi - ULS, mass< mass cut
171     TH2F                        *fDphiULSMassLow3;      //Dphi - ULS, mass< mass cut
172     TH2F                        *fDphiULSMassLow4;      //Dphi - ULS, mass< mass cut
173     TH2F        *fDphiLSMassLow;  //Dphi - LS, mass< mass cut
174     TH2F        *fDphiLSMassLow1;  //Dphi - LS, mass< mass cut
175     TH2F        *fDphiLSMassLow2;  //Dphi - LS, mass< mass cut
176     TH2F        *fDphiLSMassLow3;  //Dphi - LS, mass< mass cut
177     TH2F        *fDphiLSMassLow4;  //Dphi - LS, mass< mass cut
178     TH2F        *fDphiULSMassLowNoPartner; //Dphi - ULS, mass< mass cut no partner
179     TH2F        *fDphiULSMassLowNoPartner1; //Dphi - ULS, mass< mass cut no partner
180     TH2F        *fDphiULSMassLowNoPartner2; //Dphi - ULS, mass< mass cut no partner
181     TH2F        *fDphiULSMassLowNoPartner3; //Dphi - ULS, mass< mass cut no partner
182     TH2F        *fDphiULSMassLowNoPartner4; //Dphi - ULS, mass< mass cut no partner
183     TH2F                        *fDphiLSMassLowNoPartner;       //Dphi - LS, mass< mass cut
184     TH2F                        *fDphiLSMassLowNoPartner1;      //Dphi - LS, mass< mass cut
185     TH2F                        *fDphiLSMassLowNoPartner2;      //Dphi - LS, mass< mass cut
186     TH2F                        *fDphiLSMassLowNoPartner3;      //Dphi - LS, mass< mass cut
187     TH2F                        *fDphiLSMassLowNoPartner4;      //Dphi - LS, mass< mass cut
188     TH1F                        *fPhotoElecPt;          //photonic elec pt 
189     TH1F                        *fSemiInclElecPt;       //Semi inclusive ele pt
190     TH1F        *fInclusiveElecPt; // Inclusive elec pt
191     TH1F        *fULSElecPt; //ULS elec Pt
192     TH1F        *fLSElecPt;// LS elec pt 
193
194     //Eleinos method for Inv mass
195     TH2F       *fDCAMetPhotElecDphi;   //Photon elec - had DPhi
196     TH2F       *fDCAMetPhotElecDphi1;     //Photon elec - had DPhi
197     TH2F       *fDCAMetPhotElecDphi2;     //Photon elec - had DPhi
198     TH2F       *fDCAMetPhotElecDphi3;     //Photon elec - had DPhi
199     TH2F       *fDCAMetPhotElecDphi4;     //Photon elec - had DPhi
200     TH2F       *fDCAMetDphiULSMassLow; //Dphi - ULS, mass< mass cut
201     TH2F       *fDCAMetDphiULSMassLow1;   //Dphi - ULS, mass< mass cut
202     TH2F       *fDCAMetDphiULSMassLow2;   //Dphi - ULS, mass< mass cut
203     TH2F       *fDCAMetDphiULSMassLow3;   //Dphi - ULS, mass< mass cut
204     TH2F       *fDCAMetDphiULSMassLow4;   //Dphi - ULS, mass< mass cut
205     TH2F        *fDCAMetDphiLSMassLow;  //Dphi - LS, mass< mass cut
206     TH2F        *fDCAMetDphiLSMassLow1;  //Dphi - LS, mass< mass cut
207     TH2F        *fDCAMetDphiLSMassLow2;  //Dphi - LS, mass< mass cut
208     TH2F        *fDCAMetDphiLSMassLow3;  //Dphi - LS, mass< mass cut
209     TH2F        *fDCAMetDphiLSMassLow4;  //Dphi - LS, mass< mass cut
210     TH2F        *fDCAMetDphiULSMassLowNoPartner; //Dphi - ULS, mass< mass cut no partner
211     TH2F        *fDCAMetDphiULSMassLowNoPartner1; //Dphi - ULS, mass< mass cut no partner
212     TH2F        *fDCAMetDphiULSMassLowNoPartner2; //Dphi - ULS, mass< mass cut no partner
213     TH2F        *fDCAMetDphiULSMassLowNoPartner3; //Dphi - ULS, mass< mass cut no partner
214     TH2F        *fDCAMetDphiULSMassLowNoPartner4; //Dphi - ULS, mass< mass cut no partner
215     TH2F       *fDCAMetDphiLSMassLowNoPartner;  //Dphi - LS, mass< mass cut
216     TH2F       *fDCAMetDphiLSMassLowNoPartner1; //Dphi - LS, mass< mass cut
217     TH2F       *fDCAMetDphiLSMassLowNoPartner2; //Dphi - LS, mass< mass cut
218     TH2F       *fDCAMetDphiLSMassLowNoPartner3; //Dphi - LS, mass< mass cut
219     TH2F       *fDCAMetDphiLSMassLowNoPartner4; //Dphi - LS, mass< mass cut
220     TH1F       *fDCAMetPhotoElecPt;    //photonic elec pt 
221     TH1F        *fDCAMetULSElecPt; //ULS elec Pt
222     TH1F        *fDCAMetLSElecPt;// LS elec pt 
223
224     //Eta bins (Deta < 0.8)
225     TH2F       *fSemiIncElecDphiEta1;   //Semi Inclusive elec - had DPhi
226     TH2F       *fSemiIncElecDphiEta11;     //Semi Inclusive elec - had DPhi
227     TH2F       *fSemiIncElecDphiEta12;     //Semi Inclusive elec - had DPhi
228     TH2F       *fSemiIncElecDphiEta13;     //Semi Inclusive elec - had DPhi
229     TH2F       *fSemiIncElecDphiEta14;     //Semi Inclusive elec - had DPhi
230     TH2F       *fPhotElecDphiEta1;   //Photon elec - had DPhi
231     TH2F       *fPhotElecDphiEta11;     //Photon elec - had DPhi
232     TH2F       *fPhotElecDphiEta12;     //Photon elec - had DPhi
233     TH2F       *fPhotElecDphiEta13;     //Photon elec - had DPhi
234     TH2F       *fPhotElecDphiEta14;     //Photon elec - had DPhi
235     TH2F       *fInclusiveElecDphiEta1;    //Inclusive elec - had DPhi
236     TH2F       *fInclusiveElecDphiEta11;   //Inclusive elec - had DPhi
237     TH2F       *fInclusiveElecDphiEta12;   //Inclusive elec - had DPhi
238     TH2F       *fInclusiveElecDphiEta13;   //Inclusive elec - had DPhi
239     TH2F       *fInclusiveElecDphiEta14;   //Inclusive elec - had DPhi
240     TH2F       *fDphiULSMassLowEta1; //Dphi - ULS, mass< mass cut
241     TH2F       *fDphiULSMassLowEta11;   //Dphi - ULS, mass< mass cut
242     TH2F       *fDphiULSMassLowEta12;   //Dphi - ULS, mass< mass cut
243     TH2F       *fDphiULSMassLowEta13;   //Dphi - ULS, mass< mass cut
244     TH2F       *fDphiULSMassLowEta14;   //Dphi - ULS, mass< mass cut
245     TH2F        *fDphiLSMassLowEta1;  //Dphi - LS, mass< mass cut
246     TH2F        *fDphiLSMassLowEta11;  //Dphi - LS, mass< mass cut
247     TH2F        *fDphiLSMassLowEta12;  //Dphi - LS, mass< mass cut
248     TH2F        *fDphiLSMassLowEta13;  //Dphi - LS, mass< mass cut
249     TH2F        *fDphiLSMassLowEta14;  //Dphi - LS, mass< mass cut
250     TH2F        *fDphiULSMassLowNoPartnerEta1; //Dphi - ULS, mass< mass cut no partner
251     TH2F        *fDphiULSMassLowNoPartnerEta11; //Dphi - ULS, mass< mass cut no partner
252     TH2F        *fDphiULSMassLowNoPartnerEta12; //Dphi - ULS, mass< mass cut no partner
253     TH2F        *fDphiULSMassLowNoPartnerEta13; //Dphi - ULS, mass< mass cut no partner
254     TH2F        *fDphiULSMassLowNoPartnerEta14; //Dphi - ULS, mass< mass cut no partner
255     TH2F       *fDphiLSMassLowNoPartnerEta1;  //Dphi - LS, mass< mass cut
256     TH2F       *fDphiLSMassLowNoPartnerEta11; //Dphi - LS, mass< mass cut
257     TH2F       *fDphiLSMassLowNoPartnerEta12; //Dphi - LS, mass< mass cut
258     TH2F       *fDphiLSMassLowNoPartnerEta13; //Dphi - LS, mass< mass cut
259     TH2F       *fDphiLSMassLowNoPartnerEta14; //Dphi - LS, mass< mass cut
260
261     //Eta bins (Deta > 0.8)
262     TH2F       *fSemiIncElecDphiEta2;   //Semi Inclusive elec - had DPhi
263     TH2F       *fSemiIncElecDphiEta21;     //Semi Inclusive elec - had DPhi
264     TH2F       *fSemiIncElecDphiEta22;     //Semi Inclusive elec - had DPhi
265     TH2F       *fSemiIncElecDphiEta23;     //Semi Inclusive elec - had DPhi
266     TH2F       *fSemiIncElecDphiEta24;     //Semi Inclusive elec - had DPhi
267     TH2F       *fPhotElecDphiEta2;   //Photon elec - had DPhi
268     TH2F       *fPhotElecDphiEta21;     //Photon elec - had DPhi
269     TH2F       *fPhotElecDphiEta22;     //Photon elec - had DPhi
270     TH2F       *fPhotElecDphiEta23;     //Photon elec - had DPhi
271     TH2F       *fPhotElecDphiEta24;     //Photon elec - had DPhi
272     TH2F       *fInclusiveElecDphiEta2;    //Inclusive elec - had DPhi
273     TH2F       *fInclusiveElecDphiEta21;   //Inclusive elec - had DPhi
274     TH2F       *fInclusiveElecDphiEta22;   //Inclusive elec - had DPhi
275     TH2F       *fInclusiveElecDphiEta23;   //Inclusive elec - had DPhi
276     TH2F       *fInclusiveElecDphiEta24;   //Inclusive elec - had DPhi
277     TH2F       *fDphiULSMassLowEta2; //Dphi - ULS, mass< mass cut                       
278     TH2F       *fDphiULSMassLowEta21;   //Dphi - ULS, mass< mass cut                        
279     TH2F       *fDphiULSMassLowEta22;   //Dphi - ULS, mass< mass cut                            
280     TH2F       *fDphiULSMassLowEta23;   //Dphi - ULS, mass< mass cut
281     TH2F       *fDphiULSMassLowEta24;   //Dphi - ULS, mass< mass cut
282     TH2F        *fDphiLSMassLowEta2;  //Dphi - LS, mass< mass cut
283     TH2F        *fDphiLSMassLowEta21;  //Dphi - LS, mass< mass cut
284     TH2F        *fDphiLSMassLowEta22;  //Dphi - LS, mass< mass cut
285     TH2F        *fDphiLSMassLowEta23;  //Dphi - LS, mass< mass cut
286     TH2F        *fDphiLSMassLowEta24;  //Dphi - LS, mass< mass cut
287     TH2F        *fDphiULSMassLowNoPartnerEta2; //Dphi - ULS, mass< mass cut no partner
288     TH2F        *fDphiULSMassLowNoPartnerEta21; //Dphi - ULS, mass< mass cut no partner
289     TH2F        *fDphiULSMassLowNoPartnerEta22; //Dphi - ULS, mass< mass cut no partner
290     TH2F        *fDphiULSMassLowNoPartnerEta23; //Dphi - ULS, mass< mass cut no partner
291     TH2F        *fDphiULSMassLowNoPartnerEta24; //Dphi - ULS, mass< mass cut no partner
292     TH2F       *fDphiLSMassLowNoPartnerEta2;  //Dphi - LS, mass< mass cut
293     TH2F       *fDphiLSMassLowNoPartnerEta21; //Dphi - LS, mass< mass cut
294     TH2F       *fDphiLSMassLowNoPartnerEta22; //Dphi - LS, mass< mass cut
295     TH2F       *fDphiLSMassLowNoPartnerEta23; //Dphi - LS, mass< mass cut
296     TH2F       *fDphiLSMassLowNoPartnerEta24; //Dphi - LS, mass< mass cut
297
298     //   TH1F                   *fTrackPtBefTrkCuts;    //Track pt before track cuts    
299     //   TH1F                   *fTrackPtAftTrkCuts;    //Track pt after track cuts
300     TH2F                        *fTPCnsigma;            //TPC n sigma vs p      
301     //   TH1F                   *fNCellv1;              //No of cells in cluster, all EMCAL cluster
302     //   TH1F                   *fClsEv1;               //Cluster energy, all EMCAL cluster
303     //   TH1F                   *fNClusv1;              //No of clusters in event, all EMCAL cluster
304     TH1F        *fInvmassLS1; //LS Invmass for all rec par
305     //   TH1F        *fInvmassLS2; //LS Invmass for all rec par
306     //   TH1F        *fInvmassLS3; //LS Invmass for all rec par
307     //   TH1F        *fInvmassLS4; //LS Invmass for all rec par
308     //   TH1F        *fInvmassLS5; //LS Invmass for all rec par
309     TH1F        *fInvmassULS1;//ULS Invmass for all rec par
310     TH1F        *fDCAMetInvmassLS1; //
311     TH1F        *fDCAMetInvmassULS1;//
312     //   TH1F        *fInvmassULS2;//ULS Invmass for all rec par
313     //   TH1F        *fInvmassULS3;//ULS Invmass for all rec par
314     //   TH1F        *fInvmassULS4;//ULS Invmass for all rec par
315     //   TH1F        *fInvmassULS5;//ULS Invmass for all rec par
316     TH1F        *fcentrality;//
317     TH1F        *fElecPhi;//
318     TH1F        *fElecPhiTPChalf;//
319     TH2F        *fElecPhiPt;//
320     //    TH1F        *fElecPhiTPC;//
321     //    TH1F        *fElecPhiTPCEovP;//
322     TH1F        *fHadronPhi;//
323     TH1F        *fHadronPhiTPChalf;//
324     TH2F        *fHadronPhiPt;//
325     /*    TH1F        *fTrackHFEcuts;//
326           TH1F        *fTrakPhiSPD1;//
327           TH1F        *fTrakPhiSPD2;//
328           TH1F        *fTrakPhiSPDOr;//
329           TH1F        *fTrakPhiSPDAnd;//
330           TH1F        *fTrackHFEcutsITS;//
331      */
332     TH1F        *fNoMixedEvents;//
333     TH2F        *fMixStat; //no of events in pool vs multplicity
334     TH2F        *fMixStat1; //no of events in pool vs zvtx 
335     TH2F        *fMixedIncElecDphi; //Mixed event - inclusive elec DPhi
336     TH2F        *fMixedIncElecDphi1; //Mixed event - inclusive elec DPhi
337     TH2F        *fMixedIncElecDphi2; //Mixed event - inclusive elec DPhi
338     TH2F        *fMixedIncElecDphi3; //Mixed event - inclusive elec DPhi
339     TH2F        *fMixedIncElecDphi4; //Mixed event - inclusive elec DPhi
340     TH2F        *fMixedPhotElecDphi; //
341     TH2F        *fMixedPhotElecDphi1; //
342     TH2F        *fMixedPhotElecDphi2; //
343     TH2F        *fMixedPhotElecDphi3; //
344     TH2F        *fMixedPhotElecDphi4; //
345     TH2F        *fMixedSemiIncElecDphi; //
346     TH2F        *fMixedSemiIncElecDphi1; //
347     TH2F        *fMixedSemiIncElecDphi2; //
348     TH2F        *fMixedSemiIncElecDphi3; //
349     TH2F        *fMixedSemiIncElecDphi4; //
350     TH2F        *fMixedDphiULSMassLow;//
351     TH2F        *fMixedDphiULSMassLow1;//
352     TH2F        *fMixedDphiULSMassLow2;//
353     TH2F        *fMixedDphiULSMassLow3;//
354     TH2F        *fMixedDphiULSMassLow4;//
355     TH2F        *fMixedDphiLSMassLow;//
356     TH2F        *fMixedDphiLSMassLow1;//
357     TH2F        *fMixedDphiLSMassLow2;//
358     TH2F        *fMixedDphiLSMassLow3;//
359     TH2F        *fMixedDphiLSMassLow4;//
360
361     //Elienos method for inv mass
362     TH2F        *fDCAMetMixedPhotElecDphi; //
363     TH2F        *fDCAMetMixedPhotElecDphi1; //
364     TH2F        *fDCAMetMixedPhotElecDphi2; //
365     TH2F        *fDCAMetMixedPhotElecDphi3; //
366     TH2F        *fDCAMetMixedPhotElecDphi4; //
367     TH2F        *fDCAMetMixedDphiULSMassLow;//
368     TH2F        *fDCAMetMixedDphiULSMassLow1;//
369     TH2F        *fDCAMetMixedDphiULSMassLow2;//
370     TH2F        *fDCAMetMixedDphiULSMassLow3;//
371     TH2F        *fDCAMetMixedDphiULSMassLow4;//
372     TH2F        *fDCAMetMixedDphiLSMassLow;//
373     TH2F        *fDCAMetMixedDphiLSMassLow1;//
374     TH2F        *fDCAMetMixedDphiLSMassLow2;//
375     TH2F        *fDCAMetMixedDphiLSMassLow3;//
376     TH2F        *fDCAMetMixedDphiLSMassLow4;//
377
378     TH1F        *fHadronPt;//
379     TH1F       *fCentralityPass; // ! QA histogram of events that pass centrality cut
380     TH1F       *fCentralityNoPass; //! QA histogram of events that do not pass centrality cut
381
382     TH2F       *fHadronDphi;    //Hadron - had DPhi
383     TH2F       *fHadronDphi1;   //Hadron - had DPhi
384     TH2F       *fHadronDphi2;   //Hadron - had DPhi
385     TH2F       *fHadronDphi3;   //Hadron - had DPhi
386     TH2F       *fHadronDphi4;   //Hadron - had DPhi
387     TH1F       *fPiPt; //TPC nsig < 3.5 pt
388
389     TH2F       *fHadronDphiNoSS;    //Hadron - had DPhi
390     TH2F       *fHadronDphiNoSS1;   //Hadron - had DPhi
391     TH2F       *fHadronDphiNoSS2;   //Hadron - had DPhi
392     TH2F       *fHadronDphiNoSS3;   //Hadron - had DPhi
393     TH2F       *fHadronDphiNoSS4;   //Hadron - had DPhi
394     TH1F       *fPiPtNoSS; //TPC nsig < 3.5 pt
395     TH2F       *fEovPWoSS;//
396     TH2F       *fEovPWSS;//
397     TH2F       *fEovPHadWoSS;//
398     TH2F       *fEovPHadWSS;//
399
400     //Deta < 0.8
401     TH2F       *fHadronDphiEta1;   //Hadron - had DPhi
402     TH2F       *fHadronDphiEta11;     //Hadron - had DPhi
403     TH2F       *fHadronDphiEta12;     //Hadron - had DPhi
404     TH2F       *fHadronDphiEta13;     //Hadron - had DPhi
405     TH2F       *fHadronDphiEta14;     //Hadron - had DPhi
406     TH2F       *fHadronDphiNoSSEta1;   //Hadron - had DPhi NoSS
407     TH2F       *fHadronDphiNoSSEta11;     //Hadron - had DPhi NoSS
408     TH2F       *fHadronDphiNoSSEta12;     //Hadron - had DPhi NoSS
409     TH2F       *fHadronDphiNoSSEta13;     //Hadron - had DPhi NoSS
410     TH2F       *fHadronDphiNoSSEta14;     //Hadron - had DPhi NoSS
411
412     //Deta > 0.8
413     TH2F       *fHadronDphiEta2;   //Hadron - had DPhi
414     TH2F       *fHadronDphiEta21;     //Hadron - had DPhi
415     TH2F       *fHadronDphiEta22;     //Hadron - had DPhi
416     TH2F       *fHadronDphiEta23;     //Hadron - had DPhi
417     TH2F       *fHadronDphiEta24;     //Hadron - had DPhi
418     TH2F       *fHadronDphiNoSSEta2;   //Hadron - had DPhi NoSS
419     TH2F       *fHadronDphiNoSSEta21;     //Hadron - had DPhi NoSS
420     TH2F       *fHadronDphiNoSSEta22;     //Hadron - had DPhi NoSS
421     TH2F       *fHadronDphiNoSSEta23;     //Hadron - had DPhi NoSS
422     TH2F       *fHadronDphiNoSSEta24;     //Hadron - had DPhi NoSS
423
424
425     //THnSparse  *fSparseElectron;//!Electron info 
426     //Double_t *fvalueElectron;//!Electron info 
427
428     AliAnalysisTaskElecHadronCorrel(const AliAnalysisTaskElecHadronCorrel&); // not implemented
429     AliAnalysisTaskElecHadronCorrel& operator=(const AliAnalysisTaskElecHadronCorrel&); // not implemented
430
431     ClassDef(AliAnalysisTaskElecHadronCorrel, 2); //!example of analysis
432 };
433
434 class AliehDPhiBasicParticle : public AliVParticle
435 {
436   public:
437     AliehDPhiBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t charge)
438       : fEta(eta), fPhi(phi), fpT(pt), fCharge(charge)
439     {
440     }
441     ~AliehDPhiBasicParticle() {}
442
443     // kinematics
444     virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }
445     virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }
446     virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }
447     virtual Double_t Pt() const { return fpT; }
448     virtual Double_t P() const { AliFatal("Not implemented"); return 0; }
449     virtual Bool_t   PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
450
451     virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
452     virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
453     virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
454     virtual Bool_t   XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
455
456     virtual Double_t OneOverPt()  const { AliFatal("Not implemented"); return 0; }
457     virtual Double_t Phi()        const { return fPhi; }
458     virtual Double_t Theta()      const { AliFatal("Not implemented"); return 0; }
459
460
461     virtual Double_t E()          const { AliFatal("Not implemented"); return 0; }
462     virtual Double_t M()          const { AliFatal("Not implemented"); return 0; }
463
464     virtual Double_t Eta()        const { return fEta; }
465     virtual Double_t Y()          const { AliFatal("Not implemented"); return 0; }
466
467     virtual Short_t Charge()      const { return fCharge; }
468     virtual Int_t   GetLabel()    const { AliFatal("Not implemented"); return 0; }
469     // PID
470     virtual Int_t   PdgCode()     const { AliFatal("Not implemented"); return 0; }
471     virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
472
473   private:
474     Float_t fEta;      // eta
475     Float_t fPhi;      // phi
476     Float_t fpT;       // pT
477     Short_t fCharge;   // charge
478
479     ClassDef( AliehDPhiBasicParticle, 1); // class which contains only quantities requires for this analysis to reduce memory consumption for event mixing
480 };
481 #endif
482
483