ROOT logo
#ifndef ALIANALYSISTASKEMCALMESONGGSDM_H
#define ALIANALYSISTASKEMCALMESONGGSDM_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 AliAnalysisTaskEMCALMesonGGSDM : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskEMCALMesonGGSDM();
  AliAnalysisTaskEMCALMesonGGSDM(const char *name);
  virtual ~AliAnalysisTaskEMCALMesonGGSDM();
    
  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         SetMyMCType(char *kMyMCType)        { fMyMCType     = kMyMCType; }
  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 = 8;
  static const int mult_bins = 7;
  static const unsigned int poolDepth = 80;
  
  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);
  Int_t IsMyMCHeaderType(Int_t iTrack, char *MyType, AliMCEvent *mcEvent) const;

  TList           *fOutput;        //! Output list
  Bool_t           fMcMode;                 // monte carlo mode
  char            *fMyMCType;               // monte carlo primary particles
  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;  //!  # of clusters/evt
  TH1F            *h1_zvtx;  //!  # of clusters/evt
  TH1F            *h1_trigger;  //!  # of clusters/evt
  TH1F            *h1_M;        //!  Mass spectrum
  TH1F            *h1_M_mix;    //!  Mass spectrum
  TH1F            *h1_E;        //!  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;        //!  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;        //!  Pt spectrum from MC! 
  TH1F            *h1_K0Pi0TruthPt;        //!  Pt spectrum from MC! 
  TH1F            *h1_PriPi0TruthPt;        //!  Pt spectrum from MC! 
  TH1F            *h1_PhysPi0TruthPt;        //!  Pt spectrum from MC! 

  TH1F            *h1_Pi0TruthPtEmcal;        //!  Pt spectrum from MC! 
  TH1F            *h1_K0Pi0TruthPtEmcal;        //!  Pt spectrum from MC! 
  TH1F            *h1_PriPi0TruthPtEmcal;        //!  Pt spectrum from MC! 
  TH1F            *h1_PhysPi0TruthPtEmcal;        //!  Pt spectrum from MC! 

  TH1F            *h1_Pi0TruthPtPhi2piEta065;        //!  Pt spectrum from MC! 
  TH1F            *h1_K0Pi0TruthPtPhi2piEta065;        //!  Pt spectrum from MC! 
  TH1F            *h1_PriPi0TruthPtPhi2piEta065;        //!  Pt spectrum from MC! 
  TH1F            *h1_PhysPi0TruthPtPhi2piEta065;        //!  Pt spectrum from MC! 

  TH1F            *h1_Pi0TruthPtPhi2piEta1;        //!  Pt spectrum from MC!   
  TH1F            *h1_K0Pi0TruthPtPhi2piEta1;        //!  Pt spectrum from MC!   
  TH1F            *h1_PriPi0TruthPtPhi2piEta1;        //!  Pt spectrum from MC!   
  TH1F            *h1_PhysPi0TruthPtPhi2piEta1;        //!  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! 
  TH2F            *h2_Mpt_Pri;       //!  2dimensional mass vs mom primary pions
  TH2F            *h2_Mpt_Sec;       //!  2dimensional mass vs mom secondary pions
  TH3F            *h3_MptR_Sec;       //!  2dimensional mass vs production radius, secondary pions
  TH3F            *h3_MptR_K0s;       //!  2dimensional mass vs production radius, K0s pions
  TH3F            *h3_MptR_Mat;       //!  2dimensional mass vs production radius, pions from material
  TH2F            *h2_PtR_MatM;       //!  2dimensional pt vs production radius, pions from material (that merged). pi mass assumed.
  TH2F            *h2_Mpt_Pri_conv;       //!  2dimensional mass vs mom primary pions
  TH2F            *h2_Mpt_Sec_conv;       //!  2dimensional mass vs mom secondary pions
  TH3F            *h3_MptR_Sec_conv;       //!  2dimensional mass vs production radius, secondary pions
  TH3F            *h3_MptR_K0s_conv;       //!  2dimensional mass vs production radius, K0s pions
  TH3F            *h3_MptR_Mat_conv;       //!  2dimensional mass vs production radius, pions from material
  TH1F            *h1_eConversionR;        //!  conversion point (radius)
  TH1F            *h1_PriPi0Mother;       //!  the parent ID of every sec pi0 mother
  TH1F            *h1_SecPi0Mother;       //!  the parent ID of every pri pi0 mother

  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
  TH3F            *h3_MptAsymm;       //!  2dimensional E vs mom
  TH3F            *h3_MptAsymm_mix;       //!  2dimensional E vs mom
  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;       //!  

  //AliPIDCombined *fPIDCombined; // for E/p
  //AliPIDResponse *fPIDResponse; // for E/p

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

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