ROOT logo
#ifndef ALIANALYSISTASKSDMGAMMAMC_H
#define ALIANALYSISTASKSDMGAMMAMC_H

class TF1;
class TH1F;
class TH2F;
class TH3F;
class TH1D;
class TH2D;
class TH3D;
class TNtuple;
class TList;
class AliESDEvent;
class AliAODEvent;
class AliESDtrackCuts;
class AliESDCaloCluster;
class AliAODCaloCluster;
class AliMCEvent;
class AliMCParticle;
class AliEMCALGeometry;

#ifndef ALIANALYSISTASKSE_H
#include "AliAnalysisTaskSE.h"
#endif

class AliAnalysisTaskSDMGammaMC : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskSDMGammaMC();
  AliAnalysisTaskSDMGammaMC(const char *name);
  virtual ~AliAnalysisTaskSDMGammaMC();
    
  virtual void     UserCreateOutputObjects();
  virtual void     UserExec(Option_t *option);
  virtual void     Terminate(Option_t *);
    
  void         SetMcMode(Bool_t b) { fMcMode = b; }
  void         SetRecalScheme(Int_t kRecalibrator) { fRecalibrator = kRecalibrator; }
  void         SetFidPhiMinMax(Double_t kPhimin, Double_t kPhimax){ fPhimin = kPhimin; fPhimax = kPhimax; }
  void         SetFidEtaMinMax(Double_t kEtamin, Double_t kEtamax){ fEtamin = kEtamin; fEtamax = kEtamax; }
  
 private:
  static const int zvtx_bins = 16;
  static const int mult_bins = 25;
  static const unsigned int poolDepth = 25;
  
  Int_t GetMultBin(Int_t mult);
  Int_t GetZvtxBin(Double_t vertZ);
  Int_t isGoodEsdCluster(AliESDCaloCluster* esdclust);
  Int_t isGoodAodCluster(AliAODCaloCluster* aodclust);
  Double_t getDeltaPhi(TLorentzVector p1, TLorentzVector p2);
  Double_t getDeltaEta(TLorentzVector p1, TLorentzVector p2);
  Double_t PrivateEnergyRecal(Double_t energy, Int_t iCalib);

  TList           *fOutput;        //! Output list
  Bool_t           fMcMode;                 // monte carlo mode
  Int_t            fRecalibrator;           // custom recalibrator? 
  Double_t         fPhimin;           // Cuts. 
  Double_t         fPhimax;           // Cuts. 
  Double_t         fEtamin;           // Cuts. 
  Double_t         fEtamax;           // Cuts. 
  AliESDtrackCuts *fTrackCuts;     // Track cuts
  AliESDEvent     *fEsdEv;                  //!pointer to input esd event
  AliAODEvent     *fAodEv;                  //!pointer to input aod event
  TH1F            *h1_nClusters;  //!  # of clusters/evt
  TH1F            *h1_zvtx;  //!  # of clusters/evt
  TH1F            *h1_trigger;  //!  # of clusters/evt
  TH1F            *h1_E;        //!  energy spectrum
  TH1F            *h1_Phi;        //!  Pt spectrum

  TH2F            *h2_PiMotherID; //! first bin is primaries, second is non-primaries
  TH2F            *h2_GaMotherID; //! first bin is primaries, second is non-primaries
  TH3F            *h3_gE_RecTruth; //! E_in/E_rec vs E_rec (for 4 categories)
  TH3F            *h3_gE_RecTruth_ncellscut; //! E_in/E_rec vs E_rec (for 4 categories)
  
  TH1F            *h1_Pi0TruthPt;        //!  Pt spectrum from MC! 
  TH1F            *h1_PriPi0TruthPt;        //!  Pt spectrum from MC! 
  TH1F            *h1_Pi0TruthPtEmcal;        //!  Pt spectrum from MC! 
  TH1F            *h1_PriPi0TruthPtEmcal;        //!  Pt spectrum from MC! 

  TH2F            *h2_Pi0TruthPhiEta;    //!  etaphi spectrum from MC! 
  TH2F            *h2_PriPi0TruthPhiEta;    //!  etaphi spectrum from MC! 
  TH2F            *h2_Pi0TruthPhiEtaEmcal;    //!  etaphi spectrum from MC! 
  TH2F            *h2_PriPi0TruthPhiEtaEmcal;    //!  etaphi spectrum from MC! 

  TH1F            *h1_TruthPhotonsEmcal;        //!  Pt spectrum from MC! 
  TH2F            *h2_TruthPhotonsPhiEta;        //!  Pt spectrum from MC! 
  TH1F            *h1_PhotonsEmcal;        //!  Pt spectrum from MC! 
  TH1F            *h1_PhotonsNCellsCut;        //!  Pt spectrum from MC! 
  TH1F            *h1_PhotonsTrackMatchCut;        //!  Pt spectrum from MC! 
  TH1F            *h1_PhotonsAllCut;        //!  Pt spectrum from MC! 
  TH2F            *h2_PhotonsPhiEtaIsEmcal;        //!  Pt spectrum from MC! 

  TH1F            *h1_dR_RealMC;        //!  Pt spectrum from MC! 

  TH1F            *h1_Eta;       //!  pseudorapidity spectrum
  TH1F            *h1_Chi2;       //!  pseudorapidity spectrum
  TH1F            *h1_nTrkMatch;       //!  pseudorapidity spectrum
  TH1F            *h1_nCells;       //!  pseudorapidity spectrum
  TH1F            *h1_ClusterDisp;       //!  cluster dispersion
  TH2F            *h2_Ellipse;       //!  ellipse axis?
  TH2F            *h2_EtaPt;       //!  2d histogram Y - pseudorap spectrum
  TH2F            *h2_dphi_deta;       //!  2dimensional E vs mom
  TH2F            *h2_dphi_deta_mix;       //!  2dimensional E vs mom
  TH2F            *h2_DispRes;       //!  2dimensional E vs mom
  TH2F            *h2_cells_M02;       //!  

  std::vector<TLorentzVector> Photons[poolDepth][zvtx_bins][mult_bins];
  std::vector<Int_t> TriggerList;
  
  AliAnalysisTaskSDMGammaMC(const AliAnalysisTaskSDMGammaMC&); // not implemented
  AliAnalysisTaskSDMGammaMC& operator=(const AliAnalysisTaskSDMGammaMC&); // not implemented
    
  ClassDef(AliAnalysisTaskSDMGammaMC, 1); // example of analysis
};
#endif
 AliAnalysisTaskSDMGammaMC.h:1
 AliAnalysisTaskSDMGammaMC.h:2
 AliAnalysisTaskSDMGammaMC.h:3
 AliAnalysisTaskSDMGammaMC.h:4
 AliAnalysisTaskSDMGammaMC.h:5
 AliAnalysisTaskSDMGammaMC.h:6
 AliAnalysisTaskSDMGammaMC.h:7
 AliAnalysisTaskSDMGammaMC.h:8
 AliAnalysisTaskSDMGammaMC.h:9
 AliAnalysisTaskSDMGammaMC.h:10
 AliAnalysisTaskSDMGammaMC.h:11
 AliAnalysisTaskSDMGammaMC.h:12
 AliAnalysisTaskSDMGammaMC.h:13
 AliAnalysisTaskSDMGammaMC.h:14
 AliAnalysisTaskSDMGammaMC.h:15
 AliAnalysisTaskSDMGammaMC.h:16
 AliAnalysisTaskSDMGammaMC.h:17
 AliAnalysisTaskSDMGammaMC.h:18
 AliAnalysisTaskSDMGammaMC.h:19
 AliAnalysisTaskSDMGammaMC.h:20
 AliAnalysisTaskSDMGammaMC.h:21
 AliAnalysisTaskSDMGammaMC.h:22
 AliAnalysisTaskSDMGammaMC.h:23
 AliAnalysisTaskSDMGammaMC.h:24
 AliAnalysisTaskSDMGammaMC.h:25
 AliAnalysisTaskSDMGammaMC.h:26
 AliAnalysisTaskSDMGammaMC.h:27
 AliAnalysisTaskSDMGammaMC.h:28
 AliAnalysisTaskSDMGammaMC.h:29
 AliAnalysisTaskSDMGammaMC.h:30
 AliAnalysisTaskSDMGammaMC.h:31
 AliAnalysisTaskSDMGammaMC.h:32
 AliAnalysisTaskSDMGammaMC.h:33
 AliAnalysisTaskSDMGammaMC.h:34
 AliAnalysisTaskSDMGammaMC.h:35
 AliAnalysisTaskSDMGammaMC.h:36
 AliAnalysisTaskSDMGammaMC.h:37
 AliAnalysisTaskSDMGammaMC.h:38
 AliAnalysisTaskSDMGammaMC.h:39
 AliAnalysisTaskSDMGammaMC.h:40
 AliAnalysisTaskSDMGammaMC.h:41
 AliAnalysisTaskSDMGammaMC.h:42
 AliAnalysisTaskSDMGammaMC.h:43
 AliAnalysisTaskSDMGammaMC.h:44
 AliAnalysisTaskSDMGammaMC.h:45
 AliAnalysisTaskSDMGammaMC.h:46
 AliAnalysisTaskSDMGammaMC.h:47
 AliAnalysisTaskSDMGammaMC.h:48
 AliAnalysisTaskSDMGammaMC.h:49
 AliAnalysisTaskSDMGammaMC.h:50
 AliAnalysisTaskSDMGammaMC.h:51
 AliAnalysisTaskSDMGammaMC.h:52
 AliAnalysisTaskSDMGammaMC.h:53
 AliAnalysisTaskSDMGammaMC.h:54
 AliAnalysisTaskSDMGammaMC.h:55
 AliAnalysisTaskSDMGammaMC.h:56
 AliAnalysisTaskSDMGammaMC.h:57
 AliAnalysisTaskSDMGammaMC.h:58
 AliAnalysisTaskSDMGammaMC.h:59
 AliAnalysisTaskSDMGammaMC.h:60
 AliAnalysisTaskSDMGammaMC.h:61
 AliAnalysisTaskSDMGammaMC.h:62
 AliAnalysisTaskSDMGammaMC.h:63
 AliAnalysisTaskSDMGammaMC.h:64
 AliAnalysisTaskSDMGammaMC.h:65
 AliAnalysisTaskSDMGammaMC.h:66
 AliAnalysisTaskSDMGammaMC.h:67
 AliAnalysisTaskSDMGammaMC.h:68
 AliAnalysisTaskSDMGammaMC.h:69
 AliAnalysisTaskSDMGammaMC.h:70
 AliAnalysisTaskSDMGammaMC.h:71
 AliAnalysisTaskSDMGammaMC.h:72
 AliAnalysisTaskSDMGammaMC.h:73
 AliAnalysisTaskSDMGammaMC.h:74
 AliAnalysisTaskSDMGammaMC.h:75
 AliAnalysisTaskSDMGammaMC.h:76
 AliAnalysisTaskSDMGammaMC.h:77
 AliAnalysisTaskSDMGammaMC.h:78
 AliAnalysisTaskSDMGammaMC.h:79
 AliAnalysisTaskSDMGammaMC.h:80
 AliAnalysisTaskSDMGammaMC.h:81
 AliAnalysisTaskSDMGammaMC.h:82
 AliAnalysisTaskSDMGammaMC.h:83
 AliAnalysisTaskSDMGammaMC.h:84
 AliAnalysisTaskSDMGammaMC.h:85
 AliAnalysisTaskSDMGammaMC.h:86
 AliAnalysisTaskSDMGammaMC.h:87
 AliAnalysisTaskSDMGammaMC.h:88
 AliAnalysisTaskSDMGammaMC.h:89
 AliAnalysisTaskSDMGammaMC.h:90
 AliAnalysisTaskSDMGammaMC.h:91
 AliAnalysisTaskSDMGammaMC.h:92
 AliAnalysisTaskSDMGammaMC.h:93
 AliAnalysisTaskSDMGammaMC.h:94
 AliAnalysisTaskSDMGammaMC.h:95
 AliAnalysisTaskSDMGammaMC.h:96
 AliAnalysisTaskSDMGammaMC.h:97
 AliAnalysisTaskSDMGammaMC.h:98
 AliAnalysisTaskSDMGammaMC.h:99
 AliAnalysisTaskSDMGammaMC.h:100
 AliAnalysisTaskSDMGammaMC.h:101
 AliAnalysisTaskSDMGammaMC.h:102
 AliAnalysisTaskSDMGammaMC.h:103
 AliAnalysisTaskSDMGammaMC.h:104
 AliAnalysisTaskSDMGammaMC.h:105
 AliAnalysisTaskSDMGammaMC.h:106
 AliAnalysisTaskSDMGammaMC.h:107
 AliAnalysisTaskSDMGammaMC.h:108
 AliAnalysisTaskSDMGammaMC.h:109
 AliAnalysisTaskSDMGammaMC.h:110
 AliAnalysisTaskSDMGammaMC.h:111
 AliAnalysisTaskSDMGammaMC.h:112
 AliAnalysisTaskSDMGammaMC.h:113
 AliAnalysisTaskSDMGammaMC.h:114
 AliAnalysisTaskSDMGammaMC.h:115