10#ifndef MUONREADOUTGEOMETRY_RPCREADOUTELEMENT_H
11#define MUONREADOUTGEOMETRY_RPCREADOUTELEMENT_H
constexpr std::array< T, N > make_array(const T &def_val)
Helper function to initialize in-place arrays with non-zero values.
Eigen::Affine3d Transform3D
MuonClusterReadoutElement(GeoVFullPhysVol *pv, MuonDetectorManager *mgr, Trk::DetectorElemType detType)
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
const Muon::IMuonIdHelperSvc * idHelperSvc() const
bool rotatedRpcModule() const
int nGasGapPerLay() const
returns the number of gasgaps
double stripPanelSsize(bool measphi) const
returns strip panel S size for the phi or eta plane
std::array< double, s_maxphipanels > m_etastrip_s
int getDoubletPhi() const
return DoubletPhi value for the given readout element, be aware that one RE can contain two DoubletPh...
bool isDescrAtNegZ() const
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position If the strip number is outside the range of valid strips, the function will return fal...
double gasGapZsize() const
returns the gas gap Z size
void initDesign()
initialize the design classes for this readout element
int NphiStripPanels() const
returns the number of phi strip panels (1 or 2)
Amg::Transform3D globalToLocalTransf(const Identifier &id) const
virtual int surfaceHash(const Identifier &id) const override final
returns the hash to be used to look up the surface and transform in the MuonClusterReadoutElement tra...
int getDoubletR() const
return DoubletR value for the given readout element
void setZTranslation(const double z)
virtual int layerHash(const Identifier &id) const override final
returns the hash to be used to look up the normal and center in the MuonClusterReadoutElement trackin...
double StripLength(bool measphi) const
returns the strip length for the phi or eta plane
Amg::Vector3D localStripPos(int doubletPhi, int gasGap, bool measphi, int strip) const
Returns the local strip position in the AMDB frame.
const RpcIdHelper & m_idHelper
static constexpr int s_nLayers
double m_first_etastrip_z
double distanceToEtaReadout(const Amg::Vector3D &P) const
virtual int stripNumber(const Amg::Vector2D &pos, const Identifier &id) const override final
strip number corresponding to local position.
Amg::Vector3D localGasGapPos(const Identifier &id) const
Returns the position of the gasGap w.r.t. rest frame of the chamber.
int NphiStrips() const
returns the number of phi strips
friend class MuonChamberLite
int NetaStrips() const
returns the number of eta strips
void setNumberOfLayers(const int=2)
~RpcReadoutElement()
destructor
static constexpr int s_maxphipanels
Amg::Vector3D localToGlobalCoords(const Amg::Vector3D &x, const Identifier &id) const
Attention: these transformations do not represent the tracking transformations as obtained by the tra...
int getDoubletZ() const
return DoubletZ value for the given readout element
Amg::Vector3D stripPos(const Identifier &id) const
virtual bool measuresPhi(const Identifier &id) const override final
returns whether the current identifier corresponds to a phi measurement
void setYTranslation(const double y)
double distanceToPhiReadout(const Amg::Vector3D &P) const
double gasGapSsize() const
returns the gas gap S size
void setDoubletR(int doubletR)
std::array< double, s_maxphipanels > m_first_phistrip_s
Amg::Transform3D localToGlobalTransf(const Identifier &id) const
double localStripSCoord(int doubletPhi, bool measphi, int strip) const
std::array< double, s_nLayers > m_gasGap_xPos
Array caching the distance of the gasGap center to the origin plane in global radial direction.
void setDoubletPhi(int doubletPhi)
std::vector< MuonStripDesign > m_phiDesigns
Amg::Vector3D globalToLocalCoords(const Amg::Vector3D &x, const Identifier &id) const
virtual void fillCache() override final
function to fill tracking cache
std::vector< MuonStripDesign > m_etaDesigns
Amg::Vector3D gasGapPos(int doubletPhi, int gasGap) const
Returns the centre of the gasGap.
const Amg::Vector3D REcenter() const
center of an RPC RE is not trivially the center of the first surface, overloading MuonClusterReadoutE...
bool hasDEDontop() const
return whether the RPC is 'up-side-down'
int Nstrips(bool measphi) const
returns the number of strips for the phi or eta plane
virtual int numberOfLayers(bool measphi=true) const override final
number of layers in phi/eta projection, same for eta/phi planes
void setDoubletZ(int dobuletZ)
virtual int numberOfStrips(const Identifier &layerId) const override final
number of strips per layer
virtual bool spacePointPosition(const Identifier &phiId, const Identifier &etaId, Amg::Vector2D &pos) const override final
space point position for a given pair of phi and eta identifiers The LocalPosition is expressed in th...
bool inTheRibs() const
returns whether the RE is in the ribs of the muon spectrometer
virtual double distanceToReadout(const Amg::Vector2D &pos, const Identifier &id) const override final
distance to readout.
RpcReadoutElement(GeoVFullPhysVol *pv, const std::string &stName, int zi, int fi, bool is_mirrored, MuonDetectorManager *mgr)
constructor
double stripPanelZsize(bool measphi) const
returns strip panel Z size for the phi or eta plane
virtual int boundaryHash(const Identifier &id) const override final
returns the hash function to be used to look up the surface boundary for a given identifier
double StripWidth(bool measphi) const
returns the strip width for the phi or eta plane
double StripPitch(bool measphi) const
returns the strip pitch for the phi or eta plane
double localStripZCoord(bool measphi, int strip) const
const MuonStripDesign * getDesign(const Identifier &id) const
returns the MuonStripDesign class for the given identifier
double StripPanelDead(bool measphi) const
returns strip panel dead area for the phi or eta plane
virtual bool containsId(const Identifier &id) const override
function to be used to check whether a given Identifier is contained in the readout element
virtual const RpcIdHelper & rpcIdHelper() const =0
access to RpcIdHelper
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, 2, 1 > Vector2D
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
Ensure that the Athena extensions are properly loaded.