Adding cuts for comparison studies (Marian)
[u/mrichter/AliRoot.git] / PWG1 / AliMCInfoCuts.h
1 #ifndef ALIMCINFOCUTS_H
2 #define ALIMCINFOCUTS_H
3
4 //------------------------------------------------------------------------------
5 // Class to keep selection cuts for MC tracks. 
6 // 
7 // Author: J.Otwinowski 04/02/2008 
8 //------------------------------------------------------------------------------
9
10 #include "AliAnalysisCuts.h"
11
12 class TArrayI;
13
14 class AliMCInfoCuts : public AliAnalysisCuts
15 {
16 public:
17   AliMCInfoCuts(const Char_t* name ="AliMCInfoCuts", const Char_t *title ="");
18   virtual ~AliMCInfoCuts(); 
19  
20   // setters 
21   void SetMinRowsWithDigits(const Int_t min=0) {fMinRowsWithDigits = min;}
22   void SetMaxR(const Float_t max=1e99)         {fMaxR = max;}
23   void SetMaxVz(const Float_t max=1e99)        {fMaxVz = max;}
24   void SetRangeTPCSignal(const Float_t min=0, const Float_t max=1e99)  {fMinTPCSignal = min; fMaxTPCSignal = max;}
25
26   // getters 
27   Int_t GetMinRowsWithDigits() const {return fMinRowsWithDigits;}
28   Float_t GetMaxR()            const {return fMaxR;}
29   Float_t GetMaxVz()           const {return fMaxVz;}
30   Float_t GetMinTPCSignal()    const {return fMinTPCSignal;}
31   Float_t GetMaxTPCSignal()    const {return fMaxTPCSignal;}
32
33   Float_t GetEP()  const       {return ep;}
34   Float_t GetEM()  const       {return em;}
35   Float_t GetMuP() const       {return mup;}
36   Float_t GetMuM() const       {return mum;}
37   Float_t GetPiP() const       {return pip;}
38   Float_t GetPiM() const       {return pim;}
39   Float_t GetKP()  const       {return kp;}
40   Float_t GetKM()  const       {return km;}
41   Float_t GetProt() const      {return prot;}
42   Float_t GetProtBar() const   {return protbar;}
43  
44   // cuts init function
45   void Init();
46
47   // check MC tracks
48   Bool_t IsSelected(TObject *) {return kTRUE;}
49
50   // add particle to array 
51   void AddPdgParticle(Int_t idx=-1, Int_t pdgcode=0) const;
52
53   // check particle in array 
54   Bool_t IsPdgParticle(Int_t pdgcode=0) const;
55
56   // Merge output objects (needed by PROOF) 
57   virtual Long64_t Merge(TCollection* list);
58
59 private:
60   Int_t fMinRowsWithDigits; // min. number of TPC raws with digits  
61   Float_t fMaxR;            // max. R distance from MC vertex 
62   Float_t fMaxVz;           // max. Z distance from MC vertex
63   Float_t fMinTPCSignal;    // min. TPC Signal calculated from Bethe Bloch formula
64   Float_t fMaxTPCSignal;    // max. TPC Signal calculated from Bethe Bloch formula
65  
66   TArrayI* aTrackParticles; // array of tracked particles 
67
68   // PDG tracked particles (later added to aTrackParticles)
69   enum enumData {
70     kNParticles = 10, // number of particles below
71     ep = 11,
72     em = -11,
73     mup = 13,
74     mum = -13,
75     pip = 211,
76     pim = -211,
77     kp = 321,
78     km = -321,
79     prot = 2212,
80     protbar = -2212
81   };
82
83   AliMCInfoCuts(const AliMCInfoCuts&); // not implemented
84   AliMCInfoCuts& operator=(const AliMCInfoCuts&); // not implemented
85
86   ClassDef(AliMCInfoCuts, 1)
87 };
88
89 #endif // ALIMCINFOCUTS_H