]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnCutV0.h
Updated macro for K* pA analysis
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCutV0.h
1 #ifndef ALIRSNCUTV0_H
2 #define ALIRSNCUTV0_H
3
4 #include <TMath.h>
5 #include <TString.h>
6
7 #include "AliRsnCut.h"
8 #include "AliPIDResponse.h"
9
10 #include "AliRsnCutTrackQuality.h"
11
12 class AliESDtrack;
13 class AliAODTrack;
14
15
16 class AliRsnCutV0 : public AliRsnCut {
17
18 public:
19
20
21    AliRsnCutV0(const char *name = "AliRsnCutV0", Int_t hypothesis = kLambda0, AliPID::EParticleType pid = AliPID::kProton, AliPID::EParticleType pid2 = AliPID::kPion);
22    AliRsnCutV0(const AliRsnCutV0 &copy);
23    AliRsnCutV0 &operator=(const AliRsnCutV0 &copy);
24    virtual ~AliRsnCutV0() { }
25
26    void           SetESDtrackCuts(AliESDtrackCuts *cuts)   {fESDtrackCuts = cuts;}
27    void           SetHypothesis(Int_t code);
28    void           SetTolerance(Double_t value)             {fTolerance = value;}
29    void           SetMaxDCAVertex(Double_t value)          {fMaxDCAVertex = value;}
30    void           SetMinCosPointingAngle(Double_t value)   {fMinCosPointAngle = value;}
31    void           SetMaxDaughtersDCA(Double_t value)       {fMaxDaughtersDCA = value;}
32    void           SetMinTPCcluster(Int_t value)            {fMinTPCcluster = value;}
33    void           SetMaxRapidity(Double_t value)           {fMaxRapidity = value;}
34    
35    void           SetPIDCutProton(Double_t value)          {fPIDCutProton = value;}
36    void           SetPIDCutPion(Double_t value)            {fPIDCutPion = value;}
37   
38
39    AliRsnCutTrackQuality *CutQuality()                     {return &fCutQuality;}
40    void           SetAODTestFilterBit(Int_t value)         {fAODTestFilterBit = value;}
41    Int_t          GetAODTestFilterBit()                    {return fAODTestFilterBit;}
42
43    virtual Bool_t IsSelected(TObject *obj);
44    virtual void   Print(const Option_t *option = "") const;
45
46 protected:
47
48    Bool_t      CheckESD(AliESDv0 *track);
49    Bool_t      CheckAOD(AliAODv0 *track);
50
51    
52    Int_t            fHypothesis;       // PDG code corresponding to expected V0 hypothesis
53    Double_t         fMass;             // mass corresponding to hypothesis
54    Double_t         fTolerance;        // tolerance in the difference between computed and expected mass
55    Double_t         fMaxDCAVertex;     // max allowed DCA from primary vertex
56    Double_t         fMinCosPointAngle; // min allowed cosine of pointing angle
57    Double_t         fMaxDaughtersDCA;  // max allowed DCA between the two daughers
58    Int_t            fMinTPCcluster;    // min allowed TOC cluster
59    Double_t         fMaxRapidity;      // max allowed V0 rapidity
60    
61    AliPID::EParticleType fPID;         // PID for track
62    AliPID::EParticleType fPID2;        // PID for track
63
64    Double_t         fPIDCutProton;        // nsigmas for protons
65    Double_t         fPIDCutPion;          // nsigmas for pions
66    
67    AliESDtrackCuts *fESDtrackCuts;     // quality cuts for v0 daughters
68    
69    AliRsnCutTrackQuality fCutQuality;  // track quality cut
70    
71    Int_t            fAODTestFilterBit; // test filter bit for AODs
72    
73    ClassDef(AliRsnCutV0, 1)
74 };
75
76 //__________________________________________________________________________________________________
77 inline void AliRsnCutV0::SetHypothesis(Int_t code)
78 {
79 //
80 // Assign a V0 species hypothesis, which also assign the expected mass
81 //
82
83    fHypothesis = code;
84
85    switch (fHypothesis) {
86       case kLambda0:
87          fMass = 1.11568;
88          break;
89       case kLambda0Bar:
90          fMass = 1.11568;
91          break;
92       case kK0Short:
93          fMass = 0.497614;
94          break;
95       default:
96          AliError(Form("You are setting an unexpected hypothesis: %d", fHypothesis));
97          fMass = 1E20;
98    }
99 }
100
101 #endif