LCOV - code coverage report
Current view: top level - PHOS/PHOSbase - AliPHOSPIDv1.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 14 7.1 %
Date: 2016-06-14 17:26:59 Functions: 2 18 11.1 %

          Line data    Source code
       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             : /* History of cvs commits:
       9             :  *
      10             :  * $Log$
      11             :  * Revision 1.60  2007/04/01 15:40:15  kharlov
      12             :  * Correction for actual vertex position implemented
      13             :  *
      14             :  * Revision 1.59  2007/03/06 06:57:46  kharlov
      15             :  * DP:calculation of distance to CPV done in TSM
      16             :  *
      17             :  * Revision 1.58  2006/04/12 11:32:03  alibrary
      18             :  * Simplification of Makefile and some small corrections
      19             :  *
      20             :  * Revision 1.57  2006/01/23 17:51:48  hristov
      21             :  * Using the recommended way of forward declarations for TVector and TMatrix (see v5-08-00 release notes). Additional clean-up
      22             :  *
      23             :  * Revision 1.56  2005/05/28 14:19:04  schutz
      24             :  * Compilation warnings fixed by T.P.
      25             :  *
      26             :  */
      27             : 
      28             : //_________________________________________________________________________
      29             : // Implementation version v1 of the PHOS particle identifier 
      30             : // Identification is based on information from CPV and EMC
      31             : // Oh yeah                 
      32             : //*-- Author: Yves Schutz (SUBATECH), Gustavo Conesa.
      33             : 
      34             : // --- Standard library ---
      35             : 
      36             : // --- ROOT system ---
      37             : class TCanvas ;
      38             : class TFolder ;
      39             : class TFormula;
      40             : class TPrincipal ;
      41             : class TROOT ;
      42             : class TTree ;
      43             : #include "TVector3.h"
      44             : #include <TMatrixDfwd.h>
      45             : 
      46             : // --- AliRoot header files ---
      47             : class AliPHOSClusterizerv1 ;
      48             : class AliPHOSCpvRecPoint ;
      49             : class AliPHOSEmcRecPoint ;
      50             : class AliPHOSTrackSegment ;
      51             : class AliPHOSTrackSegmentMakerv1 ;
      52             : #include "AliPHOSPID.h"
      53             : #include "AliPID.h"
      54             : 
      55             : class  AliPHOSPIDv1 : public AliPHOSPID {
      56             :   
      57             : public:
      58             :   
      59             :   AliPHOSPIDv1() ;          // ctor   
      60             :   AliPHOSPIDv1(AliPHOSGeometry *geom);
      61             :   AliPHOSPIDv1(const AliPHOSPIDv1 & pid) ;          // cpy ctor            
      62             :   
      63             :   virtual ~AliPHOSPIDv1() ; // dtor
      64             :   
      65             :   virtual void TrackSegments2RecParticles(Option_t *option);  // Does the job
      66             : 
      67             :   //Get file name that contain the PCA
      68             :   const TString GetFileNamePrincipal(TString particle) const;
      69             : 
      70             :   //Get file name that contain PID parameters
      71           0 :   const TString GetFileNameParameters()      const {return fFileNameParameters ;}
      72             : 
      73             :   // Get PID parameters as they are defined in fParameters
      74             :   Float_t GetParameterCalibration    (Int_t i)               const;
      75             :   Float_t GetParameterCpv2Emc        (Int_t i, TString axis) const;
      76             :   Float_t GetParameterTimeGate       (Int_t i)               const;
      77             :   Float_t GetParameterToCalculateEllipse(TString particle, TString param, Int_t i) const  ;     
      78             :   Float_t GetParameterPhotonBoundary (Int_t i)               const;
      79             :   Float_t GetParameterPi0Boundary    (Int_t i)               const;
      80             : 
      81             :   // Get energy-dependent PID parameters
      82             :   Float_t GetCpv2EmcDistanceCut  (TString axis, Float_t e)   const ;
      83             :   Float_t GetEllipseParameter    (TString particle, TString param, Float_t e) const;
      84             : 
      85           0 :   Double_t GetThresholdChargedNeutral () const {return  fChargedNeutralThreshold;}
      86           0 :   Float_t GetTOFEnergyThreshold () const {return  fTOFEnThreshold;}
      87           0 :   Float_t GetDispersionEnergyThreshold () const {return  fDispEnThreshold;}
      88           0 :   Int_t   GetDispersionMultiplicityThreshold () const {return  fDispMultThreshold;}
      89             : 
      90             :   //Do bayesian PID
      91           0 :   void SetBayesianPID(Bool_t set){ fBayesian = set ;}
      92             : 
      93             :   // Set PID parameters to change appropriate element of fParameters
      94             :   void SetParameterCalibration   (Int_t i, Float_t param);
      95             :   void SetParameterCpv2Emc       (Int_t i, TString axis, Float_t cut)  ; 
      96             :   void SetParameterTimeGate      (Int_t i, Float_t gate)  ; 
      97             :   void SetParameterToCalculateEllipse(TString particle, TString param, Int_t i, Float_t value) ;
      98             :   void SetParameterPhotonBoundary(Int_t i, Float_t param);
      99             :   void SetParameterPi0Boundary   (Int_t i, Float_t param);
     100             : 
     101           0 :   void SetThresholdChargedNeutral (Double_t th) {fChargedNeutralThreshold = th;}
     102           0 :   void SetTOFEnergyThreshold (Float_t th)  {fTOFEnThreshold = th;}
     103           0 :   void SetDispersionEnergyThreshold (Float_t th) {fDispEnThreshold = th;}
     104           0 :   void SetDispersionMultiplicityThreshold (Int_t th)  {fDispMultThreshold = th;}
     105             : 
     106             :   //Switch to "on flyght" mode, without writing to TreeR and file  
     107           0 :   void SetWriting(Bool_t toWrite = kFALSE){fWrite = toWrite;} 
     108             :   void Print(const Option_t * = "") const ; 
     109             : 
     110             :   void GetVertex(void) ; //Extracts vertex in current event
     111             : 
     112           0 :   virtual const char * Version() const { return "pid-v1" ; }  
     113             : 
     114           0 :   AliPHOSPIDv1 & operator = (const AliPHOSPIDv1 & /*pid*/) { return *this ;} 
     115             :   
     116             : private:
     117             :   
     118             :   virtual void  InitParameters() ;
     119             :   void          MakeRecParticles(void ) ;
     120             :   void          MakePID(void) ;
     121             : 
     122             :   //Functions to calculate the PID probability 
     123             :   //  Double_t ChargedHadronDistProb(Double_t  x, Double_t y, Double_t * parg, Double_t * parl) ;
     124             :   Double_t GausF   (Double_t x, Double_t y, Double_t *par) ; //gaussian probability, parameter dependence a+b/(x*x)+c/x
     125             :   Double_t GausPol2(Double_t x, Double_t y, Double_t *par) ; //gaussian probability, parameter dependence a+b*x+c*x*x
     126             :   Double_t LandauF(Double_t x, Double_t y, Double_t *par) ; //gaussian probability, parameter dependence  a+b/(x*x)+c/x
     127             :   Double_t LandauPol2(Double_t x, Double_t y, Double_t *par) ; //gaussian probability, parameter dependence a+b*x+c*x*x
     128             :  // Relative Distance CPV-EMC
     129             :   Int_t   GetCPVBit       (AliPHOSTrackSegment * ts, Int_t EffPur, Float_t e) const;
     130             :   Int_t   GetPrincipalBit (TString particle, const Double_t* P, Int_t EffPur, Float_t e)const ; //Principal cut
     131             :   Int_t   GetHardPhotonBit(AliPHOSEmcRecPoint * emc) const;
     132             :   Int_t   GetHardPi0Bit   (AliPHOSEmcRecPoint * emc) const;
     133             :   TVector3      GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSCpvRecPoint * cpv)const ;
     134             :   void          PrintRecParticles(Option_t * option) ;
     135             :   void          SetParameters() ; //Fills the matrix of parameters
     136             : 
     137             :   //PID population
     138             :   void SetInitPID(const Double_t * pid) ;
     139             :   void GetInitPID(Double_t * pid) const ;
     140             : 
     141             : private:
     142             :   Bool_t      fBayesian ;                 //  Do PID bayesian
     143             :   Bool_t      fDefaultInit;              //! kTRUE if the task was created by defaut ctor (only parameters are initialized)
     144             :   Bool_t      fWrite ;                   //! To write result to file 
     145             :   TString     fFileNamePrincipalPhoton ; //  File name of the photon principals
     146             :   TString     fFileNamePrincipalPi0 ;    //  File name of the pi0 principals
     147             :   TString     fFileNameParameters ;      //  File name with PID parameters
     148             :   TPrincipal *fPrincipalPhoton ;         //! TPrincipal from photon pca file 
     149             :   TPrincipal *fPrincipalPi0 ;            //! TPrincipal from pi0 pca file 
     150             :   Double_t   *fX ;                       //! Shower shape for the principal data 
     151             :   Double_t   *fPPhoton ;                 //! Principal photon eigenvalues
     152             :   Double_t   *fPPi0 ;                    //! Principal pi0 eigenvalues
     153             :   TMatrixF    *fParameters;               //! Matrix of identification Parameters
     154             : 
     155             :   TVector3   fVtx ;                      //! Vertex position in current event
     156             : 
     157             :   //Initial pid population
     158             :   Double_t fInitPID[AliPID::kSPECIESCN] ; // Initial population to do bayesian PID
     159             :   // pid probability function parameters
     160             :   // ToF
     161             :   Double_t fTphoton[3] ;       // gaussian tof response for photon
     162             :   TFormula * fTFphoton ;       // the formula   
     163             :   Double_t fTpiong[3] ;        // gaussian tof response for pions
     164             :   TFormula * fTFpiong ;        // the formula
     165             :   Double_t fTkaong[3] ;        // landau tof response for kaons
     166             :   TFormula * fTFkaong ;        // the formula
     167             :   Double_t fTkaonl[3] ;        // landau tof response for kaons
     168             :   TFormula * fTFkaonl ;        // the formula
     169             :   Double_t fThhadrong[3] ;     // gaus   tof response for heavy hadrons
     170             :   TFormula * fTFhhadrong ;     // the formula
     171             :   Double_t fThhadronl[3] ;     // landau   tof response for heavy hadrons
     172             :   TFormula * fTFhhadronl ;     // the formula
     173             : 
     174             :   //Shower dispersion
     175             :   Double_t fDmuon[3]    ;     // gaussian ss response for muon 
     176             :   TFormula * fDFmuon    ;     // the formula 
     177             :   Double_t fDphoton[10] ;     // gaussian ss response for EM
     178             :   Double_t fDpi0[10]    ;     // gaussian ss response for pi0
     179             :   Double_t fDhadron[10] ;     // gaussian ss response for hadrons
     180             : 
     181             :   Double_t fXelectron[10] ;   // gaussian emc-cpv distance response for electron
     182             :   Double_t fXcharged[10]  ;   // landau emc-cpv distance response for charged part (no elect) */
     183             :   Double_t fZelectron[10] ;   // gaussian emc-cpv distance response for electron
     184             :   Double_t fZcharged[10]  ;   // landau emc-cpv distance response for charged part (no elect) */
     185             : 
     186             : 
     187             :   Double_t fERecWeightPar[4] ;  // gaussian tof response for photon
     188             :   TFormula * fERecWeight ;      // the formula   
     189             :   Double_t fChargedNeutralThreshold ; //Threshold to differentiate between charged and neutral
     190             :   Float_t  fTOFEnThreshold;           //Maximum energy to use TOF
     191             :   Float_t  fDispEnThreshold;          //Minimum energy to use shower shape
     192             :   Int_t    fDispMultThreshold ;       //Minimum multiplicity to use shower shape
     193             : 
     194          86 :   ClassDef( AliPHOSPIDv1,13)  // Particle identifier implementation version 1
     195             : 
     196             : };
     197             : 
     198             : #endif // AliPHOSPIDV1_H

Generated by: LCOV version 1.11