ee52235a967551a10f97952a78f9517e63b4fe69
[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 #include "AliAnalysisTaskSE.h"
24
25
26 class AliMuonEffMC : public AliAnalysisTaskSE {
27  public:
28   AliMuonEffMC();
29   AliMuonEffMC(const char *name);
30   virtual ~AliMuonEffMC();
31  
32   void         UserCreateOutputObjects();
33   void         UserExec(Option_t *option);
34   void         Terminate(Option_t *);
35
36   void         SetMcAna(Bool_t IsMc)               { fIsMc = IsMc;               }
37   void         SetMDProcess(Bool_t MDProcess)      { fMDProcess = MDProcess;     }
38   void         SetCentEstimator(TString Cent)      { fCentralityEstimator = Cent;}
39   void         SetNEtaBins(Int_t NEtaBins)         { fNEtaBins = NEtaBins;       }
40   void         SetNpTBins(Int_t NpTBins)           { fNpTBins = NpTBins;         }
41   void         SetNCentBins(Int_t NCentBins)       { fNCentBins = NCentBins;     }
42   void         SetNZvtxBins(Int_t NZvtxBins)       { fNZvtxBins = NZvtxBins;     }
43   void         SetNPhiBins(Int_t NPhiBins)         { fNPhiBins = NPhiBins;       }
44
45  protected:
46   Bool_t       VertexOk(TObject* obj) const;
47   Bool_t       IsGoodMUONtrack(AliESDMuonTrack &track);
48
49  private:
50   AliESDEvent *fESD;               //! ESD object
51   AliAODEvent *fAOD;               //! AOD object 
52   AliMCEvent  *fMC;                //! MC object
53   Double_t     fCentrality;        //! Of current event
54   Double_t     fZVertex;           //! Of current event
55   TList       *fOutputList;        //! Output list
56   TH1D        *fHEventStat;        //! statistics histo
57   TH2F        *fHEvt;              //! Cent, vtx
58
59   Bool_t       fIsMc;              //! 
60   Bool_t       fMDProcess;         //! (mother hadron) : (daughter muon) QA 
61
62   TString      fCentralityEstimator;//! 
63   Int_t        fNEtaBins;          //! number of eta bins
64   Int_t        fNpTBins;           //! number of p_T bins
65   Int_t        fNCentBins;         //! number of centrality bins
66   Int_t        fNZvtxBins;         //! number of Z-vertex bins
67   Int_t        fNPhiBins;          //! number of phi bins
68
69   THn         *fHMuonParGen;       //! truth muon track eta, p_T, Centrality, Z-vertex, phi 
70   THn         *fHMuonDetGen;       //! detector level muon track generated eta, p_T, Centrality, Z-vertex, phi 
71   THn         *fHMuonDetRec;       //! reconstructed muon track eta, p_T, Centrality, Z-vertex, phi 
72   THn         *fHEtcDetRec;        //! particle reconstructed at MUON detector, but not muon
73
74   TH2F        *fHMuMotherGenPt[4]; //! particle-level muon p_T vs. mother p_T
75   TH2F        *fHMuMotherRecPt[4]; //! detector-level muon p_T vs. mother p_T
76   TH2F        *fHMuMotherGenPhi[4];//! particle-level muon phi vs. mother phi
77   TH2F        *fHMuMotherRecPhi[4];//! detector-level muon phi vs. mother phi
78   TH2F        *fHMuMotherGenEta[4];//! particle-level muon eta vs. mother eta
79   TH2F        *fHMuMotherRecEta[4];//! detector-level muon eta vs. mother eta
80   TH1F        *fHMuDCA[4];         //! muon DCA
81
82   AliMuonEffMC(const AliMuonEffMC&);            // not implemented
83   AliMuonEffMC &operator=(const AliMuonEffMC&); // not implemented
84
85   ClassDef(AliMuonEffMC, 1);
86 };
87
88 #endif