1 #ifndef ALIAODPAIRCUT_H
2 #define ALIAODPAIRCUT_H
6 //Piotr Skowronski@cern.ch
7 //Class implements cut on the pair of particles
9 //more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html
11 #include "AliAODPairBaseCut.h"
13 class AliAODParticleCut;
14 class AliAODPairBaseCut;
16 /******************************************************************/
18 class AliAODPairCut: public TNamed
22 AliAODPairCut(const AliAODPairCut& in);
23 AliAODPairCut& operator = (const AliAODPairCut& in);
25 virtual ~AliAODPairCut();
26 virtual Bool_t Rejected(AliAODPair* pair) const;
27 virtual Bool_t PassPairProp(AliAODPair* pair) const;
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
33 void SetPartCut(AliAODParticleCut* cut);//sets the the same cut on both particles
35 virtual void AddBasePairCut(AliAODPairBaseCut* cut);
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
49 AliAODParticleCut* GetFirstPartCut() const {return fFirstPartCut;}
50 AliAODParticleCut* GetSecondPartCut() const {return fSecondPartCut;}
53 AliAODParticleCut* fFirstPartCut;//cut on first particle in pair
54 AliAODParticleCut* fSecondPartCut;//cut on second particle in pair
56 AliAODPairBaseCut** fCuts; //! array of poiters to base cuts
57 Int_t fNCuts;//Number of cuts in fCuts array
60 AliAODPairBaseCut* FindCut(AliAODPairBaseCut::EAODPairCutProperty cut);
62 static const Int_t fgkMaxCuts; // Max number of cuts
63 ClassDef(AliAODPairCut,2)
65 /******************************************************************/
66 /******************************************************************/
67 /******************************************************************/
69 class AliAODPairEmptyCut: public AliAODPairCut
71 //Empty - it passes possitively all particles - it means returns always False
72 //Class describing cut on pairs of particles
74 AliAODPairEmptyCut(){};
75 AliAODPairEmptyCut(const AliAODPairEmptyCut& in):AliAODPairCut(in){};
76 virtual ~AliAODPairEmptyCut(){};
78 Bool_t Rejected(AliAODPair*) const {return kFALSE;} //accpept everything
79 Bool_t IsEmpty() const {return kTRUE;}
81 ClassDef(AliAODPairEmptyCut,1)