]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/AliPHOSPIDv1.h
Coding rule corrections
[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 CPV and EMC
12 // Oh yeah                 
13 //*-- Author: Yves Schutz (SUBATECH), Gustavo Conesa.
14
15 // --- ROOT system ---
16 //class TFormula ;
17 class TVector3 ;
18 class TMatrixD ;
19 class TPrincipal ;
20
21 // --- Standard library ---
22
23 // --- AliRoot header files ---
24 class AliPHOSEmcRecPoint ;
25 class AliPHOSRecPoint ;
26
27 #include "AliPHOSPID.h"
28
29 class  AliPHOSPIDv1 : public AliPHOSPID {
30   
31  public:
32   
33   AliPHOSPIDv1() ;          // ctor            
34   AliPHOSPIDv1(const char* headerFile, const char * tsBranch = "Default", const Bool_t toSplit=kFALSE) ;
35   AliPHOSPIDv1(AliPHOSPIDv1 & pid) ;          // cpy ctor            
36
37   virtual ~AliPHOSPIDv1() ; // dtor
38   
39   virtual void Exec(Option_t * option) ;
40   //  virtual char * GetRecParticlesBranch()const {return (char*) fRecParticlesTitle.Data() ;}      
41   //  virtual char * GetTrackSegmentsBranch()const{return (char*) fTrackSegmentsTitle.Data(); }
42   virtual const Int_t GetRecParticlesInRun() const  {return fRecParticlesInRun ;}  
43   
44   virtual void Print(Option_t * option) const {}
45   void Print() ; 
46   
47   //Get files that contain the PCA
48   const TString GetPrincipalFile( )const {return fFileName ;}
49   const TString GetPrincipalFilePar( )const {return fFileNamePar ;}
50
51   //To turn on or off the Pi0 analysis
52   const Bool_t GetPi0Analysis()const {return fPi0Analysis;}
53   void         SetPi0Analysis(Bool_t turnonoff){ fPi0Analysis = turnonoff; }
54
55   // Set and Get all parameters necessary in the PID depending on the 
56   // custer energy and Purity-Efficiency point 
57   void SetCpvtoEmcDistanceCutParameters(Float_t clusterEn, Int_t effpur, TString Axis,Float_t cut)  ; 
58   void SetTimeGate(Int_t effpur, Float_t gate)  ; 
59  
60   const Float_t GetCpvtoEmcDistanceCut(const Float_t e, const TString Axis ) const ;
61   const Double_t GetTimeGate(const Int_t effpur)  const;
62  
63   void SetEllipseParameter   (TString Param, Int_t i, Double_t par)  ;
64   void SetEllipseParameterPi0(TString Param, Int_t i, Double_t par)  ;
65   const Double_t GetParameterToCalculateEllipse(const TString Param, const Int_t i) const  ;     
66   const Double_t GetEllipseParameter(const TString Param, Float_t E) const;
67   const Double_t GetParameterToCalculatePi0Ellipse(const TString Param, const Int_t i) const  ;     
68   const Double_t GetEllipseParameterPi0(const TString Param, Float_t E) const;
69   //Get and Set energy calibration parameters
70   
71   void  SetCalibrationParameter(Int_t Param,Double_t param) const ;
72   const Double_t GetCalibrationParameter(const Int_t i) const;
73   const Double_t GetCalibratedEnergy(const Float_t e)   const; //Calibrates energy.
74   
75   //  virtual void SetTrackSegmentsBranch(const char* title) { fTrackSegmentsTitle = title;}
76   //  virtual void SetRecParticlesBranch (const char* title) { fRecParticlesTitle = title;} 
77   virtual const char * Version() const { return "pid-v1" ; }  
78   
79   AliPHOSPIDv1 & operator = (const AliPHOSPIDv1 & pid) { return *this ;} 
80  private:
81   
82   const TString BranchName() const ; 
83   virtual void Init() ;
84   virtual void InitParameters() ;
85   void     MakeRecParticles(void ) ;
86   // Relative Distance CPV-EMC
87   const Float_t  GetDistance(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * Axis)const ; 
88   const Int_t    GetCPVBit(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv,const Int_t EffPur, const Float_t e) const;
89   const Int_t    GetPrincipalBit   (const Double_t* P, const Int_t effPur, const Float_t E)const ; //Principal cut
90   const Int_t    GetPrincipalPi0Bit(const Double_t* P, const Int_t effPur, const Float_t E)const ; //Principal cut
91   TVector3 GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv)const ;
92   void     PrintRecParticles(Option_t * option) ;
93   virtual  void WriteRecParticles(Int_t event) ; 
94   void     SetParameters() ; //Fills the matrix of parameters
95   
96  
97
98  private:
99
100   Bool_t                 fDefaultInit;        //! Says if the task was created by defaut ctor (only parameters are initialized)
101   TString    fFileName ;     // File that contains the Principal file for analysis
102   TString    fFileNamePi0 ;  // File that contains the Pi0 Principal file for analysis
103   TString    fFileNamePar ;  // File that contains the parameters for analysis
104   
105   //  TString    fFrom ;              // name of Recpoints and TrackSegments 
106   //  TString    fHeaderFileName ;    // file name with event header
107   //  TString    fTrackSegmentsTitle; // branch name with track segments
108   //  TString    fRecPointsTitle ;    // branch name with rec points
109   //  TString    fRecParticlesTitle ; // branch name with rec particles
110  
111   Int_t                      fNEvent ;            //! current event number
112   //  AliPHOSClusterizer *       fClusterizer ;       //! clusterizer
113   //  AliPHOSTrackSegmentMaker * fTSMaker ;           //! track segment maker
114
115
116   Bool_t                     fPi0Analysis;        //! Pi0 analysis on or off  
117   TPrincipal *               fPrincipal ;         //! TPrincipal from pca file 
118   TPrincipal *               fPrincipalPi0 ;      //! TPrincipal from Pi0 pca file 
119   Double_t *                 fX ;                 //! Principal data 
120   Double_t *                 fP ;                 //! Principal eigenvalues
121   Double_t *                 fPPi0 ;                 //! Principal Pi0 eigenvalues
122
123   Int_t                      fRecParticlesInRun ; //! Total number of recparticles in one run
124   TMatrixD *                 fParameters;         //! Matrix of identification Parameters
125
126   ClassDef( AliPHOSPIDv1,7)  // Particle identifier implementation version 1
127
128 };
129
130 #endif // AliPHOSPIDV1_H