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