]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - PHOS/AliPHOSPIDv1.h
Code for simulation, sdigitization and digitization moved from macros to compiled...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPIDv1.h
... / ...
CommitLineData
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 ---
16class TVector3 ;
17class TMatrix ;
18class TPrincipal ;
19
20// --- Standard library ---
21
22// --- AliRoot header files ---
23class AliPHOSEmcRecPoint ;
24class AliPHOSRecPoint ;
25
26#include "AliPHOSPID.h"
27
28class AliPHOSPIDv1 : public AliPHOSPID {
29
30public:
31
32 AliPHOSPIDv1() ; // ctor
33 AliPHOSPIDv1(const TString alirunFileNameFile, const TString eventFolderName = AliConfig::fgkDefaultEventFolderName) ;
34 AliPHOSPIDv1(const AliPHOSPIDv1 & pid) ; // cpy ctor
35
36 virtual ~AliPHOSPIDv1() ; // dtor
37
38 virtual void Exec(Option_t * option) ;
39
40 //Get file name that contain the PCA
41 const TString GetFileNamePrincipal(TString particle) const;
42
43 //Get file name that contain PID parameters
44 const TString GetFileNameParameters() const {return fFileNameParameters ;}
45
46 // Get number of rec.particles in this run
47 virtual const Int_t GetRecParticlesInRun() const {return fRecParticlesInRun ;}
48
49 // Get PID parameters as they are defined in fParameters
50 const Float_t GetParameterCalibration (Int_t i) const;
51 const Float_t GetParameterCpv2Emc (Int_t i, TString axis) const;
52 const Float_t GetParameterTimeGate (Int_t i) const;
53 const Float_t GetParameterToCalculateEllipse(TString particle, TString param, Int_t i) const ;
54 const Float_t GetParameterPhotonBoundary (Int_t i) const;
55 const Float_t GetParameterPi0Boundary (Int_t i) const;
56
57 // Get energy-dependent PID parameters
58 const Float_t GetCalibratedEnergy (const Float_t e) const;
59 const Float_t GetCpv2EmcDistanceCut (TString axis, Float_t e) const ;
60 const Float_t GetEllipseParameter (TString particle, TString param, Float_t e) const;
61
62 // Set PID parameters to change appropriate element of fParameters
63 void SetParameterCalibration (Int_t i, Float_t param);
64 void SetParameterCpv2Emc (Int_t i, TString axis, Float_t cut) ;
65 void SetParameterTimeGate (Int_t i, Float_t gate) ;
66 void SetParameterToCalculateEllipse(TString particle, TString param, Int_t i, Float_t value) ;
67 void SetParameterPhotonBoundary(Int_t i, Float_t param);
68 void SetParameterPi0Boundary (Int_t i, Float_t param);
69
70 void Print() const ;
71
72 virtual const char * Version() const { return "pid-v1" ; }
73
74 AliPHOSPIDv1 & operator = (const AliPHOSPIDv1 & /*pid*/) { return *this ;}
75
76private:
77
78 const TString BranchName() const ;
79 virtual void Init() ;
80 virtual void InitParameters() ;
81 void MakeRecParticles(void ) ;
82 // Relative Distance CPV-EMC
83 const Float_t GetDistance (AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * axis)const ;
84 const Int_t GetCPVBit (AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Int_t EffPur, Float_t e) const;
85 const Int_t GetPrincipalBit (TString particle, const Double_t* P, Int_t EffPur, Float_t e)const ; //Principal cut
86 const Int_t GetHardPhotonBit(AliPHOSEmcRecPoint * emc) const;
87 const Int_t GetHardPi0Bit (AliPHOSEmcRecPoint * emc) const;
88 TVector3 GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv)const ;
89 void PrintRecParticles(Option_t * option) ;
90 virtual void WriteRecParticles() ;
91 void SetParameters() ; //Fills the matrix of parameters
92 void Unload();
93
94private:
95
96 Bool_t fDefaultInit; //! kTRUE if the task was created by defaut ctor (only parameters are initialized)
97 Int_t fNEvent ; //! current event number
98 TString fFileNamePrincipalPhoton ; // File name of the photon principals
99 TString fFileNamePrincipalPi0 ; // File name of the pi0 principals
100 TString fFileNameParameters ; // File name with PID parameters
101 TPrincipal *fPrincipalPhoton ; //! TPrincipal from photon pca file
102 TPrincipal *fPrincipalPi0 ; //! TPrincipal from pi0 pca file
103 Double_t *fX ; //! Shower shape for the principal data
104 Double_t *fPPhoton ; //! Principal photon eigenvalues
105 Double_t *fPPi0 ; //! Principal pi0 eigenvalues
106 Int_t fRecParticlesInRun ; //! Total number of recparticles in one run
107 TMatrix *fParameters; //! Matrix of identification Parameters
108
109
110 ClassDef( AliPHOSPIDv1,9) // Particle identifier implementation version 1
111
112};
113
114#endif // AliPHOSPIDV1_H