394010255348348d3ad77f57dba3efb150f330e4
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskFlowTPCEMCalEP.h
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *               
3  *                                                                        *               
4  * Author: The ALICE Off-line Project.                                    *               
5  * Contributors are mentioned in the code where appropriate.              *               
6  *                                                                        *               
7  * Permission to use, copy, modify and distribute this software and its   *               
8  * documentation strictly for non-commercial purposes is hereby granted   *               
9  * without fee, provided that the above copyright notice appears in all   *               
10  * copies and that both the copyright notice and this permission notice   *               
11  * appear in the supporting documentation. The authors make no claims     *               
12  * about the suitability of this software for any purpose. It is          *               
13  * provided "as is" without express or implied warranty.                  *               
14  **************************************************************************/
15
16 #ifndef ALIANALYSISTASKFlowTPCEMCalEP_H
17 #define ALIANALYSISTASKFlowTPCEMCalEP_H
18
19 class THnSparse;
20 class TH2F;
21 class TLorentzVector;
22
23 class AliEMCALTrack;
24 class AliMagF;
25 class AliESDEvent;
26 class AliAODEvent;
27 class AliEMCALGeometry;
28 class AliEMCALRecoUtils;
29 class AliAnalysisFilter;
30 class AliESDtrackCuts;
31 class AliESDtrack;
32 class AliHFEcontainer;
33 class AliHFEcuts;
34 class AliHFEpid;
35 class AliHFEpidQAmanager;
36 class AliCFManager;
37
38 #include "AliAnalysisTaskSE.h"
39
40 class AliAnalysisTaskFlowTPCEMCalEP : public AliAnalysisTaskSE {
41  public:
42   AliAnalysisTaskFlowTPCEMCalEP();
43   AliAnalysisTaskFlowTPCEMCalEP(const char *name);
44   virtual ~AliAnalysisTaskFlowTPCEMCalEP();
45   
46   virtual void   UserCreateOutputObjects();
47   virtual void   UserExec(Option_t *option);
48   virtual void   Terminate(Option_t *);
49   
50   void SetHFECuts(AliHFEcuts * const cuts) { fCuts = cuts; };
51   void SetOpeningAngleCut (Double_t openingAngle) {fOpeningAngleCut = openingAngle;};
52   void SetInvariantMassCut (Double_t invmass) {fInvmassCut = invmass;};
53   AliHFEpid *GetPID() const { return fPID; }
54   void SetRejectKinkMother(Bool_t rejectKinkMother = kFALSE) { fRejectKinkMother = rejectKinkMother; };
55   void SelectPhotonicElectron(Int_t iTracks,AliESDtrack *track,Bool_t &fFlagPhotonicElec, Bool_t &fFlagPhotonicElecBCG);
56   
57   Double_t GetCos2DeltaPhi(Double_t phiA,Double_t phiB)         const;
58   Double_t GetDeltaPhi(Double_t phiA,Double_t phiB)     const;
59   Double_t GetPi0weight(Double_t mcPi0pT) const;
60   Double_t GetEtaweight(Double_t mcEtapT) const;
61   Double_t GetDweight(Int_t whichD, Double_t mcDpT) const;
62   
63  private:
64   
65   Bool_t ProcessCutStep(Int_t cutStep, AliVParticle *track);
66   
67   AliESDEvent           *fESD;                  //!ESD object
68   AliMCEvent            *fMC;                   //!MC object
69     
70   TList                 *fOutputList;           //! output list
71   
72   AliESDtrackCuts       *fTrackCuts;            //! ESD track cuts
73   AliHFEcuts            *fCuts;                 //! Cut Collection
74   Bool_t                fIdentifiedAsOutInz;    //Out Of Range in z
75   Bool_t                fPassTheEventCut;       //Pass The Event Cut
76   Bool_t                fRejectKinkMother;      //Reject Kink Mother
77   Bool_t                fIsMC;
78   Double_t              fVz;                    //z position of the primary vertex
79   AliCFManager          *fCFM;                  //! Correction Framework Manager
80   AliHFEpid             *fPID;                  //! PID
81   AliHFEpidQAmanager    *fPIDqa;                //! PID QA manager
82   Double_t              fOpeningAngleCut;       //openingAngle cut value
83   Double_t              fInvmassCut;            //invariant mass cut value
84   
85   TH1F                  *fNoEvents;             //! no of events
86   TH1F                  *fTrkpt;                //! track pt
87   TH2F                  *fTrkEovPBef;           //! track E/p before HFE pid
88   TH2F                  *fTrkEovPAft;           //! track E/p after HFE pid
89   TH2F                  *fdEdxBef;              //! track dEdx vs p before HFE pid
90   TH2F                  *fdEdxAft;              //! track dEdx vs p after HFE pid
91   TH1F                  *fInvmassLS;            //! Inv mass of LS (e,e)
92   TH1F                  *fInvmassULS;           //! Inv mass of ULS (e,e)
93   TH1F                  *fOpeningAngleLS;       //! opening angle for LS pairs
94   TH1F                  *fOpeningAngleULS;      //! opening angle for ULS pairs
95   TH1F                  *fPhotoElecPt;          //! photonic elec pt 
96   TH1F                  *fSemiInclElecPt;       //! Semi inclusive ele pt
97   THnSparse             *fMCphotoElecPt;        //! pt distribution (MC)
98   
99   TH1F                  *fTrackPtBefTrkCuts;    //! Track pt before track cuts  
100   TH1F                  *fTrackPtAftTrkCuts;    //! Track pt after track cuts
101   TH2F                  *fTPCnsigma;            //! TPC n sigma vs p    
102   
103   TH1F                  *fCent;                 //! centrality
104   TH2F                  *fevPlaneV0A;           //! V0A event plane distribution
105   TH2F                  *fevPlaneV0C;           //! V0C event plane distribution
106   TH2F                  *fevPlaneTPC;           //! TPC event plane distribution
107   TH2F                  *fTPCsubEPres;          //! TPC event plane resolution
108   THnSparse             *fEPres;                //! event plane resolution
109   THnSparse             *fCorr;                 //! correlations
110   THnSparse             *feTPCV2;               //! inclusive eletron v2 (only TPC PID)
111   THnSparse             *feV2;                  //! inclusive eletron v2 (TPC + EMCAL PID)
112   THnSparse             *fphoteV2;              //! photonic electron v2 (TPC + EMCAL PID)
113   THnSparse             *fChargPartV2;          //! charged particle v2
114     
115   TH2F                  *fGammaWeight;          //! gamma weight
116   TH2F                  *fPi0Weight;            //! pi0 weight
117   TH2F                  *fEtaWeight;            //! eta weight
118   TH2F                  *fD0Weight;             //! D0 weight
119   TH2F                  *fDplusWeight;          //! D+ weight
120   TH2F                  *fDminusWeight;         //! D- weight
121   
122   TH1F                  *fDe[6];
123   TH1F                  *fD0e[6];
124   TH1F                  *fDpluse[6];
125   TH1F                  *fDminuse[6];
126   
127   TH2F                  *fD0_e;
128   
129   TH1F                  *fTot_pi0e;             //! inclusive electron
130   TH1F                  *fPhot_pi0e;            //! ULS pair 
131   TH1F                  *fPhotBCG_pi0e;         //! LS pair
132   TH1F                  *fTot_etae;             //! inclusive electron
133   TH1F                  *fPhot_etae;            //! ULS pair 
134   TH1F                  *fPhotBCG_etae;         //! LS pair
135
136   THnSparse             *fCocktail;             //! for cocktail
137
138   AliAnalysisTaskFlowTPCEMCalEP(const AliAnalysisTaskFlowTPCEMCalEP&); // not implemented
139   AliAnalysisTaskFlowTPCEMCalEP& operator=(const AliAnalysisTaskFlowTPCEMCalEP&); // not implemented
140   
141   ClassDef(AliAnalysisTaskFlowTPCEMCalEP, 1); //!example of analysis
142 };
143
144 #endif
145
146