Calibration of the reconstructed energy.
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPIDv1.h
index 18f3399d2c86a1d5aab9e56e5ef450e94345db32..dfd18a129a528e9de5ba2f07b6e9b34e7d28f0d7 100644 (file)
@@ -45,10 +45,14 @@ public:
   // Get CpvtoEmcDistanceCut and TimeGate parameters depending on the custer energy and 
   // Purity-Efficiency point (possible options "HIGH EFFICIENCY" "MEDIUM EFFICIENCY" "LOW  
   // EFFICIENCY" and 3 more options changing EFFICIENCY by PURITY)
-  Double_t GetCpvtoEmcDistanceCut(const Float_t Cluster_En, const TString Eff_Pur)const  ;
-  Double_t GetTimeGate(const Float_t Cluster_En, const TString Eff_Pur)const  ;
-  const TString GetPrincipalFile( )const {return fFileName ;}
-  const TString GetPrincipalFilePar( )const {return fFileNamePar ;}
+  Double_t GetCpvtoEmcDistanceCut(const Float_t Cluster_En, const TString Eff_Pur)  ;
+  Double_t GetTimeGate(const Float_t Cluster_En, const TString Eff_Pur)  ;
+
+  //Get files that contain the PCA
+  const TString GetPrincipalFile5( )const {return fFileName5 ;}
+  const TString GetPrincipalFilePar5( )const {return fFileNamePar5 ;}
+  const TString GetPrincipalFile100( )const {return fFileName100 ;}
+  const TString GetPrincipalFilePar100( )const {return fFileNamePar100 ;}
 
   // Set all parameters necessary in the PID depending on the custer energy and 
   // Purity-Efficiency point (possible options "HIGH EFFICIENCY" "MEDIUM EFFICIENCY" "LOW  
@@ -61,8 +65,15 @@ public:
   void SetEllipseBParameter(Float_t Cluster_En, TString Eff_Pur, Float_t b)  ; 
   void SetEllipseAngle(Float_t Cluster_En, TString Eff_Pur, Float_t angle)  ;    
   void SetEllipseParameters(Float_t Cluster_En, TString Eff_Pur, Float_t x, Float_t y,Float_t a, Float_t b,Float_t angle) ;  
-  void SetParameters(TString OptFileName) ; //Fills the matrix of parameters
  
+  //Get and Set energy calibration parameters
+  Float_t GetACalParameter() {return fACalParameter ;}
+  Float_t GetBCalParameter() {return fBCalParameter ;}
+  Float_t GetCCalParameter() {return fCCalParameter ;}
+  void SetACalParameter(Float_t a) { fACalParameter = a ;}
+  void SetBCalParameter(Float_t b) { fBCalParameter = b ;}
+  void SetCCalParameter(Float_t c) { fCCalParameter = c ;}
+
   virtual void SetTrackSegmentsBranch(const char* title) { fTrackSegmentsTitle = title;}
   virtual void SetRecParticlesBranch (const char* title) { fRecParticlesTitle = title;} 
   virtual const char * Version() const { return "pid-v1" ; }  
@@ -73,38 +84,61 @@ public:
   virtual void Init() ;
   virtual void InitParameters() ;
   void     MakeRecParticles(void ) ;
-  Float_t  GetDistance(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * Axis)const ; // Relative Distance CPV-EMC
+  // Relative Distance CPV-EMC
+  Float_t  GetDistance(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * Axis)const ; 
   Int_t    GetPrincipalSign(Double_t* P, Int_t ell, Int_t eff_pur)const ; //Principal cut
   TVector3 GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv)const ;
   void     PrintRecParticles(Option_t * option) ;
-  //void     SetParameters() ; //Fills the matrix of parameters
-  Int_t    GetClusterOption(const Float_t Cluster_En,const Bool_t rcpv)const ;// Gives in wich cluster energy range is the event
-  Int_t    GetEffPurOption(const TString Eff_Pur)const ;// Gives the Efficiency-Purity point.
-  virtual void WriteRecParticles(Int_t event) ; 
-  void  SetPrincipalFileOptions(TString OptFileName) ;
+  // Gives in wich cluster energy range is the event
+  void     GetClusterOption(const Float_t Cluster_En,const Bool_t range) ;
+  // Gives the Efficiency-Purity point.
+  Int_t    GetEffPurOption(const TString Eff_Pur)const ;
+  virtual  void WriteRecParticles(Int_t event) ; 
+  void     SetParameters() ; //Fills the matrix of parameters
+  //Selects principal and parameters file in function of energy range.
+  void     GetAnalysisParameters(Float_t ClusterEn) ;
+  Double_t CalibratedEnergy(Float_t e)  ; //Calibrates energy.
 
  private:
 
-  TString                fFileName ;          // Name of the file which contains the Principal file
-  TString                fFileNamePar ;       // Name of the file which contains the parameters
-  Int_t                  fCluster ;           // Parameter that depens on the energy range to select the parameters of the file       
-  TString                fOptFileName ;       // choose de parameters and principal file
-  TString                fFrom ;              // name of Recpoints and TrackSegments 
-  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    fFileName5 ;     // File that contains the Principal file for analysis from 0.5 to 5 GeV
+  TString    fFileName100 ;   // File that contains the Principal file for analysis from 0.5 to 100 GeV
+  TString    fFileNamePar5 ;  // File that contains the parameters for analysis from 0.5 to 5 GeV
+  TString    fFileNamePar100 ;// File that contains the parameters for analysis from 0.5 to 100 GeV
+  
+  TString    fFrom ;              // name of Recpoints and TrackSegments 
+  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
  
   Int_t                      fNEvent ;            //! current event number
   AliPHOSClusterizer *       fClusterizer ;       //! clusterizer
   AliPHOSTrackSegmentMaker * fTSMaker ;           //! track segment maker
-  TPrincipal *               fPrincipal ;         //! TPrincipal from fFileName 
-  Int_t                      fRecParticlesInRun ; //! Total number of recparticles in one run
+
+  TPrincipal *               fPrincipal5 ;        //! TPrincipal from fFileName5  
+  TPrincipal *               fPrincipal100 ;      //! TPrincipal from fFileName100 
+  TPrincipal *               fPrincipal ;         //! TPrincipal copy 
   Double_t *                 fX ;                 //! Principal data 
   Double_t *                 fP ;                 //! Principal eigenvalues
-  TMatrixD *                 fParameters ;        //! Matrix of all identification Parameters
+  Int_t                      fRecParticlesInRun ; //! Total number of recparticles in one run
+  TMatrixD *                 fParameters5 ;       //! Matrix of identification Parameters 0.5 to 5 GeV
+  TMatrixD *                 fParameters100 ;     //! Matrix of identification Parameters 5-100 GeV
+  TMatrixD *                 fParameters;         //! Matrix copy of identification Parameters
+
+  Int_t                      fCluster;            // Cluster energy range to choose parameters
+  Int_t                      fClusterrcpv;        // Cluster energy range to choos rcpv parameters
+  Int_t                      fMatrixExtraRow;     // Different size of the parameters file. Depends on range
+
+  Float_t   fACalParameter ;// A parameter energy calibration Encal=A+B*En+C*En^2
+  Float_t   fBCalParameter ;// B parameter energy calibration Encal=A+B*En+C*En^2
+  Float_t   fCCalParameter ;// B parameter energy calibration Encal=A+B*En+C*En^2
 
-  ClassDef( AliPHOSPIDv1,3)  // Particle identifier implementation version 1
+  ClassDef( AliPHOSPIDv1,4)  // Particle identifier implementation version 1
 
 };