ROOT logo
#ifndef ALIANALYSISTASKCHARGEDHADRONSPECTRA2MC_H
#define ALIANALYSISTASKCHARGEDHADRONSPECTRA2MC_H

//////////////////////////////////////////////////////////////////////////////
//                                                                          //
// This analysis extracts pT-spectra of charged kaons, protons, and pions.  //
// It is based on particles identifation via the dE/dx signal of the TPC.   //
//                                                                          //
//////////////////////////////////////////////////////////////////////////////

class TH1;
class TH1F;
class TH2F;
class TH3F;
class TList;
class TObjArray;
class AliESDEvent;
class AliESDtrack;
class AliESDtrackCuts;
class AliHeader;
class AliESDpid;
#include "AliTOFT0v1.h"
#include "AliTOFT0maker.h"
#include "AliTOFcalib.h"
#include "AliCDBManager.h"
#include <TTree.h>

class AliAnalysisFilter;
class AliCFContainer;
class TDatabasePDG;

#include "AliAnalysisTask.h"
#include "AliESDVertex.h"
#include "AliPhysicsSelectionTask.h"
#include "AliPhysicsSelection.h"
#include "AliBackgroundSelection.h"
#include "AliTOFT0v1.h"
#include "AliTOFT0maker.h"
#include "AliTOFcalib.h"
#include "AliCDBManager.h"



#include "AliAnalysisTaskSE.h"
#include "THnSparse.h"

class AliAnalysisCombinedHadronSpectra2MC : public AliAnalysisTaskSE {
 public:
  AliAnalysisCombinedHadronSpectra2MC(const char *name);
  AliAnalysisCombinedHadronSpectra2MC();
  virtual ~AliAnalysisCombinedHadronSpectra2MC() {}
  //
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);
  //
  //
  void           SetESDtrackCuts(AliESDtrackCuts * trackCuts){fESDtrackCuts = trackCuts;};
  //void           SetAlephParameters(const Double_t * parameters){for(Int_t j=0;j<5;j++) fAlephParameters[j] = parameters[j]; Initialize();};
  Int_t           Mult();
  Int_t multiplicity;
  Int_t vert;
  //
  
 private:
  //
  //void  BinLogAxis(const THnSparse *h, Int_t axisNumber);
  
  //
  AliESDEvent *fESD;                  //! ESD object
  TList       *fListHist;             //! list for histograms
  //
  AliESDtrackCuts * fESDtrackCuts;    // basic cut variables
  AliESDpid       * fESDpid;          // basic TPC object for n-sigma cuts
  Bool_t        fMCtrue;              // flag if real data or MC is processed
  Double_t      fAlephParameters[5];  // Aleph Parameters for Bethe-Bloch
  //
 
  TList* TOFCheck;

  Bool_t calibrateESD;
  Bool_t correctTExp;
  Bool_t useT0TOF;
  Double_t timeResolution; 
  Bool_t tuneTOFMC;
  TTree *fTreeTrack;
  TTree *fTreeEv;
  Bool_t fLoadOCDB;
  Int_t frunOld;
  Int_t frun; 
  AliTOFcalib *tofCalib;
  AliTOFT0maker *t0maker;
  Int_t fMCtracks;       // n MC trk 
  Int_t fMCPrimaries;    // MC primaries 
  Double_t fT0TOF0;      // best t0
  Double_t fT0TOF1;      // sigma best t0 in ps
  Double_t fT0TOF2;      // t0 fill
  Double_t fT0TOF3;      // n TOF tracks
  Double_t fT0TOF4;      // TOF t0
  Double_t fT0TOF5;      // TOF t0 sigma
  Double_t fT0TOF6;      // sigma t0 fill
  Double_t fT0TOF7;      // n TOF tracks used for T0
  Double_t XPrimVertex;
  Double_t YPrimVertex;
  Double_t ZPrimVertex;
  Int_t NContrPrimVertex;
  Double_t rapidityMC;
  Float_t fDCAXY;
  Float_t fDCAZ;
  Int_t fcut;
  Int_t fTOFout;
  Int_t ftrdout;
  Int_t ftime;
  Int_t ftpcclust;
  Double_t flength;
  Int_t fsign;
  Double_t ftimetof;
  Int_t ftofchan;
  Double_t feta;
  Double_t fphi;
  Double_t fmomtrasv;
  Double_t sigmapi;
  Double_t sigmaka;
  Double_t sigmapr;
  Float_t fTot;
  Double_t r1[5];
  Double_t fmom;
  Double_t fexptimepi;
  Double_t fexptimeka;
  Double_t fexptimepr;
  Double_t ftofz; // local z  of track's impact on the TOF pad  
  Double_t ftofx;// local x  of track's impact on the TOF pad 
  Float_t t0track;
  Double_t TPCSignal;
  Float_t TPCSigmaPI;
  Float_t TPCSigmaKA;
  Float_t TPCSigmaPR;
  Int_t fmatch;
  Double_t fPhiout;
  Double_t fXout;
  Double_t fYout;
  Double_t fZout;
  Int_t  fTimeZeroType;      // flag to select timeZero type 
  
  Float_t spdCorr;
  Double_t treeMCP;
  Double_t treeMCPt;
  Double_t treeMCEta;
  Double_t treeMCPhi;
  Int_t treeMCPdg;
  Double_t treeMCPBis; 
  Double_t treeMCPtBis; 
  Double_t treeMCEtaBis; 
  Double_t treeMCPhiBis; 
  Int_t treeMCPdgBis; 
  Float_t t0trackSigma;
  Double_t fptMC;
  Double_t fphiMC;
  Double_t fetaMC;
  Int_t fPdgcode;


  TH2D* pad;
  TH1D* resx; TH1D * resz; TH1D * tofres; TH1D * tofresTOF; TH1D * tofresgood; 
  TH1F *hNumMatch; 
  TH1F* hNumMatchPos; TH1F*  hNumMatchNeg; TH1F*  hDenMatch; 

  TH1F*hNumMatchPip;  TH1F*hNumMatchPim; TH1F*hNumMatchKap;  TH1F*hNumMatchKam; TH1F*hNumMatchPrp;  TH1F*hNumMatchPrm; TH1F*hDenMatchPip;  TH1F*hDenMatchPim; TH1F*hDenMatchKap;  TH1F*hDenMatchKam; TH1F*hDenMatchPrp;  TH1F*hDenMatchPrm;

 
TH1F*  hDenMatchPos; TH1F*  hDenMatchNeg; TH1F*  hNumMatchEta; TH1F*  hNumMatchPosEta; TH1F*  hNumMatchNegEta; TH1F*  hDenMatchEta; TH1F*  hDenMatchPosEta; TH1F*   hDenMatchNegEta; TH1F*  hNumMatchphiOut; TH1F*  hNumMatchPosphiOut; TH1F*  hNumMatchNegphiOut; TH1F*  hDenMatchphiOut; TH1F*  hDenMatchPosphiOut; TH1F*  hDenMatchNegphiOut; TH1F*  hNumMatchEtaPtMa; TH1F*  hNumMatchPosEtaPtMa; TH1F*  hNumMatchNegEtaPtMa; TH1F*  hDenMatchEtaPtMa; TH1F*  hDenMatchPosEtaPtMa; TH1F*  hDenMatchNegEtaPtMa; TH1F*  hNumMatchphiOutPtMa; TH1F*  hNumMatchPosphiOutPtMa; TH1F*  hNumMatchNegphiOutPtMa; TH1F*  hDenMatchphiOutPtMa; TH1F*  hDenMatchPosphiOutPtMa; TH1F*  hDenMatchNegphiOutPtMa; TH1F* hNumMatchTRDOut; TH1F* hNumMatchPosTRDOut; TH1F* hNumMatchNegTRDOut; TH1F* hDenMatchTRDOut; TH1F* hDenMatchPosTRDOut; TH1F* hDenMatchNegTRDOut; TH1F* hNumMatchNoTRDOut; TH1F* hNumMatchPosNoTRDOut; TH1F* hNumMatchNegNoTRDOut; TH1F* hDenMatchNoTRDOut; TH1F* hDenMatchPosNoTRDOut; TH1F* hDenMatchNegNoTRDOut; TH1F* hNumMatchTPCpip; TH1F* hNumMatchTPCkap; TH1F* hNumMatchTPCprp; TH1F* hDenMatchTPCpip; TH1F* hDenMatchTPCkap; TH1F* hDenMatchTPCprp; TH1F* hNumMatchTPCpim; TH1F* hNumMatchTPCkam; TH1F* hNumMatchTPCprm; TH1F* hDenMatchTPCpim; TH1F* hDenMatchTPCkam; TH1F* hDenMatchTPCprm;

  TH1F *hNumEv;
  TH1F* hNumMatchMultTrkTRDOut[7][6];
  TH1F* hDenMatchMultTrkTRDOut[7][6];
  TH1F* hDenTrkMultTrkTRDOut[7][6];
  TH1F* hNumMatchMultTrkNoTRDOut[7][6];
  TH1F* hDenMatchMultTrkNoTRDOut[7][6];
  TH1F* hDenTrkMultTrkNoTRDOut[7][6];

  TH1F *hNumMatchMultTrk[7][6];
  TH1F *hDenMatchMultTrk[7][6]; 
  TH1F *hDenTrkMultTrk[7][6];
  TH1F *hNumMatchMultSPD[7][6];
  TH1F *hDenMatchMultSPD[7][6]; 
  TH1F *hDenTrkMultSPD[7][6];
  
  TH1F *hNumMatchMultTrkInc[7][2];
  TH1F *hDenMatchMultTrkInc[7][2];
  TH1F *hNumMatchMultSPDInc[7][2];
  TH1F *hDenMatchMultSPDInc[7][2];
  TH1F* hDenTrkVertMultTrk[6];
   
  TH1F* hDenTrkTriggerMultTrk[6];
 
  //
  AliAnalysisCombinedHadronSpectra2MC(const AliAnalysisCombinedHadronSpectra2MC&); 
  AliAnalysisCombinedHadronSpectra2MC & operator=(const AliAnalysisCombinedHadronSpectra2MC&); 

  ClassDef(AliAnalysisCombinedHadronSpectra2MC, 1); 
};

#endif
 AliAnalysisCombinedHadronSpectra2MC.h:1
 AliAnalysisCombinedHadronSpectra2MC.h:2
 AliAnalysisCombinedHadronSpectra2MC.h:3
 AliAnalysisCombinedHadronSpectra2MC.h:4
 AliAnalysisCombinedHadronSpectra2MC.h:5
 AliAnalysisCombinedHadronSpectra2MC.h:6
 AliAnalysisCombinedHadronSpectra2MC.h:7
 AliAnalysisCombinedHadronSpectra2MC.h:8
 AliAnalysisCombinedHadronSpectra2MC.h:9
 AliAnalysisCombinedHadronSpectra2MC.h:10
 AliAnalysisCombinedHadronSpectra2MC.h:11
 AliAnalysisCombinedHadronSpectra2MC.h:12
 AliAnalysisCombinedHadronSpectra2MC.h:13
 AliAnalysisCombinedHadronSpectra2MC.h:14
 AliAnalysisCombinedHadronSpectra2MC.h:15
 AliAnalysisCombinedHadronSpectra2MC.h:16
 AliAnalysisCombinedHadronSpectra2MC.h:17
 AliAnalysisCombinedHadronSpectra2MC.h:18
 AliAnalysisCombinedHadronSpectra2MC.h:19
 AliAnalysisCombinedHadronSpectra2MC.h:20
 AliAnalysisCombinedHadronSpectra2MC.h:21
 AliAnalysisCombinedHadronSpectra2MC.h:22
 AliAnalysisCombinedHadronSpectra2MC.h:23
 AliAnalysisCombinedHadronSpectra2MC.h:24
 AliAnalysisCombinedHadronSpectra2MC.h:25
 AliAnalysisCombinedHadronSpectra2MC.h:26
 AliAnalysisCombinedHadronSpectra2MC.h:27
 AliAnalysisCombinedHadronSpectra2MC.h:28
 AliAnalysisCombinedHadronSpectra2MC.h:29
 AliAnalysisCombinedHadronSpectra2MC.h:30
 AliAnalysisCombinedHadronSpectra2MC.h:31
 AliAnalysisCombinedHadronSpectra2MC.h:32
 AliAnalysisCombinedHadronSpectra2MC.h:33
 AliAnalysisCombinedHadronSpectra2MC.h:34
 AliAnalysisCombinedHadronSpectra2MC.h:35
 AliAnalysisCombinedHadronSpectra2MC.h:36
 AliAnalysisCombinedHadronSpectra2MC.h:37
 AliAnalysisCombinedHadronSpectra2MC.h:38
 AliAnalysisCombinedHadronSpectra2MC.h:39
 AliAnalysisCombinedHadronSpectra2MC.h:40
 AliAnalysisCombinedHadronSpectra2MC.h:41
 AliAnalysisCombinedHadronSpectra2MC.h:42
 AliAnalysisCombinedHadronSpectra2MC.h:43
 AliAnalysisCombinedHadronSpectra2MC.h:44
 AliAnalysisCombinedHadronSpectra2MC.h:45
 AliAnalysisCombinedHadronSpectra2MC.h:46
 AliAnalysisCombinedHadronSpectra2MC.h:47
 AliAnalysisCombinedHadronSpectra2MC.h:48
 AliAnalysisCombinedHadronSpectra2MC.h:49
 AliAnalysisCombinedHadronSpectra2MC.h:50
 AliAnalysisCombinedHadronSpectra2MC.h:51
 AliAnalysisCombinedHadronSpectra2MC.h:52
 AliAnalysisCombinedHadronSpectra2MC.h:53
 AliAnalysisCombinedHadronSpectra2MC.h:54
 AliAnalysisCombinedHadronSpectra2MC.h:55
 AliAnalysisCombinedHadronSpectra2MC.h:56
 AliAnalysisCombinedHadronSpectra2MC.h:57
 AliAnalysisCombinedHadronSpectra2MC.h:58
 AliAnalysisCombinedHadronSpectra2MC.h:59
 AliAnalysisCombinedHadronSpectra2MC.h:60
 AliAnalysisCombinedHadronSpectra2MC.h:61
 AliAnalysisCombinedHadronSpectra2MC.h:62
 AliAnalysisCombinedHadronSpectra2MC.h:63
 AliAnalysisCombinedHadronSpectra2MC.h:64
 AliAnalysisCombinedHadronSpectra2MC.h:65
 AliAnalysisCombinedHadronSpectra2MC.h:66
 AliAnalysisCombinedHadronSpectra2MC.h:67
 AliAnalysisCombinedHadronSpectra2MC.h:68
 AliAnalysisCombinedHadronSpectra2MC.h:69
 AliAnalysisCombinedHadronSpectra2MC.h:70
 AliAnalysisCombinedHadronSpectra2MC.h:71
 AliAnalysisCombinedHadronSpectra2MC.h:72
 AliAnalysisCombinedHadronSpectra2MC.h:73
 AliAnalysisCombinedHadronSpectra2MC.h:74
 AliAnalysisCombinedHadronSpectra2MC.h:75
 AliAnalysisCombinedHadronSpectra2MC.h:76
 AliAnalysisCombinedHadronSpectra2MC.h:77
 AliAnalysisCombinedHadronSpectra2MC.h:78
 AliAnalysisCombinedHadronSpectra2MC.h:79
 AliAnalysisCombinedHadronSpectra2MC.h:80
 AliAnalysisCombinedHadronSpectra2MC.h:81
 AliAnalysisCombinedHadronSpectra2MC.h:82
 AliAnalysisCombinedHadronSpectra2MC.h:83
 AliAnalysisCombinedHadronSpectra2MC.h:84
 AliAnalysisCombinedHadronSpectra2MC.h:85
 AliAnalysisCombinedHadronSpectra2MC.h:86
 AliAnalysisCombinedHadronSpectra2MC.h:87
 AliAnalysisCombinedHadronSpectra2MC.h:88
 AliAnalysisCombinedHadronSpectra2MC.h:89
 AliAnalysisCombinedHadronSpectra2MC.h:90
 AliAnalysisCombinedHadronSpectra2MC.h:91
 AliAnalysisCombinedHadronSpectra2MC.h:92
 AliAnalysisCombinedHadronSpectra2MC.h:93
 AliAnalysisCombinedHadronSpectra2MC.h:94
 AliAnalysisCombinedHadronSpectra2MC.h:95
 AliAnalysisCombinedHadronSpectra2MC.h:96
 AliAnalysisCombinedHadronSpectra2MC.h:97
 AliAnalysisCombinedHadronSpectra2MC.h:98
 AliAnalysisCombinedHadronSpectra2MC.h:99
 AliAnalysisCombinedHadronSpectra2MC.h:100
 AliAnalysisCombinedHadronSpectra2MC.h:101
 AliAnalysisCombinedHadronSpectra2MC.h:102
 AliAnalysisCombinedHadronSpectra2MC.h:103
 AliAnalysisCombinedHadronSpectra2MC.h:104
 AliAnalysisCombinedHadronSpectra2MC.h:105
 AliAnalysisCombinedHadronSpectra2MC.h:106
 AliAnalysisCombinedHadronSpectra2MC.h:107
 AliAnalysisCombinedHadronSpectra2MC.h:108
 AliAnalysisCombinedHadronSpectra2MC.h:109
 AliAnalysisCombinedHadronSpectra2MC.h:110
 AliAnalysisCombinedHadronSpectra2MC.h:111
 AliAnalysisCombinedHadronSpectra2MC.h:112
 AliAnalysisCombinedHadronSpectra2MC.h:113
 AliAnalysisCombinedHadronSpectra2MC.h:114
 AliAnalysisCombinedHadronSpectra2MC.h:115
 AliAnalysisCombinedHadronSpectra2MC.h:116
 AliAnalysisCombinedHadronSpectra2MC.h:117
 AliAnalysisCombinedHadronSpectra2MC.h:118
 AliAnalysisCombinedHadronSpectra2MC.h:119
 AliAnalysisCombinedHadronSpectra2MC.h:120
 AliAnalysisCombinedHadronSpectra2MC.h:121
 AliAnalysisCombinedHadronSpectra2MC.h:122
 AliAnalysisCombinedHadronSpectra2MC.h:123
 AliAnalysisCombinedHadronSpectra2MC.h:124
 AliAnalysisCombinedHadronSpectra2MC.h:125
 AliAnalysisCombinedHadronSpectra2MC.h:126
 AliAnalysisCombinedHadronSpectra2MC.h:127
 AliAnalysisCombinedHadronSpectra2MC.h:128
 AliAnalysisCombinedHadronSpectra2MC.h:129
 AliAnalysisCombinedHadronSpectra2MC.h:130
 AliAnalysisCombinedHadronSpectra2MC.h:131
 AliAnalysisCombinedHadronSpectra2MC.h:132
 AliAnalysisCombinedHadronSpectra2MC.h:133
 AliAnalysisCombinedHadronSpectra2MC.h:134
 AliAnalysisCombinedHadronSpectra2MC.h:135
 AliAnalysisCombinedHadronSpectra2MC.h:136
 AliAnalysisCombinedHadronSpectra2MC.h:137
 AliAnalysisCombinedHadronSpectra2MC.h:138
 AliAnalysisCombinedHadronSpectra2MC.h:139
 AliAnalysisCombinedHadronSpectra2MC.h:140
 AliAnalysisCombinedHadronSpectra2MC.h:141
 AliAnalysisCombinedHadronSpectra2MC.h:142
 AliAnalysisCombinedHadronSpectra2MC.h:143
 AliAnalysisCombinedHadronSpectra2MC.h:144
 AliAnalysisCombinedHadronSpectra2MC.h:145
 AliAnalysisCombinedHadronSpectra2MC.h:146
 AliAnalysisCombinedHadronSpectra2MC.h:147
 AliAnalysisCombinedHadronSpectra2MC.h:148
 AliAnalysisCombinedHadronSpectra2MC.h:149
 AliAnalysisCombinedHadronSpectra2MC.h:150
 AliAnalysisCombinedHadronSpectra2MC.h:151
 AliAnalysisCombinedHadronSpectra2MC.h:152
 AliAnalysisCombinedHadronSpectra2MC.h:153
 AliAnalysisCombinedHadronSpectra2MC.h:154
 AliAnalysisCombinedHadronSpectra2MC.h:155
 AliAnalysisCombinedHadronSpectra2MC.h:156
 AliAnalysisCombinedHadronSpectra2MC.h:157
 AliAnalysisCombinedHadronSpectra2MC.h:158
 AliAnalysisCombinedHadronSpectra2MC.h:159
 AliAnalysisCombinedHadronSpectra2MC.h:160
 AliAnalysisCombinedHadronSpectra2MC.h:161
 AliAnalysisCombinedHadronSpectra2MC.h:162
 AliAnalysisCombinedHadronSpectra2MC.h:163
 AliAnalysisCombinedHadronSpectra2MC.h:164
 AliAnalysisCombinedHadronSpectra2MC.h:165
 AliAnalysisCombinedHadronSpectra2MC.h:166
 AliAnalysisCombinedHadronSpectra2MC.h:167
 AliAnalysisCombinedHadronSpectra2MC.h:168
 AliAnalysisCombinedHadronSpectra2MC.h:169
 AliAnalysisCombinedHadronSpectra2MC.h:170
 AliAnalysisCombinedHadronSpectra2MC.h:171
 AliAnalysisCombinedHadronSpectra2MC.h:172
 AliAnalysisCombinedHadronSpectra2MC.h:173
 AliAnalysisCombinedHadronSpectra2MC.h:174
 AliAnalysisCombinedHadronSpectra2MC.h:175
 AliAnalysisCombinedHadronSpectra2MC.h:176
 AliAnalysisCombinedHadronSpectra2MC.h:177
 AliAnalysisCombinedHadronSpectra2MC.h:178
 AliAnalysisCombinedHadronSpectra2MC.h:179
 AliAnalysisCombinedHadronSpectra2MC.h:180
 AliAnalysisCombinedHadronSpectra2MC.h:181
 AliAnalysisCombinedHadronSpectra2MC.h:182
 AliAnalysisCombinedHadronSpectra2MC.h:183
 AliAnalysisCombinedHadronSpectra2MC.h:184
 AliAnalysisCombinedHadronSpectra2MC.h:185
 AliAnalysisCombinedHadronSpectra2MC.h:186
 AliAnalysisCombinedHadronSpectra2MC.h:187
 AliAnalysisCombinedHadronSpectra2MC.h:188
 AliAnalysisCombinedHadronSpectra2MC.h:189
 AliAnalysisCombinedHadronSpectra2MC.h:190
 AliAnalysisCombinedHadronSpectra2MC.h:191
 AliAnalysisCombinedHadronSpectra2MC.h:192
 AliAnalysisCombinedHadronSpectra2MC.h:193
 AliAnalysisCombinedHadronSpectra2MC.h:194
 AliAnalysisCombinedHadronSpectra2MC.h:195
 AliAnalysisCombinedHadronSpectra2MC.h:196
 AliAnalysisCombinedHadronSpectra2MC.h:197
 AliAnalysisCombinedHadronSpectra2MC.h:198
 AliAnalysisCombinedHadronSpectra2MC.h:199
 AliAnalysisCombinedHadronSpectra2MC.h:200
 AliAnalysisCombinedHadronSpectra2MC.h:201
 AliAnalysisCombinedHadronSpectra2MC.h:202
 AliAnalysisCombinedHadronSpectra2MC.h:203