ROOT logo
// MUON tracking efficiency + (mother hadron):(daughter muon) kinematic relation + x_F analysis
// Author : Saehanseul Oh

#ifndef AliMuonEffMC_h
#define AliMuonEffMC_h

class TH1F;
class TH1D;
class TH2F;
class TH3F;
class THn;
class TList;
class TObjArray;
class TObject;
class AliStack;
class AliAODEvent;
class AliESDEvent;
class AliESDtrackCuts;
class AliEvtPoolManager;
class AliMCEvent;
class AliESDMuonTrack;
class AliAODTrack;
class AliMCParticle;

#include "AliAnalysisTaskSE.h"

class AliMuonEffMC : public AliAnalysisTaskSE {
 public:
  AliMuonEffMC();
  AliMuonEffMC(const char *name);
  virtual ~AliMuonEffMC();
 
  void         UserCreateOutputObjects();
  void         UserExec(Option_t *option);
  void         Terminate(Option_t *);
  virtual Bool_t    Notify();
 
  void         SetMcAna(Bool_t IsMc)           { fIsMc = IsMc;               }
  void         SetIsPYTHIA(Bool_t IsPythia)    { fIsPythia = IsPythia;       }
  void         SetMDProcess(Bool_t kMDProcess) { fMDProcess = kMDProcess;    }
  void         SetPlotMode(Int_t kPlotMode)    { fPlotMode = kPlotMode;      }
  void         SetCentEstimator(TString Cent)  { fCentralityEstimator = Cent;}
  void         SetNEtaBins(Int_t NEtaBins)     { fNEtaBins = NEtaBins;       }
  void         SetNpTBins(Int_t NpTBins)       { fNpTBins = NpTBins;         }
  void         SetNCentBins(Int_t NCentBins)   { fNCentBins = NCentBins;     }
  void         SetNZvtxBins(Int_t NZvtxBins)   { fNZvtxBins = NZvtxBins;     }
  void         SetNPhiBins(Int_t NPhiBins)     { fNPhiBins = NPhiBins;       }

  void         MDProcess(Int_t isprimary, Int_t cutNum, Double_t trackpt, Double_t trackphi, Double_t tracketa, Double_t motherpt, Double_t motherphi, Double_t mothereta);
  Double_t     deltaphi(Double_t phi);
  Int_t        GetFirstPrimaryMother(Int_t muonlabel);
  Int_t        GetFirstPPMother(Int_t muonlabel);
  Double_t     GetSpecies(Int_t PdgCode);

 protected:
  Bool_t       VertexOk(TObject* obj) const;
  Int_t        GetMUONCutType(AliESDMuonTrack &track);
  Int_t        GetMUONCutType(AliAODTrack &track);
  Double_t     GetMuonTrackType(AliMCParticle &track);

 private:
  AliESDEvent *fESD;               //! ESD object
  AliAODEvent *fAOD;               //! AOD object
  AliMCEvent  *fMC;                //! MC object
  AliStack    *fStack;             //! MC stack
  Double_t     fCentrality;        //! Of current event
  Double_t     fZVertex;           //! Of current event
  TList       *fOutputList;        //! Output list
  TH1D        *fHEventStat;        //! statistics histo
  TH1F        *fHXsec;             //! sum of cross section value for hard bins
  TH1F        *fHTrials;           //! N_trial
  TH2F        *fHEvt;              //! Cent, vtx

  Bool_t       fIsMc;              //
  Bool_t       fIsPythia;          //
  Bool_t       fMDProcess;         // (mother hadron) : (daughter muon) QA
  Int_t        fPlotMode;          //

  TString      fCentralityEstimator;//
  Int_t        fNEtaBins;          // number of eta bins
  Int_t        fNpTBins;           // number of p_T bins
  Int_t        fNCentBins;         // number of centrality bins
  Int_t        fNZvtxBins;         // number of Z-vertex bins
  Int_t        fNPhiBins;          // number of phi bins

  THn         *fHFPM;              //! first primary mother of all charged particles with centrality and z-vertex bin
  THn         *fHPP;               //! physical primary mothers with centrality and z-vertex bin
  THn         *fHDetRecMu[2];      //! reconstructed MUON track, detector level with centrality and z-vertex bin
  THn         *fHDetRecMuFPM[2];   //! reconstructed MUON track, detector level with FPM species
  THn         *fHDetRecMuPP[2];    //! reconstructed MUON track, detector level with PP species
  THn         *fHMuFPM[2];         //! reconstructed MUON track's first primary mother
  THn         *fHMuPP[2];          //! reconstructed MUON track's first physical primary mother

  TH2F        *fHMuMotherRecPt[5][3]; //! detector-level muon p_T vs. mother p_T
  TH2F        *fHMuMotherRecPhi[5][3];//! detector-level muon phi vs. mother phi
  TH2F        *fHMuMotherRecEta[5][3];//! detector-level muon eta vs. mother eta
  TH1F        *fHMuMohterPtDifRec[5][3][3]; //!
  TH1F        *fHMuMohterPhiDifRec[5][3][3]; //!
  TH1F        *fHMuMohterEtaDifRec[5][3][3]; //!

  TH2F        *fHZvRv[3];         //! muon decay Vertex Z-R for primary muon 
  TH2F        *fHXvYv[3];         //! muon decay Vertex x-y for primary muon 

  AliMuonEffMC(const AliMuonEffMC&);            // not implemented
  AliMuonEffMC &operator=(const AliMuonEffMC&); // not implemented

  ClassDef(AliMuonEffMC, 14);
};

#endif
 AliMuonEffMC.h:1
 AliMuonEffMC.h:2
 AliMuonEffMC.h:3
 AliMuonEffMC.h:4
 AliMuonEffMC.h:5
 AliMuonEffMC.h:6
 AliMuonEffMC.h:7
 AliMuonEffMC.h:8
 AliMuonEffMC.h:9
 AliMuonEffMC.h:10
 AliMuonEffMC.h:11
 AliMuonEffMC.h:12
 AliMuonEffMC.h:13
 AliMuonEffMC.h:14
 AliMuonEffMC.h:15
 AliMuonEffMC.h:16
 AliMuonEffMC.h:17
 AliMuonEffMC.h:18
 AliMuonEffMC.h:19
 AliMuonEffMC.h:20
 AliMuonEffMC.h:21
 AliMuonEffMC.h:22
 AliMuonEffMC.h:23
 AliMuonEffMC.h:24
 AliMuonEffMC.h:25
 AliMuonEffMC.h:26
 AliMuonEffMC.h:27
 AliMuonEffMC.h:28
 AliMuonEffMC.h:29
 AliMuonEffMC.h:30
 AliMuonEffMC.h:31
 AliMuonEffMC.h:32
 AliMuonEffMC.h:33
 AliMuonEffMC.h:34
 AliMuonEffMC.h:35
 AliMuonEffMC.h:36
 AliMuonEffMC.h:37
 AliMuonEffMC.h:38
 AliMuonEffMC.h:39
 AliMuonEffMC.h:40
 AliMuonEffMC.h:41
 AliMuonEffMC.h:42
 AliMuonEffMC.h:43
 AliMuonEffMC.h:44
 AliMuonEffMC.h:45
 AliMuonEffMC.h:46
 AliMuonEffMC.h:47
 AliMuonEffMC.h:48
 AliMuonEffMC.h:49
 AliMuonEffMC.h:50
 AliMuonEffMC.h:51
 AliMuonEffMC.h:52
 AliMuonEffMC.h:53
 AliMuonEffMC.h:54
 AliMuonEffMC.h:55
 AliMuonEffMC.h:56
 AliMuonEffMC.h:57
 AliMuonEffMC.h:58
 AliMuonEffMC.h:59
 AliMuonEffMC.h:60
 AliMuonEffMC.h:61
 AliMuonEffMC.h:62
 AliMuonEffMC.h:63
 AliMuonEffMC.h:64
 AliMuonEffMC.h:65
 AliMuonEffMC.h:66
 AliMuonEffMC.h:67
 AliMuonEffMC.h:68
 AliMuonEffMC.h:69
 AliMuonEffMC.h:70
 AliMuonEffMC.h:71
 AliMuonEffMC.h:72
 AliMuonEffMC.h:73
 AliMuonEffMC.h:74
 AliMuonEffMC.h:75
 AliMuonEffMC.h:76
 AliMuonEffMC.h:77
 AliMuonEffMC.h:78
 AliMuonEffMC.h:79
 AliMuonEffMC.h:80
 AliMuonEffMC.h:81
 AliMuonEffMC.h:82
 AliMuonEffMC.h:83
 AliMuonEffMC.h:84
 AliMuonEffMC.h:85
 AliMuonEffMC.h:86
 AliMuonEffMC.h:87
 AliMuonEffMC.h:88
 AliMuonEffMC.h:89
 AliMuonEffMC.h:90
 AliMuonEffMC.h:91
 AliMuonEffMC.h:92
 AliMuonEffMC.h:93
 AliMuonEffMC.h:94
 AliMuonEffMC.h:95
 AliMuonEffMC.h:96
 AliMuonEffMC.h:97
 AliMuonEffMC.h:98
 AliMuonEffMC.h:99
 AliMuonEffMC.h:100
 AliMuonEffMC.h:101
 AliMuonEffMC.h:102
 AliMuonEffMC.h:103
 AliMuonEffMC.h:104
 AliMuonEffMC.h:105
 AliMuonEffMC.h:106
 AliMuonEffMC.h:107
 AliMuonEffMC.h:108
 AliMuonEffMC.h:109
 AliMuonEffMC.h:110