Particle, Particle Cut moved to ANALYSIS
[u/mrichter/AliRoot.git] / HBTAN / AliHBTPairCut.h
1 #ifndef ALIHBTPAIRCUT_H
2 #define ALIHBTPAIRCUT_H
3
4 /* $Id$ */
5
6 //Piotr Skowronski@cern.ch
7 //Class implements cut on the pair of particles
8 //
9 //more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html
10  
11 #include "AliHBTPair.h"
12
13 class AliHBTParticleCut;
14 class AliHbtBasePairCut;
15
16 enum AliHBTPairCutProperty
17 {
18   kHbtPairCutPropQInv, //Q invariant
19   kHbtPairCutPropKt,
20   kHbtPairCutPropKStar,
21   kHbtPairCutPropQSideLCMS,
22   kHbtPairCutPropQOutLCMS,
23   kHbtPairCutPropQLongLCMS,
24   kHbtPairCutPropDeltaPhi,
25   kHbtPairCutPropDeltaTheta,
26   kHbtPairCutPropDeltaP,
27   kHbtPairCutPropDeltaPt,
28   kHbtPairCutPropAvSepar,
29   kHbtPairCutPropSepar,
30   kHbtPairCutPropClOverlap,
31   kHbtPairCutPropPixelSepar,
32   kHbtPairCutPropNone
33 };
34 /******************************************************************/
35
36 class AliHBTPairCut: public TNamed
37 {
38  public:
39   AliHBTPairCut();
40   AliHBTPairCut(const AliHBTPairCut& in);
41   AliHBTPairCut& operator = (const AliHBTPairCut& in);
42   
43   virtual ~AliHBTPairCut();
44   virtual Bool_t Pass(AliHBTPair* pair) const;
45   virtual Bool_t PassPairProp(AliHBTPair* pair) const;
46      
47   virtual Bool_t IsEmpty() const {return kFALSE;}
48   void SetFirstPartCut(AliHBTParticleCut* cut);  //sets the cut on the first particle
49   void SetSecondPartCut(AliHBTParticleCut* cut); //sets the cut on the second particle
50   
51   void SetPartCut(AliHBTParticleCut* cut);//sets the the same cut on both particles
52   
53   virtual void AddBasePairCut(AliHbtBasePairCut* cut);
54   
55   virtual void Print();
56   
57   void SetQInvRange(Double_t min, Double_t max);
58   void SetKtRange(Double_t min, Double_t max);
59   void SetKStarRange(Double_t min, Double_t max);
60   void SetQOutCMSLRange(Double_t min, Double_t max);
61   void SetQSideCMSLRange(Double_t min, Double_t max);
62   void SetQLongCMSLRange(Double_t min, Double_t max);
63   void SetAvSeparationRange(Double_t min,Double_t max = 10e5);//Anti-Merging Cut
64   void SetITSSeparation(Int_t layer, Double_t drphi=0.01,Double_t dz = 0.08);//Anti-Merging Cut for first pixel layer
65   void SetClusterOverlapRange(Double_t min,Double_t max);//Anti-Splitting Max range -0.5 1.0
66       
67   AliHBTParticleCut* GetFirstPartCut() const {return fFirstPartCut;}
68   AliHBTParticleCut* GetSecondPartCut() const {return fSecondPartCut;}
69   
70  protected:
71   AliHBTParticleCut*      fFirstPartCut;//cut on first particle in pair
72   AliHBTParticleCut*      fSecondPartCut;//cut on second particle in pair
73   
74   AliHbtBasePairCut** fCuts; //! array of poiters to base cuts
75   Int_t fNCuts;//Number of cuts in fCuts array
76   
77   
78   AliHbtBasePairCut* FindCut(AliHBTPairCutProperty cut);
79  private:
80   static const Int_t fgkMaxCuts; // Max number of cuts
81   ClassDef(AliHBTPairCut,3)
82 };
83 /******************************************************************/
84 /******************************************************************/
85 /******************************************************************/
86 #endif