ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
MuonGMR4::MdtReadoutElement Class Reference

#include <MdtReadoutElement.h>

Inheritance diagram for MuonGMR4::MdtReadoutElement:
Collaboration diagram for MuonGMR4::MdtReadoutElement:

Classes

struct  defineArgs
 
struct  parameterBook
 Set of parameters to describe a MDT chamber. More...
 

Public Member Functions

 MdtReadoutElement (defineArgs &&args)
 
const parameterBookgetParameters () const
 
ActsTrk::DetectorType detectorType () const override final
 Overload from the ActsTrk::IDetectorElement. More...
 
double thickness () const override final
 Overload from the Acts::DetectorElement (2 * halfheight) More...
 
StatusCode initElement () override final
 Element initialization. More...
 
unsigned int multilayer () const
 Returns the multi layer of the MdtReadoutElement. More...
 
unsigned int numLayers () const
 Returns the number of tube layer. More...
 
unsigned int numTubesInLay () const
 Returns the number of tubes per layer. More...
 
IdentifierHash measurementHash (const Identifier &measId) const override final
 Constructs the identifier hash from the full measurement Identifier. More...
 
IdentifierHash layerHash (const Identifier &measId) const override final
 Transforms the Identifier into the layer hash. More...
 
Identifier measurementId (const IdentifierHash &measHash) const override final
 Converts the measurement hash back to the full Identifier. More...
 
bool isValid (const IdentifierHash &measHash) const
 
bool isBarrel () const
 States whether the chamber is built into the barrel or not. More...
 
double tubePitch () const
 Returns the pitch between 2 tubes in a layer. More...
 
double innerTubeRadius () const
 Returns the inner tube radius. More...
 
double tubeRadius () const
 Adds the thickness of the tube wall onto the radius. More...
 
double moduleWidthS () const
 Returns the length of the bottom edge of the chamber (short width) More...
 
double moduleWidthL () const
 Returns the length of the top edge of the chamber (top width) More...
 
double moduleHeight () const
 Returns the height of the chamber (Distance bottom - topWidth) More...
 
double moduleThickness () const
 Returns the thickness of the chamber. More...
 
Amg::Vector3D globalTubePos (const ActsGeometryContext &ctx, const Identifier &measId) const
 Returns the global position of the tube center. More...
 
Amg::Vector3D globalTubePos (const ActsGeometryContext &ctx, const IdentifierHash &hash) const
 
Amg::Vector3D readOutPos (const ActsGeometryContext &ctx, const Identifier &measId) const
 Returns the global position of the readout card. More...
 
Amg::Vector3D readOutPos (const ActsGeometryContext &ctx, const IdentifierHash &measId) const
 
Amg::Vector3D highVoltPos (const ActsGeometryContext &ctx, const Identifier &measId) const
 Returns the global position of the High Voltage connectors. More...
 
Amg::Vector3D highVoltPos (const ActsGeometryContext &ctx, const IdentifierHash &measId) const
 
double distanceToReadout (const ActsGeometryContext &ctx, const Identifier &measId, const Amg::Vector3D &globPoint) const
 Returns the distance along the wire from the readout card The distance is given as the delta z of the readout card in the local tube frame. More...
 
double distanceToReadout (const ActsGeometryContext &ctx, const IdentifierHash &measHash, const Amg::Vector3D &globPoint) const
 
double activeTubeLength (const IdentifierHash &hash) const
 
double tubeLength (const IdentifierHash &hash) const
 
double wireLength (const IdentifierHash &hash) const
 
std::map< Identifier, std::shared_ptr< Acts::Surface > > getSurfaces () const override final
 Returns all surfaces that are associated with the active readout planes. More...
 
const GeoAlignableTransform * alignableTransform () const
 Returnsthe alignable transform of the readout element. More...
 
Identifier identify () const override final
 Return the athena identifier. More...
 
IdentifierHash identHash () const
 Returns the Identifier has of the Element that is Identical to the detElHash from the id_helper class. More...
 
int stationName () const
 Returns the stationName (BIS, BOS, etc) encoded into the integer. More...
 
int stationEta () const
 Returns the stationEta (positive A site, negative O site) More...
 
int stationPhi () const
 Returns the stationPhi (1-8) -> sector (2*phi - (isSmall)) More...
 
Muon::MuonStationIndex::ChIndex chamberIndex () const
 Returns the chamber index of the Identifier (MMS & STS) have the same chamber Index (EIS) More...
 
std::string chamberDesign () const
 The chamber design refers to the construction parameters of a readout element. More...
 
const Muon::IMuonIdHelperSvcidHelperSvc () const
 Returns the pointer to the muonIdHelperSvc. More...
 
Amg::Vector3D center (const ActsGeometryContext &ctx) const
 Returns the detector center (Which is the same as the detector center of the first measurement layer) More...
 
Amg::Vector3D center (const ActsGeometryContext &ctx, const Identifier &id) const
 Returns the center of a given detector layer using the complete Identifier of the measurement. More...
 
Amg::Vector3D center (const ActsGeometryContext &ctx, const IdentifierHash &hash) const
 Returns the center of a given detector layer using the Identifier hash of the measurement. More...
 
Amg::Transform3D globalToLocalTrans (const ActsGeometryContext &ctx) const
 Transformations to translate between local <-> global coordinates. More...
 
Amg::Transform3D globalToLocalTrans (const ActsGeometryContext &ctx, const Identifier &id) const
 Returns the global to local transformation into the rest frame of a given measurement layer. More...
 
Amg::Transform3D globalToLocalTrans (const ActsGeometryContext &ctx, const IdentifierHash &hash) const
 Returns the global to local transformation into the rest frame of a given measurement layer. More...
 
const Amg::Transform3DlocalToGlobalTrans (const ActsGeometryContext &ctx) const
 Returns the local to global transformation into the ATLAS coordinate system. More...
 
const Amg::Transform3DlocalToGlobalTrans (const ActsGeometryContext &ctx, const Identifier &id) const
 
const Amg::Transform3DlocalToGlobalTrans (const ActsGeometryContext &ctx, const IdentifierHash &id) const
 
const Acts::Transform3 & transform (const Acts::GeometryContext &gctx) const override final
 Returns the transformation to the origin of the chamber coordinate system. More...
 
const Acts::Surface & surface () const override final
 Returns the surface associated to the readout element plane. More...
 
Acts::Surface & surface () override final
 
const Acts::Surface & surface (const IdentifierHash &hash) const
 Returns the sufrface associated to a wire / measurement plane in the detector. More...
 
Acts::Surface & surface (const IdentifierHash &hash)
 
std::shared_ptr< Acts::Surface > surfacePtr (const IdentifierHash &hash) const
 Returns the pointer associated to a certain wire / plane. More...
 
void setChamberLink (GeoModel::TransientConstSharedPtr< MuonChamber > chamber)
 Set's the link to the MuonChamber object to which the MuonReadoutElement belongs to. More...
 
const MuonChambergetChamber () const
 
void releaseUnAlignedTrfs () const
 Releases all cached transforms that are not connected with alignment. More...
 
unsigned int storeAlignedTransforms (const ActsTrk::DetectorAlignStore &store) const override final
 Caches the aligned transformation in the provided store. Returns the number of cached elements. More...
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Static Public Member Functions

static unsigned int tubeNumber (const IdentifierHash &hash)
 Transforms the idenfier hash into a tube number ranging from (0- numTubesInLay()-1) More...
 
static unsigned int layerNumber (const IdentifierHash &hash)
 Transforms the identifier hash into a layer number ranging from (0-numLayers()-1) More...
 
static IdentifierHash measurementHash (unsigned int layerNumber, unsigned int tubeNumber)
 Transform the layer and tube number to the measurementHash. More...
 
static IdentifierHash layerHash (const IdentifierHash &measHash)
 

Protected Member Functions

const Amg::Transform3DtoStation (const ActsTrk::DetectorAlignStore *alignStore) const
 Returns the transformation into the center of the readout volume. More...
 
template<class MuonDetImpl >
StatusCode insertTransform (const IdentifierHash &hash)
 Inserts a transfomration for caching. More...
 
StatusCode createGeoTransform ()
 
StatusCode strawSurfaceFactory (const IdentifierHash &hash, std::shared_ptr< Acts::LineBounds > lBounds)
 
StatusCode planeSurfaceFactory (const IdentifierHash &hash, std::shared_ptr< Acts::PlanarBounds > pBounds)
 

Static Protected Member Functions

static IdentifierHash geoTransformHash ()
 Returns the hash that is associated with the surface cache holding the transformation that is placing the ReadoutElement inside the ATLAS coordinate system. More...
 

Private Types

using TransformCacheMap = std::unordered_map< IdentifierHash, std::unique_ptr< ActsTrk::TransformCache > >
 Cache all local to global transformations. More...
 

Private Member Functions

Amg::Vector3D localTubePos (const IdentifierHash &hash) const
 Returns the tube position in the chamber coordinate frame. More...
 
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-axis: Pointing parallel to the wire layer z-axis: Pointing along the wire. More...
 
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-axis: Pointing parallel to the wire layer z-axis: Pointing along the wire. More...
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

parameterBook m_pars {}
 
const MdtIdHelperm_idHelper {idHelperSvc()->mdtIdHelper()}
 
int m_stML {m_idHelper.multilayer(identify())}
 Identifier index of the multilayer (1-2) More...
 
bool m_isBarrel {m_idHelper.isBarrel(identify())}
 Flag defining whether the chamber is barrel or not. More...
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc
 
const defineArgs m_args {}
 
IdentifierHash m_detElHash {}
 Cache of the detector element hash. More...
 
Muon::MuonStationIndex::ChIndex m_chIdx {Muon::MuonStationIndex::ChIndex::ChUnknown}
 Cache the chamber index of the Identifier. More...
 
int m_stName {-1}
 Cache the station name of the identifier. More...
 
int m_stEta {-1}
 Cache the station eta of the identifier. More...
 
int m_stPhi {-1}
 Cache the station phi of the identifier. More...
 
TransformCacheMap m_localToGlobalCaches {}
 
ActsTrk::SurfaceCacheSet m_surfaces {}
 Cache of all associated surfaces. More...
 
GeoModel::TransientConstSharedPtr< MuonChamberm_chambLink {}
 Pointer to the associated MuonChamber. More...
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Detailed Description

Definition at line 15 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h.

Member Typedef Documentation

◆ TransformCacheMap

using MuonGMR4::MuonReadoutElement::TransformCacheMap = std::unordered_map<IdentifierHash, std::unique_ptr<ActsTrk::TransformCache> >
privateinherited

Cache all local to global transformations.

Definition at line 206 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h.

Constructor & Destructor Documentation

◆ MdtReadoutElement()

MuonGMR4::MdtReadoutElement::MdtReadoutElement ( defineArgs &&  args)

Definition at line 30 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

31  : MuonReadoutElement(std::move(args)),
32  m_pars{std::move(args)} {
33 }

Member Function Documentation

◆ activeTubeLength()

double MuonGMR4::MdtReadoutElement::activeTubeLength ( const IdentifierHash hash) const

Definition at line 169 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

169  {
170  const unsigned int layer = layerNumber(hash);
171  const unsigned int tube = tubeNumber(hash);
172  const MdtTubeLayer& zeroT{*m_pars.tubeLayers[layer]};
173  return 2. * zeroT.tubeHalfLength(tube);
174 }

◆ alignableTransform()

const GeoAlignableTransform* MuonGMR4::MuonReadoutElement::alignableTransform ( ) const
inherited

Returnsthe alignable transform of the readout element.

◆ center() [1/3]

Amg::Vector3D MuonGMR4::MuonReadoutElement::center ( const ActsGeometryContext ctx) const
inherited

Returns the detector center (Which is the same as the detector center of the first measurement layer)

◆ center() [2/3]

Amg::Vector3D MuonGMR4::MuonReadoutElement::center ( const ActsGeometryContext ctx,
const Identifier id 
) const
inherited

Returns the center of a given detector layer using the complete Identifier of the measurement.

◆ center() [3/3]

Amg::Vector3D MuonGMR4::MuonReadoutElement::center ( const ActsGeometryContext ctx,
const IdentifierHash hash 
) const
inherited

Returns the center of a given detector layer using the Identifier hash of the measurement.

◆ chamberDesign()

std::string MuonGMR4::MuonReadoutElement::chamberDesign ( ) const
inherited

The chamber design refers to the construction parameters of a readout element.

Used for the retrieval of the chamber parameters E.g. the chambers BOL1A8 & BOL2A8 are identical in terms of number of tubes, dimensions etc.

◆ chamberIndex()

Muon::MuonStationIndex::ChIndex MuonGMR4::MuonReadoutElement::chamberIndex ( ) const
inherited

Returns the chamber index of the Identifier (MMS & STS) have the same chamber Index (EIS)

◆ createGeoTransform()

StatusCode MuonGMR4::MuonReadoutElement::createGeoTransform ( )
protectedinherited

Check that the alignable node has been assigned

Definition at line 31 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

31  {
33  if(!alignableTransform()) {
34  ATH_MSG_FATAL("The readout element "<<idHelperSvc()->toStringDetEl(identify())<<" has no assigned alignable node");
35  return StatusCode::FAILURE;
36  }
37  return insertTransform<MuonReadoutElement>(geoTransformHash());
38 }

◆ detectorType()

ActsTrk::DetectorType MuonGMR4::MdtReadoutElement::detectorType ( ) const
inlinefinaloverridevirtual

◆ distanceToReadout() [1/2]

double MuonGMR4::MdtReadoutElement::distanceToReadout ( const ActsGeometryContext ctx,
const Identifier measId,
const Amg::Vector3D globPoint 
) const

Returns the distance along the wire from the readout card The distance is given as the delta z of the readout card in the local tube frame.

◆ distanceToReadout() [2/2]

double MuonGMR4::MdtReadoutElement::distanceToReadout ( const ActsGeometryContext ctx,
const IdentifierHash measHash,
const Amg::Vector3D globPoint 
) const

The position of the readout chip is at the negative tube side

Definition at line 181 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

183  {
184  const Amg::Vector3D locPoint = globalToLocalTrans(ctx, measHash) * globPoint;
186  const unsigned int layer = layerNumber(measHash);
187  const unsigned int tube = tubeNumber(measHash);
188  const MdtTubeLayer& zeroT{*m_pars.tubeLayers[layer]};
190  zeroT.tubeHalfLength(tube) *
191  Amg::Vector3D::UnitZ();
192  return readOutPos.z() - locPoint.z();
193 }

◆ geoTransformHash()

IdentifierHash MuonGMR4::MuonReadoutElement::geoTransformHash ( )
staticprotectedinherited

Returns the hash that is associated with the surface cache holding the transformation that is placing the ReadoutElement inside the ATLAS coordinate system.

Definition at line 39 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

39  {
40  static const IdentifierHash hash{static_cast<unsigned>(~0)-1};
41  return hash;
42 }

◆ getChamber()

const MuonChamber * MuonGMR4::MuonReadoutElement::getChamber ( ) const
inherited

Definition at line 142 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

142  {
143  return m_chambLink.get();
144 }

◆ getParameters()

const MdtReadoutElement::parameterBook & MuonGMR4::MdtReadoutElement::getParameters ( ) const

◆ getSurfaces()

std::map< Identifier, std::shared_ptr< Acts::Surface > > MuonGMR4::MdtReadoutElement::getSurfaces ( ) const
finaloverridevirtual

Returns all surfaces that are associated with the active readout planes.

Implements MuonGMR4::MuonReadoutElement.

Definition at line 195 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

195  {
196  std::map<Identifier, std::shared_ptr<Acts::Surface>> surfaces{};
197  for (unsigned int layer = 1; layer<= numLayers(); ++layer) {
198  for (unsigned int tube = 1; tube<= numTubesInLay(); ++tube) {
199  const IdentifierHash measHash = measurementHash(layer, tube);
200  if (isValid(measHash)) {
201  surfaces[measurementId(measHash)] = surfacePtr(measHash);
202  }
203  }
204  }
205  return surfaces;
206 }

◆ globalToLocalTrans() [1/3]

Amg::Transform3D MuonGMR4::MuonReadoutElement::globalToLocalTrans ( const ActsGeometryContext ctx) const
inherited

Transformations to translate between local <-> global coordinates.

They follow the common ATLAS conventations that the origin is located in the center of the detector layer x-axis: Points towards the sky y-axis: Points towards the edges of ATLAS z-axis: Points along the beamline The transformations always include the corrections from the A-Lines of the alignment system Returns the global to local transformation into the rest frame of the detector (Coincides with the first measurement layer)

Definition at line 73 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

73  {
74  return globalToLocalTrans(ctx, geoTransformHash());
75 }

◆ globalToLocalTrans() [2/3]

Amg::Transform3D MuonGMR4::MuonReadoutElement::globalToLocalTrans ( const ActsGeometryContext ctx,
const Identifier id 
) const
inherited

Returns the global to local transformation into the rest frame of a given measurement layer.

◆ globalToLocalTrans() [3/3]

Amg::Transform3D MuonGMR4::MuonReadoutElement::globalToLocalTrans ( const ActsGeometryContext ctx,
const IdentifierHash hash 
) const
inherited

Returns the global to local transformation into the rest frame of a given measurement layer.

◆ globalTubePos() [1/2]

Amg::Vector3D MuonGMR4::MdtReadoutElement::globalTubePos ( const ActsGeometryContext ctx,
const Identifier measId 
) const

Returns the global position of the tube center.

◆ globalTubePos() [2/2]

Amg::Vector3D MuonGMR4::MdtReadoutElement::globalTubePos ( const ActsGeometryContext ctx,
const IdentifierHash hash 
) const

◆ highVoltPos() [1/2]

Amg::Vector3D MuonGMR4::MdtReadoutElement::highVoltPos ( const ActsGeometryContext ctx,
const Identifier measId 
) const

Returns the global position of the High Voltage connectors.

◆ highVoltPos() [2/2]

Amg::Vector3D MuonGMR4::MdtReadoutElement::highVoltPos ( const ActsGeometryContext ctx,
const IdentifierHash measId 
) const

Definition at line 150 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

151  {
152  const unsigned int layer = layerNumber(hash);
153  const unsigned int tube = tubeNumber(hash);
154  const MdtTubeLayer& zeroT{*m_pars.tubeLayers[layer]};
155  const double length = - zeroT.tubeHalfLength(tube) * m_pars.readoutSide;
156  return localToGlobalTrans(ctx) * zeroT.tubeTransform(tube)*(length * Amg::Vector3D::UnitZ());
157 }

◆ identHash()

IdentifierHash MuonGMR4::MuonReadoutElement::identHash ( ) const
inherited

Returns the Identifier has of the Element that is Identical to the detElHash from the id_helper class.

◆ identify()

Identifier MuonGMR4::MuonReadoutElement::identify ( ) const
finaloverridevirtualinherited

Return the athena identifier.

The Identifier is identical with the first measurment channel in readout element (E.g. Strip 1 in Layer 1 in the NSW)

Implements ActsTrk::IDetectorElement.

◆ idHelperSvc()

const Muon::IMuonIdHelperSvc* MuonGMR4::MuonReadoutElement::idHelperSvc ( ) const
inherited

Returns the pointer to the muonIdHelperSvc.

◆ initElement()

StatusCode MuonGMR4::MdtReadoutElement::initElement ( )
finaloverridevirtual

Element initialization.

First check whether we're having tubes

Create bounds that are representing the surface planes of each tube layer & the readout element itself

Coordinate system of the trapezoid is in the center while the tubes are defined w.r.t. to the chamber edge. Move first tube into the proper position

Cache the transformations to the chamber layers

Cache the transformations to the tube layers

Ensure that all linear transformations are rotations

Ensure that all tubes have the same pitch

Implements MuonGMR4::MuonReadoutElement.

Definition at line 40 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

40  {
43  if (!numLayers() || !numTubesInLay()) {
44  ATH_MSG_FATAL("The readout element "<< idHelperSvc()->toStringDetEl(identify())<<" has no tubes. Please check "<<std::endl<<m_pars);
45  return StatusCode::FAILURE;
46  }
47  if (m_pars.tubePitch<=tubeRadius()) {
48  ATH_MSG_FATAL("The tubes of "<<idHelperSvc()->toStringDetEl(identify())<<" will fall together on a single point. Please check "<<std::endl<<m_pars);
49  return StatusCode::FAILURE;
50  }
51 #ifndef SIMULATIONBASE
55  m_pars.halfY)));
56 #endif
57 
60  std::optional<Amg::Vector3D> prevLayPos{std::nullopt};
61 
62  for (unsigned int lay =1 ; lay <= numLayers() ; ++lay) {
64  const IdentifierHash layHash = measurementHash(lay,0);
65  ATH_CHECK(insertTransform<MdtReadoutElement>(layHash));
66 #ifndef SIMULATIONBASE
69  m_pars.halfY)));
70 #endif
71  std::optional<Amg::Vector3D> prevTubePos{std::nullopt};
73  MdtTubeLayer& layer = *m_pars.tubeLayers[lay-1];
74  GeoVolumeCursor tubeCursor = layer.tubeCursor();
75  GeoTrf::Transform3D layerTransform = layer.layerTransform();
76  for (unsigned int tube = 1; tube <= numTubesInLay(); ++ tube, tubeCursor.next()) {
77  assert (!tubeCursor.atEnd());
78  const IdentifierHash idHash = measurementHash(lay,tube);
79  if (m_pars.removedTubes.count(idHash)) {
80  prevTubePos = std::nullopt;
81  continue;
82  }
83  ATH_CHECK(insertTransform<MdtReadoutElement>(idHash));
84 #ifndef SIMULATIONBASE
85  ATH_CHECK(strawSurfaceFactory(idHash, m_pars.tubeBounds->make_bounds(innerTubeRadius(), 0.5*tubeLength(idHash))));
86 #endif
87  GeoTrf::Transform3D tubeFrame = layerTransform*tubeCursor.getDefTransform();
89  const AmgSymMatrix(3) tubeRot = tubeFrame.linear();
90  if (std::abs(tubeRot.determinant()- 1.) > std::numeric_limits<float>::epsilon()){
91  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" Transformation matrix is not a pure rotation for "<<
92  idHelperSvc()->toStringDetEl(identify())<<" in layer: "<<lay<<", tube: "<<tube
93  <<Amg::toString(tubeFrame));
94  return StatusCode::FAILURE;
95  }
97  const Amg::Vector3D tubePos = tubeFrame.translation();
98 
99  constexpr double pitchTolerance = 20. * Gaudi::Units::micrometer;
100  if (prevTubePos) {
101  const double dR = std::abs((tubePos - (*prevTubePos)).z());
102  if (std::abs(dR - tubePitch()) > pitchTolerance) {
103  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" Detected irregular tube in "<<
104  idHelperSvc()->toStringDetEl(identify())<<" in layer: "<<lay<<", tube: "<<tube
105  <<". Expected tube pitch: "<<tubePitch()<<" measured tube pitch: "
106  <<dR<<" tube position: "<<Amg::toString(tubePos,2)
107  <<" previous: "<<Amg::toString((*prevTubePos), 2));
108  return StatusCode::FAILURE;
109  }
110  }
111  if (prevLayPos && tube == 1) {
112  const double dR = (tubePos - (*prevLayPos)).mag();
113  if (std::abs(dR - tubePitch()) > pitchTolerance) {
114  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" Detected irregular layer pitch in "<<
115  idHelperSvc()->toStringDetEl(identify())<<" for layer "<<lay
116  <<". Expected tube pitch: "<<tubePitch()<<" measured tube pitch: "
117  <<dR<<" tube position: "<<Amg::toString(tubePos,2)
118  <<" previous:"<<Amg::toString((*prevLayPos), 2));
119  }
120  }
121  if (tube == 1) {
122  prevLayPos = std::make_optional<Amg::Vector3D>(tubePos);
123  }
124  prevTubePos = std::make_optional<Amg::Vector3D>(tubePos);
125  }
126  }
127 #ifndef SIMULATIONBASE
128  m_pars.tubeBounds.reset();
129  m_pars.layerBounds.reset();
130 #endif
131  return StatusCode::SUCCESS;
132 }

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ innerTubeRadius()

double MuonGMR4::MdtReadoutElement::innerTubeRadius ( ) const

Returns the inner tube radius.

◆ insertTransform()

template<class MuonDetImpl >
StatusCode MuonGMR4::MuonReadoutElement::insertTransform ( const IdentifierHash hash)
protectedinherited

Inserts a transfomration for caching.

◆ isBarrel()

bool MuonGMR4::MdtReadoutElement::isBarrel ( ) const

States whether the chamber is built into the barrel or not.

◆ isValid()

bool MuonGMR4::MdtReadoutElement::isValid ( const IdentifierHash measHash) const

◆ layerHash() [1/2]

IdentifierHash MuonGMR4::MdtReadoutElement::layerHash ( const Identifier measId) const
finaloverridevirtual

Transforms the Identifier into the layer hash.

Implements MuonGMR4::MuonReadoutElement.

◆ layerHash() [2/2]

static IdentifierHash MuonGMR4::MdtReadoutElement::layerHash ( const IdentifierHash measHash)
static

◆ layerNumber()

static unsigned int MuonGMR4::MdtReadoutElement::layerNumber ( const IdentifierHash hash)
static

Transforms the identifier hash into a layer number ranging from (0-numLayers()-1)

◆ localToGlobalTrans() [1/3]

const Amg::Transform3D & MuonGMR4::MuonReadoutElement::localToGlobalTrans ( const ActsGeometryContext ctx) const
inherited

Returns the local to global transformation into the ATLAS coordinate system.

Definition at line 76 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

76  {
77  return localToGlobalTrans(ctx, geoTransformHash());
78 }

◆ localToGlobalTrans() [2/3]

const Amg::Transform3D& MuonGMR4::MuonReadoutElement::localToGlobalTrans ( const ActsGeometryContext ctx,
const Identifier id 
) const
inherited

◆ localToGlobalTrans() [3/3]

const Amg::Transform3D & MuonGMR4::MuonReadoutElement::localToGlobalTrans ( const ActsGeometryContext ctx,
const IdentifierHash id 
) const
inherited

Definition at line 45 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

46  {
47  TransformCacheMap::const_iterator cache = m_localToGlobalCaches.find(hash);
48  if (cache != m_localToGlobalCaches.end()) return cache->second->getTransform(ctx.getStore(detectorType()).get());
49  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<"() -- "
50  <<idHelperSvc()->toStringDetEl(identify())<<" hash: "<<hash<<" is unknown.");
51  return dummyTrans;
52 }

◆ localTubePos()

Amg::Vector3D MuonGMR4::MdtReadoutElement::localTubePos ( const IdentifierHash hash) const
private

Returns the tube position in the chamber coordinate frame.

Definition at line 139 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

139  {
140  return toTubeFrame(hash).translation();
141 }

◆ measurementHash() [1/2]

IdentifierHash MuonGMR4::MdtReadoutElement::measurementHash ( const Identifier measId) const
finaloverridevirtual

Constructs the identifier hash from the full measurement Identifier.

The hash is always defined w.r.t the specific detector element and used to access the information in memory quickly

Implements MuonGMR4::MuonReadoutElement.

◆ measurementHash() [2/2]

static IdentifierHash MuonGMR4::MdtReadoutElement::measurementHash ( unsigned int  layerNumber,
unsigned int  tubeNumber 
)
static

Transform the layer and tube number to the measurementHash.

◆ measurementId()

Identifier MuonGMR4::MdtReadoutElement::measurementId ( const IdentifierHash measHash) const
finaloverridevirtual

Converts the measurement hash back to the full Identifier.

Implements MuonGMR4::MuonReadoutElement.

Definition at line 35 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

35  {
37  layerNumber(measHash) + 1,
38  tubeNumber(measHash) + 1);
39 }

◆ moduleHeight()

double MuonGMR4::MdtReadoutElement::moduleHeight ( ) const

Returns the height of the chamber (Distance bottom - topWidth)

◆ moduleThickness()

double MuonGMR4::MdtReadoutElement::moduleThickness ( ) const

Returns the thickness of the chamber.

◆ moduleWidthL()

double MuonGMR4::MdtReadoutElement::moduleWidthL ( ) const

Returns the length of the top edge of the chamber (top width)

◆ moduleWidthS()

double MuonGMR4::MdtReadoutElement::moduleWidthS ( ) const

Returns the length of the bottom edge of the chamber (short width)

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ multilayer()

unsigned int MuonGMR4::MdtReadoutElement::multilayer ( ) const

Returns the multi layer of the MdtReadoutElement.

◆ numLayers()

unsigned int MuonGMR4::MdtReadoutElement::numLayers ( ) const

Returns the number of tube layer.

◆ numTubesInLay()

unsigned int MuonGMR4::MdtReadoutElement::numTubesInLay ( ) const

Returns the number of tubes per layer.

◆ planeSurfaceFactory()

StatusCode MuonGMR4::MuonReadoutElement::planeSurfaceFactory ( const IdentifierHash hash,
std::shared_ptr< Acts::PlanarBounds >  pBounds 
)
protectedinherited

Definition at line 120 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

120  {
121 
122  //get the local to global transform cache
123  TransformCacheMap::const_iterator transformCache = m_localToGlobalCaches.find(hash);
124  if (transformCache == m_localToGlobalCaches.end()) {
125  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" - "<<idHelperSvc()->toString(identify())
126  <<" no transform cache available for hash "<<hash);
127  return StatusCode::FAILURE;
128  }
129  auto insert_itr = m_surfaces.insert(std::make_unique<ActsTrk::SurfaceCache>(transformCache->second.get()));
130  if(!insert_itr.second){
131  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" - "<<idHelperSvc()->toString(identify())
132  <<" Insertion to muon surface cache failed for hash "<<hash);
133  return StatusCode::FAILURE;
134  }
135  //Create a plane surface for the surface cache
136  (*insert_itr.first)->setSurface(Acts::Surface::makeShared<Acts::PlaneSurface>(pBounds, **insert_itr.first));
137  return StatusCode::SUCCESS;
138 }

◆ readOutPos() [1/2]

Amg::Vector3D MuonGMR4::MdtReadoutElement::readOutPos ( const ActsGeometryContext ctx,
const Identifier measId 
) const

Returns the global position of the readout card.

◆ readOutPos() [2/2]

Amg::Vector3D MuonGMR4::MdtReadoutElement::readOutPos ( const ActsGeometryContext ctx,
const IdentifierHash measId 
) const

Definition at line 142 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

143  {
144  const unsigned int layer = layerNumber(hash);
145  const unsigned int tube = tubeNumber(hash);
146  const MdtTubeLayer& zeroT{*m_pars.tubeLayers[layer]};
147  const double length = zeroT.tubeHalfLength(tube) * m_pars.readoutSide;
148  return localToGlobalTrans(ctx) * zeroT.tubeTransform(tube)*(length * Amg::Vector3D::UnitZ());
149 }

◆ releaseUnAlignedTrfs()

void MuonGMR4::MuonReadoutElement::releaseUnAlignedTrfs ( ) const
inherited

Releases all cached transforms that are not connected with alignment.

Definition at line 57 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

57  {
58  for (const auto& cache : m_localToGlobalCaches) {
59  cache.second->releaseNominalCache();
60  }
61 }

◆ setChamberLink()

void MuonGMR4::MuonReadoutElement::setChamberLink ( GeoModel::TransientConstSharedPtr< MuonChamber chamber)
inherited

Set's the link to the MuonChamber object to which the MuonReadoutElement belongs to.

Definition at line 139 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

139  {
140  m_chambLink = std::move(chamber);
141 }

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

◆ stationEta()

int MuonGMR4::MuonReadoutElement::stationEta ( ) const
inherited

Returns the stationEta (positive A site, negative O site)

◆ stationName()

int MuonGMR4::MuonReadoutElement::stationName ( ) const
inherited

Returns the stationName (BIS, BOS, etc) encoded into the integer.

◆ stationPhi()

int MuonGMR4::MuonReadoutElement::stationPhi ( ) const
inherited

Returns the stationPhi (1-8) -> sector (2*phi - (isSmall))

◆ storeAlignedTransforms()

unsigned int MuonGMR4::MuonReadoutElement::storeAlignedTransforms ( const ActsTrk::DetectorAlignStore store) const
finaloverridevirtualinherited

Caches the aligned transformation in the provided store. Returns the number of cached elements.

Implements ActsTrk::IDetectorElement.

Definition at line 63 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

63  {
64  if (store.detType != detectorType()) return 0;
65  unsigned int aligned{0};
66  for (const auto& cache : m_localToGlobalCaches) {
67  cache.second->getTransform(&store);
68  ++aligned;
69  }
70  return aligned;
71 }

◆ strawSurfaceFactory()

StatusCode MuonGMR4::MuonReadoutElement::strawSurfaceFactory ( const IdentifierHash hash,
std::shared_ptr< Acts::LineBounds >  lBounds 
)
protectedinherited

Definition at line 97 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

98  {
99 
100  //get the local to global transform cache
101  TransformCacheMap::const_iterator transformCache = m_localToGlobalCaches.find(hash);
102  if (transformCache == m_localToGlobalCaches.end()) {
103  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" - "<<idHelperSvc()->toString(identify())
104  <<" no transform cache available for hash "<<hash);
105  return StatusCode::FAILURE;
106  }
107 
108  auto insert_itr = m_surfaces.insert(std::make_unique<ActsTrk::SurfaceCache>(transformCache->second.get()));
109  if(!insert_itr.second){
110  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" - "<<idHelperSvc()->toString(identify())
111  <<" Insertion to muon surface cache failed for hash "<<hash);
112  return StatusCode::FAILURE;
113  }
114  //Create straw surface for the surface cache
115  (*insert_itr.first)->setSurface(Acts::Surface::makeShared<Acts::StrawSurface>(lBounds, **insert_itr.first));
116  return StatusCode::SUCCESS;
117 
118 }

◆ surface() [1/4]

const Acts::Surface & MuonGMR4::MuonReadoutElement::surface ( ) const
finaloverrideinherited

Returns the surface associated to the readout element plane.

Definition at line 92 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

92 { return surface(geoTransformHash()); }

◆ surface() [2/4]

Acts::Surface & MuonGMR4::MuonReadoutElement::surface ( )
finaloverrideinherited

◆ surface() [3/4]

Acts::Surface & MuonGMR4::MuonReadoutElement::surface ( const IdentifierHash hash)
inherited

◆ surface() [4/4]

const Acts::Surface & MuonGMR4::MuonReadoutElement::surface ( const IdentifierHash hash) const
inherited

Returns the sufrface associated to a wire / measurement plane in the detector.

Definition at line 94 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

94 { return *surfacePtr(hash); }

◆ surfacePtr()

std::shared_ptr< Acts::Surface > MuonGMR4::MuonReadoutElement::surfacePtr ( const IdentifierHash hash) const
inherited

Returns the pointer associated to a certain wire / plane.

Definition at line 84 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

84  {
85  ActsTrk::SurfaceCacheSet::const_iterator cache = m_surfaces.find(hash);
86  if(cache != m_surfaces.end()) return (*cache)->getSurface();
87  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<"() -- Hash "<<hash
88  <<" is unknown to "<<idHelperSvc()->toStringDetEl(identify()));
89  return nullptr;
90 }

◆ thickness()

double MuonGMR4::MdtReadoutElement::thickness ( ) const
finaloverride

Overload from the Acts::DetectorElement (2 * halfheight)

◆ toChamberLayer()

Amg::Transform3D MuonGMR4::MdtReadoutElement::toChamberLayer ( const IdentifierHash hash) const
private

Returns the transformation into the rest frame of the tube x-axis: Pointing towards the next layer y-axis: Pointing parallel to the wire layer z-axis: Pointing along the wire.

Definition at line 158 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

158  {
159  const unsigned int layer = layerNumber(hash);
160  const MdtTubeLayer& zeroT{*m_pars.tubeLayers[layer]};
161  return zeroT.layerTransform();
162 }

◆ toStation()

const Amg::Transform3D & MuonGMR4::MuonReadoutElement::toStation ( const ActsTrk::DetectorAlignStore alignStore) const
protectedinherited

Returns the transformation into the center of the readout volume.

Definition at line 54 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

54  {
55  return getMaterialGeom()->getAbsoluteTransform(alignStore ? alignStore->geoModelAlignment.get() : nullptr);
56 }

◆ toTubeFrame()

Amg::Transform3D MuonGMR4::MdtReadoutElement::toTubeFrame ( const IdentifierHash hash) const
private

Returns the transformation into the rest frame of the tube x-axis: Pointing towards the next layer y-axis: Pointing parallel to the wire layer z-axis: Pointing along the wire.

Definition at line 163 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx.

163  {
164  const unsigned int layer = layerNumber(hash);
165  const unsigned int tube = tubeNumber(hash);
166  const MdtTubeLayer& zeroT{*m_pars.tubeLayers[layer]};
167  return zeroT.tubeTransform(tube);
168 }

◆ transform()

const Acts::Transform3 & MuonGMR4::MuonReadoutElement::transform ( const Acts::GeometryContext &  gctx) const
finaloverrideinherited

Returns the transformation to the origin of the chamber coordinate system.

Definition at line 80 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx.

80  {
81  const ActsGeometryContext *gctx = anygctx.get<const ActsGeometryContext *>();
82  return localToGlobalTrans(*gctx, geoTransformHash());
83 }

◆ tubeLength()

double MuonGMR4::MdtReadoutElement::tubeLength ( const IdentifierHash hash) const

◆ tubeNumber()

static unsigned int MuonGMR4::MdtReadoutElement::tubeNumber ( const IdentifierHash hash)
static

Transforms the idenfier hash into a tube number ranging from (0- numTubesInLay()-1)

◆ tubePitch()

double MuonGMR4::MdtReadoutElement::tubePitch ( ) const

Returns the pitch between 2 tubes in a layer.

◆ tubeRadius()

double MuonGMR4::MdtReadoutElement::tubeRadius ( ) const

Adds the thickness of the tube wall onto the radius.

◆ wireLength()

double MuonGMR4::MdtReadoutElement::wireLength ( const IdentifierHash hash) const

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_args

const defineArgs MuonGMR4::MuonReadoutElement::m_args {}
privateinherited

◆ m_chambLink

GeoModel::TransientConstSharedPtr<MuonChamber> MuonGMR4::MuonReadoutElement::m_chambLink {}
privateinherited

◆ m_chIdx

Muon::MuonStationIndex::ChIndex MuonGMR4::MuonReadoutElement::m_chIdx {Muon::MuonStationIndex::ChIndex::ChUnknown}
privateinherited

◆ m_detElHash

IdentifierHash MuonGMR4::MuonReadoutElement::m_detElHash {}
privateinherited

Cache of the detector element hash.

Definition at line 195 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h.

◆ m_idHelper

const MdtIdHelper& MuonGMR4::MdtReadoutElement::m_idHelper {idHelperSvc()->mdtIdHelper()}
private

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonGMR4::MuonReadoutElement::m_idHelperSvc
privateinherited
Initial value:
{
"Muon::MuonIdHelperSvc/MuonIdHelperSvc", "MuonReadoutElement"}

Definition at line 190 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_isBarrel

bool MuonGMR4::MdtReadoutElement::m_isBarrel {m_idHelper.isBarrel(identify())}
private

Flag defining whether the chamber is barrel or not.

Definition at line 189 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h.

◆ m_localToGlobalCaches

TransformCacheMap MuonGMR4::MuonReadoutElement::m_localToGlobalCaches {}
privateinherited

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_pars

parameterBook MuonGMR4::MdtReadoutElement::m_pars {}
private

◆ m_stEta

int MuonGMR4::MuonReadoutElement::m_stEta {-1}
privateinherited

Cache the station eta of the identifier.

Definition at line 201 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h.

◆ m_stML

int MuonGMR4::MdtReadoutElement::m_stML {m_idHelper.multilayer(identify())}
private

◆ m_stName

int MuonGMR4::MuonReadoutElement::m_stName {-1}
privateinherited

Cache the station name of the identifier.

Definition at line 199 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h.

◆ m_stPhi

int MuonGMR4::MuonReadoutElement::m_stPhi {-1}
privateinherited

Cache the station phi of the identifier.

Definition at line 203 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h.

◆ m_surfaces

ActsTrk::SurfaceCacheSet MuonGMR4::MuonReadoutElement::m_surfaces {}
privateinherited

Cache of all associated surfaces.

Definition at line 210 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h.


The documentation for this class was generated from the following files:
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
store
StoreGateSvc * store
Definition: fbtTestBasics.cxx:69
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGMR4::MdtReadoutElement::parameterBook::tubeBounds
ActsTrk::SurfaceBoundSetPtr< Acts::LineBounds > tubeBounds
Sets of surface bounds which is shared amongst all readout elements used to assign the same bound obj...
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:62
MuonGMR4::MdtReadoutElement::localTubePos
Amg::Vector3D localTubePos(const IdentifierHash &hash) const
Returns the tube position in the chamber coordinate frame.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx:139
MuonGMR4::MdtReadoutElement::parameterBook::removedTubes
std::set< IdentifierHash > removedTubes
List of tube places without tubes.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:28
MuonGMR4::MdtReadoutElement::numTubesInLay
unsigned int numTubesInLay() const
Returns the number of tubes per layer.
ActsTrk::DetectorAlignStore::geoModelAlignment
std::shared_ptr< GeoAlignmentStore > geoModelAlignment
Store containing the aligned GeoModel nodes.
Definition: DetectorAlignStore.h:31
MuonGMR4::MdtReadoutElement::parameterBook::layerBounds
ActsTrk::SurfaceBoundSetPtr< Acts::TrapezoidBounds > layerBounds
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:63
MuonGMR4::MuonReadoutElement::m_localToGlobalCaches
TransformCacheMap m_localToGlobalCaches
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:207
MuonGMR4::MdtReadoutElement::parameterBook::tubeLayers
std::vector< MdtTubeLayerPtr > tubeLayers
Vector defining the position of all tubes in each tube layer.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:25
MuonGMR4::MuonReadoutElement::surface
const Acts::Surface & surface() const override final
Returns the surface associated to the readout element plane.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:92
calibdata.chamber
chamber
Definition: calibdata.py:32
MuonGMR4::MdtReadoutElement::tubeLength
double tubeLength(const IdentifierHash &hash) const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx:175
MuonGMR4::MdtReadoutElement::measurementHash
static IdentifierHash measurementHash(unsigned int layerNumber, unsigned int tubeNumber)
Transform the layer and tube number to the measurementHash.
MuonGMR4::MuonReadoutElement::m_surfaces
ActsTrk::SurfaceCacheSet m_surfaces
Cache of all associated surfaces.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:210
MuonGMR4::MdtReadoutElement::activeTubeLength
double activeTubeLength(const IdentifierHash &hash) const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx:169
MuonGMR4::MdtReadoutElement::readOutPos
Amg::Vector3D readOutPos(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global position of the readout card.
MuonGMR4::MuonReadoutElement::createGeoTransform
StatusCode createGeoTransform()
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:31
ActsTrk::IDetectorElement::detectorType
virtual DetectorType detectorType() const =0
Returns the detector element type.
MuonGMR4::MuonReadoutElement::globalToLocalTrans
Amg::Transform3D globalToLocalTrans(const ActsGeometryContext &ctx) const
Transformations to translate between local <-> global coordinates.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:73
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
MuonGMR4::MdtReadoutElement::tubeRadius
double tubeRadius() const
Adds the thickness of the tube wall onto the radius.
MuonGMR4::MdtReadoutElement::parameterBook::readoutSide
double readoutSide
Is the readout chip at positive or negative Z?
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:58
MuonGMR4::MdtReadoutElement::measurementId
Identifier measurementId(const IdentifierHash &measHash) const override final
Converts the measurement hash back to the full Identifier.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx:35
MuonGMR4::MdtReadoutElement::multilayer
unsigned int multilayer() const
Returns the multi layer of the MdtReadoutElement.
MuonGMR4::MdtReadoutElement::layerNumber
static unsigned int layerNumber(const IdentifierHash &hash)
Transforms the identifier hash into a layer number ranging from (0-numLayers()-1)
ActsGeometryContext::getStore
AlignmentStorePtr & getStore(const DetectorType type)
Returns the mutable alignable store for the ATLAS detector type (Pixel, Mdt, etc.)
Definition: ActsGeometryContext.h:34
MuonGMR4::MdtReadoutElement::parameterBook::halfY
double halfY
Length ~ number of tubes.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:54
MuonGMR4::MuonReadoutElement::MuonReadoutElement
MuonReadoutElement()=delete
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
MuonGMR4::MdtReadoutElement::m_pars
parameterBook m_pars
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:184
z
#define z
MuonGMR4::MuonReadoutElement::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the pointer to the muonIdHelperSvc.
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonGMR4::MdtReadoutElement::numLayers
unsigned int numLayers() const
Returns the number of tube layer.
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
dumpNswErrorDb.linear
def linear
Definition: dumpNswErrorDb.py:23
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
python.SystemOfUnits.micrometer
int micrometer
Definition: SystemOfUnits.py:71
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:28
MuonGMR4::MdtReadoutElement::innerTubeRadius
double innerTubeRadius() const
Returns the inner tube radius.
ActsTrk::DetectorType::Mdt
@ Mdt
MuonSpectrometer.
MuonGMR4::MuonReadoutElement::m_chambLink
GeoModel::TransientConstSharedPtr< MuonChamber > m_chambLink
Pointer to the associated MuonChamber.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:212
MdtIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int tubeLayer, int tube) const
Definition: MdtIdHelper.cxx:659
MuonGMR4::MuonReadoutElement::geoTransformHash
static IdentifierHash geoTransformHash()
Returns the hash that is associated with the surface cache holding the transformation that is placing...
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:39
MuonGMR4::MuonReadoutElement::alignableTransform
const GeoAlignableTransform * alignableTransform() const
Returnsthe alignable transform of the readout element.
MuonGMR4::MuonReadoutElement::strawSurfaceFactory
StatusCode strawSurfaceFactory(const IdentifierHash &hash, std::shared_ptr< Acts::LineBounds > lBounds)
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:97
MuonGMR4::MuonReadoutElement::identify
Identifier identify() const override final
Return the athena identifier.
MuonGMR4::MdtReadoutElement::tubePitch
double tubePitch() const
Returns the pitch between 2 tubes in a layer.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGMR4::MdtReadoutElement::parameterBook::tubePitch
double tubePitch
Distance between 2 tubes in the layer.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:35
MuonGMR4::MdtReadoutElement::tubeNumber
static unsigned int tubeNumber(const IdentifierHash &hash)
Transforms the idenfier hash into a tube number ranging from (0- numTubesInLay()-1)
MuonGMR4::MdtReadoutElement::parameterBook::endPlugLength
double endPlugLength
Depth of the endplug into the active tube volume.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:39
MuonGMR4::MdtReadoutElement::m_idHelper
const MdtIdHelper & m_idHelper
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:185
MuonGMR4::MdtReadoutElement::parameterBook::shortHalfX
double shortHalfX
The chambers have either a rectangular or a trapezoidal shape to first approximation.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:51
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
MuonGMR4::MuonReadoutElement::planeSurfaceFactory
StatusCode planeSurfaceFactory(const IdentifierHash &hash, std::shared_ptr< Acts::PlanarBounds > pBounds)
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:120
MuonGMR4::MuonReadoutElement::surfacePtr
std::shared_ptr< Acts::Surface > surfacePtr(const IdentifierHash &hash) const
Returns the pointer associated to a certain wire / plane.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:84
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
MuonGMR4::MdtReadoutElement::parameterBook::deadLength
double deadLength
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:41
MuonGMR4::MdtReadoutElement::parameterBook::longHalfX
double longHalfX
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:52
MuonGMR4::MuonReadoutElement::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &ctx) const
Returns the local to global transformation into the ATLAS coordinate system.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:76
MuonGMR4::MdtReadoutElement::toTubeFrame
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-...
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx:163
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
MuonGMR4::MdtReadoutElement::isValid
bool isValid(const IdentifierHash &measHash) const
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:25
calibdata.tube
tube
Definition: calibdata.py:31
python.CaloScaleNoiseConfig.args
args
Definition: CaloScaleNoiseConfig.py:80