ROOT logo
#ifndef ALIANALYSISTPCTOFPA_H
#define ALIANALYSISTPCTOFPA_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 TH2D;
class TH3D;
class TList;
class TObjArray;
class AliESDEvent;
class AliESDtrack;
class AliESDtrackCuts;
class AliHeader;
class AliESDpid;


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

class AliAnalysisTPCTOFpA : public AliAnalysisTaskSE {
 public:
  AliAnalysisTPCTOFpA(const char *name);
  AliAnalysisTPCTOFpA();
  virtual ~AliAnalysisTPCTOFpA() {}
  //
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);
  //
  Bool_t         SelectOnImpPar(AliESDtrack* 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();};
  void           SetIsMCtrue(Bool_t isMCdata = kTRUE){fMCtrue = isMCdata;};
  void           SetUseHBTmultiplicity(Bool_t useHBTmultiplicity = kTRUE){fUseHBTmultiplicity = useHBTmultiplicity;};
  void		 SetUseTPConlyTracks(Bool_t useTPConlyTracks = kTRUE){fUseTPConlyTracks = useTPConlyTracks;};
  void           SetSaveMotherPDG(Bool_t saveMotherPDG =kTRUE){fSaveMotherPDG = saveMotherPDG;};
  void           SetSmallTHnSparse(Bool_t smallTHnSparse = kTRUE) {fSmallTHnSparse = smallTHnSparse;};
  void           SetTPCnSigmaCuts(Double_t nSigmaTPCLow = -3., Double_t nSigmaTPCHigh = 3.){fTPCnSigmaCutLow = nSigmaTPCLow; fTPCnSigmaCutHigh = nSigmaTPCHigh;};
  void           SetRapidityCuts(Double_t rapidityLow = 0., Double_t rapidityHigh = 0.5){fRapidityCutLow = rapidityLow; fRapidityCutHigh = rapidityHigh;};
  void           SetEvenDCAbinning(Bool_t EvenDCAbinning = kTRUE) {fEvenDCAbinning = EvenDCAbinning;};
  void           SetIspA(Bool_t ispA = kTRUE) {fIspA = ispA;};
  void           SetRapCMS(Bool_t rapCMS = kTRUE) {fRapCMS = rapCMS;};
  void           SetCentEst(TString centEst = "V0M") {fCentEst = centEst.Data();};
  void           SetTOFmisMatch(Int_t TOFmisMatch = 2) {fTOFmisMatch = TOFmisMatch;};
  void           SetTOFwindow(Double_t TOFwindow = 10.) {fTOFwindow = TOFwindow;};
  void           SetCrossedRows(Double_t crossedRows = 70.) {fCrossedRows = crossedRows;};
  void           SetRatioRowsClusters(Double_t ratioRowsClusters = 0.8) {fRatioRowsClusters = ratioRowsClusters;};
  void           SetTRDinReject(Bool_t TRDinReject = kFALSE) {fTRDinReject = TRDinReject;};
  void           SetDCAzCut(Double_t dcaZcut = 2.){fDCAzCut = dcaZcut;};
  void           Initialize();
  //
  
 private:
  //
  void  BinLogAxis(const TH1 *h);
  Int_t GetPythiaEventProcessType(const AliHeader* aHeader, const Bool_t adebug = kFALSE) const;
  //
  AliESDEvent *fESD;                   //! ESD object
  TList       *fListHist;              //! list for histograms
  //
  AliESDtrackCuts * fESDtrackCuts;     // basic cut variables
  AliESDtrackCuts * fESDTrackCutsMult; // cuts for the MULTIPLICITY DETERMINATION
  AliESDpid       * fESDpid;           // basic TPC object for n-sigma cuts
  Bool_t        fMCtrue;               // flag if real data or MC is processed
  Bool_t        fOnlyQA;               // flag if only QA histograms should be filled
  Bool_t        fUseHBTmultiplicity;   // flag if multiplicity determination should be done as in the HBT paper
  Bool_t	fUseTPConlyTracks;     // flag if TPConly-track should be used
  Bool_t        fSaveMotherPDG;        // flag if PDG of mother should be saved (weak decays)
  Bool_t        fSmallTHnSparse;       // flag if to do cuts on TPC n-sigma and rapidity in task or not
  Bool_t        fIspA;                 // flag for pA analysis                                                               
  Bool_t        fRapCMS;               // flag if rapitidy should be shifted by 0.465 do have rap in CMS of pPb
  TString       fCentEst;              // string which contains the string for the centrality estimator
  Int_t         fTOFmisMatch;          // switch for how tof mismatch should be handled. possible options 0,1,2
  Bool_t        fTRDinReject;          // flag to reject all tracks with TRDin flag set
  Double_t      fTOFwindow;            // set cut on dx and dz TOF window
  Double_t      fDCAzCut;              // set cut on DCA z -standard is 2cm
  Double_t      fCrossedRows;          // min. number of crossed rows for track cuts
  Double_t      fRatioRowsClusters;    // ratio of findable clusters over crossed rows
  Double_t      fTPCnSigmaCutLow;      // low border for TPC n-sigma cut
  Double_t      fTPCnSigmaCutHigh;     // high border for TPC n-sigma cut
  Double_t      fRapidityCutLow;       // low border for rapidity cut
  Double_t      fRapidityCutHigh;      // high border for rapidity cut
  Double_t      fEvenDCAbinning;       // same bin width for all bins in DCA xy
  Double_t      fAlephParameters[5];   // Aleph Parameters for Bethe-Bloch

  //
  //
  //
  THnSparseF * fHistRealTracks;        //! histogram with all necessary information for real tracks
  THnSparseF * fHistMCparticles;       //! histogram with all necessary information for MC particles
  //
  TH3D       * fHistPidQA;             //! histogram for the QA of the PID
  TH2D       * fHistMult;              //! control histogram for multiplicity
  TH1D       * fHistCentrality;        //! control histogram for centrality
  TH2D       * fHistTOFwindow;         //! control histogram for TOF window
  //
  AliAnalysisTPCTOFpA(const AliAnalysisTPCTOFpA&); 
  AliAnalysisTPCTOFpA& operator=(const AliAnalysisTPCTOFpA&); 

  ClassDef(AliAnalysisTPCTOFpA, 1); 
};

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