]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSFastRecParticle.h
New class to make V2 clusters starting from digits or hits (fast simulation). Origin...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSFastRecParticle.h
index 578bb3067977c7920c85f62db2d6867b154c6c50..99d8d0ca1b9fdfa100aff9f89013ca2896b97050 100644 (file)
 
 // --- AliRoot header files ---
 
-typedef TClonesArray  FastRecParticlesList ; 
-
-const static Int_t kUNDEFINED =-1 ;
-const static Int_t kNEUTRAL_EM = 0 ;
-const static Int_t kNEUTRAL_HA = 1 ;
-const static Int_t kGAMMA      = 2 ; 
-const static Int_t kGAMMA_HA   = 3 ; 
-const static Int_t kABSURD_EM  = 4 ;
-const static Int_t kABSURD_HA  = 5 ;
-const static Int_t kELECTRON   = 6 ;
-const static Int_t kCHARGED_HA = 7 ;
-
-
 class AliPHOSFastRecParticle : public TParticle {
-
-public:
   
-  AliPHOSFastRecParticle() {};          // ctor
+ public:
+  
+  AliPHOSFastRecParticle() ;
+  
   AliPHOSFastRecParticle(const AliPHOSFastRecParticle & rp) ;  // ctor
   AliPHOSFastRecParticle(const TParticle & p) ;  // ctor
-  virtual ~AliPHOSFastRecParticle(){}  // dtor
-
+  virtual ~AliPHOSFastRecParticle(){
+    // dtor
+  }
   virtual Int_t DistancetoPrimitive(Int_t px, Int_t py) ; 
   virtual void Draw(Option_t *option) ;  
   virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py) ;
-  Int_t GetIndexInList() const { return fIndexInList ; } 
-  virtual Int_t * GetPrimaries(Int_t & number) ;
-  Int_t GetType() { return fType ; } 
-  TString Name() ; 
+  Int_t GetIndexInList() const { 
+    // returns the index of this in the list
+    return fIndexInList ; 
+  } 
+  virtual const Int_t GetNPrimaries() const {return 0 ;}
+  virtual const TParticle * GetPrimary(Int_t index=0) const  {return 0 ;} 
+  const Int_t GetType() const { 
+    // returns the type of the particle
+    return fType ; 
+  } 
+  
+  void SetPIDBit(UInt_t fSet)
+    {
+      fType |= (1<<fSet) ; 
+    } 
+  
+  Bool_t TestPIDBit(UInt_t fTest){
+    if (fType & (1<<fTest) )
+      return  kTRUE ;  
+    else
+      return kFALSE ;
+  }
+  
+  Bool_t IsPhotonHiPu_LoEf()  {
+    Bool_t pid=kFALSE ;
+    if(TestPIDBit(8)&& //PCA
+       TestPIDBit(5)&& //TOF
+       TestPIDBit(2))  //RCPV
+      pid = kTRUE;
+    return pid ;
+  }
+  
+  Bool_t IsPhotonMed_Pu_Ef(){
+    Bool_t pid=kFALSE ;
+    if(TestPIDBit(7)&& //PCA
+       TestPIDBit(4)&& //TOF
+       TestPIDBit(1))  //RCPV
+      pid = kTRUE ;
+    return pid ;
+  }
+  
+  Bool_t IsPhotonHiEf_LoPu()  {
+    Bool_t pid=kFALSE ;
+    if(TestPIDBit(6)&& //PCA
+       TestPIDBit(3)&& //TOF
+       TestPIDBit(0))  //RCPV
+      pid = kTRUE ;
+    return pid ;
+  }
+  Bool_t IsPhoton()  {
+    Bool_t pid=kFALSE ;
+    if(IsPhotonHiEf_LoPu()) pid = kTRUE ;
+    return pid ;
+  }
+  
+  Bool_t IsFastChargedHadron()  {
+    Bool_t pid=kFALSE ;
+    if(TestPIDBit(5)&&TestPIDBit(4)&&TestPIDBit(3)) //TOF
+      pid = kTRUE ;
+    return pid ;
+  }
+  Bool_t IsSlowChargedHadron()  {
+    Bool_t pid=kFALSE ;
+    if(TestPIDBit(1)||TestPIDBit(0)) //CPV
+      pid = kTRUE ;
+    return pid ;
+  }
+  Bool_t IsFastNeutralHadron()  {
+    Bool_t pid=kFALSE ;
+    if(TestPIDBit(5)&&TestPIDBit(4)&&TestPIDBit(3)&& //TOF
+       TestPIDBit(2)&&TestPIDBit(1)&&TestPIDBit(0))//RCPV
+      pid = kTRUE ;
+    return pid ;
+  }
+  Bool_t IsSlowNeutralHadron()  {
+    Bool_t pid=kFALSE ;
+    if(TestPIDBit(2)&&TestPIDBit(1)&&TestPIDBit(0))//RCPV
+      pid = kTRUE ;
+    return pid ;
+  }
+
+  Bool_t IsFastChargedEM()  {
+    Bool_t pid=kFALSE ;
+    if((TestPIDBit(8)||TestPIDBit(7)||TestPIDBit(6))&&
+       TestPIDBit(5)&&TestPIDBit(4)&&TestPIDBit(3))//TOF
+      pid = kTRUE ;
+    return pid ;
+  }
+  
+  Bool_t IsSlowChargedEM()  {
+    Bool_t pid=kFALSE ;
+    if(TestPIDBit(8)||TestPIDBit(7)||TestPIDBit(6))
+      pid = kTRUE ;
+    return pid ;
+  }
+  
+  TString Name() const ; 
   virtual void Paint(Option_t * option="");
-  void Print() ; 
-  void SetPrimary(Int_t index) { fPrimary = index ; }
-  void SetType(Int_t type) { fType = type ; } 
-  void SetIndexInList(Int_t val) { fIndexInList = val ; } 
-
-protected:
+  virtual void Print(Option_t * option = "") const ; 
+  
+  void SetType(Int_t type) ;
+  
+  void SetIndexInList(Int_t val) { 
+    // sets the value of the index in the list 
+    fIndexInList = val ; 
+  }
+  //This has to disappear
+  enum EParticleType { kUNDEFINED=-1, 
+                      kNEUTRALEMFAST, kNEUTRALHAFAST,  kNEUTRALEMSLOW, kNEUTRALHASLOW, 
+                      kCHARGEDEMFAST, kCHARGEDHAFAST,  kCHARGEDEMSLOW, kCHARGEDHASLOW } ; 
+  
+  
+  typedef TClonesArray  FastRecParticlesList ; 
+  
+ protected:
 
   Int_t fIndexInList ; // the index of this RecParticle in the list stored in TreeR (to be set by analysis)
-  Int_t fPrimary ;     // (unique) primary particle index 
   Int_t fType ;        // particle type obtained by "virtual" reconstruction
+ private:
+
 
-  ClassDef(AliPHOSFastRecParticle,1)  // Reconstructed Particle produced by the fast simulation 
+  ClassDef(AliPHOSFastRecParticle,2)  // Reconstructed Particle produced by the fast simulation 
 
 };