ROOT logo
#ifndef ALIANALYSISTASKEMCALMesonGGSDMPPB_H
#define ALIANALYSISTASKEMCALMesonGGSDMPPB_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
#include "AliAnalysisUtils.h"

class AliAnalysisTaskEMCALMesonGGSDMpPb : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskEMCALMesonGGSDMpPb();
  AliAnalysisTaskEMCALMesonGGSDMpPb(const char *name);
  virtual ~AliAnalysisTaskEMCALMesonGGSDMpPb();
    
  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         SetdRmin_ClustTrack(Double_t kdRmin_ClustTrack)    { fdRmin_ClustTrack = kdRmin_ClustTrack; }
  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;
  static const int cent_bins = 4;
  
  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);
  Double_t GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const;
  Int_t IsPhysPrimJ(AliMCEvent *mcEvent, Int_t iTrack);
  Int_t IsLongLivedOrK(Int_t MyPDGcode);
  
  TList           *fOutput;        //! Output list
  Bool_t           fMcMode;                 // monte carlo mode
  Int_t            fRecalibrator;           // custom recalibrator? 
  Double_t         fdRmin_ClustTrack; // Cuts. 
  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[cent_bins];  //! # of clusters/evt
  TH1F            *h1_zvtx;  //! vertex distribution
  TH1F            *h1_trigger;  //! # of clusters/evt
  TH1F            *h1_centrality;  //! # of clusters/evt
  TH1F           * h1_M[cent_bins];        //! Mass spectrum
  TH1F           * h1_M_mix[cent_bins];    //! Mass spectrum
  TH1F           * h1_E[cent_bins];        //! energy spectrum
  TH2F            *h2_PhiEtaCluster;        //!  phi vs eta for the cluster CoG
  TH2F            *h2_PhiEtaClusterCut;     //!  phi vs eta for the cluster CoG w/ cuts
  TH2F            *h2_PhiEtaMaxCell;        //!  phi vs eta for the maximum cell
  TH2F            *h2_PhiEtaMaxCellCut;     //!  phi vs eta for the maximum cell w/ cuts
  TH1F           * h1_dR_ClustTrk[cent_bins];        //! Track Matching
  TH2F            *h2_gE_RecTruth; //! gamma E, rec/truth, first bin is primaries, second is non-primaries
  TH2F            *h2_eop_E;        //!  e over p vs E. simple
  TH2F            *h2_eop_pT;        //!  e over p vs pT. simple
  TH2F            *h2_E_time;        //!  cluster energy vs time.

  TH1F           * h1_Pi0TruthPt[cent_bins];        //! Pt spectrum from MC! 
  TH1F           * h1_PriPi0TruthPt[cent_bins];        //! Pt spectrum from MC! 
  TH1F           * h1_Pi0TruthPtEmcal[cent_bins];        //! Pt spectrum from MC! 
  TH1F           * h1_PriPi0TruthPtEmcal[cent_bins];        //! Pt spectrum from MC! 
  TH1F           * h1_Pi0TruthPtPhi2piEta065[cent_bins];        //! Pt spectrum from MC! 
  TH1F           * h1_Pi0TruthPtPhi2piEta1[cent_bins];        //! 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! 
  TH2F            *h2_Pi0TruthPhiEta_Phi2piEta065;        //! Pt spectrum from MC! 
  TH2F            *h2_Pi0TruthPhiEta_Phi2piEta1;        //! Pt spectrum from MC!   

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

  TH1F           * h1_dR_RealMC[cent_bins];        //! Pt spectrum from MC! 

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

  std::vector<TLorentzVector> Photons[poolDepth][zvtx_bins][mult_bins];
  std::vector<Int_t> TriggerList;
 
  AliAnalysisUtils*   fHelperClass;           //! Vertex selection helper

  AliAnalysisTaskEMCALMesonGGSDMpPb(const AliAnalysisTaskEMCALMesonGGSDMpPb&); // not implemented
  AliAnalysisTaskEMCALMesonGGSDMpPb& operator=(const AliAnalysisTaskEMCALMesonGGSDMpPb&); // not implemented
    
  ClassDef(AliAnalysisTaskEMCALMesonGGSDMpPb, 1); // example of analysis
};
#endif
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:1
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:2
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:3
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:4
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:5
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:6
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:7
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:8
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:9
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:10
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:11
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:12
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:13
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:14
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:15
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:16
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:17
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:18
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:19
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:20
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:21
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:22
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:23
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:24
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:25
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:26
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:27
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:28
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:29
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:30
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:31
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:32
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:33
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:34
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:35
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:36
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:37
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:38
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:39
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:40
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:41
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:42
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:43
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:44
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:45
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:46
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:47
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:48
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:49
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:50
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:51
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:52
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:53
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:54
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:55
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:56
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:57
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:58
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:59
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:60
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:61
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:62
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:63
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:64
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:65
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:66
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:67
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:68
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:69
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:70
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:71
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:72
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:73
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:74
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:75
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:76
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:77
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:78
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:79
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:80
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:81
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:82
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:83
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:84
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:85
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:86
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:87
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:88
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:89
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:90
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:91
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:92
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:93
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:94
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:95
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:96
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:97
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:98
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:99
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:100
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:101
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:102
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:103
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:104
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:105
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:106
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:107
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:108
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:109
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:110
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:111
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:112
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:113
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:114
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:115
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:116
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:117
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:118
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:119
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:120
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:121
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:122
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:123
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:124
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:125
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:126
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:127
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:128
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:129
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:130
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:131
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:132
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:133
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:134
 AliAnalysisTaskEMCALMesonGGSDMpPb.h:135