Default branch name set to Default; Reading of TreeR delegated to AliPHOSGetter;...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPIDv1.h
1 #ifndef ALIPHOSPIDV1_H
2 #define ALIPHOSPIDV1_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8
9 //_________________________________________________________________________
10 // Implementation version v1 of the PHOS particle identifier 
11 // Identification is based on information from PPSD and EMC
12 // Oh yeah                 
13 //*-- Author: Yves Schutz (SUBATECH)
14
15 // --- ROOT system ---
16 class TFormula ;
17 class TVector3 ;
18
19 // --- Standard library ---
20
21 // --- AliRoot header files ---
22 class AliPHOSEmcRecPoint ;
23 class AliPHOSRecPoint ;
24
25 #include "AliPHOSPID.h"
26
27 class  AliPHOSPIDv1 : public AliPHOSPID {
28
29 public:
30
31   AliPHOSPIDv1() ;          // ctor            
32   AliPHOSPIDv1(const char* headerFile, const char * tsBranch = "Default") ;
33   virtual ~AliPHOSPIDv1() ; // dtor
34
35   virtual void Exec(Option_t * option);
36   virtual char * GetRecParticlesBranch()const {return (char*) fRecParticlesTitle.Data() ;}      
37   virtual char * GetTrackSegmentsBranch()const{return (char*) fTrackSegmentsTitle.Data(); }
38   virtual const Int_t GetRecParticlesInRun() const  {return fRecParticlesInRun ;}  
39   
40   virtual void Init() ;
41   virtual void PlotDispersionCuts()const ;
42   virtual void Print(Option_t * option)const ; 
43   virtual void SetIdentificationMethod(char * option = "CPV DISP" ){fIDOptions = option ;} 
44   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)") ;
45   virtual void SetDispersionCut(Float_t cut){fDispersion = cut ; } 
46   virtual void SetCpvtoEmcDistanceCut(Float_t cut ) {fCpvEmcDistance = cut ;}
47   virtual void SetTrackSegmentsBranch(const char* title) { fTrackSegmentsTitle = title;}
48   virtual void SetRecParticlesBranch (const char* title) { fRecParticlesTitle = title;} 
49   virtual const char * Version() const { return "pid-v1" ; }  
50                      
51  private:
52
53   void     MakeRecParticles(void ) ;
54   Float_t  GetDistance(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * Axis)const ; // Relative Distance PPSD-EMC
55   TVector3 GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, AliPHOSRecPoint * ppsd)const ;
56   void     PrintRecParticles(Option_t * option) ;
57   virtual Bool_t ReadTrackSegments(Int_t event) ;
58   virtual void WriteRecParticles(Int_t event) ; 
59
60  private:
61
62   TString                fHeaderFileName ;    // file name with event header
63   TString                fTrackSegmentsTitle; // branch name with track segments
64   TString                fRecPointsTitle ;    // branch name with rec points
65   TString                fRecParticlesTitle ; // branch name with rec particles
66   TString                fIDOptions ;         // PID option
67   Int_t                  fNEvent ;            // current event number
68   TObjArray            * fEmcRecPoints ;      // ! initial EMC RecPoints
69   TObjArray            * fCpvRecPoints ;      // ! initial CPV RecPoints
70   TClonesArray         * fTrackSegments;      // ! initial list of TrackSegments
71   TClonesArray         * fRecParticles ;      // ! output
72
73   AliPHOSClusterizer   * fClusterizer ;       // !
74   AliPHOSTrackSegmentMaker * fTSMaker ;       // !
75
76   TFormula             * fFormula ;           // formula to define cut on the shouer elips axis
77   Float_t                fDispersion ;        // dispersion cut
78   Float_t                fCpvEmcDistance ;    // Max EMC-CPV distance
79   Int_t                  fRecParticlesInRun ; //! Total number of recparticles in one run
80   ClassDef( AliPHOSPIDv1,1)  // Particle identifier implementation version 1
81
82 };
83
84 #endif // AliPHOSPIDV1_H