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