PHOS module
[u/mrichter/AliRoot.git] / PHOS / PHOSbase / AliPHOSFastRecParticle.h
1 #ifndef ALIPHOSFASTRECPARTICLE_H
2 #define ALIPHOSFASTRECPARTICLE_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.36  2005/05/28 14:19:04  schutz
12  * Compilation warnings fixed by T.P.
13  *
14  */
15
16 //_________________________________________________________________________
17 //  A  Particle modified by PHOS response and produced by AliPHOSvFast
18 //  This is also a base class for AliPHOSRecParticle produced by AliPHOSPIDv1
19 //  Defines the particle type
20 //  To become a general class of AliRoot ?    
21 //--               
22 //*-- Author: Yves Schutz (SUBATECH)
23
24 // --- ROOT system ---
25
26 class TClonesArray;
27 #include "TParticle.h"
28 #include "AliPID.h"
29 // --- Standard library ---
30
31 // --- AliRoot header files ---
32
33 class AliPHOSFastRecParticle : public TParticle {
34   
35  public:
36   
37   AliPHOSFastRecParticle() ;
38   
39   AliPHOSFastRecParticle(const AliPHOSFastRecParticle & rp) ;  // ctor
40   AliPHOSFastRecParticle(const TParticle & p) ;  // ctor
41   virtual ~AliPHOSFastRecParticle(){ } //dtor
42   AliPHOSFastRecParticle & operator = (const AliPHOSFastRecParticle & /*rp*/);
43
44   virtual Int_t DistancetoPrimitive(Int_t px, Int_t py) ; 
45   virtual void Draw(Option_t *option) ;  
46   virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) ;
47   Int_t GetIndexInList() const { 
48     // returns the index of this in the list
49     return fIndexInList ; 
50   } 
51   virtual Int_t GetNPrimaries() const {return 0 ;}
52   virtual const TParticle * GetPrimary(Int_t) const  {return 0 ;} 
53   Int_t GetType() const { 
54     // returns the type of the particle
55     return fType ; 
56   } 
57   
58   void SetPIDBit(UInt_t fSet) {
59     // Set PID bit number fSet
60     fType |= (1<<fSet) ; 
61   } 
62   
63   Bool_t TestPIDBit(UInt_t fTest) const {
64     // Check PID bit number fTest
65     if (fType & (1<<fTest) ) return  kTRUE ;    
66     else return kFALSE ;
67   }
68   
69   Bool_t IsPhoton           (TString purity = "low") const;
70   Bool_t IsPi0              (TString purity = "low") const;
71   Bool_t IsElectron         (TString purity = "low") const;
72   Bool_t IsHardPhoton       () const;
73   Bool_t IsHardPi0          () const;
74   Bool_t IsHadron           () const;
75   Bool_t IsChargedHadron    () const;
76   Bool_t IsNeutralHadron    () const;
77   Bool_t IsFastChargedHadron() const;
78   Bool_t IsSlowChargedHadron() const;
79   Bool_t IsFastNeutralHadron() const;
80   Bool_t IsSlowNeutralHadron() const;
81   Bool_t IsEleCon(TString purity = "low") const; 
82
83   TString Name() const ; 
84   virtual void Paint(Option_t * option="");
85   virtual void Print(const Option_t * = "") const ; 
86   
87   void SetTof(Float_t tof) { fTof = tof ; } 
88   Float_t ToF() const { return fTof ; } 
89   void SetType(Int_t type) ;
90   
91   void SetIndexInList(Int_t val) { 
92     // sets the value of the index in the list 
93     fIndexInList = val ; 
94   }
95   //This has to disappear
96   enum EParticleType { kTYPE = 8, 
97                        kUNDEFINED=-1, 
98                        kNEUTRALEMFAST, kNEUTRALHAFAST,  kNEUTRALEMSLOW, kNEUTRALHASLOW, 
99                        kCHARGEDEMFAST, kCHARGEDHAFAST,  kCHARGEDEMSLOW, kCHARGEDHASLOW } ; 
100   
101   typedef TClonesArray  FastRecParticlesList ; 
102   
103  protected:
104
105   Int_t fIndexInList ; // the index of this RecParticle in the list stored in TreeR (to be set by analysis)
106   Float_t fTof ;       // time of fliht
107   Int_t fType ;        // particle type obtained by "virtual" reconstruction
108   Float_t fPID[AliPID::kSPECIESCN] ; // PID probability densities
109
110  private:
111
112   ClassDef(AliPHOSFastRecParticle,2)  // Reconstructed Particle produced by the fast simulation 
113
114 };
115
116 #endif // AliPHOSFASTRECPARTICLE_H