1 #ifndef ALIESDPIDCUTS_H
2 #define ALIESDPIDCUTS_H
4 #ifndef ALIANALYSISCUTS_H
5 #include "AliAnalysisCuts.h"
21 class AliESDpidCuts : public AliAnalysisCuts{
23 kHasHistograms = BIT(17)
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();
31 virtual void Copy(TObject &c) const;
32 virtual Long64_t Merge(TCollection *coll);
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);
42 void SetTPCclusterRatioCut(Float_t clr) { fCutTPCclusterRatio = clr; }
43 inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma);
44 inline void SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma);
45 inline void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma);
46 inline void SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma);
47 void SetMinMomentumTOF(Float_t mom) { fMinMomentumTOF = mom; }
50 static const Int_t kNcuts; // Number of Cuts
51 AliTPCpidESD *fTPCpid; //! TPC PID (n-sigma cut)
52 AliTOFpidESD *fTOFpid; //! TOF PID (n-sigma-cut)
53 Char_t fTPCsigmaCutRequired; // Sigma cut Requirement for TPC and Particle Species
54 Char_t fTOFsigmaCutRequired; // Sigma cut Requirement for TOF and Particle Species
55 Float_t fCutTPCnSigma[AliPID::kSPECIES * 2]; // Species dependent cut on the distance to the TPC dE/dx line
56 Float_t fCutTOFnSigma[AliPID::kSPECIES]; // Species dependent cut on the distance to the TOF calculated time of flight line
57 Float_t fCutTPCclusterRatio; // Cut on Ratio of found clusters with repect to findable clusters in the TPC
58 Float_t fMinMomentumTOF; // Apply TOF PID only above a certain momentum
60 //------------------------------------------
62 TH1I *fHcutStatistics; // Cut Statistics
63 TH2I *fHcutCorrelation; // Cut Correlation
64 TH1F *fHclusterRatio[2]; // TPC cluster Ratio
65 TH1F *fHnSigmaTPC[AliPID::kSPECIES][2]; // TPC n-sigma cut
66 TH1F *fHnSigmaTOF[AliPID::kSPECIES][2]; // TOF n-sigma cut
67 //------------------------------------------
69 ClassDef(AliESDpidCuts, 1)
72 //_____________________________________________________________________
73 void AliESDpidCuts::SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){
75 // symmetric sigma cut for TPC PID
77 fCutTPCnSigma[itype * 2] = -nSigma;
78 fCutTPCnSigma[itype * 2 + 1] = nSigma;
79 fTPCsigmaCutRequired |= 1 << static_cast<Int_t >(itype);
82 //_____________________________________________________________________
83 void AliESDpidCuts::SetTPCnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma){
85 // assymetric sigma cut for TPC PID
87 fCutTPCnSigma[itype * 2] = negSigma;
88 fCutTPCnSigma[itype * 2 + 1] = posSigma;
89 fTPCsigmaCutRequired |= 1 << static_cast<Int_t >(itype);
92 //_____________________________________________________________________
93 void AliESDpidCuts::SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t nSigma){
95 // symmetric sigma cut for TOF PID
97 fCutTOFnSigma[itype * 2] = -nSigma;
98 fCutTOFnSigma[itype * 2 + 1] = nSigma;
99 fTOFsigmaCutRequired |= 1 << static_cast<Int_t >(itype);
102 //_____________________________________________________________________
103 void AliESDpidCuts::SetTOFnSigmaCut(AliPID::EParticleType itype, Float_t negSigma, Float_t posSigma){
105 // assymetric sigma cut for TOF PID
107 fCutTOFnSigma[itype * 2] = negSigma;
108 fCutTOFnSigma[itype * 2 + 1] = posSigma;
109 fTOFsigmaCutRequired |= 1 << static_cast<Int_t >(itype);