0fdb06ce609d7f981478f169f11f366ca852cf3b
[u/mrichter/AliRoot.git] / PHOS / 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 //_________________________________________________________________________
9 //  A  Particle modified by PHOS response and produced by AliPHOSvFast
10 //  To become a general class of AliRoot ?    
11 //               
12 //*-- Author: Yves Schutz (SUBATECH)
13
14 // --- ROOT system ---
15
16 #include "TParticle.h"
17 #include "TVector3.h"
18
19 // --- Standard library ---
20
21 // --- AliRoot header files ---
22
23 class AliPHOSFastRecParticle : public TParticle {
24
25  public:
26   
27   AliPHOSFastRecParticle() ;
28
29   AliPHOSFastRecParticle(const AliPHOSFastRecParticle & rp) ;  // ctor
30   AliPHOSFastRecParticle(const TParticle & p) ;  // ctor
31   virtual ~AliPHOSFastRecParticle(){
32     // dtor
33   }
34   virtual Int_t DistancetoPrimitive(Int_t px, Int_t py) ; 
35   virtual void Draw(Option_t *option) ;  
36   virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) ;
37   Int_t GetIndexInList() const { 
38     // returns the index of this in the list
39     return fIndexInList ; 
40   } 
41   Int_t GetPrimary(){return fPrimary;}
42   
43   const Int_t GetType() const { 
44     // returns the type of the particle
45     return fType ; 
46   } 
47   
48   void SetPIDBit(UInt_t fSet)
49   {
50   fType |= (1<<fSet) ; 
51   } 
52    
53   Bool_t TestPIDBit(UInt_t fTest){
54    if (fType & (1<<fTest) )
55      return  kTRUE ;    
56    else
57      return kFALSE ;
58    }
59
60   Bool_t IsPhotonHiPu_LoEf()  {
61     Bool_t pid=kFALSE ;
62     if(TestPIDBit(8)&&TestPIDBit(7)&&TestPIDBit(6)&& //PCA
63        TestPIDBit(5)&&TestPIDBit(4)&&TestPIDBit(3)&& //TOF
64        TestPIDBit(2)&&TestPIDBit(1)&&TestPIDBit(0))  //RCPV
65       pid = kTRUE;
66     return pid ;
67   }
68   Bool_t IsPhotonMed_Pu_Ef(){
69     Bool_t pid=kFALSE ;
70     if(TestPIDBit(7)&&TestPIDBit(6)&& //PCA
71        TestPIDBit(5)&&TestPIDBit(4)&&TestPIDBit(3)&& //TOF
72        TestPIDBit(2)&&TestPIDBit(1)&&TestPIDBit(0))  //RCPV
73       pid = kTRUE ;
74     return pid ;
75   } 
76   Bool_t IsPhotonHiEf_LoPu()  {
77     Bool_t pid=kFALSE ;
78     if(TestPIDBit(6)&& //PCA
79        TestPIDBit(5)&&TestPIDBit(4)&&TestPIDBit(3)&& //TOF
80        TestPIDBit(2)&&TestPIDBit(1)&&TestPIDBit(0))  //RCPV
81       pid = kTRUE ;
82     return pid ;
83   }
84
85  Bool_t IsPhoton()  {
86     Bool_t pid=kFALSE ;
87     if(IsPhotonHiEf_LoPu()) pid = kTRUE ;
88     return pid ;
89   }
90
91   TString Name() ; 
92   virtual void Paint(Option_t * option="");
93   virtual void Print(const char * opt) ; 
94   void SetPrimary(Int_t index) { // sets the primary particle index
95     fPrimary = index ; 
96   }
97   
98   void SetType(Int_t type) { 
99     // sets the particle type 
100     fType = type ; 
101   }         
102  
103   void SetIndexInList(Int_t val) { 
104     // sets the value of the index in the list 
105     fIndexInList = val ; 
106   } 
107   enum EParticleType { kUNDEFINED=-1, 
108                        kNEUTRALEMFAST, kNEUTRALHAFAST,  kNEUTRALEMSLOW, kNEUTRALHASLOW, 
109                        kCHARGEDEMFAST, kCHARGEDHAFAST,  kCHARGEDEMSLOW, kCHARGEDHASLOW } ; 
110   
111
112   typedef TClonesArray  FastRecParticlesList ; 
113
114  protected:
115
116   Int_t fIndexInList ; // the index of this RecParticle in the list stored in TreeR (to be set by analysis)
117   Int_t fPrimary ;     //  primary particle index 
118   Int_t fType ;        // particle type obtained by "virtual" reconstruction
119
120  private:
121
122
123   ClassDef(AliPHOSFastRecParticle,1)  // Reconstructed Particle produced by the fast simulation 
124
125 };
126
127 #endif // AliPHOSFASTRECPARTICLE_H