]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSGeometry.h
Using the recommended way of forward declarations for TVector and TMatrix (see v5...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSGeometry.h
index 5556546ebff26cc4360f55be095c4a54f03ffc34..a2caa3c2246f780cb3a1284f15250fb2c9864217 100644 (file)
@@ -39,7 +39,7 @@ public:
   virtual ~AliPHOSGeometry(void) ; 
   static AliPHOSGeometry * GetInstance(const Text_t* name, const Text_t* title="") ; 
   static AliPHOSGeometry * GetInstance() ; 
-  virtual void   GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos, TMatrix & gmat) const ;
+  virtual void   GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos, TMatrixF & gmat) const ;
   virtual void   GetGlobal(const AliRecPoint* RecPoint, TVector3 & gpos) const ;
   virtual Bool_t Impact(const TParticle * particle) const ;
 
@@ -52,27 +52,33 @@ public:
 
   static TString Radian(void){ return TString("rad") ; }  // a global for radian (rad)
 
-  Bool_t AbsToRelNumbering(const Int_t AbsId, Int_t * RelId) const ; 
+  Bool_t AbsToRelNumbering(Int_t AbsId, Int_t * RelId) const ; 
                                           // converts the absolute PHOS numbering to a relative 
 
-  void EmcModuleCoverage(const Int_t m, Double_t & tm, Double_t & tM, Double_t & pm, 
+  void EmcModuleCoverage(Int_t m, Double_t & tm, Double_t & tM, Double_t & pm, 
                                          Double_t & pM, Option_t * opt = Radian() ) const ;
                                          // calculates the angular coverage in theta and phi of a EMC module
   void EmcXtalCoverage(Double_t & theta, Double_t & phi, Option_t * opt = Radian() ) const ; 
                                          // calculates the angular coverage in theta and phi of a  
                                          // single crystal in a EMC module
-  void ImpactOnEmc(const Double_t theta, const Double_t phi, Int_t & ModuleNumber, 
+  void ImpactOnEmc(Double_t theta, Double_t phi, Int_t & ModuleNumber, 
                         Double_t & z, Double_t & x) const ; 
-                                         // calculates the impact coordinates of a neutral particle  
+  void ImpactOnEmc(const TVector3& vec, Int_t & ModuleNumber, 
+                        Double_t & z, Double_t & x) const ; 
+  void ImpactOnEmc(const TParticle& p, Int_t & ModuleNumber, 
+                        Double_t & z, Double_t & x) const ; 
+                                        // calculates the impact coordinates of a neutral particle  
                                          // emitted in direction theta and phi in ALICE
-  Bool_t IsInEMC(const Int_t id) const { if (id > GetNModules() *  GetNCristalsInModule() ) return kFALSE; return kTRUE; } 
+  Bool_t IsInEMC(Int_t id) const { if (id > GetNModules() *  GetNCristalsInModule() ) return kFALSE; return kTRUE; } 
   void RelPosInModule(const Int_t * RelId, Float_t & y, Float_t & z) const ; 
                                          // gets the position of element (pad or Xtal) relative to 
                                          // center of PHOS module  
-  void RelPosInAlice(const Int_t AbsId, TVector3 &  pos) const ;             
+  void RelPosInAlice(Int_t AbsId, TVector3 &  pos) const ;             
                                          // gets the position of element (pad or Xtal) relative to Alice
   Bool_t RelToAbsNumbering(const Int_t * RelId, Int_t & AbsId) const ;         
                                          // converts the absolute PHOS numbering to a relative 
+  void  RelPosToAbsId(Int_t module, Double_t x, Double_t z, Int_t & AbsId) const; 
+                                         // converts local PHOS-module (x, z) coordinates to absId 
 
   Bool_t IsInitialized(void)                  const { return fgInit ; }  
                                                                        
@@ -113,6 +119,10 @@ public:
   Float_t GetCPVBoxSize(Int_t index)           const { return fGeometryCPV ->GetCPVBoxSize(index);        } 
   Float_t GetIPtoCPVDistance(void)             const { return  GetIPtoOuterCoverDistance() - 
                                                               GetCPVBoxSize(1) - 1.0; }
+  void GetModuleCenter(TVector3& center, const char *det, Int_t module) const;
+  void Global2Local(TVector3& localPosition,
+                   const TVector3& globalPosition,
+                   Int_t module) const;
 
   // Return PHOS' support geometry parameters