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