ATLAS Offline Software
Loading...
Searching...
No Matches
MmReadoutElement.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_MMREADOUTELEMENT_H
5#define MUONREADOUTGEOMETRYR4_MMREADOUTELEMENT_H
6
10
11#ifndef SIMULATIONBASE
12# include "Acts/Utilities/BoundFactory.hpp"
13#endif
14
15
16namespace MuonGMR4 {
17
19
20 public:
21
26 double halfThickness{0.};
28 double halfShortWidth{0.};
30 double halfLongWidth{0.};
32 double halfHeight{0.};
34 unsigned int nGasGaps{0};
36 std::vector<int> readoutSide{};
38 std::vector<StripLayerPtr> layers{};
39
40#ifndef SIMULATIONBASE
41 std::shared_ptr<Acts::SurfaceBoundFactory> layerBounds{};
42#endif
43
44
45 };
46
49
51
52 const parameterBook& getParameters() const;
57
58
60 double thickness() const override final;
61
79 unsigned int nGasGaps() const;
88
89 StatusCode initElement() override final;
90
94
95 // measurementHash : Creates a channelHash based on channel's and gasGap's number, which are
96 // retrieved through the MmIdHelper by inputting the calculated channel Identifier.
98 // layerHash : Creates a layerHash based solely on gasGap's number, which is
99 // retrieved through the MmIdHelper by inputting the calculated channel Identifier.
101 // layerHash : Creates a layerHash based on the first 4 bits of the channelHash,
102 // which retrieve the layer.
104 // measurementId : Retrieves the channel Identifier based on the above created channelHash (measurementHash)
106
107 static IdentifierHash createHash(const int gasGap, const int strip);
109 Amg::Vector3D stripPosition(const ActsTrk::GeometryContext& ctx, const Identifier& measId) const;
110 Amg::Vector3D stripPosition(const ActsTrk::GeometryContext& ctx, const IdentifierHash& measHash) const;
112 Amg::Vector3D leftStripEdge(const ActsTrk::GeometryContext& ctx, const Identifier& measId) const;
113 Amg::Vector3D leftStripEdge(const ActsTrk::GeometryContext& ctx, const IdentifierHash& measHash) const;
115 Amg::Vector3D rightStripEdge(const ActsTrk::GeometryContext& ctx, const Identifier& measId) const;
116 Amg::Vector3D rightStripEdge(const ActsTrk::GeometryContext& ctx, const IdentifierHash& measHash) const;
117
120
121 friend ActsTrk::TransformCacheDetEle<MmReadoutElement>;
122
123 private:
124
125
126
127 static unsigned int gasGapNumber(const IdentifierHash& measHash);
128 static unsigned int stripNumber(const IdentifierHash& measHash);
129
131
133
134 const int m_multilayer{m_idHelper.multilayer(identify())};
135
137
138};
139std::ostream& operator<<(std::ostream& ostr, const MmReadoutElement::parameterBook& pars);
140} // namespace MuonGMR4
141
142namespace ActsTrk{
143 template <> Amg::Transform3D
146 template <> Identifier
148}
149
150
152#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.
double moduleHeight() const
Returns the height along the z-axis.
const StripLayer & stripLayer(const Identifier &measId) const
StatusCode initElement() override final
Element initialization.
MmReadoutElement(defineArgs &&args)
double gapLengthS(const IdentifierHash &layerHash) const
Length of gas Gap on short side.
IdentifierHash measurementHash(const Identifier &measId) const override final
Constructs the identifier hash from the full measurement Identifier.
const parameterBook & getParameters() const
static unsigned int stripNumber(const IdentifierHash &measHash)
double thickness() const override final
Overload from the Acts::DetectorElement (2 * halfheight)
static unsigned int gasGapNumber(const IdentifierHash &measHash)
ActsTrk::DetectorType detectorType() const override final
Overload from the ActsTrk::IDetectorElement.
unsigned int nGasGaps() const
Returns the number of gas gaps.
unsigned int numStrips(const IdentifierHash &layerHash) const
Returns the number of total active strips.
int multilayer() const
Returns the multi layer of the element [1-2].
Amg::Transform3D fromGapToChamOrigin(const IdentifierHash &layerHash) const
Identifier measurementId(const IdentifierHash &measHash) const override final
Converts the measurement hash back to the full Identifier.
IdentifierHash layerHash(const Identifier &measId) const override final
Amg::Vector3D leftStripEdge(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the global position of the strip edge.
double moduleWidthL() const
Returns the width at the top edge.
double moduleWidthS() const
Returns the width at the short edge.
int readoutSide(const IdentifierHash &measHash) const
Returns the readout side.
double gapLengthL(const IdentifierHash &layerHash) const
Length of gas Gap on long side.
double stripLength(const IdentifierHash &measHash) const
Returns the strip length.
unsigned int firstStrip(const IdentifierHash &layerHash) const
Returns the first active strip.
double gapHeight(const IdentifierHash &layerHash) const
Height of gas Gap.
Amg::Vector3D stripPosition(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the position of the strip center.
double moduleThickness() const
Returns the module thickness.
Amg::Vector3D rightStripEdge(const ActsTrk::GeometryContext &ctx, const Identifier &measId) const
Returns the global position of the strip edge.
static IdentifierHash createHash(const int gasGap, const int strip)
const MmIdHelper & m_idHelper
Identifier identify() const override final
Return the athena identifier.
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the pointer to the muonIdHelperSvc.
The StripLayer interfaces the 2D description of the strip plane layout with the 3D description of the...
Definition StripLayer.h:19
virtual const MmIdHelper & mmIdHelper() const =0
access to CscIdHelper
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.
@ Mm
Maybe not needed in the migration.
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
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
Set of parameters to describe a RPC chamber.
double halfThickness
Trapezoid dimensions of MicroMegas envelope half-thickness along z-axis.
double halfShortWidth
width of the lower edge
double halfLongWidth
width of the upper edge
std::vector< int > readoutSide
Readout sides.
double halfHeight
length in the radial direction
std::vector< StripLayerPtr > layers
Pointers to the strip layers.
unsigned int nGasGaps
number of gasGaps
std::shared_ptr< Acts::SurfaceBoundFactory > layerBounds
#define private