X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ANALYSIS%2FAliAODPairCut.h;h=b7c9066d580de1f3a2909b858d58d90b0db43c16;hb=5cee8265061813b1384646561a1e4cac74fb0e5d;hp=6503270cd1d1b2d45d7bd85ff4752252540f1afd;hpb=78d7c6d31835b4721fb8055d8939743a12c73ad2;p=u%2Fmrichter%2FAliRoot.git diff --git a/ANALYSIS/AliAODPairCut.h b/ANALYSIS/AliAODPairCut.h index 6503270cd1d..b7c9066d580 100644 --- a/ANALYSIS/AliAODPairCut.h +++ b/ANALYSIS/AliAODPairCut.h @@ -1,36 +1,19 @@ -#ifndef AliAODPairCUT_H -#define AliAODPairCUT_H +#ifndef ALIAODPAIRCUT_H +#define ALIAODPAIRCUT_H /* $Id$ */ //Piotr Skowronski@cern.ch //Class implements cut on the pair of particles // -//more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html - -#include "AliAODPair.h" +//more info: http://aliweb.cern.ch/people/skowron/analyzer/index.html + +#include +#include "AliAODPairBaseCut.h" class AliAODParticleCut; -class AliAODBasePairCut; +class AliAODPairBaseCut; -enum AliAODPairCutProperty -{ - kHbtPairCutPropQInv, //Q invariant - kHbtPairCutPropKt, - kHbtPairCutPropKStar, - kHbtPairCutPropQSideLCMS, - kHbtPairCutPropQOutLCMS, - kHbtPairCutPropQLongLCMS, - kHbtPairCutPropDeltaPhi, - kHbtPairCutPropDeltaTheta, - kHbtPairCutPropDeltaP, - kHbtPairCutPropDeltaPt, - kHbtPairCutPropAvSepar, - kHbtPairCutPropSepar, - kHbtPairCutPropClOverlap, - kHbtPairCutPropPixelSepar, - kHbtPairCutPropNone -}; /******************************************************************/ class AliAODPairCut: public TNamed @@ -41,7 +24,7 @@ class AliAODPairCut: public TNamed AliAODPairCut& operator = (const AliAODPairCut& in); virtual ~AliAODPairCut(); - virtual Bool_t Pass(AliAODPair* pair) const; + virtual Bool_t Rejected(AliAODPair* pair) const; virtual Bool_t PassPairProp(AliAODPair* pair) const; virtual Bool_t IsEmpty() const {return kFALSE;} @@ -50,16 +33,23 @@ class AliAODPairCut: public TNamed void SetPartCut(AliAODParticleCut* cut);//sets the the same cut on both particles - virtual void AddBasePairCut(AliAODBasePairCut* cut); + virtual void AddBasePairCut(AliAODPairBaseCut* cut); + virtual void Print(const Option_t * opt) const {TNamed::Print(opt);} virtual void Print(); + + void SetDeltaERange(Double_t min, Double_t max); + void SetDeltaPRange(Double_t min, Double_t max); void SetQInvRange(Double_t min, Double_t max); void SetKtRange(Double_t min, Double_t max); void SetKStarRange(Double_t min, Double_t max); - void SetQOutCMSLRange(Double_t min, Double_t max); - void SetQSideCMSLRange(Double_t min, Double_t max); - void SetQLongCMSLRange(Double_t min, Double_t max); + void SetKStarOutRange(Double_t min, Double_t max); + void SetKStarSideRange(Double_t min, Double_t max); + void SetKStarLongRange(Double_t min, Double_t max); + void SetQOutLCMSRange(Double_t min, Double_t max); + void SetQSideLCMSRange(Double_t min, Double_t max); + void SetQLongLCMSRange(Double_t min, Double_t max); void SetAvSeparationRange(Double_t min,Double_t max = 10e5);//Anti-Merging Cut void SetITSSeparation(Int_t layer, Double_t drphi=0.01,Double_t dz = 0.08);//Anti-Merging Cut for first pixel layer void SetClusterOverlapRange(Double_t min,Double_t max);//Anti-Splitting Max range -0.5 1.0 @@ -71,11 +61,11 @@ class AliAODPairCut: public TNamed AliAODParticleCut* fFirstPartCut;//cut on first particle in pair AliAODParticleCut* fSecondPartCut;//cut on second particle in pair - AliAODBasePairCut** fCuts; //! array of poiters to base cuts + AliAODPairBaseCut** fCuts; //! array of poiters to base cuts Int_t fNCuts;//Number of cuts in fCuts array - AliAODBasePairCut* FindCut(AliAODPairCutProperty cut); + AliAODPairBaseCut* FindCut(AliAODPairBaseCut::EAODPairCutProperty cut); private: static const Int_t fgkMaxCuts; // Max number of cuts ClassDef(AliAODPairCut,2) @@ -84,304 +74,20 @@ class AliAODPairCut: public TNamed /******************************************************************/ /******************************************************************/ -class AliAODEmptyPairCut: public AliAODPairCut +class AliAODPairEmptyCut: public AliAODPairCut { //Empty - it passes possitively all particles - it means returns always False //Class describing cut on pairs of particles public: - AliAODEmptyPairCut(){}; - AliAODEmptyPairCut(const AliAODEmptyPairCut& in):AliAODPairCut(in){}; - virtual ~AliAODEmptyPairCut(){}; + AliAODPairEmptyCut(){}; + AliAODPairEmptyCut(const AliAODPairEmptyCut& in):AliAODPairCut(in){}; + virtual ~AliAODPairEmptyCut(){}; - Bool_t Pass(AliAODPair*) const {return kFALSE;} //accpept everything + Bool_t Rejected(AliAODPair*) const {return kFALSE;} //accpept everything Bool_t IsEmpty() const {return kTRUE;} - ClassDef(AliAODEmptyPairCut,1) -}; - - - -/******************************************************************/ -/******************************************************************/ -/******************************************************************/ - -class AliAODBasePairCut: public TObject -{ - //This class defines the range of some property - pure virtual - //Property is coded by AliAODCutTypes type - - public: - - AliAODBasePairCut(Double_t min = 0.0, Double_t max = 0.0, AliAODPairCutProperty prop= kHbtPairCutPropNone): - fMin(min),fMax(max),fProperty(prop){} - - virtual ~AliAODBasePairCut(){} - - virtual Bool_t Pass(AliAODPair* pair) const; - - void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;} - - void SetMinimum(Double_t min){fMin = min;} - void SetMaximum(Double_t max){fMax = max;} - - Double_t GetMinimum() const {return fMin;} - Double_t GetMaximum() const {return fMax;} - - AliAODPairCutProperty GetProperty() const {return fProperty;} - - protected: - virtual Double_t GetValue(AliAODPair* pair) const = 0; - - Double_t fMin; // Lower boundary of the range - Double_t fMax; // Upper boundary of the range - - AliAODPairCutProperty fProperty; // The property itself - - ClassDef(AliAODBasePairCut,1) - - }; -/******************************************************************/ - -inline Bool_t AliAODBasePairCut::Pass(AliAODPair* pair) const -{ - //checks if pair proprty is in range - //null pointer check is made by AliAODPairCut, so here is unnecesary - - Double_t value = GetValue(pair); - if ( (value > fMin) && (value GetQInv();} - - ClassDef(AliAODQInvCut,1) - }; -/******************************************************************/ - -class AliAODKtCut: public AliAODBasePairCut { - public: - AliAODKtCut(Double_t min = 0.0, Double_t max = 0.0):AliAODBasePairCut(min,max,kHbtPairCutPropKt){} - virtual ~AliAODKtCut(){} - protected: - virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKt();} - - ClassDef(AliAODKtCut,1) - }; -/******************************************************************/ - -class AliAODKStarCut: public AliAODBasePairCut -{ - public: - AliAODKStarCut(Double_t min = 0.0, Double_t max = 0.0):AliAODBasePairCut(min,max,kHbtPairCutPropKStar){} - virtual ~AliAODKStarCut(){} - protected: - virtual Double_t GetValue(AliAODPair* pair) const {return pair->GetKStar();} - - ClassDef(AliAODKStarCut,1) -}; -/******************************************************************/ - -class AliAODQSideLCMSCut: public AliAODBasePairCut -{ - public: - AliAODQSideLCMSCut(Double_t min = 0.0, Double_t max = 0.0): - AliAODBasePairCut(min,max,kHbtPairCutPropQSideLCMS){} - virtual ~AliAODQSideLCMSCut(){} - protected: - virtual Double_t GetValue(AliAODPair* pair) const - {return pair->GetQSideLCMS();} - - ClassDef(AliAODQSideLCMSCut,1) -}; -/******************************************************************/ - - -class AliAODQOutLCMSCut: public AliAODBasePairCut -{ - public: - AliAODQOutLCMSCut(Double_t min = 0.0, Double_t max = 0.0): - AliAODBasePairCut(min,max,kHbtPairCutPropQOutLCMS){} - virtual ~AliAODQOutLCMSCut(){} - protected: - virtual Double_t GetValue(AliAODPair* pair) const - {return pair->GetQOutLCMS();} - - ClassDef(AliAODQOutLCMSCut,1) + ClassDef(AliAODPairEmptyCut,1) }; -/******************************************************************/ -class AliAODQLongLCMSCut: public AliAODBasePairCut -{ - public: - AliAODQLongLCMSCut(Double_t min = 0.0, Double_t max = 0.0): - AliAODBasePairCut(min,max,kHbtPairCutPropQLongLCMS){} - virtual ~AliAODQLongLCMSCut(){} - protected: - virtual Double_t GetValue(AliAODPair* pair) const - {return pair->GetQLongLCMS();} - - ClassDef(AliAODQLongLCMSCut,1) -}; -/******************************************************************/ - -class AliAODDeltaPhiCut: public AliAODBasePairCut -{ - public: - AliAODDeltaPhiCut(Double_t min = 0.0, Double_t max = 0.0): - AliAODBasePairCut(min,max,kHbtPairCutPropDeltaPhi){} - virtual ~AliAODDeltaPhiCut(){} - protected: - virtual Double_t GetValue(AliAODPair* pair) const - {return TMath::Abs(pair->GetDeltaPhi());} - - ClassDef(AliAODDeltaPhiCut,1) -}; -/******************************************************************/ - -class AliAODDeltaThetaCut: public AliAODBasePairCut -{ - public: - AliAODDeltaThetaCut(Double_t min = 0.0, Double_t max = 0.0): - AliAODBasePairCut(min,max,kHbtPairCutPropDeltaTheta){} - virtual ~AliAODDeltaThetaCut(){} - protected: - virtual Double_t GetValue(AliAODPair* pair) const - {return TMath::Abs(pair->GetDeltaTheta());} - - ClassDef(AliAODDeltaThetaCut,1) -}; -/******************************************************************/ - -class AliAODCluterOverlapCut: public AliAODBasePairCut -{ - public: - AliAODCluterOverlapCut(Double_t min = 0.0, Double_t max = 1e5): - AliAODBasePairCut(min,max,kHbtPairCutPropClOverlap){} - virtual ~AliAODCluterOverlapCut(){} - - protected: - virtual Double_t GetValue(AliAODPair* pair) const; - ClassDef(AliAODCluterOverlapCut,1) -}; -/******************************************************************/ - -class AliAODAvSeparationCut: public AliAODBasePairCut -{ - public: - AliAODAvSeparationCut(Double_t min = 0.0, Double_t max = 1e5): - AliAODBasePairCut(min,max,kHbtPairCutPropAvSepar){} - virtual ~AliAODAvSeparationCut(){} - - protected: - virtual Double_t GetValue(AliAODPair* pair) const; - ClassDef(AliAODAvSeparationCut,1) -}; -/******************************************************************/ - -class AliAODSeparationCut: public AliAODBasePairCut -{ - public: - AliAODSeparationCut(Double_t min = 0.0, Double_t max = 1e5, Int_t point = 0): - AliAODBasePairCut(min,max,kHbtPairCutPropSepar),fPoint(point){} - virtual ~AliAODSeparationCut(){} - - protected: - Int_t fPoint;//index of the point that distance should be measured - virtual Double_t GetValue(AliAODPair* pair) const; - ClassDef(AliAODSeparationCut,1) -}; -/******************************************************************/ - -class AliAODITSSeparationCut: public AliAODBasePairCut -{ -//Anti merging cut for the first layer of pixels - public: - AliAODITSSeparationCut(Int_t layer = 0, Double_t deltarphi = 0.01, Double_t deltaz = 0.08): - AliAODBasePairCut(deltarphi,deltaz,kHbtPairCutPropPixelSepar),fLayer(layer){} - virtual ~AliAODITSSeparationCut(){} - Bool_t Pass(AliAODPair* pair) const; - Int_t GetLayer() const {return fLayer;} - protected: - Int_t fLayer;//index of the layer that distance should be measured 0: 1st pixels - virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;}//not used - ClassDef(AliAODITSSeparationCut,1) -}; -/******************************************************************/ - -class AliAODOutSideSameSignCut: public AliAODBasePairCut -{ - public: - AliAODOutSideSameSignCut(){} - virtual ~AliAODOutSideSameSignCut(){} - virtual Bool_t Pass(AliAODPair *p) const; - protected: - virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;} - ClassDef(AliAODOutSideSameSignCut,1) -}; -/******************************************************************/ - -class AliAODOutSideDiffSignCut: public AliAODBasePairCut -{ - public: - AliAODOutSideDiffSignCut(){} - virtual ~AliAODOutSideDiffSignCut(){} - virtual Bool_t Pass(AliAODPair *p) const; - protected: - virtual Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;} - ClassDef(AliAODOutSideDiffSignCut,1) -}; -/******************************************************************/ - -class AliAODLogicalOperPairCut: public AliAODBasePairCut - { - public: - AliAODLogicalOperPairCut(); - AliAODLogicalOperPairCut(AliAODBasePairCut* first, AliAODBasePairCut* second); - virtual ~AliAODLogicalOperPairCut(); - protected: - Double_t GetValue(AliAODPair * /*pair*/) const {MayNotUse("GetValue");return 0.0;} - - AliAODBasePairCut* fFirst; //second cut - AliAODBasePairCut* fSecond; //first cut - private: - class AliAODDummyBasePairCut: public AliAODBasePairCut - { - Double_t GetValue(AliAODPair* /*pair*/) const {return 0.0;} - Bool_t Pass(AliAODPair* /*pair*/) const; - }; - - ClassDef(AliAODLogicalOperPairCut,1) - }; -/******************************************************************/ - -class AliAODOrPairCut: public AliAODLogicalOperPairCut -{ - public: - AliAODOrPairCut(){} - AliAODOrPairCut(AliAODBasePairCut* first, AliAODBasePairCut* second):AliAODLogicalOperPairCut(first,second){} - virtual ~AliAODOrPairCut(){} - Bool_t Pass(AliAODPair *p) const; - ClassDef(AliAODOrPairCut,1) -}; -/******************************************************************/ - -class AliAODAndPairCut: public AliAODLogicalOperPairCut -{ - public: - AliAODAndPairCut(){} - AliAODAndPairCut(AliAODBasePairCut* first, AliAODBasePairCut* second):AliAODLogicalOperPairCut(first,second){} - virtual ~AliAODAndPairCut(){} - Bool_t Pass(AliAODPair *p) const; - ClassDef(AliAODAndPairCut,1) -}; #endif