ROOT logo
#ifndef ALIANALYSISNUCLEIINFO_H
#define ALIANALYSISNUCLEIINFO_H

// ROOT includes
#include <TList.h>

// AliRoot includes
#include <AliAnalysisTaskSE.h>
#include <AliPIDResponse.h>

class AliAODEvent;
class AliESDEvent;
class AliVEvent;
class TH2F;
class TH2D;
class TH1F;
class TH1I;
class TF1;
class TF2;
class TGraph;
class AliESDtrackCuts;
class TProfile;
class TFile;
class TObject;

class AliAnalysisNucleiInfo : public AliAnalysisTaskSE {
 public:
  AliAnalysisNucleiInfo();
  AliAnalysisNucleiInfo(const char *name);
  
  virtual ~AliAnalysisNucleiInfo();
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);


  //Cuts on the tracks
  void SetFilterBit(Int_t TestFilterBit=16) {FilterBit=TestFilterBit;}
  //Geometrical cuts
  void SetEtaLimit(Double_t etaMin=-0.8, Double_t etaMax=0.8) {EtaLimit[0]=etaMin;EtaLimit[1]=etaMax;}
  void SetDCACut(Double_t DCAxyCUT=1000.0, Double_t DCAzCUT=1000.0) {DCAxyCut=DCAxyCUT; DCAzCut=DCAzCUT;}
  //Other cuts 
  void SetNsigmaTPCCut(Double_t nSigmaTpcCut=2) {NsigmaTpcCut=nSigmaTpcCut;}
  void SetStartTimeTofRes(Double_t startTimeTofRes=9999.9){StartTimeTofRes=startTimeTofRes;}

 private:
  AliAnalysisNucleiInfo(const AliAnalysisNucleiInfo &old); 
  AliAnalysisNucleiInfo& operator=(const AliAnalysisNucleiInfo &source);
    
  static const Int_t nBconf=2;                     // Number of Magnetic field configuration (B++ and B--)
  static const Int_t nPart=9;                      // Number of particle type: e,mu,pi,K...
  static const Int_t nSpec=18;                     // Number of particle species: particles: e+,e-,mu+,mu-,...
    
  //Variables settings with public methods:
  Int_t FilterBit;                                 // Filter Bit to be used
  Double_t EtaLimit[2];                            // Eta windows in analysis
  Double_t DCAxyCut;                               // Cut on DCA-xy
  Double_t DCAzCut;                                // Cut on DCA-z
  Double_t NsigmaTpcCut;                           // number of sigma Tpc Cut
  Double_t StartTimeTofRes;
  
  //other:
  Int_t iBconf;                                   //! If Magnetic Field configuration is down or up
  Bool_t kTOF;                                    //! kTOFout and kTIME required
  
  static const Int_t iTriggerSel=0;             // -99->no trigger required ; 0-> if kMB ; 16-> if kCentral ; 17-> if kSemiCentral ; -2 -> No MB, No Central and No SemiCentral  

  AliAODEvent* fAOD;                              //! AOD object
  AliESDEvent* fESD;                              //! ESD object
  AliVEvent* fEvent;                              //! general object
  AliPIDResponse *fPIDResponse;                   //! pointer to PID response
  TList *fList[nBconf];                           //! lists for slot
  
  TH1I *htriggerbits[nBconf][2];                  //! Trigger bits distribution
  TH1F *htemp[nBconf];                            //! Temp. plot: avoid a problem with the merge of the output when a TList is empty (of the opposite magnetic field configuration)
  TH1F *hZvertex[nBconf][2];                      //! z-vertex distribution before and after the cuts on the event
  
  TH1F *hEta[nBconf];                             //! Eta distribution of the tracks
  TH1F *hPhi[nBconf];                             //! Phi particle distribution
  TH1I *hNtrackAtTof[nBconf];                        //! Number of the tracks when kTOF is required
  
  //TPC info:
  TH2F *fdEdxVSp[nBconf][2];                      //! dedx vs pTpc
  TProfile *hDeDxExp[nBconf][9];                  //! TPC spline used
  TH2F *fNsigmaTpc[nBconf][18];                   //! NsigmaTPC vs. pTpc
  
  //TOF info:
  TH2F *fBetaTofVSp[nBconf][2];                   //! beta vs pVtx
  TProfile *hBetaExp[nBconf][9];                  //! TOF expected beta
  TH2F *fNsigmaTof[nBconf][2][18];                //! NsigmaTOF vs. pT
  TH2F *fTofMinusExp[nBconf][2][18];              //! tof-t_exp w/o tpc
  TH1F *hStartTimeRes[nBconf];                    //! start time resolution
 
  //ITS info:
  TH2F *h2DCAap[nBconf][18];                      //! DCAxy vs DCAz with NsigmaTpcCut for each particle species
  
  ClassDef(AliAnalysisNucleiInfo, 2);
};

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