ATLAS Offline Software
Loading...
Searching...
No Matches
MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.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_MDTREADOUTELEMENT_H
5#define MUONREADOUTGEOMETRYR4_MDTREADOUTELEMENT_H
6
9
10#ifndef SIMULATIONBASE
13# include "Acts/Utilities/BoundFactory.hpp"
14#endif
15
16namespace MuonGMR4 {
17
26
27 public:
36 std::vector<MdtTubeLayerPtr> tubeLayers{};
38 std::unordered_set<IdentifierHash> removedTubes{};
40 double tubeWall{0.};
42 double tubeInnerRad{0.};
44 double tubePitch{0.};
46 double wireTension{0.};
48 double endPlugLength{0.};
50 double deadLength{0.};
52 double radLengthX0{0.};
60 double shortHalfX{0.};
61 double longHalfX{0.};
63 double halfY{0.};
65 double halfHeight{0.};
68 double readoutSide{1.};
71 #ifndef SIMULATIONBASE
72 std::shared_ptr<Acts::SurfaceBoundFactory> boundFactory;
73 #endif
74
75 };
76
82
87 const parameterBook& getParameters() const;
92
93 double thickness() const override final;
95 StatusCode initElement() override final;
97 unsigned multilayer() const;
99 unsigned numLayers() const;
109 static unsigned tubeNumber(const IdentifierHash& hash);
113 static unsigned layerNumber(const IdentifierHash& hash);
130 Identifier measurementId(const IdentifierHash& measHash) const override final;
138 double tubePitch() const;
156 Amg::Vector3D globalTubePos(const ActsTrk::GeometryContext& ctx,
157 const Identifier& measId) const;
163 Amg::Vector3D globalTubePos(const ActsTrk::GeometryContext& ctx,
165
171 Amg::Vector3D readOutPos(const ActsTrk::GeometryContext& ctx,
172 const Identifier& measId) const;
178 Amg::Vector3D readOutPos(const ActsTrk::GeometryContext& ctx,
180
186 Amg::Vector3D highVoltPos(const ActsTrk::GeometryContext& ctx,
187 const Identifier& measId) const;
193 Amg::Vector3D highVoltPos(const ActsTrk::GeometryContext& ctx,
200 double distanceToReadout(const ActsTrk::GeometryContext& ctx,
201 const Identifier& measId,
202 const Amg::Vector3D& globPoint) const;
208 double distanceToReadout(const ActsTrk::GeometryContext& ctx,
209 const IdentifierHash& measHash,
210 const Amg::Vector3D& globPoint) const;
215 double distanceToReadout(const IdentifierHash& measHash,
216 const Amg::Vector3D& localPoint) const;
217
219
220 double tubeLength(const IdentifierHash& hash) const;
221
222 double wireLength(const IdentifierHash& hash) const;
224 double uncutTubeLength(const IdentifierHash& tubeHash) const;
225
226
233
241 private:
254 const ActsTrk::DetectorAlignStore* store) const;
255
256 #ifndef SIMULATIONBASE
265 const IdentifierHash& tubeHash,
266 const Amg::Vector3D& nominalEnd,
267 const tubeSide_t side) const;
268
275 const Amg::Vector3D& localTubeEndPoint,
276 const Amg::Vector3D& fixedPoint,
277 const double thickness) const;
278
279#endif
285 int m_stML{m_idHelper.multilayer(identify())};
287 bool m_isBarrel{m_idHelper.isBarrel(identify())};
290};
291
292std::ostream& operator<<(std::ostream& ostr, const MdtReadoutElement::parameterBook& pars);
293} // namespace MuonGMR4
294
295namespace ActsTrk{
296 template <> Amg::Transform3D
298 template <> Identifier
300}
301
303#endif
Eigen::Affine3d Transform3D
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.
Container classifier the MDT as-built parameters See parameter description in http://atlas-muon-align...
tubeSide_t
MDT tube side.
double thickness() const override final
Overload from the Acts::DetectorElement (2 * halfheight)
bool isBarrel() const
States whether the chamber is built into the barrel or not.
double moduleWidthL() const
Returns the length of the top edge of the chamber (top width)
static unsigned tubeNumber(const IdentifierHash &hash)
Transforms the measurement hash into a tube number ranging from [0; numTubeInLay() -1].
Amg::Vector3D highVoltPos(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the endpoint of the tube connected to the high voltage in the ATLAS coordinate frame.
Amg::Vector3D localTubePos(const IdentifierHash &hash) const
Returns the tube position in the chamber coordinate frame (Not applying the B-line corrections)
Amg::Transform3D toTubeFrame(const IdentifierHash &hash) const
Returns the transformation into the rest frame of the tube x-axis: Pointing towards the next layer y-...
virtual ~MdtReadoutElement()
Destructor.
Amg::Vector3D bLineReferencePoint() const
Returns the fixed point of the B-line & as-bult defromation model expressed in the as-built frame.
unsigned numLayers() const
Returns how many tube layers are inside the multi layer [1;4].
double tubeRadius() const
Adds the thickness of the tube wall onto the radius.
static unsigned layerNumber(const IdentifierHash &hash)
Transforms the measurement hash into a tube-layer number ranging from [0; numLayers() -1].
double distanceToReadout(const ActsTrk::GeometryContext &ctx, const Identifier &measId, const Amg::Vector3D &globPoint) const
Returns the distance to the readout card along the wire.
bool isValid(const IdentifierHash &measHash) const
Checks whether the passed meaurement hash corresponds to a valid tube described by the readout elemen...
StatusCode initElement() override final
Overload from MuonReadoutElement.
Amg::Vector3D readOutPos(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the endpoint of the tube where the readout card is mounted in the ATLAS coordinate frame.
const MdtIdHelper & m_idHelper
Detector identifier helper to quickly extract the ID fields.
const parameterBook & getParameters() const
Get a const reference to the parameter book.
double moduleHeight() const
Returns the height of the chamber (Distance bottom - topWidth)
Amg::Transform3D asBuiltRefFrame() const
Returns the transformation to go into the reference frame of the as-buit & b-line model starting from...
Amg::Vector3D globalTubePos(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the position of the tube mid point in the ATLAS coordinate frame.
MdtReadoutElement(defineArgs &&args)
Constructor with the define arguments.
double innerTubeRadius() const
Returns the inner tube radius.
void setComplementaryReadoutEle(const MdtReadoutElement *other)
Set the link to the second readout element inside the muon station.
ActsTrk::DetectorType detectorType() const override final
Overload the detector type.
double moduleThickness() const
Returns the thickness of the chamber.
double moduleWidthS() const
Returns the length of the bottom edge of the chamber (short width)
double uncutTubeLength(const IdentifierHash &tubeHash) const
Returns the uncut tube length.
unsigned numTubesInLay() const
Returns the number of tubes in a layer.
Amg::Transform3D fromIdealToDeformed(const IdentifierHash &tubeHash, const ActsTrk::DetectorAlignStore *store) const
Applies the B & as-built parameters.
Amg::Vector3D wireEndpointAsBuilt(const MdtAsBuiltPar &asBuilt, const IdentifierHash &tubeHash, const Amg::Vector3D &nominalEnd, const tubeSide_t side) const
Amg::Vector3D applyBlineCorrections(const BLinePar &bline, const Amg::Vector3D &localTubeEndPoint, const Amg::Vector3D &fixedPoint, const double thickness) const
Apply the B-line model correction to a tube endpoint.
IdentifierHash layerHash(const Identifier &measId) const override final
Projects the measurement hash onto the layerHash mainly used to access the plane surface in the cente...
const MdtReadoutElement * complementaryRE() const
Returns the pointer to the other readout element inside the muon station.
Amg::Transform3D toChamberLayer(const IdentifierHash &hash) const
Returns the transformation into the rest frame of the tube x-axis: Pointing towards the next layer y-...
MdtAsBuiltPar::tubeSide_t tubeSide_t
Moves the wire endpoints according to the as-built model.
static IdentifierHash measurementHash(unsigned layerNumber, unsigned tubeNumber)
Constructs a Measurement hash from layer && tube number.
Identifier measurementId(const IdentifierHash &measHash) const override final
Back conversion of the measurement hash towards a full identifier Tube & layer number are extracted f...
double tubePitch() const
Returns the pitch between 2 tubes in a layer.
unsigned multilayer() const
Returns the multi layer of the readout element [1;\2].
Identifier identify() const override final
Return the ATLAS identifier.
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the pointer to the muonIdHelperSvc.
MuonReadoutElement(const defineArgs &args)
Constructor taking the basic define arguments.
virtual const MdtIdHelper & mdtIdHelper() const =0
access to MdtIdHelper
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.
@ Mdt
MuonSpectrometer.
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
Declare the define args as concatination of the parameters to describe the chamber and the defineArgs...
double shortHalfX
The chambers have either a rectangular or a trapezoidal shape to first approximation.
std::shared_ptr< Acts::SurfaceBoundFactory > boundFactory
Sets of surface bounds which is shared amongst all readout elements used to assign the same bound obj...
double readoutSide
Is the readout chip at positive or negative Z in the tube coordinate frame.
std::vector< MdtTubeLayerPtr > tubeLayers
Vector defining the position of all tubes in each tube layer.
std::unordered_set< IdentifierHash > removedTubes
List of tube slots without tubes (BMG cutouts)
#define private