63f127fc8e0c0b14d4062f77d8e4d89d58fbe1c8
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / FourierDecomposition / AliMuonEffMC.h
1 // MUON tracking efficiency + (mother hadron) : (daughter muon) kinematic relation 
2 // Author : Saehanseul Oh
3
4
5 #ifndef AliMuonEffMC_h
6 #define AliMuonEffMC_h
7
8 class TH1F;
9 class TH1D;
10 class TH2F;
11 class TH3F;
12 class THn;
13 class TList;
14 class TObjArray;
15 class TObject;
16
17 class AliAODEvent;
18 class AliESDEvent;
19 class AliESDtrackCuts;
20 class AliEvtPoolManager;
21 class AliMCEvent;
22 class AliESDMuonTrack;
23 class AliAODTrack;
24 #include "AliAnalysisTaskSE.h"
25
26
27 class AliMuonEffMC : public AliAnalysisTaskSE {
28  public:
29   AliMuonEffMC();
30   AliMuonEffMC(const char *name);
31   virtual ~AliMuonEffMC();
32  
33   void         UserCreateOutputObjects();
34   void         UserExec(Option_t *option);
35   void         Terminate(Option_t *);
36
37   void         SetMcAna(Bool_t IsMc)               { fIsMc = IsMc;               }
38   void         SetMDProcess(Bool_t MDProcess)      { fMDProcess = MDProcess;     }
39   void         SetCentEstimator(TString Cent)      { fCentralityEstimator = Cent;}
40   void         SetNEtaBins(Int_t NEtaBins)         { fNEtaBins = NEtaBins;       }
41   void         SetNpTBins(Int_t NpTBins)           { fNpTBins = NpTBins;         }
42   void         SetNCentBins(Int_t NCentBins)       { fNCentBins = NCentBins;     }
43   void         SetNZvtxBins(Int_t NZvtxBins)       { fNZvtxBins = NZvtxBins;     }
44   void         SetNPhiBins(Int_t NPhiBins)         { fNPhiBins = NPhiBins;       }
45
46  protected:
47   Bool_t       VertexOk(TObject* obj) const;
48   Bool_t       IsGoodMUONtrack(AliESDMuonTrack &track);
49   Bool_t       IsGoodMUONtrack(AliAODTrack &track);
50
51  private:
52   AliESDEvent *fESD;               //! ESD object
53   AliAODEvent *fAOD;               //! AOD object 
54   AliMCEvent  *fMC;                //! MC object
55   Double_t     fCentrality;        //! Of current event
56   Double_t     fZVertex;           //! Of current event
57   TList       *fOutputList;        //! Output list
58   TH1D        *fHEventStat;        //! statistics histo
59   TH2F        *fHEvt;              //! Cent, vtx
60
61   Bool_t       fIsMc;              //
62   Bool_t       fMDProcess;         // (mother hadron) : (daughter muon) QA 
63
64   TString      fCentralityEstimator;// 
65   Int_t        fNEtaBins;          // number of eta bins
66   Int_t        fNpTBins;           // number of p_T bins
67   Int_t        fNCentBins;         // number of centrality bins
68   Int_t        fNZvtxBins;         // number of Z-vertex bins
69   Int_t        fNPhiBins;          // number of phi bins
70
71   THn         *fHMuonParGen;       //! truth muon track eta, p_T, Centrality, Z-vertex, phi 
72   THn         *fHMuonDetGen;       //! detector level muon track generated eta, p_T, Centrality, Z-vertex, phi 
73   THn         *fHMuonDetRec;       //! reconstructed muon track eta, p_T, Centrality, Z-vertex, phi 
74   THn         *fHEtcDetRec;        //! particle reconstructed at MUON detector, but not muon
75
76   TH2F        *fHMuMotherGenPt[4]; //! particle-level muon p_T vs. mother p_T
77   TH2F        *fHMuMotherRecPt[4]; //! detector-level muon p_T vs. mother p_T
78   TH2F        *fHMuMotherGenPhi[4];//! particle-level muon phi vs. mother phi
79   TH2F        *fHMuMotherRecPhi[4];//! detector-level muon phi vs. mother phi
80   TH2F        *fHMuMotherGenEta[4];//! particle-level muon eta vs. mother eta
81   TH2F        *fHMuMotherRecEta[4];//! detector-level muon eta vs. mother eta
82   TH1F        *fHMuDCA[4];         //! muon DCA
83
84   AliMuonEffMC(const AliMuonEffMC&);            // not implemented
85   AliMuonEffMC &operator=(const AliMuonEffMC&); // not implemented
86
87   ClassDef(AliMuonEffMC, 2);
88 };
89
90 #endif