ROOT logo
#ifndef ALISPECTRAAODTRACKCUTS_H
#define ALISPECTRAAODTRACKCUTS_H

/*  See cxx source for full Copyright notice */

//-------------------------------------------------------------------------
//                      AliSpectraAODTrackCuts
//
//
//
//
// Authors: Michele Floris, CERN, Philip Versteeg, UU, Redmer Bertens, UU
//-------------------------------------------------------------------------

class TH1I;
class AliAODEvent;
class AliPIDResponse;  
class AliAODMCParticle;
class AliAODTrack;
class TH2F;
class TH1F;

#include "TNamed.h"

class AliSpectraAODTrackCuts : public TNamed
{
 public:
  
  enum { kTrkBit = 0, kTrkCuts, kTrkEta, kTrkDCA, kTrkP, kTrkPt,kTrkPtTOF,kTOFMatching,kTrTOFout,kTrTIME,kTrTOFpid,kAccepted,kNTrkCuts};
  
  
 AliSpectraAODTrackCuts() : TNamed(), fIsSelected(0), fTrackBits(0), fMinTPCcls(0), fRequestSPDcls(0), fEtaCutMin(0), fEtaCutMax(0),fDCACut(0), fPCut(0), fPtCut(0),fYCut(0), fPtCutTOFMatching(0), fHistoCuts(0), fHistoNSelectedPos(0), fHistoNSelectedNeg(0), fHistoNMatchedPos(0), fHistoNMatchedNeg(0), fHistoEtaPhiHighPt(0), fTrack(0), fPIDResponse(0) {}
  
  AliSpectraAODTrackCuts(const char *name);
  virtual  ~AliSpectraAODTrackCuts() {} // To be implemented
  
  Bool_t IsSelected(AliAODTrack * track,Bool_t FillHistStat);
  
  void SetEta(Float_t etamin,Float_t etamax)   { fEtaCutMin = etamin;fEtaCutMax = etamax; }
  void SetDCA(Float_t dca)   { fDCACut = dca; }
  void SetP(Float_t p)       { fPCut = p; }
  void SetPt(Float_t pt)     { fPtCut = pt; }
  void SetY(Float_t y) { fYCut = y;}
  void SetPtTOFMatching(Float_t pt)     { fPtCutTOFMatching = pt; }
  void SetTrackType(UInt_t bit);
  void SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
  void SetMinTPCcls(UInt_t MinTPCcls) {fMinTPCcls=MinTPCcls;}
  void SetRequestSPDcls(Bool_t RequestSPDcls) {fRequestSPDcls=RequestSPDcls;}
  
  UInt_t GetTrackType()  const    { return fTrackBits;}
  TH1I * GetHistoCuts()      { return fHistoCuts; }
  TH1F * GetHistoNSelectedPos()      { return fHistoNSelectedPos; } 
  TH1F * GetHistoNSelectedNeg()      { return fHistoNSelectedNeg; }
  TH1F * GetHistoNMatchedPos()      { return fHistoNMatchedPos; }
  TH1F * GetHistoNMatchedNeg()      { return fHistoNMatchedNeg; }
  TH2F * GetHistoEtaPhiHighPt()      { return fHistoEtaPhiHighPt; }
  Float_t GetEtaMin()       const    { return fEtaCutMin; }
  Float_t GetEtaMax()       const    { return fEtaCutMax; }
  Float_t GetY()         const    { return fYCut; }
  Float_t GetDCA()       const    { return fDCACut; }
  Float_t GetP()         const    { return fPCut; }
  Float_t GetPt()        const    { return fPtCut; }
  Float_t GetPtTOFMatching()        const    { return fPtCutTOFMatching; }
  
  Bool_t CheckTrackType();
  Bool_t CheckTrackCuts();
  Bool_t CheckEtaCut();
  Bool_t CheckYCut(Double_t mass); // not included in standard cuts
  Bool_t CheckDCACut();
  Bool_t CheckPCut();
  Bool_t CheckPtCut();
  Bool_t CheckTOFMatching(Bool_t FillHistStat);
  void PrintCuts() const;
  
  Long64_t Merge(TCollection* list);
   
   
 private:
  
  Bool_t           fIsSelected;      // True if cuts are selected
  UInt_t           fTrackBits;       // Type of track to be used
  UInt_t           fMinTPCcls;       // min number of clusters in the TPC
  Bool_t           fRequestSPDcls;         // request a hit in the SPD
  Float_t          fEtaCutMin;          // Allowed absolute maximum value of Eta
  Float_t          fEtaCutMax;          // Allowed absolute maximum value of Eta
  Float_t          fDCACut;          // Maximum value of DCA
  Float_t          fPCut;            // Maximum value of P
  Float_t          fPtCut;           // Maximum value of Pt
  Float_t          fYCut;           // Maximum value of Y
  Float_t          fPtCutTOFMatching;           // TOF Matching
  TH1I             *fHistoCuts;       // Cuts statistics
  TH1F             *fHistoNSelectedPos;       // Selected positive tracks
  TH1F             *fHistoNSelectedNeg;       // Selected negative tracks
  TH1F             *fHistoNMatchedPos;       // Matched positive tracks
  TH1F             *fHistoNMatchedNeg;       // Matched negative tracks
  TH2F             *fHistoEtaPhiHighPt;       // EtaPhi distr at high pt (>1.5 GeV/c)
  AliAODTrack      *fTrack;           //! Track pointer
  AliPIDResponse   *fPIDResponse;     // ! PID response object
  static const char * kBinLabel[]; // labels of stat histo

   
  AliSpectraAODTrackCuts(const AliSpectraAODTrackCuts&);
  AliSpectraAODTrackCuts& operator=(const AliSpectraAODTrackCuts&);
   
  ClassDef(AliSpectraAODTrackCuts, 3);
};
#endif

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