Partial redesign of identification bits and coding rule corrections
[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 //  This is also a base class for AliPHOSRecParticle produced by AliPHOSPIDv1
11 //  Defines the particle type
12 //  To become a general class of AliRoot ?    
13 //--               
14 //*-- Author: Yves Schutz (SUBATECH)
15
16 // --- ROOT system ---
17
18 #include "TParticle.h"
19
20 // --- Standard library ---
21
22 // --- AliRoot header files ---
23
24 class AliPHOSFastRecParticle : public TParticle {
25   
26  public:
27   
28   AliPHOSFastRecParticle() ;
29   
30   AliPHOSFastRecParticle(const AliPHOSFastRecParticle & rp) ;  // ctor
31   AliPHOSFastRecParticle(const TParticle & p) ;  // ctor
32   virtual ~AliPHOSFastRecParticle(){ } //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   virtual const Int_t GetNPrimaries() const {return 0 ;}
42   virtual const TParticle * GetPrimary(Int_t index=0) const  {return 0 ;} 
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     // Set PID bit number fSet
50     fType |= (1<<fSet) ; 
51   } 
52   
53   Bool_t TestPIDBit(UInt_t fTest) const {
54     // Check PID bit number fTest
55     if (fType & (1<<fTest) ) return  kTRUE ;    
56     else return kFALSE ;
57   }
58   
59   Bool_t IsPhoton           (const char* purity = "low") const;
60   Bool_t IsPi0              (const char* purity = "low") const;
61   Bool_t IsElectron         (const char* purity = "low") const;
62   Bool_t IsHadron           () const;
63   Bool_t IsChargedHadron    () const;
64   Bool_t IsNeutralHadron    () const;
65   Bool_t IsFastChargedHadron() const;
66   Bool_t IsSlowChargedHadron() const;
67   Bool_t IsFastNeutralHadron() const;
68   Bool_t IsSlowNeutralHadron() const;
69
70   TString Name() const ; 
71   virtual void Paint(Option_t * option="");
72   virtual void Print(Option_t * option="") const ; 
73   
74   void SetType(Int_t type) ;
75   
76   void SetIndexInList(Int_t val) { 
77     // sets the value of the index in the list 
78     fIndexInList = val ; 
79   }
80   //This has to disappear
81   enum EParticleType { kUNDEFINED=-1, 
82                        kNEUTRALEMFAST, kNEUTRALHAFAST,  kNEUTRALEMSLOW, kNEUTRALHASLOW, 
83                        kCHARGEDEMFAST, kCHARGEDHAFAST,  kCHARGEDEMSLOW, kCHARGEDHASLOW } ; 
84   
85   typedef TClonesArray  FastRecParticlesList ; 
86   
87  protected:
88
89   Int_t fIndexInList ; // the index of this RecParticle in the list stored in TreeR (to be set by analysis)
90   Int_t fType ;        // particle type obtained by "virtual" reconstruction
91  private:
92
93   ClassDef(AliPHOSFastRecParticle,2)  // Reconstructed Particle produced by the fast simulation 
94
95 };
96
97 #endif // AliPHOSFASTRECPARTICLE_H