Read TreeQA only if it already exists
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPIDv1.h
CommitLineData
26d4b141 1#ifndef ALIPHOSPIDV1_H
2#define ALIPHOSPIDV1_H
6ad0bfa0 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
b2a60966 8
9//_________________________________________________________________________
10// Implementation version v1 of the PHOS particle identifier
11// Identification is based on information from PPSD and EMC
2f04ed65 12// Oh yeah
b2a60966 13//*-- Author: Yves Schutz (SUBATECH)
6ad0bfa0 14
15// --- ROOT system ---
7acf6008 16class TFormula ;
17class TVector3 ;
6ad0bfa0 18
19// --- Standard library ---
20
21// --- AliRoot header files ---
7acf6008 22class AliPHOSEmcRecPoint ;
23class AliPHOSRecPoint ;
6ad0bfa0 24
26d4b141 25#include "AliPHOSPID.h"
6ad0bfa0 26
26d4b141 27class AliPHOSPIDv1 : public AliPHOSPID {
6ad0bfa0 28
29public:
30
7acf6008 31 AliPHOSPIDv1() ; // ctor
32 AliPHOSPIDv1(const char* headerFile, const char * tsBranch = 0) ;
33 virtual ~AliPHOSPIDv1() ; // dtor
34
35 virtual void Exec(Option_t * option);
7b7c1533 36 virtual char * GetRecParticlesBranch()const {return (char*) fRecParticlesTitle.Data() ;}
37 virtual char * GetTrackSegmentsBranch()const{return (char*) fTrackSegmentsTitle.Data(); }
7acf6008 38
39 virtual void Init() ;
7acf6008 40 virtual void PlotDispersionCuts()const ;
7acf6008 41 virtual void Print(Option_t * option)const ;
7acf6008 42 virtual void SetIdentificationMethod(char * option = "CPV DISP" ){fIDOptions = option ;}
7b7c1533 43 virtual void SetShowerProfileCut(char * formula = "0.35*0.35 - (x-1.386)*(x-1.386) - 1.707*1.707*(y-1.008)*(y-1.008)") ;
7acf6008 44 virtual void SetDispersionCut(Float_t cut){fDispersion = cut ; }
45 virtual void SetCpvtoEmcDistanceCut(Float_t cut ) {fCpvEmcDistance = cut ;}
7b7c1533 46 virtual void SetTrackSegmentsBranch(const char* title) { fTrackSegmentsTitle = title;}
47 virtual void SetRecParticlesBranch (const char* title) { fRecParticlesTitle = title;}
48 virtual const char * Version() const { return "pid-v1" ; }
69183710 49
7acf6008 50 private:
7b7c1533 51
7acf6008 52 void MakeRecParticles(void ) ;
7b7c1533 53 Float_t GetDistance(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, Option_t * Axis)const ; // Relative Distance PPSD-EMC
7acf6008 54 TVector3 GetMomentumDirection(AliPHOSEmcRecPoint * emc, AliPHOSRecPoint * cpv, AliPHOSRecPoint * ppsd)const ;
7acf6008 55 void PrintRecParticles(Option_t * option) ;
7b7c1533 56 virtual Bool_t ReadTrackSegments(Int_t event) ;
57 virtual void WriteRecParticles(Int_t event) ;
09fc14a0 58
59 private:
60
baef0810 61 TString fHeaderFileName ; // file name with event header
7b7c1533 62 TString fTrackSegmentsTitle; // branch name with track segments
baef0810 63 TString fRecPointsTitle ; // branch name with rec points
7b7c1533 64 TString fRecParticlesTitle ; // branch name with rec particles
baef0810 65 TString fIDOptions ; // PID option
baef0810 66 Int_t fNEvent ; // current event number
67 TObjArray * fEmcRecPoints ; // ! initial EMC RecPoints
68 TObjArray * fCpvRecPoints ; // ! initial CPV RecPoints
69 TClonesArray * fTrackSegments; // ! initial list of TrackSegments
70 TClonesArray * fRecParticles ; // ! output
7acf6008 71
baef0810 72 AliPHOSClusterizer * fClusterizer ; // !
73 AliPHOSTrackSegmentMaker * fTSMaker ; // !
7acf6008 74
baef0810 75 TFormula * fFormula ; // formula to define cut on the shouer elips axis
76 Float_t fDispersion ; // dispersion cut
77 Float_t fCpvEmcDistance ; // Max EMC-CPV distance
7acf6008 78
b2a60966 79 ClassDef( AliPHOSPIDv1,1) // Particle identifier implementation version 1
6ad0bfa0 80
81};
82
26d4b141 83#endif // AliPHOSPIDV1_H