]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSPIDv1.h
add a data member to count the number of produced objects by run
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPIDv1.h
index d8be9467450686a29cc1f7cfbc7e0cd3a7911f76..08acb78f721941d00000f809b1eafb10215b9f8b 100644 (file)
@@ -9,14 +9,18 @@
 //_________________________________________________________________________
 // Implementation version v1 of the PHOS particle identifier 
 // Identification is based on information from PPSD and EMC
-//                  
+// Oh yeah                 
 //*-- Author: Yves Schutz (SUBATECH)
 
 // --- ROOT system ---
+class TFormula ;
+class TVector3 ;
 
 // --- Standard library ---
 
 // --- AliRoot header files ---
+class AliPHOSEmcRecPoint ;
+class AliPHOSRecPoint ;
 
 #include "AliPHOSPID.h"
 
@@ -24,23 +28,55 @@ class  AliPHOSPIDv1 : public AliPHOSPID {
 
 public:
 
-  AliPHOSPIDv1(): fCutOnDispersion(1.5){}                     
-  virtual ~ AliPHOSPIDv1(){} ; // dtor
+  AliPHOSPIDv1() ;          // ctor            
+  AliPHOSPIDv1(const char* headerFile, const char * tsBranch = 0) ;
+  virtual ~AliPHOSPIDv1() ; // dtor
+
+  virtual void Exec(Option_t * option);
+  virtual char * GetRecParticlesBranch()const {return (char*) fRecParticlesTitle.Data() ;}      
+  virtual char * GetTrackSegmentsBranch()const{return (char*) fTrackSegmentsTitle.Data(); }
+  virtual const Int_t GetRecParticlesInRun() const  {return fRecParticlesInRun ;}  
+  
+  virtual void Init() ;
+  virtual void PlotDispersionCuts()const ;
+  virtual void Print(Option_t * option)const ; 
+  virtual void SetIdentificationMethod(char * option = "CPV DISP" ){fIDOptions = option ;} 
+  virtual void SetShowerProfileCut(char * formula = "0.35*0.35 - (x-1.386)*(x-1.386) - 1.707*1.707*(y-1.008)*(y-1.008)") ;
+  virtual void SetDispersionCut(Float_t cut){fDispersion = cut ; } 
+  virtual void SetCpvtoEmcDistanceCut(Float_t cut ) {fCpvEmcDistance = cut ;}
+  virtual void SetTrackSegmentsBranch(const char* title) { fTrackSegmentsTitle = title;}
+  virtual void SetRecParticlesBranch (const char* title) { fRecParticlesTitle = title;} 
+  virtual const char * Version() const { return "pid-v1" ; }  
+                     
+ private:
 
-  virtual void MakeParticles(TrackSegmentsList * trsl, RecParticlesList * rpl ) ; // does the job
-  void Print() ; 
-  virtual void SetDispersionCutOff(Float_t Dcut) {fCutOnDispersion = Dcut ; }    
-  virtual void SetShowerProfileCuts(Float_t l1m, Float_t l1M, Float_t l2m, Float_t l2M) ; 
+  void     MakeRecParticles(void ) ;
+  Float_t  GetDistance(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * Axis)const ; // Relative Distance PPSD-EMC
+  TVector3 GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, AliPHOSRecPoint * ppsd)const ;
+  void     PrintRecParticles(Option_t * option) ;
+  virtual Bool_t ReadTrackSegments(Int_t event) ;
+  virtual void WriteRecParticles(Int_t event) ; 
 
  private:
 
-  // cuts on the shower profile 
-  Float_t fLambda1m ;        // minimum value for first elips axis
-  Float_t fLambda1M ;        // maximum value for first elips axis
-  Float_t fLambda2m ;        // minimum value for second elips axis
-  Float_t fLambda2M ;        // maximum value for second elips axis
-  Float_t fCutOnDispersion ; // cut on the shower dispersion to distinguish hadronic from EM showers
-
+  TString                fHeaderFileName ;    // file name with event header
+  TString                fTrackSegmentsTitle; // branch name with track segments
+  TString                fRecPointsTitle ;    // branch name with rec points
+  TString                fRecParticlesTitle ; // branch name with rec particles
+  TString                fIDOptions ;         // PID option
+  Int_t                  fNEvent ;            // current event number
+  TObjArray            * fEmcRecPoints ;      // ! initial EMC RecPoints
+  TObjArray            * fCpvRecPoints ;      // ! initial CPV RecPoints
+  TClonesArray         * fTrackSegments;      // ! initial list of TrackSegments
+  TClonesArray         * fRecParticles ;      // ! output
+
+  AliPHOSClusterizer   * fClusterizer ;       // !
+  AliPHOSTrackSegmentMaker * fTSMaker ;       // !
+
+  TFormula             * fFormula ;           // formula to define cut on the shouer elips axis
+  Float_t                fDispersion ;        // dispersion cut
+  Float_t                fCpvEmcDistance ;    // Max EMC-CPV distance
+  Int_t                  fRecParticlesInRun ; //! Total number of recparticles in one run
   ClassDef( AliPHOSPIDv1,1)  // Particle identifier implementation version 1
 
 };