c4992c66486fb56a80289932cbf4099fcbdd901e
[u/mrichter/AliRoot.git] / ANALYSIS / AliESDpidCuts.h
1 #ifndef ALIESDPIDCUTS_H
2 #define ALIESDPIDCUTS_H
3
4 #ifndef ALIANALYSISCUTS_H
5 #include "AliAnalysisCuts.h"
6 #endif
7
8 #ifndef ALIPID_H
9 #include "AliPID.h"
10 #endif
11
12 class TCollection;
13 class TH1F;
14 class TH1I;
15 class TH2I;
16 class TList;
17 class AliESDtrack;
18 class AliTPCpidESD;
19 class AliTOFpidESD;
20
21 class AliESDpidCuts : public AliAnalysisCuts{
22   enum{
23     kHasHistograms = BIT(17)
24   };
25   public: 
26     AliESDpidCuts(const Char_t *name = "AliESDpidCuts", const Char_t *title = "");
27     AliESDpidCuts(const AliESDpidCuts &ref);  // Copy constructor
28     AliESDpidCuts &operator=(const AliESDpidCuts &ref);
29     virtual ~AliESDpidCuts();
30
31     virtual void Copy(TObject &c) const;
32     virtual Long64_t Merge(TCollection *coll);
33
34     Bool_t HasHistograms() const { return TestBit(kHasHistograms); }
35     void DefineHistograms(Color_t color = kRed);
36     void DrawHistograms();
37     void SaveHistograms(const Char_t *location = NULL);
38     virtual Bool_t IsSelected(TObject *o);
39     virtual Bool_t IsSelected(TList *) { return kTRUE; }
40     virtual Bool_t AcceptTrack(const AliESDtrack *track);
41     
42     void SetTPCclusterRatioCut(Float_t clr) { fCutTPCclusterRatio = clr; }
43     void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){ fCutTPCnSigma[itype] = nSigma; }
44     void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){ fCutTOFnSigma[itype] = nSigma; }
45     void SetMinMomentumTOF(Float_t mom) { fMinMomentumTOF = mom; }
46   
47   protected:
48     static const Int_t kNcuts;                      // Number of Cuts
49     AliTPCpidESD *fTPCpid;                          //! TPC PID (n-sigma cut)
50     AliTOFpidESD *fTOFpid;                          //! TOF PID (n-sigma-cut)
51     Float_t fCutTPCnSigma[AliPID::kSPECIES];        // Species dependent cut on the distance to the TPC dE/dx line
52     Float_t fCutTOFnSigma[AliPID::kSPECIES];        // Species dependent cut on the distance to the TOF calculated time of flight line
53     Float_t fCutTPCclusterRatio;                    // Cut on Ratio of found clusters with repect to findable clusters in the TPC
54     Float_t fMinMomentumTOF;                        // Apply TOF PID only above a certain momentum
55
56     //------------------------------------------
57     // QA histograms
58     TH1I *fHcutStatistics;                       // Cut Statistics
59     TH2I *fHcutCorrelation;                      // Cut Correlation
60     TH1F *fHclusterRatio[2];                     // TPC cluster Ratio
61     TH1F *fHnSigmaTPC[AliPID::kSPECIES][2];      // TPC n-sigma cut
62     TH1F *fHnSigmaTOF[AliPID::kSPECIES][2];      // TOF n-sigma cut
63     //------------------------------------------
64     
65     ClassDef(AliESDpidCuts, 1)
66 };
67 #endif