ROOT logo
AliRoot » EMCAL » AliEMCALGeometry

class AliEMCALGeometry: public TNamed

 Geometry class  for EMCAL : singleton
 EMCAL consists of layers of scintillator and lead
 with scintillator fiber arranged as "shish-kebab" skewers
 Places the the Barrel Geometry of The EMCAL at Midrapidity
 between 80 and 180(or 190) degrees of Phi and
 -0.7 to 0.7 in eta

     EMCAL geometry tree:
     EMCAL -> superModule -> module -> tower(cell)
     Indexes
     absId -> nSupMod     -> nModule -> (nIphi,nIeta)

   Name choices:
   EMCAL_PDC06 (geometry used for PDC06 simulations, kept for backward compatibility)
      = equivalent to SHISH_77_TRD1_2X2_FINAL_110DEG in old notation
   EMCAL_COMPLETE (geometry for expected complete detector)
      = equivalent to SHISH_77_TRD1_2X2_FINAL_110DEG scTh=0.176 pbTh=0.144
          in old notation
   EMCAL_FIRSTYEARV1 - geometry for December 2009 to December 2010 run period;
                fixed bug for positions of modules inside SM
                (first module has tilt 0.75 degree);
                the sizes updated with last information from production
                drawing (end of October 2010).

   EMCAL_COMPLETEV1: Same fixes as FIRSTYEAR and 10 SM instead of 10 + 2 one_third SM, for 2011 runs

   EMCAL_COMPLETE12SMV1: contains 12 SM for runs from year 2012 and on

   EMCAL_COMPLETE12SMV1_DCAL: contains 12 SM and 6 DCAL SM

   EMCAL_COMPLETE12SMV1_DCAL_8SM: contains 12 SM and 8 DCAL SM including the DCAL extention (2 SM)

   EMCAL_COMPLETE12SMV1_DCAL_DEV: contains 12 SM shifted and 10 DCAL SM

   EMCAL_WSUC (Wayne State test stand)
      = no definite equivalent in old notation, was only used by
          Aleksei, but kept for testing purposes

   etc.

Function Members (Methods)

public:
AliEMCALGeometry()
AliEMCALGeometry(const AliEMCALGeometry& geom)
AliEMCALGeometry(const Text_t* name, const Text_t* title = "", const Text_t* mcname = "", const Text_t* mctitle = "")
virtual~AliEMCALGeometry()
voidTObject::AbstractMethod(const char* method) const
Float_tAngleFromEta(Float_t eta) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidBrowse(TBrowser* b)
voidBuildFastOR2DMap()
Bool_tCheckAbsCellId(Int_t absId) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
voidCreateListOfTrd1Modules()
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
voidEtaPhiFromIndex(Int_t absId, Double_t& eta, Double_t& phi) const
voidEtaPhiFromIndex(Int_t absId, Float_t& eta, Float_t& phi) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Float_tGet2Trd1Dx2() const
Float_tGet2Trd2Dy2() const
Int_tGetAbsCellId(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta) const
Int_tGetAbsCellIdFromCellIndexes(Int_t nSupMod, Int_t iphi, Int_t ieta) const
Bool_tGetAbsCellIdFromEtaPhi(Double_t eta, Double_t phi, Int_t& absId) const
Bool_tGetAbsFastORIndexFromPositionInEMCAL(const Int_t iEta, const Int_t iPhi, Int_t& id) const
Bool_tGetAbsFastORIndexFromPositionInSM(const Int_t iSM, const Int_t iEta, const Int_t iPhi, Int_t& id) const
Bool_tGetAbsFastORIndexFromPositionInTRU(const Int_t iTRU, const Int_t iEta, const Int_t iPhi, Int_t& id) const
Bool_tGetAbsFastORIndexFromTRU(const Int_t iTRU, const Int_t iADC, Int_t& id) const
Int_tGetAbsTRUNumberFromNumberInSm(const Int_t row, const Int_t col, const Int_t sm) const
Float_tGetArm1EtaMax() const
Float_tGetArm1EtaMin() const
Float_tGetArm1PhiMax() const
Float_tGetArm1PhiMin() const
Bool_tGetCellIndex(Int_t absId, Int_t& nSupMod, Int_t& nModule, Int_t& nIphi, Int_t& nIeta) const
Bool_tGetCellIndexFromFastORIndex(const Int_t id, Int_t* idx) const
voidGetCellPhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta, Int_t& iphi, Int_t& ieta) const
TArrayDGetCentersOfCellsEtaDir() const
TArrayDGetCentersOfCellsPhiDir() const
TArrayDGetCentersOfCellsXDir() const
Float_tGetDCALInnerEdge() const
Float_tGetDCALInnerExtandedEta() const
Float_tGetDCALPhiMax() const
Float_tGetDCALPhiMin() const
static const Char_t*GetDefaultGeometryName()
Float_tGetDeltaEta() const
Float_tGetDeltaPhi() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Float_tGetECPbRadThick() const
Float_tGetECScintThick() const
Float_tGetEMCALPhiMax() const
AliEMCALEMCGeometry*GetEMCGeometry() const
Int_t*GetEMCSystem() const
Float_tGetEnvelop(Int_t index) const
TArrayDGetEtaCentersOfCells() const
Float_tGetEtaModuleSize() const
Float_tGetEtaTileSize() const
Bool_tGetFastORIndexFromCellIndex(const Int_t id, Int_t& idx) const
Bool_tGetFastORIndexFromL0Index(const Int_t iTRU, const Int_t id, Int_t* idx, const Int_t size) const
Float_tGetFrontSteelStrip() const
Float_tGetGap2Active() const
voidGetGlobal(Int_t absId, Double_t* glob) const
voidGetGlobal(Int_t absId, TVector3& vglob) const
voidGetGlobal(const Double_t* loc, Double_t* glob, int ind) const
voidGetGlobal(const TVector3& vloc, TVector3& vglob, int ind) const
virtual const char*TObject::GetIconName() const
Int_tGetIHADR() const
Int_tGetILOSS() const
static AliEMCALGeometry*GetInstance()
static AliEMCALGeometry*GetInstance(const Text_t* name, const Text_t* title = "", const Text_t* mcname = "TGeant3", const Text_t* mctitle = "")
Float_tGetIPDistance() const
Int_tGetKey110DEG() const
Float_tGetLateralSteelStrip() const
Float_tGetLongModuleSize() const
const TGeoHMatrix*GetMatrixForSuperModule(Int_t smod) const
voidGetModuleIndexesFromCellIndexesInSModule(Int_t nSupMod, Int_t iphi, Int_t ieta, Int_t& iphim, Int_t& ietam, Int_t& nModule) const
voidGetModulePhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t& iphim, Int_t& ietam) const
voidGetModulePhiEtaIndexInSModuleFromTRUIndex(Int_t itru, Int_t iphitru, Int_t ietatru, Int_t& ietaSM, Int_t& iphiSM) const
virtual const char*TNamed::GetName() const
const Char_t*GetNameOfEMCALEnvelope() const
Int_tGetNCells() const
Int_tGetNCellsInModule() const
Int_tGetNCellsInSupMod() const
Int_tGetNECLayers() const
Int_tGetNEta() const
Int_tGetNETAdiv() const
Int_tGetNEtaSubOfTRU() const
Int_tGetNModulesInTRU() const
Int_tGetNModulesInTRUEta() const
Int_tGetNModulesInTRUPhi() const
Int_tGetNPhi() const
Int_tGetNPHIdiv() const
Int_tGetNPhiSuperModule() const
Int_tGetnSupModInDCAL() const
Int_tGetNTotalTRU() const
Int_tGetNTowers() const
Int_tGetNTRU() const
Int_tGetNTRUEta() const
Int_tGetNTRUPhi() const
Int_tGetNumberOfModuleInPhiDirection(Int_t nSupMod) const
Int_tGetNumberOfSuperModules() const
Int_tGetNZ() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
Int_tGetOnlineIndexFromTRUIndex(const Int_t id) const
Bool_tGetOnlineIndexFromTRUIndex(const Int_t id, Int_t& idx) const
virtual Option_t*TObject::GetOption() const
Float_tGetPassiveScintThick() const
Bool_tGetPhiBoundariesOfSM(Int_t nSupMod, Double_t& phiMin, Double_t& phiMax) const
Bool_tGetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t& phiMin, Double_t& phiMax) const
Double_tGetPhiCenterOfSM(Int_t nsupmod) const
Double_tGetPhiCenterOfSMSec(Int_t nsupmod) const
TArrayDGetPhiCentersOfCells() const
Float_tGetPhiGapForSuperModules() const
Float_tGetPhiModuleSize() const
Float_tGetPhiSuperModule() const
Float_tGetPhiTileSize() const
Bool_tGetPositionInEMCALFromAbsFastORIndex(const Int_t id, Int_t& iEta, Int_t& iPhi) const
Bool_tGetPositionInSMFromAbsFastORIndex(const Int_t id, Int_t& iSM, Int_t& iEta, Int_t& iPhi) const
Bool_tGetPositionInTRUFromAbsFastORIndex(const Int_t id, Int_t& iTRU, Int_t& iEta, Int_t& iPhi) const
Float_tGetSampling() const
Float_tGetShellThickness() const
AliEMCALShishKebabTrd1Module*GetShishKebabModule(Int_t neta) const
TList*GetShishKebabTrd1Modules() const
Int_tGetSMType(Int_t nSupMod) const
Float_tGetSteelFrontThickness() const
Int_tGetSuperModuleNumber(Int_t absId) const
Float_tGetSuperModulesPar(Int_t ipar) const
virtual const char*TNamed::GetTitle() const
Float_tGetTrd1AlFrontThick() const
Float_tGetTrd1Angle() const
Float_tGetTrd1BondPaperThick() const
Float_tGetTrd2AngleY() const
Bool_tGetTRUFromAbsFastORIndex(const Int_t id, Int_t& iTRU, Int_t& iADC) const
Int_tGetTRUIndexFromOnlineIndex(const Int_t id) const
Bool_tGetTRUIndexFromOnlineIndex(const Int_t id, Int_t& idx) const
Int_tGetTRUIndexFromSTUIndex(const Int_t id) const
Bool_tGetTRUIndexFromSTUIndex(const Int_t id, Int_t& idx) const
Float_tGetTubsR() const
Float_tGetTubsTurnAngle() const
virtual UInt_tTObject::GetUniqueID() const
Float_tGetZLength() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual Bool_tImpact(const TParticle* particle) const
voidImpactOnEmcal(TVector3 vtx, Double_t theta, Double_t phi, Int_t& absId, TVector3& vimpact) const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tIsDCALExtSM(Int_t nSupMod) const
Bool_tIsDCALSM(Int_t nSupMod) const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tIsFolder() const
Bool_tIsInDCAL(Double_t x, Double_t y, Double_t z) const
Bool_tIsInEMCAL(Double_t x, Double_t y, Double_t z) const
Int_tIsInEMCALOrDCAL(Double_t x, Double_t y, Double_t z) const
static Bool_tIsInitialized()
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliEMCALGeometry&operator=(const AliEMCALGeometry& rvalue)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
voidPrintCellIndexes(Int_t absId = 0, int pri = 0, const char* tit = "") constMENU
voidPrintGeometry()MENU
voidPrintGeometryGeoUtils()MENU
voidPrintLocalTrd1(Int_t pri = 0) constMENU
virtual Int_tTObject::Read(const char* name)
voidRecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, const Float_t depth, const Float_t* misaligTransShifts, const Float_t* misaligRotShifts, Float_t* global) const
virtual voidTObject::RecursiveRemove(TObject* obj)
Bool_tRelPosCellInSModule(Int_t absId, Double_t* loc) const
Bool_tRelPosCellInSModule(Int_t absId, TVector3& vloc) const
Bool_tRelPosCellInSModule(Int_t absId, Double_t& xr, Double_t& yr, Double_t& zr) const
Bool_tRelPosCellInSModule(Int_t absId, Double_t distEff, Double_t& xr, Double_t& yr, Double_t& zr) const
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetMisalMatrix(const TGeoHMatrix* m, Int_t smod)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidSetNPhi(Int_t nphi)
voidSetNTRUEta(Int_t ntru)
voidSetNTRUPhi(Int_t ntru)
voidSetNZ(Int_t nz)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetSampling(Float_t samp)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
Bool_tSuperModuleNumberFromEtaPhi(Double_t eta, Double_t phi, Int_t& nSupMod) const
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
Float_tZFromEtaR(Float_t r, Float_t eta) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidInit()
voidTObject::MakeZombie()

Data Members

public:
enum fEMCSMType { kEMCAL_Standard
kEMCAL_Half
kEMCAL_3rd
kDCAL_Standard
kDCAL_Ext
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Float_tfArm1EtaMaxMaximum pseudorapidity position of EMCAL in Eta
Float_tfArm1EtaMinMinimum pseudorapidity position of EMCAL in Eta
Float_tfArm1PhiMaxMaximum angular position of EMCAL in Phi (degrees)
Float_tfArm1PhiMinMinimum angular position of EMCAL in Phi (degrees)
TArrayDfCentersOfCellsEtaDirsize fNEta*fNETAdiv (for TRD1 only) (eta or z in SM, in cm)
TArrayDfCentersOfCellsPhiDirsize fNPhi*fNPHIdiv (for TRD1 only) (phi or y in SM, in cm)
TArrayDfCentersOfCellsXDirsize fNEta*fNETAdiv (for TRD1 only) ( x in SM, in cm)
Float_tfDCALInnerExtandedEtaDCAL inner edge in Eta (with some extension)
Float_tfDCALPhiMaxMaximum angular position of DCAL in Phi (degrees)
Float_tfDCALPhiMinMinimum angular position of DCAL in Phi (degrees)
Float_tfDCALStandardPhiMaxspecial edge for the case that DCAL contian extension
Float_tfEMCALPhiMaxMaximum angular position of EMCAL in Phi (degrees)
AliEMCALEMCGeometry*fEMCGeometryGeometry object for Electromagnetic calorimeter
Int_t*fEMCSMSystemgeometry structure
Float_tfEnvelop[3]the GEANT TUB for the detector
TArrayDfEtaCentersOfCells[fNEta*fNETAdiv*fNPhi*fNPHIdiv], positive direction (eta>0); eta depend from phi position;
Float_tfEtaMaxOfTRD1Max eta in case of TRD1 geometry (see AliEMCALShishKebabTrd1Module)
Float_tfEtaModuleSizeEta -> Y
Float_tfEtaTileSizeSize of eta tile
Int_tfFastOR2DMap[48][124]FastOR 2D Map over full EMCal
TStringfGeoNamegeometry name
Float_tfIPDistanceRadial Distance of the inner surface of the EMCAL
Int_tfKey110DEGfor calculation abs cell id; 19-oct-05
Float_tfLongModuleSizeSize of long module
Int_tfNCellsnumber of cells in calo
Int_tfNCellsInModulenumber cell in module
Int_tfNCellsInSupModnumber cell in super module
Int_tfNETAdivnumber eta divizion of module
Int_tfNPHIdivnumber phi divizion of module
Int_tfNPhiNumber of Towers in the PHI direction
Int_tfNZNumber of Towers in the Z direction
TStringTNamed::fNameobject identifier
Float_tfParSM[3]SM sizes as in GEANT (TRD1)
TArrayDfPhiBoundariesOfSMphi boundaries of SM in rad; size is fNumberOfSuperModules;
TArrayDfPhiCentersOfCells[fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.)
TArrayDfPhiCentersOfSMphi of centers of SM; size is fNumberOfSuperModules/2
TArrayDfPhiCentersOfSMSecphi of centers of section where SM lies; size is fNumberOfSuperModules/2
Float_tfPhiModuleSizePhi -> X
Float_tfPhiTileSizeSize of phi tile
Float_tfSamplingSampling factor
Float_tfShellThicknessTotal thickness in (x,y) direction
TList*fShishKebabTrd1Moduleslist of modules
TStringTNamed::fTitleobject title
Bool_tfUseExternalMatricesUse the matrices set in fkSModuleMatrix and not those in the geoManager
Float_tfZLengthTotal length in z direction
TGeoHMatrix*fkSModuleMatrix[22]Orientations of EMCAL super modules
Int_tfnSupModInDCALfor calculation abs cell id; 06-nov-12
private:
static AliEMCALGeometry*fgGeomPointer to the unique instance of the singleton
static Bool_tfgInitTells if geometry has been succesfully set up.
static const Char_t*fgkDefaultGeometryNameDefault name of geometry

Class Charts

Inheritance Chart:
TNamed
AliEMCALGeometry

Function documentation

AliEMCALGeometry()
 default ctor
 must be kept public for root persistency purposes, but should never be called by the outside world
AliEMCALGeometry(const AliEMCALGeometry& geom)
 Copy constarctor
AliEMCALGeometry(const Text_t* name, const Text_t* title = "", const Text_t* mcname = "", const Text_t* mctitle = "")
 ctor only for normal usage
~AliEMCALGeometry(void)
 dtor
AliEMCALGeometry * GetInstance()
 Returns the pointer of the unique instance
AliEMCALGeometry* GetInstance(const Text_t* name, const Text_t* title = "", const Text_t* mcname = "TGeant3", const Text_t* mctitle = "")
 Returns the pointer of the unique instance
void Browse(TBrowser* b)
Browse the modules
Bool_t IsFolder() const
Check if fShishKebabTrd1Modules is in folder
void GetGlobal(const Double_t* loc, Double_t* glob, int ind) const
 Figure out the global numbering
 of a given supermodule from the
 local numbering and the transformation
 matrix stored by the geometry manager (allows for misaligned
 geometry)
void GetGlobal(const TVector3& vloc, TVector3& vglob, int ind) const
Figure out the global numbering
of a given supermodule from the
local numbering given a 3-vector location
void GetGlobal(Int_t absId , double glob[3])
 Alice numbering scheme - Jun 03, 2006
void GetGlobal(Int_t absId, TVector3& vglob) const
 Alice numbering scheme - Jun 03, 2006
void PrintCellIndexes(Int_t absId = 0, int pri = 0, const char* tit = "") const
 Service methods
void PrintLocalTrd1(Int_t pri = 0) const
 For comparing with numbers from drawing
void EtaPhiFromIndex(Int_t absId, Double_t& eta, Double_t& phi) const
 Nov 16, 2006- float to double
 version for TRD1 only
void EtaPhiFromIndex(Int_t absId, Float_t& eta, Float_t& phi) const
 Nov 16,2006 - should be discard in future
Int_t GetAbsCellId(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta) const
 27-aug-04;
 corr. 21-sep-04;
       13-oct-05; 110 degree case
 May 31, 2006; ALICE numbering scheme:
 0 <= nSupMod < fNumberOfSuperModules
 0 <= nModule  < fNPHI * fNZ ( fNPHI * fNZ/2 for fKey110DEG=1)
 0 <= nIphi   < fNPHIdiv
 0 <= nIeta   < fNETAdiv
 0 <= absid   < fNCells
void GetModuleIndexesFromCellIndexesInSModule(Int_t nSupMod, Int_t iphi, Int_t ieta, Int_t& iphim, Int_t& ietam, Int_t& nModule) const
 Transition from cell indexes (ieta,iphi) to module indexes (ietam,iphim, nModule)
Int_t GetAbsCellIdFromCellIndexes(Int_t nSupMod, Int_t iphi, Int_t ieta) const
 Transition from super module number(nSupMod) and cell indexes (ieta,iphi) to absId
Bool_t SuperModuleNumberFromEtaPhi(Double_t eta, Double_t phi, Int_t& nSupMod) const
 Return false if phi belongs a phi cracks between SM
Bool_t GetAbsCellIdFromEtaPhi(Double_t eta, Double_t phi, Int_t& absId) const
Bool_t CheckAbsCellId(Int_t absId) const
 May 31, 2006; only trd1 now
Bool_t GetCellIndex(Int_t absId, Int_t& nSupMod, Int_t& nModule, Int_t& nIphi, Int_t& nIeta) const
 21-sep-04; 19-oct-05;
 May 31, 2006; ALICE numbering scheme:

 In:
 absId   - cell is as in Geant,     0<= absId   < fNCells;
 Out:
 nSupMod - super module(SM) number, 0<= nSupMod < fNumberOfSuperModules;
 nModule  - module number in SM,     0<= nModule  < fNCellsInSupMod/fNCellsInSupMod or(/2) for tow last SM (10th and 11th);
 nIphi   - cell number in phi driection inside module; 0<= nIphi < fNPHIdiv;
 nIeta   - cell number in eta driection inside module; 0<= nIeta < fNETAdiv;

Int_t GetSuperModuleNumber(Int_t absId) const
 Return the number of the  supermodule given the absolute
 ALICE numbering id
void GetModulePhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t& iphim, Int_t& ietam) const
 added nSupMod; - 19-oct-05 !
 Alice numbering scheme        - Jun 01,2006
 ietam, iphi - indexes of module in two dimensional grid of SM
 ietam - have to change from 0 to fNZ-1
 iphim - have to change from 0 to nphi-1 (fNPhi-1 or fNPhi/2-1)
void GetCellPhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta, Int_t& iphi, Int_t& ieta) const
 Added nSupMod; Nov 25, 05
 Alice numbering scheme  - Jun 01,2006
 IN:
 nSupMod - super module(SM) number, 0<= nSupMod < fNumberOfSuperModules;
 nModule  - module number in SM,     0<= nModule  < fNCellsInSupMod/fNCellsInSupMod or(/2) for tow last SM (10th and 11th);
 nIphi   - cell number in phi driection inside module; 0<= nIphi < fNPHIdiv;
 nIeta   - cell number in eta driection inside module; 0<= nIeta < fNETAdiv;

 OUT:
 ieta, iphi - indexes of cell(tower) in two dimensional grid of SM
 ieta - have to change from 0 to (fNZ*fNETAdiv-1)
 iphi - have to change from 0 to (fNPhi*fNPHIdiv-1 or fNPhi*fNPHIdiv/2-1)

Bool_t RelPosCellInSModule(Int_t absId, Double_t& xr, Double_t& yr, Double_t& zr) const
 Look to see what the relative
 position inside a given cell is
 for a recpoint.
 Alice numbering scheme - Jun 08, 2006
 In:
 absId   - cell is as in Geant,     0<= absId   < fNCells;
 OUT:
 xr,yr,zr - x,y,z coordinates of cell with absId inside SM
Bool_t RelPosCellInSModule(Int_t absId, Double_t loc[3])
 Look to see what the relative
 position inside a given cell is
 for a recpoint.	// Alice numbering scheme - Jun 03, 2006
Bool_t RelPosCellInSModule(Int_t absId, TVector3& vloc) const
 Look to see what the relative
 position inside a given cell is
 for a recpoint.
 Alice numbering scheme - Jun 03, 2006
Bool_t RelPosCellInSModule(Int_t absId, Double_t distEff, Double_t& xr, Double_t& yr, Double_t& zr) const
 Jul 30, 2007 - taking into account position of shower max
 Look to see what the relative
 position inside a given cell is
 for a recpoint.
 In:
 absId   - cell is as in Geant,     0<= absId   < fNCells;
 e       - cluster energy
 OUT:
 xr,yr,zr - x,y,z coordinates of cell with absId inside SM
void CreateListOfTrd1Modules()
 Generate the list of Trd1 modules
 which will make up the EMCAL
 geometry
 key: look to the AliEMCALShishKebabTrd1Module::
AliEMCALShishKebabTrd1Module* GetShishKebabModule(Int_t neta) const
This method was too long to be
included in the header file - the
rule checker complained about it's
length, so we move it here.  It returns the
shishkebabmodule at a given eta index point.
void PrintGeometryGeoUtils()
Print information from geometry
Bool_t Impact(const TParticle* particle) const
 Tells if a particle enters EMCAL
void ImpactOnEmcal(TVector3 vtx, Double_t theta, Double_t phi, Int_t& absId, TVector3& vimpact) const
 calculates the impact coordinates on EMCAL (centre of a tower/not on EMCAL surface)
 of a neutral particle
 emitted in the vertex vtx[3] with direction theta and phi in the ALICE global coordinate system
Bool_t IsInEMCAL(Double_t x, Double_t y, Double_t z) const
 Checks whether point is inside the EMCal volume
Bool_t IsInDCAL(Double_t x, Double_t y, Double_t z) const
 Checks whether point is inside the DCal volume
Int_t IsInEMCALOrDCAL(Double_t x, Double_t y, Double_t z) const
 Checks whether point is inside the EMCal volume (included DCal), used in AliEMCALv*.cxx

 Code uses cylindrical approximation made of inner radius (for speed)

 Points behind EMCAl/DCal, i.e. R > outer radius, but eta, phi in acceptance
 are considered to inside
Int_t GetAbsTRUNumberFromNumberInSm(const Int_t row, const Int_t col, const Int_t sm) const
 Nov 6, 2007
 Get TRU absolute number from column, row and Super Module number
Bool_t GetAbsFastORIndexFromTRU(const Int_t iTRU, const Int_t iADC, Int_t& id) const
Trigger mapping method, get  FastOr Index from TRU
Bool_t GetTRUFromAbsFastORIndex(const Int_t id, Int_t& iTRU, Int_t& iADC) const
Trigger mapping method, get TRU number from FastOr Index
Bool_t GetPositionInTRUFromAbsFastORIndex(const Int_t id, Int_t& iTRU, Int_t& iEta, Int_t& iPhi) const
Trigger mapping method, get position in TRU from FasOr Index
Bool_t GetPositionInSMFromAbsFastORIndex(const Int_t id, Int_t& iSM, Int_t& iEta, Int_t& iPhi) const
Trigger mapping method, get position in Super Module from FasOr Index
Bool_t GetPositionInEMCALFromAbsFastORIndex(const Int_t id, Int_t& iEta, Int_t& iPhi) const
Trigger mapping method, get position in EMCAL from FastOR index
Bool_t GetAbsFastORIndexFromPositionInTRU(const Int_t iTRU, const Int_t iEta, const Int_t iPhi, Int_t& id) const
Trigger mapping method, get Index if FastOr from Position in TRU
Bool_t GetAbsFastORIndexFromPositionInSM(const Int_t iSM, const Int_t iEta, const Int_t iPhi, Int_t& id) const
Trigger mapping method, from position in SM Index get FastOR index
Bool_t GetAbsFastORIndexFromPositionInEMCAL(const Int_t iEta, const Int_t iPhi, Int_t& id) const
Trigger mapping method, from position in EMCAL Index get FastOR index
Bool_t GetFastORIndexFromCellIndex(const Int_t id, Int_t& idx) const
Trigger mapping method, from cell index get FastOR index
Bool_t GetCellIndexFromFastORIndex(const Int_t id, Int_t* idx) const
Trigger mapping method, from FASTOR index get cell index
Bool_t GetTRUIndexFromSTUIndex(const Int_t id, Int_t& idx) const
Trigger mapping method, from STU index get TRU index
Int_t GetTRUIndexFromSTUIndex(const Int_t id) const
Trigger mapping method, from STU index get TRU index
void BuildFastOR2DMap()
 Needed by STU
Bool_t GetTRUIndexFromOnlineIndex(const Int_t id, Int_t& idx) const
Trigger mapping method, from STU index get TRU index
Int_t GetTRUIndexFromOnlineIndex(const Int_t id) const
Trigger mapping method, from STU index get TRU index
Bool_t GetOnlineIndexFromTRUIndex(const Int_t id, Int_t& idx) const
Trigger mapping method, from STU index get TRU index
Int_t GetOnlineIndexFromTRUIndex(const Int_t id) const
Trigger mapping method, from STU index get TRU index
Bool_t GetFastORIndexFromL0Index(const Int_t iTRU, const Int_t id, Int_t* idx, const Int_t size) const
Trigger mapping method, from L0 index get FastOR index
const TGeoHMatrix * GetMatrixForSuperModule(Int_t smod) const
Provides shift-rotation matrix for EMCAL
void GetModulePhiEtaIndexInSModuleFromTRUIndex(Int_t itru, Int_t iphitru, Int_t ietatru, Int_t& ietaSM, Int_t& iphiSM) const
 This method transforms the (eta,phi) index of module in a
 TRU matrix into Super Module (eta,phi) index.
void RecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, const Float_t depth, const Float_t* misaligTransShifts, const Float_t* misaligRotShifts, Float_t* global) const
Transform clusters cell position into global with alternative method, taking into account the depth calculation.
Input are: the tower indeces,
           supermodule,
           particle type (photon 0, electron 1, hadron 2 )
           misalignment shifts to global position in case of need.
 Federico.Ronchetti@cern.ch
void SetMisalMatrix(const TGeoHMatrix* m, Int_t smod)
 Method to set shift-rotational matrixes from ESDHeader
 Move from header due to coding violations : Dec 2,2011 by PAI
Bool_t IsDCALSM(Int_t nSupMod) const
Bool_t IsDCALExtSM(Int_t nSupMod) const
Bool_t IsInitialized(void)
 General

const Char_t* GetDefaultGeometryName()
TList * GetShishKebabTrd1Modules() const
AliEMCALEMCGeometry* GetEMCGeometry() const
 Return EMCAL geometrical parameters

{ return fEMCGeometry ; }
const Char_t* GetNameOfEMCALEnvelope(void)
Float_t GetArm1PhiMin(void)
{ return fEMCGeometry->GetArm1PhiMin() ; }
Float_t GetArm1PhiMax(void)
{ return fEMCGeometry->GetArm1PhiMax() ; }
Float_t GetArm1EtaMin(void)
{ return fEMCGeometry->GetArm1EtaMin() ; }
Float_t GetArm1EtaMax(void)
{ return fEMCGeometry->GetArm1EtaMax() ; }
Float_t GetIPDistance(void)
{ return fEMCGeometry->GetIPDistance() ; }
Float_t GetEnvelop(Int_t index) const
{ return fEMCGeometry->GetEnvelop(index) ; }
Float_t GetShellThickness(void)
Float_t GetZLength(void)
{ return fEMCGeometry->GetZLength() ; }
Float_t GetDCALInnerEdge(void)
Float_t GetDCALPhiMin(void)
{ return fEMCGeometry->GetDCALPhiMin() ; }
Float_t GetDCALPhiMax(void)
{ return fEMCGeometry->GetDCALPhiMax() ; }
Float_t GetEMCALPhiMax(void)
Int_t GetNECLayers(void)
{ return fEMCGeometry->GetNECLayers() ; }
Float_t GetDCALInnerExtandedEta(void)
Int_t GetNZ(void)
{ return fEMCGeometry->GetNZ() ; }
Int_t GetNEta(void)
{ return fEMCGeometry->GetNEta() ; }
Int_t GetNPhi(void)
{ return fEMCGeometry->GetNPhi() ; }
Float_t GetECPbRadThick(void)
Float_t GetECScintThick(void)
Float_t GetSampling(void)
{ return fEMCGeometry->GetSampling() ; }
Int_t GetNumberOfSuperModules(void)
Float_t GetPhiGapForSuperModules(void)
Float_t GetPhiModuleSize(void)
Float_t GetEtaModuleSize(void)
Float_t GetFrontSteelStrip(void)
Float_t GetLateralSteelStrip(void)
Float_t GetPassiveScintThick(void)
Float_t GetPhiTileSize(void)
Float_t GetEtaTileSize(void)
Float_t GetPhiSuperModule(void)
Int_t GetNPhiSuperModule(void)
Int_t GetNPHIdiv(void)
{ return fEMCGeometry->GetNPHIdiv() ; }
Int_t GetNETAdiv(void)
{ return fEMCGeometry->GetNETAdiv() ; }
Int_t GetNCells(void)
{ return fEMCGeometry->GetNCells() ; }
Float_t GetLongModuleSize(void)
Float_t GetTrd1Angle(void)
{ return fEMCGeometry->GetTrd1Angle() ; }
Float_t Get2Trd1Dx2(void)
{ return fEMCGeometry->Get2Trd1Dx2() ; }
Float_t GetTrd1AlFrontThick() const
Float_t GetTrd1BondPaperThick() const
 --
Int_t GetNCellsInSupMod(void)
Int_t GetNCellsInModule(void)
Int_t GetKey110DEG(void)
{ return fEMCGeometry->GetKey110DEG() ; }
Int_t GetnSupModInDCAL(void)
Int_t GetILOSS(void)
{ return fEMCGeometry->GetILOSS() ; }
Int_t GetIHADR(void)
 --
{ return fEMCGeometry->GetIHADR() ; }
Float_t GetDeltaEta(void)
{ return fEMCGeometry->GetDeltaEta() ; }
Float_t GetDeltaPhi(void)
{ return fEMCGeometry->GetDeltaPhi() ; }
Int_t GetNTowers(void)
{ return fEMCGeometry->GetNTowers() ; }
Double_t GetPhiCenterOfSM(Int_t nsupmod) const
{ return fEMCGeometry->GetPhiCenterOfSM(nsupmod) ; }
Double_t GetPhiCenterOfSMSec(Int_t nsupmod) const
{ return fEMCGeometry->GetPhiCenterOfSMSec(nsupmod) ; }
Float_t GetSuperModulesPar(Int_t ipar) const
{ return fEMCGeometry->GetSuperModulesPar(ipar) ; }
Int_t GetSMType(Int_t nSupMod) const
Bool_t GetPhiBoundariesOfSM(Int_t nSupMod, Double_t& phiMin, Double_t& phiMax) const
{ return fEMCGeometry->GetPhiBoundariesOfSM(nSupMod, phiMin, phiMax) ; }
Bool_t GetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t& phiMin, Double_t& phiMax) const
 especially for SM in extension, where center of SM != center of the SM-section.
 Used in AliEMCALv0 to calculate position.
{ return fEMCGeometry->GetPhiBoundariesOfSMGap(nPhiSec, phiMin, phiMax); }
Float_t GetGap2Active(void)
 Obsolete methods to be thrown out when feasible
{ return fEMCGeometry->GetGap2Active() ; }
Float_t GetSteelFrontThickness(void)
Float_t GetTrd2AngleY(void)
{ return fEMCGeometry->GetTrd2AngleY() ; }
Float_t Get2Trd2Dy2(void)
{ return fEMCGeometry->Get2Trd2Dy2() ; }
Float_t GetTubsR(void)
{ return fEMCGeometry->GetTubsR() ; }
Float_t GetTubsTurnAngle(void)
Float_t GetAlFrontThickness(void)           const { return fEMCGeometry->GetAlFrontThickness()     ; }
Float_t GetIP2ECASection(void)              const { return fEMCGeometry->GetIP2ECASection()        ; }

void SetNZ(Int_t nz)
Geometry data member setters

{ fEMCGeometry->SetNZ(nz) ; }
void SetNPhi(Int_t nphi)
Trigger
{ fEMCGeometry->SetNPhi(nphi) ; }
void SetNTRUEta(Int_t ntru)
void SetNTRUPhi(Int_t ntru)
void SetSampling(Float_t samp)
void PrintGeometry()
Int_t GetNumberOfModuleInPhiDirection(Int_t nSupMod) const
Int_t * GetEMCSystem() const
 Local Coordinates of SM
{ return fEMCSMSystem ; }
TArrayD GetCentersOfCellsEtaDir() const
TArrayD GetCentersOfCellsXDir() const
{ return fCentersOfCellsXDir ; }
TArrayD GetCentersOfCellsPhiDir() const
TArrayD GetEtaCentersOfCells() const
{ return fEtaCentersOfCells ; }
TArrayD GetPhiCentersOfCells() const
{ return fPhiCentersOfCells ; }
Int_t GetNTRU() const
 For gamma(Jet) trigger simulations *FIXME OLD TO BE REMOVED with AliEMCALTrigger*
{ return fEMCGeometry->GetNTRU() ; }
Int_t GetNTRUEta() const
{ return fEMCGeometry->GetNTRUEta() ; }
Int_t GetNTRUPhi() const
{ return fEMCGeometry->GetNTRUPhi() ; }
Int_t GetNEtaSubOfTRU() const
Int_t GetNModulesInTRU() const
Int_t GetNModulesInTRUEta() const
Int_t GetNModulesInTRUPhi() const
Int_t GetNTotalTRU() const
 *MEFIX OLD TO BE REMOVED*
{return fEMCGeometry->GetNTotalTRU() ; }
Float_t AngleFromEta(Float_t eta) const
 useful utilities

Float_t ZFromEtaR(Float_t r, Float_t eta) const
 pseudorapidity and r=sqrt(x*x+y*y).
void Init(void)