]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraBothTrackCuts.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / AliSpectraBothTrackCuts.h
1 #ifndef ALISPECTRABOTHTRACKCUTS_H
2 #define ALISPECTRABOTHTRACKCUTS_H
3
4 /*  See cxx source for full Copyright notice */
5
6 //-------------------------------------------------------------------------
7 //                      AliSpectraBothTrackCuts
8 //
9 //
10 //
11 //
12 // Authors: Michele Floris, CERN, Philip Versteeg, UU, Redmer Bertens, UU
13 //-------------------------------------------------------------------------
14
15 class AliAODEvent;
16 //class AliSpectraBothHistoManager;
17 class TH1I;
18 class TH3F;     
19 class AliAODMCParticle;
20 class AliAODTrack;
21 class  AliESDtrackCuts;
22 #include "AliSpectraBothHistoManager.h"
23 #include "TNamed.h"
24 #include "AliESDtrackCuts.h"
25  
26 using namespace AliSpectraNameSpaceBoth;
27
28 class AliSpectraBothTrackCuts : public TNamed
29 {
30  public:
31   
32   enum { kTrkBit = 0, kTrkCuts, kTrkEta, kTrkDCA, kTrkP, kTrkPt,kTrkPtTOF,kTOFMatching,kTrTOFout,kTrTIME,kTrTOFpid,kAccepted,kNTrkCuts};
33   enum {kAODobject=0,kESDobject,kotherobject};
34   
35  AliSpectraBothTrackCuts() : TNamed(), fIsSelected(0), fTrackBits(0), fMinTPCcls(0), fEtaCutMin(0), fEtaCutMax(0),fDCACut(0) ,fPCut(0), fPtCut(0),fYCutMax(0),fYCutMin(0), fPtCutTOFMatching(0),fAODtrack(0), fHashitinSPD1(0),fusedadditionalcuts(kTRUE),
36  fPtCutTOFMatchingPion(-1.0),fPtCutTOFMatchingKaon(-1.0),fPtCutTOFMatchingProton(-1.0),fUseTypeDependedTOFCut(kFALSE),fMakeQAhisto(kFALSE),
37 fHistoCuts(0), fHistoNSelectedPos(0), fHistoNSelectedNeg(0), fHistoNMatchedPos(0), fHistoNMatchedNeg(0), fHistoEtaPhiHighPt(0), fHistoNclustersITS(0),
38 fHistoDCAzQA(0),fHistoNclustersQA(0),fHistochi2perNDFQA(0),
39 fTrack(0),fCuts(0) {}
40   
41   AliSpectraBothTrackCuts(const char *name);
42   virtual  ~AliSpectraBothTrackCuts(); 
43   
44   Bool_t IsSelected(AliVTrack * track,Bool_t FillHistStat);
45   
46   void SetTrackType(UInt_t bit);
47   Bool_t CheckTrackType();
48   Bool_t CheckTrackCuts();
49   Bool_t CheckEtaCut();
50   Bool_t CheckYCut(BothParticleSpecies_t specie); // not included in standard cuts
51   Bool_t CheckDCACut();
52   Bool_t CheckPCut();
53   Bool_t CheckPtCut();
54   Bool_t CheckTOFMatching(Bool_t FillHistStat);
55   Bool_t CheckTOFMatchingParticleType(Int_t type);
56         
57   void PrintCuts() const;
58   
59    UInt_t GetTrackType()  const    { return fTrackBits;}
60    TH1I * GetHistoCuts()      { return fHistoCuts; }
61    TH1F * GetHistoNSelectedPos()      { return fHistoNSelectedPos; } 
62    TH1F * GetHistoNSelectedNeg()      { return fHistoNSelectedNeg; }
63    TH1F * GetHistoNMatchedPos()      { return fHistoNMatchedPos; }
64    TH1F * GetHistoNMatchedNeg()      { return fHistoNMatchedNeg; }
65    TH2F * GetHistoEtaPhiHighPt()      { return fHistoEtaPhiHighPt; }
66    TH1F * GetHistoNclustersITS()  {return fHistoNclustersITS;} 
67    TH3F * GetHistoDCAzQA() {return fHistoDCAzQA;}
68    TH3F * GetHistoNclustersQA() {return fHistoNclustersQA ;}
69    TH3F * GetHistochi2perNDFQA() {return fHistochi2perNDFQA; }
70    Bool_t GetUseTypeDependedTOFCut () {return fUseTypeDependedTOFCut;}
71    Bool_t GetMakeQAhisto () {return fMakeQAhisto;}
72
73    AliESDtrackCuts* GetTrackCuts(){return fCuts;}
74                          
75
76    void SetEta(Float_t etamin,Float_t etamax)   { fEtaCutMin = etamin;fEtaCutMax = etamax; }
77    void SetDCA(Float_t dca)   { fDCACut = dca; }
78    void SetP(Float_t p)       { fPCut = p; }
79    void SetPt(Float_t pt)     { fPtCut = pt; }
80    void SetY(Float_t ymax,Float_t ymin) { fYCutMax = ymax;fYCutMin=ymin;}
81    void SetPtTOFMatching(Float_t pt)     { fPtCutTOFMatching = pt; fUseTypeDependedTOFCut=kFALSE;}
82    void SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
83    void SetMinTPCcls(UInt_t MinTPCcls) {fMinTPCcls=MinTPCcls;}
84    void SetHashitinSPD1 (Bool_t value) {fHashitinSPD1=value;}   
85    void SetUsedAdditionalCuts (Bool_t value) {fusedadditionalcuts=value;}
86    void SetPtTOFMatchingPartDepended(Float_t pion,Float_t kaon,Float_t proton);
87    void  SetMakeQAhisto(Bool_t flag){fMakeQAhisto=flag;}
88      Float_t GetEtaMin()       const    { return fEtaCutMin; }
89    Float_t GetEtaMax()       const    { return fEtaCutMax; }
90    Float_t GetYMax()         const    { return fYCutMax; }
91    Float_t GetYMin()         const    { return fYCutMin; }
92    Float_t GetY()         const    { return 0.5*(fYCutMax-fYCutMin); }
93    Float_t GetDCA()       const    { return fDCACut; }
94    Float_t GetP()         const    { return fPCut; }
95    Float_t GetPt()        const    { return fPtCut; }
96    Float_t GetPtTOFMatching()        const    { return fPtCutTOFMatching; } 
97    Float_t GetPtTOFMatchingPion()        const    { return fPtCutTOFMatchingPion; } 
98    Float_t GetPtTOFMatchingKaon()        const    { return fPtCutTOFMatchingKaon; } 
99    Float_t GetPtTOFMatchingProton()        const    { return fPtCutTOFMatchingProton; } 
100
101    Long64_t Merge(TCollection* list);
102    void SetAliESDtrackCuts(AliESDtrackCuts*  cuts ){fCuts=cuts;}
103    void InitHisto();     
104  private:
105    
106    Bool_t           fIsSelected;      // True if cuts are selected
107    UInt_t           fTrackBits;       // Type of track to be used
108    UInt_t           fMinTPCcls;       // min number of clusters in the TPC
109    Float_t          fEtaCutMin;          // Allowed absolute maximum value of Eta
110    Float_t          fEtaCutMax;          // Allowed absolute maximum value of Eta
111    Float_t          fDCACut;          // Maximum value of DCA
112    Float_t          fPCut;            // Maximum value of P
113    Float_t          fPtCut;           // Maximum value of Pt
114    Float_t          fYCutMax;           // Maximum value of Y 
115    Float_t          fYCutMin;           // Minimum value of Y
116    Float_t          fPtCutTOFMatching;           // TOF Matching
117    Int_t             fAODtrack; // 0 ESD track connected , 1 AOD track conected , else nothing
118    Bool_t           fHashitinSPD1; // Check if SPD1 has a hit   
119    Bool_t          fusedadditionalcuts;          //If set to true the TPCrefit, ITSrefit, SPDany and Ncluster cut is check      
120    Float_t          fPtCutTOFMatchingPion; // TOF Matching cut for pions
121    Float_t          fPtCutTOFMatchingKaon; // TOF Matching cut for kaons
122    Float_t          fPtCutTOFMatchingProton;    // TOF Matching cut for protons 
123    Bool_t           fUseTypeDependedTOFCut;   // if yes use particle depened tof cut 
124    Bool_t           fMakeQAhisto;    //if true QA histo are made                
125    TH1I             *fHistoCuts;       // Cuts statistics
126    TH1F             *fHistoNSelectedPos;       // Selected positive tracks
127    TH1F             *fHistoNSelectedNeg;       // Selected negative tracks
128    TH1F             *fHistoNMatchedPos;       // Matched positive tracks
129    TH1F             *fHistoNMatchedNeg;       // Matched negative tracks
130    TH2F             *fHistoEtaPhiHighPt;       // EtaPhi distr at high pt (>1.5 GeV/c)
131    TH1F            *fHistoNclustersITS;      // Number of clusters in ITS 
132    TH3F            *fHistoDCAzQA;    //QA histo for DCZ monitoring histo
133    TH3F            *fHistoNclustersQA;    //QA histo for N clusters QA monitoring histo
134    TH3F            *fHistochi2perNDFQA;    //QA histo for  chi2/ndf 
135                                                  
136                 
137    AliVTrack      *fTrack;           //! Track pointer
138    AliESDtrackCuts *fCuts;      //! cuts  
139    static const char * kBinLabel[]; // labels of stat histo
140
141    
142    AliSpectraBothTrackCuts(const AliSpectraBothTrackCuts&);
143    AliSpectraBothTrackCuts& operator=(const AliSpectraBothTrackCuts&);
144    void ConfigurePtTOFCut();    
145   
146    ClassDef(AliSpectraBothTrackCuts, 8);
147 };
148 #endif