]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliAODPairCut.h
e4e97398ffd46f8da68fad451699322096fc7f4a
[u/mrichter/AliRoot.git] / ANALYSIS / AliAODPairCut.h
1 #ifndef ALIAODPAIRCUT_H
2 #define ALIAODPAIRCUT_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 #include <TNamed.h> 
11 #include "AliAODPairBaseCut.h"
12
13 class AliAODParticleCut;
14 class AliAODPairBaseCut;
15
16 /******************************************************************/
17
18 class AliAODPairCut: public TNamed
19 {
20  public:
21   AliAODPairCut();
22   AliAODPairCut(const AliAODPairCut& in);
23   AliAODPairCut& operator = (const AliAODPairCut& in);
24   
25   virtual ~AliAODPairCut();
26   virtual Bool_t Rejected(AliAODPair* pair) const;
27   virtual Bool_t PassPairProp(AliAODPair* pair) const;
28      
29   virtual Bool_t IsEmpty() const {return kFALSE;}
30   void SetFirstPartCut(AliAODParticleCut* cut);  //sets the cut on the first particle
31   void SetSecondPartCut(AliAODParticleCut* cut); //sets the cut on the second particle
32   
33   void SetPartCut(AliAODParticleCut* cut);//sets the the same cut on both particles
34   
35   virtual void AddBasePairCut(AliAODPairBaseCut* cut);
36   
37   virtual void Print();
38   
39   void SetQInvRange(Double_t min, Double_t max);
40   void SetKtRange(Double_t min, Double_t max);
41   void SetKStarRange(Double_t min, Double_t max);
42   void SetQOutCMSLRange(Double_t min, Double_t max);
43   void SetQSideCMSLRange(Double_t min, Double_t max);
44   void SetQLongCMSLRange(Double_t min, Double_t max);
45   void SetAvSeparationRange(Double_t min,Double_t max = 10e5);//Anti-Merging Cut
46   void SetITSSeparation(Int_t layer, Double_t drphi=0.01,Double_t dz = 0.08);//Anti-Merging Cut for first pixel layer
47   void SetClusterOverlapRange(Double_t min,Double_t max);//Anti-Splitting Max range -0.5 1.0
48       
49   AliAODParticleCut* GetFirstPartCut() const {return fFirstPartCut;}
50   AliAODParticleCut* GetSecondPartCut() const {return fSecondPartCut;}
51   
52  protected:
53   AliAODParticleCut*      fFirstPartCut;//cut on first particle in pair
54   AliAODParticleCut*      fSecondPartCut;//cut on second particle in pair
55   
56   AliAODPairBaseCut** fCuts; //! array of poiters to base cuts
57   Int_t fNCuts;//Number of cuts in fCuts array
58   
59   
60   AliAODPairBaseCut* FindCut(AliAODPairBaseCut::EAODPairCutProperty cut);
61  private:
62   static const Int_t fgkMaxCuts; // Max number of cuts
63   ClassDef(AliAODPairCut,2)
64 };
65 /******************************************************************/
66 /******************************************************************/
67 /******************************************************************/
68
69 class AliAODPairEmptyCut:  public AliAODPairCut
70 {
71   //Empty - it passes possitively all particles - it means returns always False
72   //Class describing cut on pairs of particles
73  public:
74   AliAODPairEmptyCut(){};
75   AliAODPairEmptyCut(const AliAODPairEmptyCut& in):AliAODPairCut(in){};
76   virtual ~AliAODPairEmptyCut(){};
77   
78   Bool_t Rejected(AliAODPair*) const {return kFALSE;} //accpept everything
79   Bool_t IsEmpty() const {return kTRUE;}
80   
81   ClassDef(AliAODPairEmptyCut,1)
82 };
83
84
85 #endif