]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALGeometry.h
fix
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALGeometry.h
index cdf0cce917d298ee9b3c867829ba9fefe9975aa5..826b678c39cfac45450c1a854f2f0978d1c3cee8 100644 (file)
@@ -28,28 +28,29 @@ class TParticle ;
 #include "AliEMCALEMCGeometry.h"
 #include "AliEMCALGeoParams.h"
 class AliEMCALShishKebabTrd1Module;
-#include "AliLog.h"
+class AliLog;
 
 class AliEMCALGeometry : public TNamed {
 
 public: 
 
   AliEMCALGeometry();
-  AliEMCALGeometry(const Text_t* name, const Text_t* title="");
+  AliEMCALGeometry(const Text_t* name, const Text_t* title="",
+                   const Text_t* mcname="", const Text_t* mctitle="");
   AliEMCALGeometry(const AliEMCALGeometry & geom);
   
   virtual ~AliEMCALGeometry(void); 
   AliEMCALGeometry & operator = (const AliEMCALGeometry  & rvalue);
   
-  static AliEMCALGeometry * GetInstance(const Text_t* name,
-                                       const Text_t* title="") ; 
+  static AliEMCALGeometry * GetInstance(const Text_t* name,      const Text_t* title="",
+                                        const Text_t* mcname="TGeant3", const Text_t* mctitle="") ; 
   static AliEMCALGeometry * GetInstance();
 
 
   //////////
   // General
   //
-  Bool_t  IsInitialized(void) const { return AliEMCALEMCGeometry::fgInit ; }
+  static Bool_t  IsInitialized(void)            {return AliEMCALEMCGeometry::fgInit; }
   static const Char_t* GetDefaultGeometryName() {return AliEMCALEMCGeometry::fgkDefaultGeometryName;}
   
   /////////////
@@ -64,7 +65,7 @@ public:
   virtual void Browse(TBrowser* b);
   virtual Bool_t  IsFolder() const;
 
-  virtual Bool_t Impact(const TParticle *) const;
+  virtual Bool_t Impact(const TParticle *particle) const;
   void ImpactOnEmcal(TVector3 vtx, Double_t theta, Double_t phi, Int_t & absId, TVector3 & vimpact) const;
   Bool_t IsInEMCAL(Double_t x, Double_t y, Double_t z) const;
 
@@ -200,7 +201,8 @@ public:
   Int_t   GetSuperModuleNumber(Int_t absId)  const;
   Int_t   GetNumberOfModuleInPhiDirection(Int_t nSupMod)  const
   { 
-    if(fKey110DEG == 1 && nSupMod>=10) return fNPhi/2;
+    if(fKey110DEG == 1 && nSupMod>=10 && !fGeoName.Contains("12SMV1")) return fNPhi/2;
+    else if(fKey110DEG == 1 && nSupMod>=10 && fGeoName.Contains("12SMV1")) return fNPhi/3;
     else                               return fNPhi;
   } 
   // From cell indexes to abs cell id
@@ -255,6 +257,10 @@ public:
   Bool_t          GetCellIndexFromFastORIndex(const Int_t id, Int_t idx[4]) const;
   Bool_t              GetTRUIndexFromSTUIndex(const Int_t id, Int_t& idx) const;
   Int_t               GetTRUIndexFromSTUIndex(const Int_t id) const;
+  Bool_t           GetTRUIndexFromOnlineIndex(const Int_t id, Int_t& idx) const;
+  Int_t            GetTRUIndexFromOnlineIndex(const Int_t id) const;
+  Bool_t           GetOnlineIndexFromTRUIndex(const Int_t id, Int_t& idx) const;
+  Int_t            GetOnlineIndexFromTRUIndex(const Int_t id) const;
   Bool_t            GetFastORIndexFromL0Index(const Int_t iTRU, const Int_t id, Int_t idx[], const Int_t size) const;
        
   ///////////////////
@@ -269,13 +275,7 @@ public:
   }
 
   //Method to set shift-rotational matrixes from ESDHeader
-  void SetMisalMatrix(const TGeoHMatrix * m, Int_t smod) {
-    fUseExternalMatrices = kTRUE;
-         if (smod >= 0 && smod < fEMCGeometry->GetNumberOfSuperModules()){
-            if(!fkSModuleMatrix[smod]) fkSModuleMatrix[smod] = new TGeoHMatrix(*m) ; //Set only if not set yet
-    }
-         else AliFatal(Form("Wrong supermodule index -> %d",smod));
-  }
+  void SetMisalMatrix(const TGeoHMatrix * m, Int_t smod);
        
   //Alternate geometry that allows to calculate tower position for different particles and different alignments
   void RecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, const Float_t depth,
@@ -286,9 +286,9 @@ public:
        
 protected:
 
-  void Init(void);                                // initializes the parameters of EMCAL
+  void Init(void);                          // initializes the parameters of EMCAL
   
-  AliEMCALEMCGeometry * fEMCGeometry;   // Geometry object for Electromagnetic calorimeter
+  AliEMCALEMCGeometry * fEMCGeometry;// Geometry object for Electromagnetic calorimeter
 
   TString  fGeoName;                 // geometry name
   Int_t    fKey110DEG;               // for calculation abs cell id; 19-oct-05 
@@ -312,24 +312,24 @@ protected:
   Float_t  fArm1PhiMin;              // Minimum angular position of EMCAL in Phi (degrees)
   Float_t  fArm1PhiMax;              // Maximum angular position of EMCAL in Phi (degrees)
   Float_t  fEtaMaxOfTRD1;            // Max eta in case of TRD1 geometry (see AliEMCALShishKebabTrd1Module)
-  TList   *fShishKebabTrd1Modules;   //! list of modules
+  TList   *fShishKebabTrd1Modules;   // list of modules
   Float_t  fParSM[3];                // SM sizes as in GEANT (TRD1)
   Float_t  fPhiModuleSize;           // Phi -> X 
   Float_t  fEtaModuleSize;           // Eta -> Y 
   Float_t  fPhiTileSize;             // Size of phi tile
   Float_t  fEtaTileSize;             // Size of eta tile
   Int_t    fNZ;                      // Number of Towers in the Z direction
-  Float_t  fIPDistance;                           // Radial Distance of the inner surface of the EMCAL
+  Float_t  fIPDistance;                     // Radial Distance of the inner surface of the EMCAL
   Float_t  fLongModuleSize;          // Size of long module
   // Geometry Parameters
-  Float_t  fShellThickness;             // Total thickness in (x,y) direction
-  Float_t  fZLength;                        // Total length in z direction
-  Float_t  fSampling;                       // Sampling factor
+  Float_t  fShellThickness;         // Total thickness in (x,y) direction
+  Float_t  fZLength;                // Total length in z direction
+  Float_t  fSampling;               // Sampling factor
 
-  Int_t    fFastOR2DMap[48][64];          // FastOR 2D Map over full EMCal
+  Int_t    fFastOR2DMap[48][64];     // FastOR 2D Map over full EMCal
        
   TGeoHMatrix* fkSModuleMatrix[AliEMCALGeoParams::fgkEMCALModules] ; //Orientations of EMCAL super modules
-  Bool_t   fUseExternalMatrices;     // Use the matrices set in fkSModuleMatrix and not those in the geoManager
+  Bool_t   fUseExternalMatrices;      // Use the matrices set in fkSModuleMatrix and not those in the geoManager
        
 private: