]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HBTAN/AliHBTParticleCut.h
Changed to read contrained track parameters
[u/mrichter/AliRoot.git] / HBTAN / AliHBTParticleCut.h
index 7a33c3ec75f9442912b4483d1015d6eec4900c4b..fbcec43432eff807f31032dff06c1e516fa4e28e 100644 (file)
@@ -1,19 +1,27 @@
-//Piotr Skowronski@cern.ch
-//Classes fAnd single particle cuts
-//User should use only AliHBTParticleCut, eventually EmptyCut which passes all particles
-//There is all interface fAnd setting cuts on all particle properties
-//The main method is Pass - which returns 
-//        True in Andder to reject particle
-//        False in case it meets all the criteria of the given cut
-//
-//User should create (and also destroy) cuts himself 
-//and then pass them to the Analysis And Function by a proper method
-//
-//mAnde info: http://alisoft.cern.ch/people/skowron/analyzer/index.html
-
-
 #ifndef ALIHBTPARTICLECUT_H
 #define ALIHBTPARTICLECUT_H
+//__________________________________________________________________________
+////////////////////////////////////////////////////////////////////////////
+//                                                                        //
+// class AliHBTParticleCut                                                //
+//                                                                        //
+// Classes for single particle cuts                                       //
+// User should use only AliHBTParticleCut, eventually                     //
+// EmptyCut which passes all particles                                    //
+// There is all interface for setting cuts on all particle properties     //
+// The main method is Pass - which returns                                //
+//         True to reject particle                                        //
+//         False in case it meets all the criteria of the given cut       //
+//                                                                        //
+// User should create (and also destroy) cuts himself                     // 
+// and then pass them to the Analysis And Function by a proper method     //
+//                                                                        //
+//                                                                        //
+// more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html   //
+// resonsible: Piotr Skowronski@cern.ch                                   //
+//                                                                        //
+////////////////////////////////////////////////////////////////////////////
+
 
 #include <TObject.h>
 #include "AliHBTParticle.h"
@@ -60,13 +68,14 @@ class AliHBTParticleCut: public TObject
 //Class describing cut on pairs of particles
   public:
     AliHBTParticleCut();
-    AliHBTParticleCut(const AliHBTParticleCut&);
+    AliHBTParticleCut(const AliHBTParticleCut& in);
     virtual ~AliHBTParticleCut();
-
-    virtual Bool_t Pass(AliHBTParticle*);
-    Bool_t IsEmpty() {return kFALSE;}
+    AliHBTParticleCut& operator = (const AliHBTParticleCut& in);
+    
+    virtual Bool_t Pass(AliHBTParticle* p) const;
+    Bool_t IsEmpty() const {return kFALSE;}
     
-    void AddBasePartCut(AliHbtBaseCut*);
+    void AddBasePartCut(AliHbtBaseCut* basecut);
     
     Int_t GetPID() const { return fPID;}
     void SetPID(Int_t pid){fPID=pid;}
@@ -86,21 +95,20 @@ class AliHBTParticleCut: public TObject
     void SetVyRange(Double_t min, Double_t max);
     void SetVzRange(Double_t min, Double_t max);
     
-    void Print(void);
+    void Print(void) const;
   protected:
      
-     AliHbtBaseCut* FindCut(AliHBTCutProperty);
-     
-     AliHbtBaseCut ** fCuts;//! Array with cuts
-     Int_t fNCuts;
+    AliHbtBaseCut* FindCut(AliHBTCutProperty property);
 
-     Int_t fPID; //particle PID  - if=0 (rootino) all pids are accepted
+    AliHbtBaseCut ** fCuts;//! Array with cuts
+    Int_t fNCuts; //number of base cuts stored in fCuts
+
+    Int_t fPID; //particle PID  - if=0 (rootino) all pids are accepted
           
   private:
-     static const Int_t fkgMaxCuts;
-  public:
+    static const Int_t fgkMaxCuts; //Size of the fCuts array
+
     ClassDef(AliHBTParticleCut,1)
 };
 /******************************************************************/
 /******************************************************************/
@@ -114,8 +122,8 @@ class AliHBTEmptyParticleCut:  public AliHBTParticleCut
     AliHBTEmptyParticleCut(){};
     virtual ~AliHBTEmptyParticleCut(){};
     
-    Bool_t Pass(AliHBTParticle*){return kFALSE;} //accpept everything
-    Bool_t IsEmpty() {return kTRUE;}
+    Bool_t Pass(AliHBTParticle*) const {return kFALSE;} //accept everything <<CAN NOT BE const!!!!>>
+    Bool_t IsEmpty() const {return kTRUE;}
 
     ClassDef(AliHBTEmptyParticleCut,1)
  
@@ -137,7 +145,7 @@ class AliHbtBaseCut: public TObject
 
      virtual           ~AliHbtBaseCut(){}
      
-     virtual Bool_t    Pass(AliHBTParticle *p);
+     virtual Bool_t    Pass(AliHBTParticle *p) const;
      
      void              SetRange(Double_t min, Double_t max){fMin = min; fMax = max;}
 
@@ -148,27 +156,28 @@ class AliHbtBaseCut: public TObject
      Double_t          GetMaximum() const {return fMax;}
      
      AliHBTCutProperty GetProperty() const {return fProperty;}
-     virtual void Print(void);
+     virtual void Print(void) const;
      
    protected:
-     virtual Double_t  GetValue(AliHBTParticle *) = 0;
+     virtual Double_t  GetValue(AliHBTParticle *) const = 0;
 
-     AliHBTCutProperty fProperty;
-     Double_t fMin;
-     Double_t fMax;
+     AliHBTCutProperty fProperty; //property that this cut describes
+     Double_t fMin;//minimum value
+     Double_t fMax;//maximum value
      
    private:
-     void PrintProperty(void);
+     void PrintProperty(void) const;
      ClassDef(AliHbtBaseCut,1)
    
  };
 
 inline Bool_t
-AliHbtBaseCut::Pass(AliHBTParticle *p)
- {
-   if ( (GetValue(p) < fMin) || (GetValue(p) > fMax ) ) return kTRUE; //rejected
-   else return kFALSE; //accepted
- }
+AliHbtBaseCut::Pass(AliHBTParticle *p) const
+{
+  //cjecks if particle property fits in range
+  if ( (GetValue(p) < fMin) || (GetValue(p) > fMax ) ) return kTRUE; //rejected
+  else return kFALSE; //accepted
+}
 /******************************************************************/
 /******************************************************************/
 /******************************************************************/
@@ -180,7 +189,7 @@ class AliHBTMomentumCut: public AliHbtBaseCut
     AliHBTMomentumCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtP){}
     virtual ~AliHBTMomentumCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->P();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->P();}
     ClassDef(AliHBTMomentumCut,1)
  };
 
@@ -190,7 +199,7 @@ class AliHBTPtCut: public AliHbtBaseCut
     AliHBTPtCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPt){}
     virtual ~AliHBTPtCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Pt();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Pt();}
     ClassDef(AliHBTPtCut,1)
  };
 
@@ -201,7 +210,7 @@ class AliHBTEnergyCut: public AliHbtBaseCut
     AliHBTEnergyCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtE){}
     virtual ~AliHBTEnergyCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Energy();}
+    Double_t  GetValue(AliHBTParticle * p)const {return p->Energy();}
     ClassDef(AliHBTEnergyCut,1)
  };
 
@@ -211,7 +220,7 @@ class AliHBTRapidityCut: public AliHbtBaseCut
     AliHBTRapidityCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtRapidity){}
     virtual ~AliHBTRapidityCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Y();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Y();}
     ClassDef(AliHBTRapidityCut,1)
  };
 
@@ -221,7 +230,7 @@ class AliHBTPseudoRapidityCut: public AliHbtBaseCut
     AliHBTPseudoRapidityCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPseudoRapidity){}
     virtual ~AliHBTPseudoRapidityCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Eta();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Eta();}
     ClassDef(AliHBTPseudoRapidityCut,1)
  };
 
@@ -231,7 +240,7 @@ class AliHBTPxCut: public AliHbtBaseCut
     AliHBTPxCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPx){}
     virtual ~AliHBTPxCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Px();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Px();}
     ClassDef(AliHBTPxCut,1)
  };
 
@@ -241,7 +250,7 @@ class AliHBTPyCut: public AliHbtBaseCut
     AliHBTPyCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPy){}
     virtual ~AliHBTPyCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Py();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Py();}
     ClassDef(AliHBTPyCut,1)
  };
 
@@ -252,7 +261,7 @@ class AliHBTPzCut: public AliHbtBaseCut
     AliHBTPzCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPz){}
     virtual ~AliHBTPzCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Pz();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Pz();}
     ClassDef(AliHBTPzCut,1)
  };
 
@@ -262,7 +271,7 @@ class AliHBTPhiCut: public AliHbtBaseCut
     AliHBTPhiCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPhi){}
     virtual ~AliHBTPhiCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Phi();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Phi();}
     ClassDef(AliHBTPhiCut,1)
   
  };
@@ -273,7 +282,7 @@ class AliHBTThetaCut: public AliHbtBaseCut
     AliHBTThetaCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtTheta){}
     virtual ~AliHBTThetaCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Theta();}
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Theta();}
     ClassDef(AliHBTThetaCut,1)
   
  };
@@ -285,7 +294,7 @@ class AliHBTVxCut: public AliHbtBaseCut
     AliHBTVxCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtVx){}
     virtual ~AliHBTVxCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Vx();} //retruns value of the vertex
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Vx();} //retruns value of the vertex
     ClassDef(AliHBTVxCut,1)
   
  };
@@ -298,7 +307,7 @@ class AliHBTVyCut: public AliHbtBaseCut
     AliHBTVyCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtVy){}
     virtual ~AliHBTVyCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Vy();} //retruns value of the vertex
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Vy();} //retruns value of the vertex
     ClassDef(AliHBTVyCut,1)
   
  };
@@ -310,7 +319,7 @@ class AliHBTVzCut: public AliHbtBaseCut
     AliHBTVzCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtVz){}
     virtual ~AliHBTVzCut(){}
   protected:
-    Double_t  GetValue(AliHBTParticle * p){return p->Vz();} //retruns value of the vertex
+    Double_t  GetValue(AliHBTParticle * p)const{return p->Vz();} //retruns value of the vertex
     
     ClassDef(AliHBTVzCut,1)
   
@@ -319,10 +328,11 @@ class AliHBTVzCut: public AliHbtBaseCut
 class AliHBTPIDCut:  public AliHbtBaseCut
  {
    public:
+     AliHBTPIDCut():AliHbtBaseCut(0.0,0.0,kHbtPid),fPID(0){}
      AliHBTPIDCut(Int_t pid, Double_t min = 0.0, Double_t max = 1.0):AliHbtBaseCut(min,max,kHbtPid),fPID(pid){}
      virtual ~AliHBTPIDCut(){}
    protected:
-     Double_t  GetValue(AliHBTParticle * p){return p->GetPIDprobability(fPID);}
+     Double_t  GetValue(AliHBTParticle * p)const{return p->GetPIDprobability(fPID);}
      Int_t     fPID; //pid of particle that the pid is set 
      ClassDef(AliHBTPIDCut,1)
  };
@@ -342,15 +352,15 @@ class AliHBTLogicalOperCut:  public AliHbtBaseCut
      AliHBTLogicalOperCut(AliHbtBaseCut* first, AliHbtBaseCut* second);
      virtual   ~AliHBTLogicalOperCut();
    protected:
-     Double_t  GetValue(AliHBTParticle * /*part*/){MayNotUse("GetValue");return 0.0;}
+     Double_t  GetValue(AliHBTParticle * /*part*/) const {MayNotUse("GetValue");return 0.0;}
      
      AliHbtBaseCut* fFirst;   //second cut
      AliHbtBaseCut* fSecond;  //first cut
    private:  
     class  AliHBTDummyBaseCut: public AliHbtBaseCut 
      {
-       Double_t  GetValue(AliHBTParticle * /*part*/){return 0.0;}
-       Bool_t    Pass(AliHBTParticle* /*part*/);
+       Double_t  GetValue(AliHBTParticle * /*part*/) const {return 0.0;}
+       Bool_t    Pass(AliHBTParticle* /*part*/) const;
      };
      
     ClassDef(AliHBTLogicalOperCut,1)
@@ -362,7 +372,7 @@ class AliHBTOrCut: public AliHBTLogicalOperCut
      AliHBTOrCut(){}
      AliHBTOrCut(AliHbtBaseCut* first, AliHbtBaseCut* second):AliHBTLogicalOperCut(first,second){}
      virtual   ~AliHBTOrCut(){}
-     Bool_t    Pass(AliHBTParticle *p);
+     Bool_t    Pass(AliHBTParticle *p) const;
      ClassDef(AliHBTOrCut,1)
 };
 
@@ -372,7 +382,7 @@ class AliHBTAndCut: public AliHBTLogicalOperCut
      AliHBTAndCut(){}
      AliHBTAndCut(AliHbtBaseCut* first, AliHbtBaseCut* second):AliHBTLogicalOperCut(first,second){}
      virtual   ~AliHBTAndCut(){}
-     Bool_t    Pass(AliHBTParticle *p);
+     Bool_t    Pass(AliHBTParticle *p) const;
      ClassDef(AliHBTAndCut,1)
 };