/* $Id$ */
+/* History of cvs commits:
+ *
+ * $Log$
+ * Revision 1.60 2007/04/01 15:40:15 kharlov
+ * Correction for actual vertex position implemented
+ *
+ * Revision 1.59 2007/03/06 06:57:46 kharlov
+ * DP:calculation of distance to CPV done in TSM
+ *
+ * Revision 1.58 2006/04/12 11:32:03 alibrary
+ * Simplification of Makefile and some small corrections
+ *
+ * Revision 1.57 2006/01/23 17:51:48 hristov
+ * Using the recommended way of forward declarations for TVector and TMatrix (see v5-08-00 release notes). Additional clean-up
+ *
+ * Revision 1.56 2005/05/28 14:19:04 schutz
+ * Compilation warnings fixed by T.P.
+ *
+ */
//_________________________________________________________________________
// Implementation version v1 of the PHOS particle identifier
// Oh yeah
//*-- Author: Yves Schutz (SUBATECH), Gustavo Conesa.
+// --- Standard library ---
+
// --- ROOT system ---
-class TVector3 ;
-class TMatrix ;
-class TPrincipal ;
-class TROOT ;
-class TTree ;
class TCanvas ;
class TFolder ;
-class TMatrixD ;
class TFormula;
-// --- Standard library ---
+class TPrincipal ;
+class TROOT ;
+class TTree ;
+#include "TVector3.h"
+#include <TMatrixDfwd.h>
+
// --- AliRoot header files ---
-class AliPHOSEmcRecPoint ;
-class AliPHOSCpvRecPoint ;
class AliPHOSClusterizerv1 ;
+class AliPHOSCpvRecPoint ;
+class AliPHOSEmcRecPoint ;
+class AliPHOSTrackSegment ;
class AliPHOSTrackSegmentMakerv1 ;
-
#include "AliPHOSPID.h"
#include "AliPID.h"
+
class AliPHOSPIDv1 : public AliPHOSPID {
public:
AliPHOSPIDv1() ; // ctor
- AliPHOSPIDv1(const TString alirunFileNameFile, const TString eventFolderName = AliConfig::GetDefaultEventFolderName()) ;
+ AliPHOSPIDv1(AliPHOSGeometry *geom);
AliPHOSPIDv1(const AliPHOSPIDv1 & pid) ; // cpy ctor
virtual ~AliPHOSPIDv1() ; // dtor
- virtual void Exec(Option_t *option); // Does the job
+ virtual void TrackSegments2RecParticles(Option_t *option); // Does the job
//Get file name that contain the PCA
const TString GetFileNamePrincipal(TString particle) const;
//Get file name that contain PID parameters
const TString GetFileNameParameters() const {return fFileNameParameters ;}
- // Get number of rec.particles in this run
- virtual Int_t GetRecParticlesInRun() const {return fRecParticlesInRun ;}
-
-
// Get PID parameters as they are defined in fParameters
Float_t GetParameterCalibration (Int_t i) const;
Float_t GetParameterCpv2Emc (Int_t i, TString axis) const;
Float_t GetParameterPi0Boundary (Int_t i) const;
// Get energy-dependent PID parameters
- Float_t GetCalibratedEnergy (Float_t e) const;
Float_t GetCpv2EmcDistanceCut (TString axis, Float_t e) const ;
Float_t GetEllipseParameter (TString particle, TString param, Float_t e) const;
//Switch to "on flyght" mode, without writing to TreeR and file
void SetWriting(Bool_t toWrite = kFALSE){fWrite = toWrite;}
- void Print() const ;
+ void Print(const Option_t * = "") const ;
+
+ void GetVertex(void) ; //Extracts vertex in current event
virtual const char * Version() const { return "pid-v1" ; }
private:
- const TString BranchName() const ;
- virtual void Init() ;
virtual void InitParameters() ;
void MakeRecParticles(void ) ;
void MakePID(void) ;
Double_t LandauF(Double_t x, Double_t y, Double_t *par) ; //gaussian probability, parameter dependence a+b/(x*x)+c/x
Double_t LandauPol2(Double_t x, Double_t y, Double_t *par) ; //gaussian probability, parameter dependence a+b*x+c*x*x
// Relative Distance CPV-EMC
- Float_t GetDistance (AliPHOSEmcRecPoint * emc, AliPHOSCpvRecPoint * cpv, Option_t * axis)const ;
- Int_t GetCPVBit (AliPHOSEmcRecPoint * emc, AliPHOSCpvRecPoint * cpv, Int_t EffPur, Float_t e) const;
+ Int_t GetCPVBit (AliPHOSTrackSegment * ts, Int_t EffPur, Float_t e) const;
Int_t GetPrincipalBit (TString particle, const Double_t* P, Int_t EffPur, Float_t e)const ; //Principal cut
Int_t GetHardPhotonBit(AliPHOSEmcRecPoint * emc) const;
Int_t GetHardPi0Bit (AliPHOSEmcRecPoint * emc) const;
TVector3 GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSCpvRecPoint * cpv)const ;
void PrintRecParticles(Option_t * option) ;
- virtual void WriteRecParticles() ;
void SetParameters() ; //Fills the matrix of parameters
- void Unload();
//PID population
void SetInitPID(const Double_t * pid) ;
Bool_t fBayesian ; // Do PID bayesian
Bool_t fDefaultInit; //! kTRUE if the task was created by defaut ctor (only parameters are initialized)
Bool_t fWrite ; //! To write result to file
- Int_t fNEvent ; //! current event number
TString fFileNamePrincipalPhoton ; // File name of the photon principals
TString fFileNamePrincipalPi0 ; // File name of the pi0 principals
TString fFileNameParameters ; // File name with PID parameters
Double_t *fX ; //! Shower shape for the principal data
Double_t *fPPhoton ; //! Principal photon eigenvalues
Double_t *fPPi0 ; //! Principal pi0 eigenvalues
- Int_t fRecParticlesInRun ; //! Total number of recparticles in one run
- TMatrix *fParameters; //! Matrix of identification Parameters
+ TMatrixF *fParameters; //! Matrix of identification Parameters
+
+ TVector3 fVtx ; //! Vertex position in current event
//Initial pid population
Double_t fInitPID[AliPID::kSPECIESN] ; // Initial population to do bayesian PID
Float_t fDispEnThreshold; //Minimum energy to use shower shape
Int_t fDispMultThreshold ; //Minimum multiplicity to use shower shape
- ClassDef( AliPHOSPIDv1,12) // Particle identifier implementation version 1
+ ClassDef( AliPHOSPIDv1,13) // Particle identifier implementation version 1
};