Coverity fix
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutPIDNSigma.h
1 #ifndef ALIRSNCUTPIDNSIGMA_H
2 #define ALIRSNCUTPIDNSIGMA_H
3
4 //
5 // Class for generalized n-sigma PID cuts with detectors.
6 // Allows to choose the detector to check and define a momentum range
7 // in order to permit different cuts in different ranges.
8 //
9
10 #include "AliPID.h"
11
12 #include "AliRsnCut.h"
13
14 class AliVTrack;
15 class AliPIDResponse;
16
17 class AliRsnCutPIDNSigma : public AliRsnCut {
18 public:
19
20    enum EDetector {
21       kITS,
22       kTPC,
23       kTOF,
24       kDetectors
25    };
26
27    AliRsnCutPIDNSigma(const char *name = "cutPIDNsigma", AliPID::EParticleType species = AliPID::kUnknown, EDetector det = kDetectors, Double_t nsigma = 3.0);
28    AliRsnCutPIDNSigma(const AliRsnCutPIDNSigma& copy);
29    AliRsnCutPIDNSigma& operator=(const AliRsnCutPIDNSigma& copy);
30    virtual ~AliRsnCutPIDNSigma() { }
31
32    void             SetRejectUnmatched(Bool_t yn = kTRUE)         {fRejectUnmatched = yn;}
33    void             SetMomentumRange(Double_t min, Double_t max)  {fMomMin = min; fMomMax = max;}
34    void             SetNSigmaRange(Double_t min, Double_t max)    {AliRsnCut::SetRangeD(min, max);}
35    void             SetSpecies(AliPID::EParticleType type)        {fSpecies = type;}
36    
37    Bool_t           IsITS(const AliVTrack *vtrack) const;
38    Bool_t           IsTPC(const AliVTrack *vtrack) const;
39    Bool_t           IsTOF(const AliVTrack *vtrack) const;
40    
41    virtual Bool_t   IsSelected(TObject *object);
42    virtual void     Print(const Option_t *option = "") const;
43
44 private:
45
46    AliPID::EParticleType   fSpecies;         //  particle species
47    EDetector               fDetector;        //  detector used for PID
48    Double_t                fMomMin;          //  momentum range (for ITS and TOF it is vertex momentum, for TPC it is inner wall)
49    Double_t                fMomMax;          //  momentum range (for ITS and TOF it is vertex momentum, for TPC it is inner wall)
50    Bool_t                  fRejectUnmatched; //  tracks not matched to this detector do pass the cut?
51
52    ClassDef(AliRsnCutPIDNSigma, 1)
53 };
54
55 inline Bool_t AliRsnCutPIDNSigma::IsITS(const AliVTrack *vtrack) const
56 {
57 //
58 // Checks if the track has the status flags required for an ITS standalone track
59 //
60
61    if ((vtrack->GetStatus() & AliESDtrack::kITSin)  == 0) return kFALSE;
62    if ((vtrack->GetStatus() & AliESDtrack::kITSpid) == 0) return kFALSE;
63
64    return kTRUE;
65 }
66
67 inline Bool_t AliRsnCutPIDNSigma::IsTPC(const AliVTrack *vtrack) const
68 {
69 //
70 // Checks if the track has the status flags required for a TPC track
71 //
72
73    if ((vtrack->GetStatus() & AliESDtrack::kTPCin) == 0) return kFALSE;
74    
75    return kTRUE;
76 }
77
78 inline Bool_t AliRsnCutPIDNSigma::IsTOF(const AliVTrack *vtrack) const
79 {
80 //
81 // Checks if the track has the status flags required for an ITS standalone track
82 //
83
84    if ((vtrack->GetStatus() & AliESDtrack::kTOFout) == 0) return kFALSE;
85    if ((vtrack->GetStatus() & AliESDtrack::kTIME)   == 0) return kFALSE;
86
87    return kTRUE;
88 }
89
90 #endif