New PID class PIDv2
[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     // ctor 
29   };         
30
31   AliPHOSFastRecParticle(const AliPHOSFastRecParticle & rp) ;  // ctor
32   AliPHOSFastRecParticle(const TParticle & p) ;  // ctor
33   virtual ~AliPHOSFastRecParticle(){
34     // dtor
35   }
36   virtual Int_t DistancetoPrimitive(Int_t px, Int_t py) ; 
37   virtual void Draw(Option_t *option) ;  
38   virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) ;
39   Int_t GetIndexInList() const { 
40     // returns the index of this in the list
41     return fIndexInList ; 
42   } 
43   Int_t GetPrimary(){return fPrimary;}
44   
45   const Int_t GetType() const { 
46     // returns the type of the particle
47     return fType ; 
48   } 
49   
50   void SetPIDBit(UInt_t fSet)
51   {
52   fType |= (1<<fSet) ; 
53   } 
54    
55   Bool_t TestPIDBit(UInt_t fTest){
56    if (fType & (1<<fTest) )
57      return  kTRUE ;    
58    else
59      return kFALSE ;
60    }
61      
62   TString Name() ; 
63   virtual void Paint(Option_t * option="");
64   virtual void Print(const char * opt) ; 
65   void SetPrimary(Int_t index) { // sets the primary particle index
66     fPrimary = index ; 
67   }
68   
69   void SetType(Int_t type) { 
70     // sets the particle type 
71     fType = type ; 
72   }         
73  
74   void SetIndexInList(Int_t val) { 
75     // sets the value of the index in the list 
76     fIndexInList = val ; 
77   } 
78
79   enum EParticleType { kUNDEFINED=-1, 
80                        kNEUTRALEMFAST, kNEUTRALHAFAST,  kNEUTRALEMSLOW, kNEUTRALHASLOW, 
81                        kCHARGEDEMFAST, kCHARGEDHAFAST,  kCHARGEDEMSLOW, kCHARGEDHASLOW } ; 
82
83   typedef TClonesArray  FastRecParticlesList ; 
84
85  protected:
86
87   Int_t fIndexInList ; // the index of this RecParticle in the list stored in TreeR (to be set by analysis)
88   Int_t fPrimary ;     //  primary particle index 
89   Int_t fType ;        // particle type obtained by "virtual" reconstruction
90
91  private:
92
93
94   ClassDef(AliPHOSFastRecParticle,1)  // Reconstructed Particle produced by the fast simulation 
95
96 };
97
98 #endif // AliPHOSFASTRECPARTICLE_H