]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliAODPairCut.h
cd43db4bb719664382560d7e6b933f2ad3e9f91f
[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 SetDeltaERange(Double_t min, Double_t max);
40   void SetDeltaPRange(Double_t min, Double_t max);
41   
42   void SetQInvRange(Double_t min, Double_t max);
43   void SetKtRange(Double_t min, Double_t max);
44   void SetKStarRange(Double_t min, Double_t max);
45   void SetQOutLCMSRange(Double_t min, Double_t max);
46   void SetQSideLCMSRange(Double_t min, Double_t max);
47   void SetQLongLCMSRange(Double_t min, Double_t max);
48   void SetAvSeparationRange(Double_t min,Double_t max = 10e5);//Anti-Merging Cut
49   void SetITSSeparation(Int_t layer, Double_t drphi=0.01,Double_t dz = 0.08);//Anti-Merging Cut for first pixel layer
50   void SetClusterOverlapRange(Double_t min,Double_t max);//Anti-Splitting Max range -0.5 1.0
51       
52   AliAODParticleCut* GetFirstPartCut() const {return fFirstPartCut;}
53   AliAODParticleCut* GetSecondPartCut() const {return fSecondPartCut;}
54   
55  protected:
56   AliAODParticleCut*      fFirstPartCut;//cut on first particle in pair
57   AliAODParticleCut*      fSecondPartCut;//cut on second particle in pair
58   
59   AliAODPairBaseCut** fCuts; //! array of poiters to base cuts
60   Int_t fNCuts;//Number of cuts in fCuts array
61   
62   
63   AliAODPairBaseCut* FindCut(AliAODPairBaseCut::EAODPairCutProperty cut);
64  private:
65   static const Int_t fgkMaxCuts; // Max number of cuts
66   ClassDef(AliAODPairCut,2)
67 };
68 /******************************************************************/
69 /******************************************************************/
70 /******************************************************************/
71
72 class AliAODPairEmptyCut:  public AliAODPairCut
73 {
74   //Empty - it passes possitively all particles - it means returns always False
75   //Class describing cut on pairs of particles
76  public:
77   AliAODPairEmptyCut(){};
78   AliAODPairEmptyCut(const AliAODPairEmptyCut& in):AliAODPairCut(in){};
79   virtual ~AliAODPairEmptyCut(){};
80   
81   Bool_t Rejected(AliAODPair*) const {return kFALSE;} //accpept everything
82   Bool_t IsEmpty() const {return kTRUE;}
83   
84   ClassDef(AliAODPairEmptyCut,1)
85 };
86
87
88 #endif