1 #ifndef ALISPECTRABOTHTRACKCUTS_H
2 #define ALISPECTRABOTHTRACKCUTS_H
4 /* See cxx source for full Copyright notice */
6 //-------------------------------------------------------------------------
7 // AliSpectraBothTrackCuts
12 // Authors: Michele Floris, CERN, Philip Versteeg, UU, Redmer Bertens, UU
13 //-------------------------------------------------------------------------
16 //class AliSpectraBothHistoManager;
19 class AliAODMCParticle;
21 class AliESDtrackCuts;
22 #include "AliSpectraBothHistoManager.h"
24 #include "AliESDtrackCuts.h"
26 using namespace AliSpectraNameSpaceBoth;
28 class AliSpectraBothTrackCuts : public TNamed
32 enum { kTrkBit = 0, kTrkCuts, kTrkEta, kTrkDCA, kTrkP, kTrkPt,kTrkPtTOF,kTOFMatching,kTrTOFout,kTrTIME,kTrTOFpid,kAccepted,kNTrkCuts};
33 enum {kAODobject=0,kESDobject,kotherobject};
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 fHistoCuts(0), fHistoNSelectedPos(0), fHistoNSelectedNeg(0), fHistoNMatchedPos(0), fHistoNMatchedNeg(0), fHistoEtaPhiHighPt(0), fHistoNclustersITS(0),
37 fHistoDCAzQA(0),fHistoNclustersQA(0),fHistochi2perNDFQA(0),
40 AliSpectraBothTrackCuts(const char *name);
41 virtual ~AliSpectraBothTrackCuts();
43 Bool_t IsSelected(AliVTrack * track,Bool_t FillHistStat);
45 void SetTrackType(UInt_t bit);
46 Bool_t CheckTrackType();
47 Bool_t CheckTrackCuts();
49 Bool_t CheckYCut(BothParticleSpecies_t specie); // not included in standard cuts
53 Bool_t CheckTOFMatching(Bool_t FillHistStat);
54 void PrintCuts() const;
56 UInt_t GetTrackType() const { return fTrackBits;}
57 TH1I * GetHistoCuts() { return fHistoCuts; }
58 TH1F * GetHistoNSelectedPos() { return fHistoNSelectedPos; }
59 TH1F * GetHistoNSelectedNeg() { return fHistoNSelectedNeg; }
60 TH1F * GetHistoNMatchedPos() { return fHistoNMatchedPos; }
61 TH1F * GetHistoNMatchedNeg() { return fHistoNMatchedNeg; }
62 TH2F * GetHistoEtaPhiHighPt() { return fHistoEtaPhiHighPt; }
63 TH1F * GetHistoNclustersITS() {return fHistoNclustersITS;}
64 TH3F * GetHistoDCAzQA() {return fHistoDCAzQA;}
65 TH3F * GetHistoNclustersQA() {return fHistoNclustersQA ;}
66 TH3F * GetHistochi2perNDFQA() {return fHistochi2perNDFQA; }
68 void SetEta(Float_t etamin,Float_t etamax) { fEtaCutMin = etamin;fEtaCutMax = etamax; }
69 void SetDCA(Float_t dca) { fDCACut = dca; }
70 void SetP(Float_t p) { fPCut = p; }
71 void SetPt(Float_t pt) { fPtCut = pt; }
72 void SetY(Float_t ymax,Float_t ymin) { fYCutMax = ymax;fYCutMin=ymin;}
73 void SetPtTOFMatching(Float_t pt) { fPtCutTOFMatching = pt; }
74 void SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
75 void SetMinTPCcls(UInt_t MinTPCcls) {fMinTPCcls=MinTPCcls;}
76 void SetHashitinSPD1 (Bool_t value) {fHashitinSPD1=value;}
77 void SetUsedAdditionalCuts (Bool_t value) {fusedadditionalcuts=value;}
78 Float_t GetEtaMin() const { return fEtaCutMin; }
79 Float_t GetEtaMax() const { return fEtaCutMax; }
80 Float_t GetYMax() const { return fYCutMax; }
81 Float_t GetYMin() const { return fYCutMin; }
82 Float_t GetY() const { return 0.5*(fYCutMax-fYCutMin); }
83 Float_t GetDCA() const { return fDCACut; }
84 Float_t GetP() const { return fPCut; }
85 Float_t GetPt() const { return fPtCut; }
86 Float_t GetPtTOFMatching() const { return fPtCutTOFMatching; }
87 Long64_t Merge(TCollection* list);
88 void SetAliESDtrackCuts(AliESDtrackCuts* cuts ){fCuts=cuts;}
92 Bool_t fIsSelected; // True if cuts are selected
93 UInt_t fTrackBits; // Type of track to be used
94 UInt_t fMinTPCcls; // min number of clusters in the TPC
95 Float_t fEtaCutMin; // Allowed absolute maximum value of Eta
96 Float_t fEtaCutMax; // Allowed absolute maximum value of Eta
97 Float_t fDCACut; // Maximum value of DCA
98 Float_t fPCut; // Maximum value of P
99 Float_t fPtCut; // Maximum value of Pt
100 Float_t fYCutMax; // Maximum value of Y
101 Float_t fYCutMin; // Minimum value of Y
102 Float_t fPtCutTOFMatching; // TOF Matching
103 Int_t fAODtrack; // 0 ESD track connected , 1 AOD track conected , else nothing
104 Bool_t fHashitinSPD1; // Check if SPD1 has a hit
105 Bool_t fusedadditionalcuts; //If set to true the TPCrefit, ITSrefit, SPDany and Ncluster cut is check
106 TH1I *fHistoCuts; // Cuts statistics
107 TH1F *fHistoNSelectedPos; // Selected positive tracks
108 TH1F *fHistoNSelectedNeg; // Selected negative tracks
109 TH1F *fHistoNMatchedPos; // Matched positive tracks
110 TH1F *fHistoNMatchedNeg; // Matched negative tracks
111 TH2F *fHistoEtaPhiHighPt; // EtaPhi distr at high pt (>1.5 GeV/c)
112 TH1F *fHistoNclustersITS; // Number of clusters in ITS
113 TH3F *fHistoDCAzQA; //QA histo for DCZ monitoring histo
114 TH3F *fHistoNclustersQA; //QA histo for N clusters QA monitoring histo
115 TH3F *fHistochi2perNDFQA; //QA histo for chi2/ndf
118 AliVTrack *fTrack; //! Track pointer
119 AliESDtrackCuts *fCuts; //! cuts
120 static const char * kBinLabel[]; // labels of stat histo
123 AliSpectraBothTrackCuts(const AliSpectraBothTrackCuts&);
124 AliSpectraBothTrackCuts& operator=(const AliSpectraBothTrackCuts&);
126 ClassDef(AliSpectraBothTrackCuts, 6);