ATLAS Offline Software
Loading...
Searching...
No Matches
MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4#ifndef MUONREADOUTGEOMETRYR4_RPCREADOUTELEMENT_H
5#define MUONREADOUTGEOMETRYR4_RPCREADOUTELEMENT_H
6
10
11#ifndef SIMULATIONBASE
12# include "Acts/Utilities/BoundFactory.hpp"
13#endif
14
15namespace MuonGMR4 {
16
18
19 public:
23
25 double halfLength{0.};
27 double halfThickness{0.};
29 double halfWidth{0.};
32 unsigned nGasGaps{0};
36 std::vector<StripLayerPtr> layers{};
37
41 double readoutSide{-1};
42#ifndef SIMULATIONBASE
43 std::shared_ptr<Acts::SurfaceBoundFactory> layerBounds{};
44#endif
45 };
46
49
52 const parameterBook& getParameters() const;
57
58 double thickness() const override final;
59
60 StatusCode initElement() override final;
61
68
70 unsigned nGasGaps() const;
75
77 unsigned nEtaStrips() const;
79 unsigned nPhiStrips() const;
82
97
98
100 Amg::Vector3D stripPosition(const ActsTrk::GeometryContext& ctx, const Identifier& measId) const;
101 Amg::Vector3D stripPosition(const ActsTrk::GeometryContext& ctx, const IdentifierHash& measHash) const;
103 Amg::Vector3D rightStripEdge(const ActsTrk::GeometryContext& ctx, const Identifier& measId) const;
104 Amg::Vector3D rightStripEdge(const ActsTrk::GeometryContext& ctx, const IdentifierHash& measHash) const;
106 Amg::Vector3D leftStripEdge(const ActsTrk::GeometryContext& ctx, const Identifier& measId) const;
107 Amg::Vector3D leftStripEdge(const ActsTrk::GeometryContext& ctx, const IdentifierHash& measHash) const;
108
113
117 double distanceToEdge(const IdentifierHash& measHash,
118 const Amg::Vector3D& posInStripPlane,
119 const EdgeSide side) const;
120
124 IdentifierHash measurementHash(const Identifier& measId) const override final;
125
126 IdentifierHash layerHash(const Identifier& measId) const override final;
128
129 Identifier measurementId(const IdentifierHash& measHash) const override final;
130
133 static IdentifierHash createHash(const unsigned strip,
134 const unsigned gasGap,
135 const unsigned doubPhi,
136 const bool measPhi);
137
139
140
142 const StripLayerPtr& sensorLayout(const IdentifierHash& measHash) const;
144 const StripDesign& stripDesign(const IdentifierHash& meaHash) const;
145 private:
146 static unsigned stripNumber(const IdentifierHash& measHash);
147 static unsigned gasGapNumber(const IdentifierHash& measHash);
148 static unsigned doubletPhiNumber(const IdentifierHash& measHash);
149 static bool measuresPhi(const IdentifierHash& measHash);
150
151
154 Amg::Vector3D chamberStripPos(const IdentifierHash& measHash) const;
155
156
157
161 // -> 2: chamber is mounted on top of the Mdts
162 const int m_doubletR{m_idHelper.doubletR(identify())};
166 const int m_doubletZ{m_idHelper.doubletZ(identify())};
167 const int m_doubletPhi{m_idHelper.doubletPhi(identify())};
168
170 double m_gasThickness{0.};
171
172 };
173std::ostream& operator<<(std::ostream& ostr, const RpcReadoutElement::parameterBook& pars);
174} // namespace MuonGMR4
175
176namespace ActsTrk{
177 template <> Amg::Transform3D
180 template <> Identifier
182}
183
184
186#endif
Eigen::Matrix< double, 3, 1 > Vector3D
Amg::Transform3D fetchTransform(const DetectorAlignStore *store) const override final
Identifier identify() const override final
Returns the Identifier of the transform cache.
This is a "hash" representation of an Identifier.
Identifier identify() const override final
Return the athena identifier.
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the pointer to the muonIdHelperSvc.
unsigned nPhiStrips() const
Number of strips measuring the phi coordinate.
IdentifierHash measurementHash(const Identifier &measId) const override final
Constructs the identifier hash from the full measurement Identifier.
Amg::Vector3D leftStripEdge(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the global posiition of the strip edge at positive local Y.
int doubletR() const
Returns the doublet R field of the MuonReadoutElement identifier.
int doubletZ() const
Returns the doublet Z field of the MuonReadoutElement identifier.
int doubletPhi() const
Returns the doublet Phi field of the MuonReadoutElement identifier.
double stripPhiLength() const
Returns the length of a phi strip.
const StripDesign & stripDesign(const IdentifierHash &meaHash) const
Access the associated strip design for a given measurement hash.
double thickness() const override final
Overload from the Acts::DetectorElement (2 * halfheight)
static bool measuresPhi(const IdentifierHash &measHash)
double distanceToEdge(const IdentifierHash &measHash, const Amg::Vector3D &posInStripPlane, const EdgeSide side) const
Returns the disance to the readout.
Amg::Transform3D fromGapToChamOrigin(const IdentifierHash &layerHash) const
ActsTrk::DetectorType detectorType() const override final
Overload from the ActsTrk::IDetectorElement.
IdentifierHash layerHash(const Identifier &measId) const override final
double stripEtaWidth() const
Strip width in eta.
unsigned nStrips(const IdentifierHash &hash) const
Returns the number of strips.
static unsigned stripNumber(const IdentifierHash &measHash)
Amg::Vector3D rightStripEdge(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the global position of the strip edge at negative local Y.
Identifier measurementId(const IdentifierHash &measHash) const override final
Converts the measurement hash back to the full Identifier.
const StripLayerPtr & sensorLayout(const IdentifierHash &measHash) const
Access to the StripLayer associated to a given measurement Hash.
double stripPhiPitch() const
Strip pitch in phi.
unsigned nEtaStrips() const
Number of strips measuring the eta coordinate.
static IdentifierHash createHash(const unsigned strip, const unsigned gasGap, const unsigned doubPhi, const bool measPhi)
Constructs an Identifier hash from the Identifier fields controlled by this readout element.
double stripEtaPitch() const
Strip pitch in eta.
int doubletPhiMax() const
Returns the maximum phi panel.
Amg::Vector3D chamberStripPos(const IdentifierHash &measHash) const
Returns the local strip position w.r.t. to the chamber origin.
IdentifierHash layerHash(const IdentifierHash &measHash) const
Amg::Vector3D stripPosition(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the position of the strip center.
int nPhiPanels() const
Returns the number of phi panels (1 or 2)
static unsigned doubletPhiNumber(const IdentifierHash &measHash)
static unsigned gasGapNumber(const IdentifierHash &measHash)
double stripPhiWidth() const
Strip width in phi.
unsigned nGasGaps() const
Returns the number of gasgaps described by this ReadOutElement (usally 2 or 3)
const int m_doubletZ
Associated doublet Z (Ranges from 1-3) If doubletZ is 3, there's generally the possibility that the m...
double stripEtaLength() const
Returns the length of an eta strip.
double gasGapPitch() const
Returns the thickness of a RPC gasgap.
virtual const RpcIdHelper & rpcIdHelper() const =0
access to RpcIdHelper
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
DetectorType
Simple enum to Identify the Type of the ACTS sub detector.
@ Rpc
Monitored Drift Tubes.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
std::ostream & operator<<(std::ostream &ostr, const Chamber::defineArgs &args)
Definition Chamber.cxx:14
GeoModel::TransientConstSharedPtr< StripDesign > StripDesignPtr
Definition StripDesign.h:29
GeoModel::TransientConstSharedPtr< StripLayer > StripLayerPtr
Definition StripLayer.h:100
int nPanelsInPhi
Each gas gap is usually subdivided into 2 phi panels which is actually the sector granularity of the ...
unsigned nGasGaps
The number of gas gaps (along the radial direction) in the RPC chamber (2 or 3)