1 #ifndef ALIEMCALGEOMETRY_H 2 #define ALIEMCALGEOMETRY_H 88 #include <TGeoMatrix.h> 106 const Text_t* mcname=
"",
const Text_t* mctitle=
"");
115 const Text_t* mcname =
"TGeant3",
const Text_t* mctitle =
"" ) ;
118 TString geoName =
"",
119 const Text_t* mcname =
"TGeant3",
120 const Text_t* mctitle =
"" ) ;
137 virtual void Browse(TBrowser*
b);
140 virtual Bool_t
Impact(
const TParticle *particle)
const;
141 void ImpactOnEmcal(TVector3 vtx, Double_t theta, Double_t phi, Int_t & absId, TVector3 & vimpact)
const;
142 Bool_t
IsInEMCAL(Double_t x, Double_t y, Double_t z)
const;
143 Bool_t
IsInDCAL(Double_t x, Double_t y, Double_t z)
const;
213 Bool_t
IsDCALSM (Int_t nSupMod)
const;
239 void GetGlobal(
const Double_t *loc, Double_t *
glob,
int ind)
const;
240 void GetGlobal(
const TVector3 &vloc, TVector3 &vglob,
int ind)
const;
241 void GetGlobal(Int_t absId, Double_t glob[3])
const;
242 void GetGlobal(Int_t absId, TVector3 &vglob)
const;
271 Int_t
GetAbsCellId(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta)
const;
273 Bool_t
GetCellIndex(Int_t absId, Int_t &nSupMod, Int_t &nModule, Int_t &nIphi,
279 Int_t &iphi, Int_t &ieta)
const ;
312 Int_t &iphim, Int_t &ietam, Int_t &nModule)
const;
320 Double_t &xr, Double_t &yr, Double_t &zr)
const;
322 Double_t &xr, Double_t &yr, Double_t &zr)
const;
339 return 2.0*TMath::ATan(TMath::Exp(-eta));
351 const Float_t misaligTransShifts[15],
const Float_t misaligRotShifts[15],Float_t global[3])
const;
424 Bool_t
GetTRUFromSTU(
const Int_t iTRU,
const Int_t iADC, Int_t& oTRU, Int_t& oADC, Int_t detector)
const {
427 Bool_t
GetSTUFromTRU(
const Int_t iTRU,
const Int_t iADC, Int_t& oTRU, Int_t& oADC )
const {
430 Bool_t
GetTRUFromSTU(
const Int_t iTRU,
const Int_t ieta,
const Int_t iphi, Int_t& oTRU, Int_t& oeta, Int_t& ophi, Int_t detector)
const {
433 Bool_t
GetSTUFromTRU(
const Int_t iTRU,
const Int_t ieta,
const Int_t iphi, Int_t& oTRU, Int_t& oeta, Int_t& ophi )
const {
508 #endif // AliEMCALGEOUTILS_H Bool_t CheckAbsCellId(Int_t absId) const
AliEMCALGeometry & operator=(const AliEMCALGeometry &rvalue)
virtual Bool_t GetCellIndexFromFastORIndex(Int_t id, Int_t idx[4]) const =0
Float_t GetDCALInnerEdge(void) const
Float_t fIPDistance
Radial Distance of the inner surface of the EMCAL.
Float_t GetSteelFrontThickness() const
Bool_t IsDCALExtSM(Int_t nSupMod) const
EMCal geometry SM base, singleton.
TArrayD fPhiCentersOfSMSec
Phi of centers of section where SM lies; size is fNumberOfSuperModules/2.
TArrayD fCentersOfCellsPhiDir
Size fNPhi*fNPHIdiv (for TRD1 only) (phi or y in SM, in cm)
virtual Bool_t GetAbsFastORIndexFromPositionInEMCAL(Int_t iEta, Int_t iPhi, Int_t &id) const =0
Bool_t GetAbsFastORIndexFromPositionInTRU(const Int_t iTRU, const Int_t iEta, const Int_t iPhi, Int_t &id) const
virtual Bool_t Impact(const TParticle *particle) const
Bool_t GetAbsFastORIndexFromPHOSSubregion(const Int_t iPHOS, Int_t &id) const
Int_t GetNCells(void) const
Float_t GetLongModuleSize(void) const
Float_t fParSM[3]
SM sizes as in GEANT (TRD1)
Float_t fSampling
Sampling factor.
Float_t GetLateralSteelStrip() const
Float_t Get2Trd1Dx2() const
TArrayD GetCentersOfCellsEtaDir() const
AliEMCALEMCGeometry * fEMCGeometry
Geometry object for Electromagnetic calorimeter.
Double_t GetPhiCenterOfSMSec(Int_t nsupmod) const
Bool_t GetTRUIndexFromSTUIndex(const Int_t id, Int_t &idx, Int_t detector) const
Float_t GetEtaModuleSize() const
Int_t GetNumberOfCellsInEtaDirection(Int_t nSupMod) const
Float_t GetEtaTileSize() const
Bool_t GetTRUFromSTU(const Int_t iTRU, const Int_t ieta, const Int_t iphi, Int_t &oTRU, Int_t &oeta, Int_t &ophi, Int_t detector) const
Int_t GetAbsCellIdFromCellIndexes(Int_t nSupMod, Int_t iphi, Int_t ieta) const
Bool_t GetSTUIndexFromTRUIndex(const Int_t id, Int_t &idx) const
void ShiftOnlineToOfflineCellIndexes(Int_t sm, Int_t &iphi, Int_t &ieta) const
void PrintGeometryGeoUtils()
Int_t fNPhi
Number of Towers in the PHI direction.
Float_t GetArm1PhiMax(void) const
const Int_t * GetEMCSystem() const
TArrayD GetPhiCentersOfCells() const
Float_t GetArm1EtaMin() const
Float_t GetArm1PhiMin(void) const
Float_t fDCALPhiMin
Minimum angular position of DCAL in Phi (degrees)
Int_t fNETAdiv
Number eta division of module.
const TGeoHMatrix * GetMatrixForSuperModuleFromArray(Int_t smod) const
virtual Bool_t GetSTUFromTRU(Int_t iTRU, Int_t iADC, Int_t &oTRU, Int_t &oADC) const =0
static const Char_t * GetDefaultGeometryName()
Bool_t IsInDCAL(Double_t x, Double_t y, Double_t z) const
Int_t GetNumberOfCellsInPhiDirection(Int_t nSupMod) const
Float_t fArm1EtaMin
Minimum pseudorapidity position of EMCAL in Eta.
void SetMisalMatrix(const TGeoHMatrix *m, Int_t smod) const
virtual Bool_t GetFastORIndexFromCellIndex(Int_t id, Int_t &idx) const =0
Int_t GetNPhiSuperModule(void) const
Int_t GetNECLayers(void) const
void EtaPhiFromIndex(Int_t absId, Double_t &eta, Double_t &phi) const
Float_t fEMCALPhiMax
Maximum angular position of EMCAL in Phi (degrees)
Float_t GetShellThickness(void) const
Float_t GetDCALInnerExtandedEta() const
Int_t GetNCellsInModule() const
Float_t GetArm1EtaMax() const
Int_t GetNETAdiv(void) const
virtual Bool_t GetPositionInEMCALFromAbsFastORIndex(Int_t id, Int_t &iEta, Int_t &iPhi) const =0
static Bool_t fgInit
Tells if geometry has been succesfully set up.
Bool_t GetTRUIndexFromOnlineIndex(const Int_t id, Int_t &idx) const
virtual void Browse(TBrowser *b)
Float_t GetDCALPhiMin() const
virtual Bool_t GetTRUIndexFromSTUIndex(Int_t id, Int_t &idx, Int_t detector) const =0
Int_t GetnSupModInDCAL() const
Int_t GetNumberOfSuperModules(void) const
Float_t fArm1EtaMax
Maximum pseudorapidity position of EMCAL in Eta.
Float_t GetEtaTileSize(void) const
Bool_t GetSTUFromTRU(const Int_t iTRU, const Int_t ieta, const Int_t iphi, Int_t &oTRU, Int_t &oeta, Int_t &ophi) const
Bool_t GetPositionInTRUFromAbsFastORIndex(const Int_t id, Int_t &iTRU, Int_t &iEta, Int_t &iPhi) const
Float_t GetTrd1AlFrontThick() const
static AliEMCALGeometry * GetInstanceFromRunNumber(Int_t runNumber, TString geoName="", const Text_t *mcname="TGeant3", const Text_t *mctitle="")
Float_t GetEnvelop(Int_t index) const
Float_t GetIPDistance() const
TArrayD GetEtaCentersOfCells() const
Float_t GetPhiTileSize(void) const
Int_t GetIHADR(void) const
Float_t GetZLength() const
Bool_t GetAbsCellIdFromEtaPhi(Double_t eta, Double_t phi, Int_t &absId) const
Bool_t SuperModuleNumberFromEtaPhi(Double_t eta, Double_t phi, Int_t &nSupMod) const
Float_t fEtaModuleSize
Eta -> Y.
Bool_t GetPositionInSMFromAbsFastORIndex(const Int_t id, Int_t &iSM, Int_t &iEta, Int_t &iPhi) const
Float_t GetTrd1BondPaperThick() const
Int_t fKey110DEG
For calculation abs cell id; 19-oct-05.
Float_t GetDeltaEta() const
Bool_t GetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t &phiMin, Double_t &phiMax) const
Float_t GetPhiGapForSuperModules(void) const
Float_t GetPassiveScintThick() const
Double_t GetPhiCenterOfSM(Int_t nsupmod) const
Int_t GetNumberOfModuleInEtaDirection(Int_t nSupMod) const
Float_t GetSteelFrontThickness(void) const
Float_t GetIPDistance(void) const
Float_t AngleFromEta(Float_t eta) const
std::vector< std::string > glob(const std::string &pat)
Int_t GetNPhi(void) const
Float_t GetDeltaPhi(void) const
Float_t GetPhiGapForSuperModules() const
Float_t GetEMCALPhiMax() const
Float_t fLongModuleSize
Size of long module.
Float_t GetEnvelop(Int_t index) const
Float_t GetPhiModuleSize(void) const
Int_t GetNumberOfSuperModules() const
Bool_t GetTRUFromSTU(const Int_t iTRU, const Int_t iADC, Int_t &oTRU, Int_t &oADC, Int_t detector) const
Int_t GetNTowers(void) const
Int_t GetNTotalTRU() const
Int_t GetKey110DEG(void) const
Float_t GetEMCALPhiMax(void) const
Bool_t GetFastORIndexFromCellIndex(const Int_t id, Int_t &idx) const
Float_t GetZLength(void) const
void GetCellPhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta, Int_t &iphi, Int_t &ieta) const
Float_t GetPassiveScintThick(void) const
const Char_t * GetNameOfEMCALEnvelope(void) const
Float_t fShellThickness
Total thickness in (x,y) direction.
virtual Bool_t GetTRUFromSTU(Int_t iTRU, Int_t iADC, Int_t &oTRU, Int_t &oADC, Int_t detector) const =0
virtual Bool_t GetAbsFastORIndexFromPHOSSubregion(Int_t iPHOS, Int_t &id) const =0
Float_t fArm1PhiMin
Minimum angular position of EMCAL in Phi (degrees)
virtual Bool_t GetPositionInSMFromAbsFastORIndex(Int_t id, Int_t &iSM, Int_t &iEta, Int_t &iPhi) const =0
Float_t fEtaTileSize
Size of eta tile.
virtual Bool_t GetOnlineIndexFromTRUIndex(Int_t id, Int_t &idx) const =0
Double_t GetPhiCenterOfSMSec(Int_t nsupmod) const
Float_t GetTrd1Angle(void) const
Int_t GetAbsCellId(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta) const
Bool_t RelPosCellInSModule(Int_t absId, Double_t &xr, Double_t &yr, Double_t &zr) const
virtual Bool_t GetTRUFromAbsFastORIndex(Int_t id, Int_t &iTRU, Int_t &iADC) const =0
Float_t GetEtaModuleSize(void) const
Float_t fArm1PhiMax
Maximum angular position of EMCAL in Phi (degrees)
Float_t fPhiModuleSize
Phi -> X.
TArrayD fCentersOfCellsXDir
Size fNZ*fNETAdiv (for TRD1 only) ( x in SM, in cm)
Float_t fDCALInnerExtandedEta
DCAL inner edge in Eta (with some extension)
void PrintLocalTrd1(Int_t pri=0) const
Float_t GetShellThickness() const
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) ...
Float_t fDCALStandardPhiMax
Special edge for the case that DCAL contian extension.
void ImpactOnEmcal(TVector3 vtx, Double_t theta, Double_t phi, Int_t &absId, TVector3 &vimpact) const
Int_t GetNECLayers() const
const TGeoHMatrix * fkSModuleMatrix[AliEMCALGeoParams::fgkEMCALModules]
Orientations of EMCAL super modules.
Bool_t GetCellIndex(Int_t absId, Int_t &nSupMod, Int_t &nModule, Int_t &nIphi, Int_t &nIeta) const
Int_t fNZ
Number of Towers in the Z direction.
TList * fShishKebabTrd1Modules
List of modules.
void SetSampling(Float_t samp)
Bool_t GetPhiBoundariesOfSM(Int_t nSupMod, Double_t &phiMin, Double_t &phiMax) const
Float_t GetECScintThick() const
Bool_t GetFastORIndexFromL0Index(const Int_t iTRU, const Int_t id, Int_t idx[], const Int_t size) const
virtual Bool_t GetAbsFastORIndexFromPositionInSM(Int_t iSM, Int_t iEta, Int_t iPhi, Int_t &id) const =0
Int_t fNPHIdiv
Number phi division of module.
Int_t GetNPHIdiv(void) const
Float_t GetECScintThick(void) const
Double_t GetPhiCenterOfSM(Int_t nsupmod) const
virtual ~AliEMCALGeometry(void)
Float_t GetArm1PhiMin() const
Float_t GetDCALPhiMax() const
Float_t GetDeltaPhi() const
Float_t GetTrd1Angle() const
virtual Bool_t IsFolder() const
AliEMCALTriggerMapping * GetTriggerMapping() const
Int_t GetSMType(Int_t nSupMod) const
Float_t GetPhiSuperModule(void) const
Float_t fEtaMaxOfTRD1
Max eta in case of TRD1 geometry (see AliEMCALShishKebabTrd1Module)
Float_t GetTrd1AlFrontThick() const
void GetGlobal(const Double_t *loc, Double_t *glob, int ind) const
Float_t GetArm1EtaMax(void) const
Int_t GetNCellsInSupMod(void) const
Bool_t IsInEMCAL(Double_t x, Double_t y, Double_t z) const
Trigger mapping methods, base class.
Float_t GetPhiModuleSize() const
Float_t GetLateralSteelStrip(void) const
Int_t GetTRUIndexFromOnlineHwAdd(Int_t hwAdd, Int_t ddl, Int_t sm) const
Int_t GetSuperModuleNumber(Int_t absId) const
Float_t fZLength
Total length in z direction.
void SetSampling(Float_t samp)
Int_t GetSTUIndexFromTRUIndex(const Int_t id) const
virtual void GetNTRU(Int_t &n)
Float_t GetArm1EtaMin(void) const
Float_t GetTrd1BondPaperThick() const
const TGeoHMatrix * GetMatrixForSuperModule(Int_t smod) const
Int_t GetTRUIndexFromOnlineIndex(const Int_t id) const
Int_t GetnSupModInDCAL(void) const
Float_t GetSuperModulesPar(Int_t ipar) const
static AliEMCALGeometry * fgGeom
Pointer to the unique instance of the singleton.
Bool_t GetAbsFastORIndexFromPositionInSM(const Int_t iSM, const Int_t iEta, const Int_t iPhi, Int_t &id) const
virtual Bool_t GetPositionInTRUFromAbsFastORIndex(Int_t id, Int_t &iTRU, Int_t &iEta, Int_t &iPhi) const =0
Int_t GetTriggerMappingVersion() const
virtual Int_t GetTRUIndexFromOnlineHwAdd(Int_t hwAdd, Int_t ddl, Int_t sm) const =0
Float_t GetFrontSteelStrip(void) const
TArrayD GetCentersOfCellsXDir() const
TArrayD fPhiCentersOfCells
[fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.)
Float_t GetDeltaEta(void) const
Float_t GetSampling(void) const
TString fGeoName
Geometry name string.
void RecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, const Float_t depth, const Float_t misaligTransShifts[15], const Float_t misaligRotShifts[15], Float_t global[3]) const
Int_t GetNEta(void) const
Int_t GetNPhiSuperModule() const
virtual Bool_t GetAbsFastORIndexFromTRU(Int_t iTRU, Int_t iADC, Int_t &id) const =0
virtual Bool_t GetFastORIndexFromL0Index(Int_t iTRU, Int_t id, Int_t idx[], Int_t size) const =0
AliEMCALEMCGeometry * GetEMCGeometry() const
TArrayD fCentersOfCellsEtaDir
Size fNZ*fNETAdiv (for TRD1 only) (eta or z in SM, in cm)
Int_t fnSupModInDCAL
For calculation abs cell id; 06-nov-12.
static const int fgkEMCALModules
Number of modules, 12 for EMCal + 8 for DCAL.
Bool_t GetCellIndexFromFastORIndex(const Int_t id, Int_t idx[4]) const
Bool_t GetPhiBoundariesOfSM(Int_t nSupMod, Double_t &phiMin, Double_t &phiMax) const
Float_t GetDCALInnerEdge() const
Float_t GetDCALPhiMax(void) const
Float_t GetDCALPhiMin(void) const
AliEMCALShishKebabTrd1Module * GetShishKebabModule(Int_t neta) const
Int_t GetNCellsInSupMod() const
Int_t GetNCellsInModule(void) const
const Char_t * GetNameOfEMCALEnvelope() const
Float_t GetFrontSteelStrip() const
void CreateListOfTrd1Modules()
Float_t Get2Trd1Dx2(void) const
Bool_t GetAbsFastORIndexFromTRU(const Int_t iTRU, const Int_t iADC, Int_t &id) const
Float_t GetDCALInnerExtandedEta(void) const
Int_t GetKey110DEG() const
Float_t GetArm1PhiMax() const
TArrayD fEtaCentersOfCells
[fNZ*fNETAdiv*fNPhi*fNPHIdiv], positive direction (eta>0); eta depend from phi position; ...
virtual Bool_t GetTRUIndexFromOnlineIndex(Int_t id, Int_t &idx) const =0
Int_t GetTRUIndexFromSTUIndex(const Int_t id, Int_t detector) const
Float_t GetECPbRadThick(void) const
Float_t GetPhiSuperModule() const
Bool_t GetAbsFastORIndexFromPositionInEMCAL(const Int_t iEta, const Int_t iPhi, Int_t &id) const
Bool_t IsDCALSM(Int_t nSupMod) const
Float_t GetSuperModulesPar(Int_t ipar) const
Float_t GetECPbRadThick() const
TArrayD fPhiCentersOfSM
Phi of centers of SM; size is fNumberOfSuperModules/2.
Float_t fDCALPhiMax
Maximum angular position of DCAL in Phi (degrees)
TArrayD GetCentersOfCellsPhiDir() const
AliEMCALTriggerMapping * fTriggerMapping
Trigger mapping.
Int_t GetNumberOfModuleInPhiDirection(Int_t nSupMod) const
static AliEMCALGeometry * GetInstance()
Int_t * GetEMCSystem() const
Float_t GetLongModuleSize() const
static const Char_t * fgkDefaultGeometryName
Default name of geometry.
virtual Bool_t GetAbsFastORIndexFromPositionInTRU(Int_t iTRU, Int_t iEta, Int_t iPhi, Int_t &id) const =0
static const Char_t * fgkDefaultGeometryName
Default name of geometry.
Bool_t GetPositionInEMCALFromAbsFastORIndex(const Int_t id, Int_t &iEta, Int_t &iPhi) const
Float_t ZFromEtaR(Float_t r, Float_t eta) const
virtual Bool_t GetSTUIndexFromTRUIndex(Int_t id, Int_t &idx) const =0
Int_t GetILOSS(void) const
static Bool_t IsInitialized(void)
Bool_t GetTRUFromAbsFastORIndex(const Int_t id, Int_t &iTRU, Int_t &iADC) const
void ShiftOfflineToOnlineCellIndexes(Int_t sm, Int_t &iphi, Int_t &ieta) const
Float_t GetSampling() const
static Bool_t fgInit
Tells if geometry has been succesfully set up.
Float_t fPhiTileSize
Size of phi tile.
Float_t GetPhiTileSize() const
Float_t fEnvelop[3]
The GEANT TUB for the detector.
TList * GetShishKebabTrd1Modules() const
const TGeoHMatrix * GetMatrixForSuperModuleFromGeoManager(Int_t smod) const
void PrintCellIndexes(Int_t absId=0, int pri=0, const char *tit="") const
EMCal geometry, singleton.
Int_t fNCells
Number of cells in calo.
Bool_t GetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t &phiMin, Double_t &phiMax) const
Int_t IsInEMCALOrDCAL(Double_t x, Double_t y, Double_t z) const
Int_t GetOnlineIndexFromTRUIndex(const Int_t id) const
Main class for TRD1 geometry of Shish-Kebab case.
Int_t fNCellsInSupMod
Number cell in super module.
void GetModulePhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t &iphim, Int_t &ietam) const
Bool_t GetOnlineIndexFromTRUIndex(const Int_t id, Int_t &idx) const
Bool_t GetSTUFromTRU(const Int_t iTRU, const Int_t iADC, Int_t &oTRU, Int_t &oADC) const
Int_t fNCellsInModule
Number cell in module.
TArrayD fPhiBoundariesOfSM
Phi boundaries of SM in rad; size is fNumberOfSuperModules;.