ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
MuonGM::MMReadoutElement Class Referencefinal

An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station contains: More...

#include <MMReadoutElement.h>

Inheritance diagram for MuonGM::MMReadoutElement:
Collaboration diagram for MuonGM::MMReadoutElement:

Public Member Functions

 MMReadoutElement (GeoVFullPhysVol *pv, const std::string &stName, int zi, int fi, int mL, MuonDetectorManager *mgr)
 constructor More...
 
 ~MMReadoutElement ()
 destructor More...
 
virtual bool containsId (const Identifier &id) const override final
 function to be used to check whether a given Identifier is contained in the readout element More...
 
virtual double distanceToReadout (const Amg::Vector2D &pos, const Identifier &id) const override final
 distance to readout. More...
 
virtual int stripNumber (const Amg::Vector2D &pos, const Identifier &id) const override final
 strip number corresponding to local position. More...
 
virtual bool stripPosition (const Identifier &id, Amg::Vector2D &pos) const override final
 strip position – local or global If the strip number is outside the range of valid strips, the function will return false More...
 
bool stripGlobalPosition (const Identifier &id, Amg::Vector3D &gpos) const
 
double stereoAngle (const Identifier &id) const
 Wrapper to MuonChannelDesign::stereoAngle() More...
 
double stripLength (const Identifier &id) const
 strip length Wrappers to MuonChannelDesign::channelLength() taking into account the passivated width More...
 
double stripActiveLength (const Identifier &id) const
 
double stripActiveLengthLeft (const Identifier &id) const
 
double stripActiveLengthRight (const Identifier &id) const
 
bool insideActiveBounds (const Identifier &id, const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const
 boundary check Wrapper Trk::PlaneSurface::insideBounds() taking into account the passivated width More...
 
virtual int numberOfLayers (bool) const override
 number of layers in phi/eta projection More...
 
virtual int numberOfStrips (const Identifier &layerId) const override final
 number of strips per layer More...
 
virtual int numberOfStrips (int, bool measuresPhi) const override final
 
int numberOfMissingTopStrips (const Identifier &layerId) const
 Number of missing bottom and top strips (not read out) More...
 
int numberOfMissingBottomStrips (const Identifier &layerId) const
 
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 the reference frame of the phi surface. More...
 
virtual bool spacePointPosition (const Identifier &phiId, const Identifier &etaId, Amg::Vector3D &pos) const override final
 Global space point position for a given pair of phi and eta identifiers If one of the identifiers is outside the valid range, the function will return false. More...
 
Amg::Vector3D localToGlobalCoords (const Amg::Vector3D &locPos, const Identifier &id) const
 simHit local (SD) To Global position - to be used by MuonGeoAdaprors only More...
 
bool spacePointPosition (const Identifier &layerId, const Amg::Vector2D &localPos, Amg::Vector3D &pos) const
 Method calculating the global position of the hit on surface taking the as-built corrections into account. More...
 
virtual void fillCache () override final
 function to fill tracking cache More...
 
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 tracking cache More...
 
int surfaceHash (int gasGap, int measPhi) const
 returns the hash to be used to look up the surface and transform in the MuonClusterReadoutElement tracking cache More...
 
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 tracking cache More...
 
int layerHash (int gasGap) const
 returns the hash to be used to look up the normal and center in the MuonClusterReadoutElement tracking cache More...
 
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 More...
 
virtual bool measuresPhi (const Identifier &id) const override final
 returns whether the current identifier corresponds to a phi measurement More...
 
void initDesign ()
 initialize the design classes for this readout element More...
 
const MuonChannelDesigngetDesign (const Identifier &id) const
 returns the MuonChannelDesign class for the given identifier More...
 
void setChamberLayer (int ml)
 set methods only to be used by MuonGeoModel More...
 
const Amg::Transform3DgetDelta () const
 read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) reference frame transformaton More...
 
void setDelta (const ALinePar &aline)
 
void setBLinePar (const BLinePar &bLine)
 read B-line (chamber-deformation) parameters More...
 
void posOnDefChamber (Amg::Vector3D &locPosML) const
 transform a position (in chamber-frame coordinates) to the deformed-chamber geometry More...
 
bool has_ALines () const
 
bool has_BLines () const
 
const ALinePargetALinePar () const
 
const BLinePargetBLinePar () const
 
void clearALinePar ()
 
void clearBLinePar ()
 
const std::array< int, 4 > & getReadoutSide () const
 
virtual Amg::Vector3D AmdbLRSToGlobalCoords (const Amg::Vector3D &x) const override final
 
virtual Amg::Transform3D AmdbLRSToGlobalTransform () const override final
 
virtual Amg::Vector3D GlobalToAmdbLRSCoords (const Amg::Vector3D &x) const override final
 
virtual Amg::Transform3D GlobalToAmdbLRSTransform () const override final
 
virtual void clearCache () override final
 clear the cache of the readout elememt More...
 
virtual const Trk::PlaneSurfacesurface () const override
 access to chamber surface (phi orientation), uses the first gas gap More...
 
virtual const Trk::PlaneSurfacesurface (const Identifier &id) const override
 access to layer surfaces More...
 
const Trk::PlaneSurfacesurface (int surfHash) const
 access to layer surfaces More...
 
virtual const Trk::SurfaceBoundsbounds () const override
 Return the boundaries of the element. More...
 
virtual const Trk::SurfaceBoundsbounds (const Identifier &id) const override
 Return the boundaries of the surface associated with this identifier. More...
 
const Trk::SurfaceBoundsbounds (int boundHash) const
 
virtual const Amg::Vector3Dcenter () const override
 Return the center of the element. More...
 
virtual const Amg::Vector3Dcenter (const Identifier &id) const override
 Return the center of the surface associated with this identifier In the case of silicon it returns the same as center() More...
 
const Amg::Vector3Dcenter (int layHash) const
 
virtual const Amg::Vector3Dnormal () const override
 Return the normal of the element. More...
 
virtual const Amg::Vector3Dnormal (const Identifier &id) const override
 Return the normal of the surface associated with this identifier In the case of silicon it returns the same as normal() More...
 
const Amg::Vector3Dnormal (int layHash) const
 
virtual const Amg::Transform3Dtransform () const override
 Return local to global transform. More...
 
virtual const Amg::Transform3Dtransform (const Identifier &id) const override
 Return local to global transform associated with this identifier. More...
 
const Amg::Transform3Dtransform (int surfHash) const
 
virtual std::vector< const Trk::Surface * > surfaces () const
 returns all the surfaces contained in this detector element More...
 
Identifier identify () const override final
 Returns the ATLAS Identifier of the MuonReadOutElement. More...
 
IdentifierHash identifyHash () const override final
 Returns the IdentifierHash of the MuonStation, i.e. More...
 
IdentifierHash detectorElementHash () const
 Returns the IdentifierHash of the detector element. More...
 
void setIdentifier (const Identifier &id)
 Sets the Identifier, hashes & station names. More...
 
int getStationIndex () const
 
int getStationEta () const
 
int getStationPhi () const
 
const Amg::Vector3D globalPosition () const
 
const Amg::Transform3DabsTransform () const
 
const Amg::Transform3DdefTransform () const
 
std::string getTechnologyType () const
 
const std::string & getTechnologyName () const
 
void setTechnologyName (const std::string &str)
 
std::string getStationType () const
 
const std::string & getStationName () const
 
void setStationName (const std::string &)
 
double getSsize () const
 
double getRsize () const
 
double getZsize () const
 
double getLongSsize () const
 
double getLongRsize () const
 
double getLongZsize () const
 
double getStationS () const
 Seems to be exclusively used by the MDTs --> Move it to MdtReadoutElement. More...
 
void setStationS (double)
 
void setLongSsize (double)
 
void setLongRsize (double)
 
void setLongZsize (double)
 
void setSsize (double)
 
void setRsize (double)
 
void setZsize (double)
 
bool largeSector () const
 
bool smallSector () const
 
bool sideA () const
 
bool sideC () const
 
void setParentStationPV (const PVConstLink &)
 
void setParentStationPV ()
 
PVConstLink parentStationPV () const
 
const MuonStationparentMuonStation () const
 
void setParentMuonStation (const MuonStation *)
 
Amg::Transform3D toParentStation () const
 
Amg::Vector3D parentMuonStationPos () const
 
int getIndexOfREinMuonStation () const
 
bool hasCutouts () const
 
void setHasCutouts (bool flag)
 
void refreshCache ()
 
const Muon::IMuonIdHelperSvcidHelperSvc () const
 
Trk::DetectorElemType detectorType () const override final
 Return the Detector element type. More...
 
std::string detectorTypeString () const
 Returns a string of the Detector element type. 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...
 

Protected Member Functions

const MuonDetectorManagermanager () const
 

Protected Attributes

std::unique_ptr< SurfaceDatam_surfaceData {}
 
double m_Ssize {-9999.}
 
double m_Rsize {-9999.}
 
double m_Zsize {-9999.}
 
double m_LongSsize {-9999.}
 
double m_LongRsize {-9999.}
 
double m_LongZsize {-9999.}
 size in the specified direction More...
 
std::string m_techname {"TTT0"}
 MDT or RPC or TGC or CSC plus a two digits subtype; example RPC17. More...
 
std::string m_statname {"XXX0"}
 examples are BMS5, CSS1, EML1 More...
 
int m_caching {-1}
 0 if we want to avoid caching geometry info for tracking interface More...
 
bool m_hasCutouts {false}
 true is there are cutouts in the readdout-element More...
 

Private Types

using PCBPassivation = NswPassivationDbData::PCBPassivation
 

Private Member Functions

void initDesignSqLite ()
 
void setIndexOfREinMuonStation ()
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

const MmIdHelperm_idHelper {idHelperSvc()->mmIdHelper()}
 
std::array< MuonChannelDesign, 4 > m_etaDesign {}
 
int m_nlayers {0}
 
int m_ml {0}
 
double m_halfX {100.}
 
double m_minHalfY {1900.}
 
double m_maxHalfY {2000.}
 
double m_offset {0.}
 
Amg::Transform3D m_delta {Amg::Transform3D::Identity()}
 
const ALineParm_ALinePar {nullptr}
 
const BLineParm_BLinePar {nullptr}
 
std::array< int, 4 > m_readoutSide {}
 
std::array< Amg::Transform3D, 4 > m_Xlg {make_array<Amg::Transform3D,4>(Amg::Transform3D::Identity())}
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {"Muon::MuonIdHelperSvc/MuonIdHelperSvc", "MuonDetectorManager"}
 
Trk::DetectorElemType m_type {Trk::DetectorElemType::SolidState}
 
Identifier m_id {0}
 extended data-collection identifier More...
 
IdentifierHash m_idhash {0}
 data-collection hash identifier More...
 
IdentifierHash m_detectorElIdhash {0}
 detector element hash identifier More...
 
int m_indexOfREinMuonStation {-999}
 index of this RE in the mother MuonStation More...
 
double m_stationS {0.}
 
int m_stIdx {-1}
 Identifier field of the station index. More...
 
int m_eta {-1}
 Identifier field of the station eta. More...
 
int m_phi {-1}
 Identifier field of the station phi. More...
 
PVConstLink m_parentStationPV {nullptr}
 
const MuonStationm_parentMuonStation {nullptr}
 
MuonDetectorManagerm_muon_mgr {nullptr}
 
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...
 

Static Private Attributes

static constexpr PCBPassivation s_dummy_passiv {}
 

Friends

class MuonGMR4::ReadoutGeomCnvAlg
 

Detailed Description

An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station contains:

Definition at line 25 of file MMReadoutElement.h.

Member Typedef Documentation

◆ PCBPassivation

Definition at line 154 of file MMReadoutElement.h.

Constructor & Destructor Documentation

◆ MMReadoutElement()

MuonGM::MMReadoutElement::MMReadoutElement ( GeoVFullPhysVol *  pv,
const std::string &  stName,
int  zi,
int  fi,
int  mL,
MuonDetectorManager mgr 
)

constructor

Active gas volume in the R4 like description

Definition at line 70 of file MMReadoutElement.cxx.

72  m_ml(mL) {
73 
74  std::string fixName = (stName[2] == 'L') ? "MML" : "MMS";
75  setStationName(fixName);
77  Identifier id = mgr->mmIdHelper()->channelID(fixName, zi, fi, mL, 1, 1);
78  setIdentifier(id);
79 
80 
81  if (mgr->MinimalGeoFlag()) {
82  return;
83  }
84  bool foundShape = false;
85  const PVConstLink pvc {getMaterialGeom()};
86  const GeoTrd* trd=dynamic_cast<const GeoTrd *> (pvc->getLogVol()->getShape());
87  if (trd) {
88  setSsize(2*trd->getYHalfLength1());
89  setLongSsize( 2*trd->getYHalfLength2());
90  setRsize(2*trd->getZHalfLength());
91  setZsize(trd->getXHalfLength1());
92 
93  } else {
94  ATH_MSG_DEBUG("Expected a GeoTrd but got "<<printGeoShape(pvc->getLogVol()->getShape()));
95  }
96 
97  std::vector<GeoChildNodeWithTrf> children{getAllSubVolumes(pvc)};
98  for (const GeoChildNodeWithTrf& child : children) {
99  ATH_MSG_VERBOSE("Child node "<<child.nodeName<<" "<<child.volume->getLogVol()->getName());
100  if (child.volume->getLogVol()->getName().find("Sensitive") == std::string::npos &&
102  child.volume->getLogVol()->getName() != "actMicroMegaGas") {
103  continue;
104  }
105  ++m_nlayers;
106  if (m_nlayers > 4) {
107  THROW_EXCEPTION_MM("number of MM layers > 4: increase transform array size" );
108  }
109  m_Xlg[m_nlayers - 1] = child.transform;
110  // save layer dimensions
111  if (foundShape) {
112  continue;
113  }
114  const GeoShape* childShape = child.volume->getLogVol()->getShape();
115  while (childShape->typeID() != GeoTrd::getClassTypeID()){
116  auto [opA, opB] = getOps(childShape);
117  ATH_MSG_VERBOSE("Operands are "<<printGeoShape(opA)<<", "<<printGeoShape(opB));
118  childShape = opA;
119  }
120  const GeoTrd* trd = dynamic_cast<const GeoTrd*>(childShape);
121  m_halfX = trd->getZHalfLength();
122  // adjust phi dimensions according to the active area
123  m_minHalfY = trd->getYHalfLength1();
124  m_maxHalfY = trd->getYHalfLength2();
125  foundShape = true;
126  }
127 
128  if (!foundShape) {
129  THROW_EXCEPTION_MM(" failed to initialize dimensions of this chamber " );
130  }
131  }

◆ ~MMReadoutElement()

MuonGM::MMReadoutElement::~MMReadoutElement ( )
default

destructor

Member Function Documentation

◆ absTransform()

const Amg::Transform3D & MuonGM::MuonReadoutElement::absTransform ( ) const
inlineinherited

Definition at line 210 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

210 { return getMaterialGeom()->getAbsoluteTransform(); }

◆ AmdbLRSToGlobalCoords()

virtual Amg::Vector3D MuonGM::MMReadoutElement::AmdbLRSToGlobalCoords ( const Amg::Vector3D x) const
inlinefinaloverridevirtual

Reimplemented from MuonGM::MuonReadoutElement.

Definition at line 142 of file MMReadoutElement.h.

142 { return AmdbLRSToGlobalTransform()*x; }

◆ AmdbLRSToGlobalTransform()

virtual Amg::Transform3D MuonGM::MMReadoutElement::AmdbLRSToGlobalTransform ( ) const
inlinefinaloverridevirtual

Reimplemented from MuonGM::MuonReadoutElement.

Definition at line 143 of file MMReadoutElement.h.

◆ boundaryHash()

int MuonGM::MMReadoutElement::boundaryHash ( const Identifier id) const
inlinefinaloverridevirtual

returns the hash function to be used to look up the surface boundary for a given identifier

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 186 of file MMReadoutElement.h.

186 { return layerHash(m_idHelper.gasGap(id)); }

◆ bounds() [1/3]

const Trk::SurfaceBounds & MuonGM::MuonClusterReadoutElement::bounds ( ) const
inlineoverridevirtualinherited

Return the boundaries of the element.

Implements Trk::TrkDetElementBase.

Definition at line 127 of file MuonClusterReadoutElement.h.

127 { return bounds(0); }

◆ bounds() [2/3]

const Trk::SurfaceBounds & MuonGM::MuonClusterReadoutElement::bounds ( const Identifier id) const
inlineoverridevirtualinherited

Return the boundaries of the surface associated with this identifier.

For TRT this will be a straw, while for silicon it returns the same as bounds()

Implements Trk::TrkDetElementBase.

Definition at line 133 of file MuonClusterReadoutElement.h.

133 { return bounds(boundaryHash(id)); }

◆ bounds() [3/3]

const Trk::SurfaceBounds & MuonGM::MuonClusterReadoutElement::bounds ( int  boundHash) const
inlineinherited

Definition at line 185 of file MuonClusterReadoutElement.h.

185  {
186  if (!m_surfaceData) {
187  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<" Requesting bounds but cache is empty");
188  throw std::runtime_error("Empty bounds cache");
189  }
190  if (hash == -1 || hash >= (int)m_surfaceData->m_surfBounds.size()) {
191  ATH_MSG_WARNING("normal hash out of range: " << hash << " elements " << m_surfaceData->m_surfBounds.size());
192  return *m_surfaceData->m_surfBounds.front();
193  }
194  return *m_surfaceData->m_surfBounds[hash];
195  }

◆ center() [1/3]

const Amg::Vector3D & MuonGM::MuonClusterReadoutElement::center ( ) const
inlineoverridevirtualinherited

Return the center of the element.

Implements Trk::TrkDetElementBase.

Definition at line 125 of file MuonClusterReadoutElement.h.

125 { return center(0); }

◆ center() [2/3]

const Amg::Vector3D & MuonGM::MuonClusterReadoutElement::center ( const Identifier id) const
inlineoverridevirtualinherited

Return the center of the surface associated with this identifier In the case of silicon it returns the same as center()

Implements Trk::TrkDetElementBase.

Definition at line 131 of file MuonClusterReadoutElement.h.

131 { return center(layerHash(id)); }

◆ center() [3/3]

const Amg::Vector3D & MuonGM::MuonClusterReadoutElement::center ( int  layHash) const
inlineinherited

Definition at line 161 of file MuonClusterReadoutElement.h.

161  {
162  if (!m_surfaceData) {
163  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<" Requesting center but cache is empty");
164  throw std::runtime_error("Empty center cache");
165  }
166  if (hash == -1 || hash >= (int)m_surfaceData->m_layerCenters.size()) {
167  ATH_MSG_WARNING("center hash out of range: " << hash << " elements " << m_surfaceData->m_layerCenters.size());
168  return m_surfaceData->m_layerCenters.front();
169  }
170  return m_surfaceData->m_layerCenters[hash];
171  }

◆ clearALinePar()

void MuonGM::MMReadoutElement::clearALinePar ( )

Definition at line 388 of file MMReadoutElement.cxx.

388  {
389  if (has_ALines()) {
390  m_ALinePar = nullptr;
391  m_delta = Amg::Transform3D::Identity();
392  refreshCache();
393  }
394  }

◆ clearBLinePar()

void MuonGM::MMReadoutElement::clearBLinePar ( )
inline

Definition at line 138 of file MMReadoutElement.h.

138 { m_BLinePar = nullptr; }

◆ clearCache()

void MuonGM::MuonClusterReadoutElement::clearCache ( )
finaloverridevirtualinherited

clear the cache of the readout elememt

Implements MuonGM::MuonReadoutElement.

Definition at line 13 of file MuonClusterReadoutElement.cxx.

13 { m_surfaceData.reset(); }

◆ containsId()

bool MuonGM::MMReadoutElement::containsId ( const Identifier id) const
finaloverridevirtual

function to be used to check whether a given Identifier is contained in the readout element

Implements MuonGM::MuonReadoutElement.

Definition at line 340 of file MMReadoutElement.cxx.

340  {
341  if (m_idHelper.stationEta(id) != getStationEta()) return false;
342  if (m_idHelper.stationPhi(id) != getStationPhi()) return false;
343 
344  if (m_idHelper.multilayer(id) != m_ml) return false;
345 
346  int gasgap = m_idHelper.gasGap(id);
347  if (gasgap < 1 || gasgap > m_nlayers) return false;
348 
349  int strip = m_idHelper.channel(id);
350  return strip >= 1 && strip <= m_etaDesign[gasgap - 1].totalStrips;
351  }

◆ defTransform()

const Amg::Transform3D & MuonGM::MuonReadoutElement::defTransform ( ) const
inlineinherited

Definition at line 212 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

212 { return getMaterialGeom()->getDefAbsoluteTransform(); }

◆ detectorElementHash()

IdentifierHash MuonGM::MuonReadoutElement::detectorElementHash ( ) const
inlineinherited

Returns the IdentifierHash of the detector element.

Unlike the identifyHash, this hash is unique for each readout element

Definition at line 186 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

186 { return m_detectorElIdhash; }

◆ detectorType()

Trk::DetectorElemType MuonGM::MuonReadoutElement::detectorType ( ) const
inlinefinaloverridevirtualinherited

Return the Detector element type.

Implements Trk::TrkDetElementBase.

Definition at line 138 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

138 { return m_type; }

◆ detectorTypeString()

std::string Trk::TrkDetElementBase::detectorTypeString ( ) const
inherited

Returns a string of the Detector element type.

Definition at line 10 of file TrkDetElementBase.cxx.

10  {
11  auto type = detectorType();
13  return "SolidState";
15  return "Silicon";
16  else if (type == Trk::DetectorElemType::TRT)
17  return "TRT";
18  else if (type == Trk::DetectorElemType::Csc)
19  return "Csc";
20  else if (type == Trk::DetectorElemType::Mdt)
21  return "Mdt";
22  else if (type == Trk::DetectorElemType::Rpc)
23  return "Rpc";
24  else if (type == Trk::DetectorElemType::Tgc)
25  return "Tgc";
27  return "sTgc";
28  else if (type == Trk::DetectorElemType::MM)
29  return "Mm";
30  return "Unknown";
31 }

◆ distanceToReadout()

double MuonGM::MMReadoutElement::distanceToReadout ( const Amg::Vector2D pos,
const Identifier id 
) const
inlinefinaloverridevirtual

distance to readout.

If the local position is outside the active volume, the function first shift the position back into the active volume

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 193 of file MMReadoutElement.h.

193  {
194  const MuonChannelDesign* design = getDesign(id);
195  if (!design) return -1.;
196  return design->distanceToReadout(pos);
197  }

◆ fillCache()

void MuonGM::MMReadoutElement::fillCache ( )
finaloverridevirtual

function to fill tracking cache

Implements MuonGM::MuonReadoutElement.

Definition at line 305 of file MMReadoutElement.cxx.

305  {
306 
307  if (m_surfaceData) {
308  ATH_MSG_WARNING("calling fillCache on an already filled cache" );
309  return;
310  }
311  m_surfaceData = std::make_unique<SurfaceData>();
312 
313 
314  for (int layer = 0; layer < m_nlayers; ++layer) {
315  // identifier of the first channel
317  const double sAngle = m_etaDesign[layer].stereoAngle();
318  m_surfaceData->m_layerSurfaces.emplace_back(std::make_unique<Trk::PlaneSurface>(*this,id));
319  m_surfaceData->m_surfBounds.emplace_back(std::make_unique<Trk::RotatedTrapezoidBounds>(m_halfX, m_minHalfY, m_maxHalfY, sAngle));
320 
321  m_surfaceData->m_layerTransforms.push_back(
322  absTransform() // transformation from chamber to ATLAS frame
323  * m_delta // rotations (a-lines) from the alignment group
324  * m_Xlg[layer] // x-shift of the gas-gap center w.r.t. quadruplet center
325  * Amg::getTranslateZ3D(m_offset) // z-shift to volume center
326  * Amg::getRotateY3D(-90. * CLHEP::deg) // x<->z because of GeoTrd definition
327  * Amg::getRotateZ3D(sAngle));
328 
329  // surface info (center, normal)
330  m_surfaceData->m_layerCenters.emplace_back(m_surfaceData->m_layerTransforms.back().translation());
331  m_surfaceData->m_layerNormals.emplace_back(m_surfaceData->m_layerTransforms.back().linear() * (-Amg::Vector3D::UnitZ()));
332 
333  ATH_MSG_DEBUG("MMReadoutElement layer " << layer << " sAngle " << sAngle << " phi direction MM eta strip "
334  << (m_surfaceData->m_layerTransforms.back().linear() * Amg::Vector3D::UnitY()).phi() );
335  }
336  }

◆ getALinePar()

const ALinePar* MuonGM::MMReadoutElement::getALinePar ( ) const
inline

Definition at line 135 of file MMReadoutElement.h.

135 { return m_ALinePar; }

◆ getBLinePar()

const BLinePar* MuonGM::MMReadoutElement::getBLinePar ( ) const
inline

Definition at line 136 of file MMReadoutElement.h.

136 { return m_BLinePar; }

◆ getDelta()

const Amg::Transform3D& MuonGM::MMReadoutElement::getDelta ( ) const
inline

read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) reference frame transformaton

Definition at line 124 of file MMReadoutElement.h.

124 { return m_delta; }

◆ getDesign()

const MuonChannelDesign * MuonGM::MMReadoutElement::getDesign ( const Identifier id) const
inline

returns the MuonChannelDesign class for the given identifier

Definition at line 190 of file MMReadoutElement.h.

190  {
191  return &(m_etaDesign[layerHash(id)]);
192  }

◆ getIndexOfREinMuonStation()

int MuonGM::MuonReadoutElement::getIndexOfREinMuonStation ( ) const
inherited

◆ getLongRsize()

double MuonGM::MuonReadoutElement::getLongRsize ( ) const
inlineinherited

◆ getLongSsize()

double MuonGM::MuonReadoutElement::getLongSsize ( ) const
inlineinherited

◆ getLongZsize()

double MuonGM::MuonReadoutElement::getLongZsize ( ) const
inlineinherited

◆ getReadoutSide()

const std::array<int, 4>& MuonGM::MMReadoutElement::getReadoutSide ( ) const
inline

Definition at line 139 of file MMReadoutElement.h.

139 { return m_readoutSide; }

◆ getRsize()

double MuonGM::MuonReadoutElement::getRsize ( ) const
inlineinherited

◆ getSsize()

double MuonGM::MuonReadoutElement::getSsize ( ) const
inlineinherited

◆ getStationEta()

int MuonGM::MuonReadoutElement::getStationEta ( ) const
inlineinherited

◆ getStationIndex()

int MuonGM::MuonReadoutElement::getStationIndex ( ) const
inlineinherited

◆ getStationName()

const std::string & MuonGM::MuonReadoutElement::getStationName ( ) const
inlineinherited

◆ getStationPhi()

int MuonGM::MuonReadoutElement::getStationPhi ( ) const
inlineinherited

◆ getStationS()

double MuonGM::MuonReadoutElement::getStationS ( ) const
inlineinherited

Seems to be exclusively used by the MDTs --> Move it to MdtReadoutElement.

Definition at line 202 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

202 { return m_stationS; }

◆ getStationType()

std::string MuonGM::MuonReadoutElement::getStationType ( ) const
inlineinherited

Definition at line 189 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

189 { return m_statname.substr(0,3); }

◆ getTechnologyName()

const std::string & MuonGM::MuonReadoutElement::getTechnologyName ( ) const
inlineinherited

◆ getTechnologyType()

std::string MuonGM::MuonReadoutElement::getTechnologyType ( ) const
inlineinherited

Definition at line 187 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

187 { return m_techname.substr(0, 3); }

◆ getZsize()

double MuonGM::MuonReadoutElement::getZsize ( ) const
inlineinherited

◆ globalPosition()

const Amg::Vector3D MuonGM::MuonReadoutElement::globalPosition ( ) const
inherited

Definition at line 47 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

47 { return absTransform().translation(); }

◆ GlobalToAmdbLRSCoords()

virtual Amg::Vector3D MuonGM::MMReadoutElement::GlobalToAmdbLRSCoords ( const Amg::Vector3D x) const
inlinefinaloverridevirtual

Reimplemented from MuonGM::MuonReadoutElement.

Definition at line 145 of file MMReadoutElement.h.

145 { return GlobalToAmdbLRSTransform()*x; }

◆ GlobalToAmdbLRSTransform()

virtual Amg::Transform3D MuonGM::MMReadoutElement::GlobalToAmdbLRSTransform ( ) const
inlinefinaloverridevirtual

Reimplemented from MuonGM::MuonReadoutElement.

Definition at line 146 of file MMReadoutElement.h.

146 { return AmdbLRSToGlobalTransform().inverse(); }

◆ has_ALines()

bool MuonGM::MMReadoutElement::has_ALines ( ) const
inline

Definition at line 133 of file MMReadoutElement.h.

133 { return (m_ALinePar != nullptr); }

◆ has_BLines()

bool MuonGM::MMReadoutElement::has_BLines ( ) const
inline

Definition at line 134 of file MMReadoutElement.h.

134 { return (m_BLinePar != nullptr); }

◆ hasCutouts()

bool MuonGM::MuonReadoutElement::hasCutouts ( ) const
inlineinherited

◆ identify()

Identifier MuonGM::MuonReadoutElement::identify ( ) const
inlinefinaloverridevirtualinherited

Returns the ATLAS Identifier of the MuonReadOutElement.

Usually the Identifier corresponds to the first channel covered by the Element

Implements Trk::TrkDetElementBase.

Definition at line 184 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

184 { return m_id; }

◆ identifyHash()

IdentifierHash MuonGM::MuonReadoutElement::identifyHash ( ) const
inlinefinaloverridevirtualinherited

Returns the IdentifierHash of the MuonStation, i.e.

2 readoutelements with same sationIndex, stationEta, stationPhi have the same identifiyHash

Implements Trk::TrkDetElementBase.

Definition at line 185 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

185 { return m_idhash; }

◆ idHelperSvc()

const Muon::IMuonIdHelperSvc* MuonGM::MuonReadoutElement::idHelperSvc ( ) const
inlineinherited

◆ initDesign()

void MuonGM::MMReadoutElement::initDesign ( )

initialize the design classes for this readout element

The stereo angle is defined clock-wise from the y-axis

Input width is defined as the distance between two channels

Definition at line 224 of file MMReadoutElement.cxx.

224  {
225  if (m_ml < 1 || m_ml > 2) {
226  THROW_EXCEPTION_MM("MMReadoutElement -- Unexpected Multilayer: m_ml= " << m_ml );
227  return;
228  }
229  // Get the detector configuration.
230  SmartIF<IGeoDbTagSvc> geoDbTag{Gaudi::svcLocator()->service("GeoDbTagSvc")};
231  if (!geoDbTag) {
232  THROW_EXCEPTION_MM("Could not locate GeoDbTagSvc");
233  }
234  if (geoDbTag->getSqliteReader()) {
236  return;
237  }
238  char side = getStationEta() < 0 ? 'C' : 'A';
239  char sector_l = getStationName().substr(2, 1) == "L" ? 'L' : 'S';
240  // Initialize from database:
241 
242  MMDetectorHelper aHelper;
243  MMDetectorDescription* mm = aHelper.Get_MMDetector(sector_l, std::abs(getStationEta()), getStationPhi(), m_ml, side);
244  MMReadoutParameters roParam = mm->GetReadoutParameters();
245 
246  double ylFrame = mm->ylFrame();
247  double ysFrame = mm->ysFrame();
248  double pitch = roParam.stripPitch;
249 
250 
251 
252 
253  setSsize(mm->sWidth()); // bottom base length (full chamber)
254  setLongSsize(mm->lWidth()); // top base length (full chamber)
255  setRsize(mm->Length()); // height of the trapezoid (full chamber)
256  setZsize(mm->Tck()); // thickness (full chamber)
257  m_halfX = roParam.activeH / 2; // 0.5*radial_size (active area)
258  m_minHalfY = roParam.activeBottomLength / 2; // 0.5*bottom length (active area)
259  m_maxHalfY = roParam.activeTopLength / 2; // 0.5*top length (active area)
260  m_offset = -0.5*(ylFrame - ysFrame); // radial dist. of active area center w.r.t. chamber center
261  ATH_MSG_DEBUG(idHelperSvc()->toStringDetEl(identify())<<", ylFrame: "<<ylFrame<<", ysFrame: "<<ysFrame<<", offset: "<<m_offset);
262  assign(roParam.readoutSide, m_readoutSide);
263 
264  for (int il = 0; il < m_nlayers; il++) {
265  // identifier of the first channel to retrieve max number of strips
266  Identifier id = m_idHelper.channelID(identify(), m_ml, il + 1, 1);
267  int chMax = m_idHelper.channelMax(id);
268  if (chMax < 0) {
269  THROW_EXCEPTION_MM("MMReadoutElement -- Max number of strips not a valid value" );
270  }
271  MuonChannelDesign& design = m_etaDesign[il];
272 
274  design.detType = MuonChannelDesign::DetType::MM;
275  design.inputPitch = pitch;
276  design.thickness = roParam.gasThickness;
277  design.nMissedTopEta = roParam.nMissedTopEta; // #of eta strips that are not connected to any FE board
278  design.nMissedBottomEta = roParam.nMissedBottomEta;
279  design.nMissedTopStereo = roParam.nMissedTopStereo; // #of stereo strips that are not connected to any FE board
280  design.nMissedBottomStereo = roParam.nMissedBottomStereo;
281  design.totalStrips = roParam.tStrips;
283  design.defineTrapezoid(m_minHalfY, m_maxHalfY,m_halfX, - roParam.stereoAngle.at(il));
285  design.inputWidth = pitch * std::cos(design.stereoAngle());
286 
287  if (!design.hasStereoAngle()) { // eta layers
288  design.nch = design.totalStrips - design.nMissedBottomEta - design.nMissedTopEta;
289  design.setFirstPos(-0.5 * design.xSize() + pitch);
290  } else { // stereo layers
291  design.nch = design.totalStrips - design.nMissedBottomStereo - design.nMissedTopStereo;
292  design.setFirstPos( -0.5 * design.xSize() +
293  (1 + design.nMissedBottomStereo - design.nMissedBottomEta) * pitch);
294  }
295  ATH_MSG_DEBUG("initDesign:" <<idHelperSvc()->toStringDetEl(identify())<< " layer " << il
296  << ", strip pitch " << design.inputPitch << ", nstrips " << design.nch
297  << " stereo " << design.stereoAngle() / Gaudi::Units::degree
298  <<", "<<design.xSize()<<", "<<design.maxYSize()<<" "<<design.minYSize()
299  <<", firstPos: "<<design.firstPos()<<", first pitch: "<<design.firstPitch);
300  }
301  }

◆ initDesignSqLite()

void MuonGM::MMReadoutElement::initDesignSqLite ( )
private

The stereo angle is defined clock-wise from the y-axis

Input width is defined as the distance between two channels

Definition at line 138 of file MMReadoutElement.cxx.

138  {
139 
140  SmartIF<IGeoDbTagSvc> geoDbTag{Gaudi::svcLocator()->service("GeoDbTagSvc")};
141  if (!geoDbTag) {
142  THROW_EXCEPTION_MM("Could not locate GeoDbTagSvc");
143  }
144  SmartIF<IRDBAccessSvc> accessSvc{Gaudi::svcLocator()->service(geoDbTag->getParamSvcName())};
145  if (!accessSvc) {
146  THROW_EXCEPTION_MM("Could not locate " << geoDbTag->getParamSvcName() );
147  }
148  const char sector_l = getStationName()[2];
149  IRDBRecordset_ptr wmmRec = accessSvc->getRecordsetPtr("WMM","","");
150  for (unsigned int ind = 0; ind < wmmRec->size(); ind++) {
151  std::string WMM_TYPE = (*wmmRec)[ind]->getString("WMM_TYPE");
152  if (sector_l != WMM_TYPE[4]){
153  continue;
154  }
155  if (std::abs(getStationEta())!=(int) (WMM_TYPE[6]-'0')) {
156  continue;
157  }
158  if (m_ml != (int) (WMM_TYPE[12]-'0')){
159  continue;
160  }
161  const double Tck = (*wmmRec)[ind]->getDouble("Tck");
162  const double activeBottomLength = (*wmmRec)[ind]->getDouble("activeBottomLength");
163  const double activeH = (*wmmRec)[ind]->getDouble("activeH");
164  const double activeTopLength = (*wmmRec)[ind]->getDouble("activeTopLength");
165  const double gasTck = (*wmmRec)[ind]->getDouble("gasTck");
166  const int nMissedBottomEta = (*wmmRec)[ind]->getInt("nMissedBottomEta");
167  const int nMissedBottomStereo = (*wmmRec)[ind]->getInt("nMissedBottomStereo");
168  const int nMissedTopEta = (*wmmRec)[ind]->getInt("nMissedTopEta");
169  const int nMissedTopStereo = (*wmmRec)[ind]->getInt("nMissedTopStereo");
170 
171  assign(tokenizeInt((*wmmRec)[ind]->getString("readoutSide"), ";"), m_readoutSide);
172  const std::vector<double> stereoAngle{tokenizeDouble((*wmmRec)[ind]->getString("stereoAngle"), ";")};
173  const double stripPitch = (*wmmRec)[ind]->getDouble("stripPitch");
174  const int totalStrips = (*wmmRec)[ind]->getInt ("totalStrips");
175  const double ylFrame = (*wmmRec)[ind]->getDouble("ylFrame");
176  const double ysFrame = (*wmmRec)[ind]->getDouble("ysFrame");
177 
178  setZsize(Tck); // thickness (full chamber)
179  m_halfX = activeH / 2; // 0.5*radial_size (active area)
180  m_minHalfY = activeBottomLength / 2; // 0.5*bottom length (active area)
181  m_maxHalfY = activeTopLength / 2; // 0.5*top length (active area)
182  m_offset = -0.5*(ylFrame - ysFrame); // radial dist. of active area center w.r.t. chamber center
183  ATH_MSG_DEBUG(idHelperSvc()->toStringDetEl(identify())<<", ylFrame: "<<ylFrame<<", ysFrame: "<<ysFrame<<", offset: "<<m_offset);
184  for (int il = 0; il < m_nlayers; il++) {
185  // identifier of the first channel to retrieve max number of strips
186  Identifier id = m_idHelper.channelID(identify(), m_ml, il + 1, 1);
187  int chMax = m_idHelper.channelMax(id);
188  if (chMax < 0) {
189  THROW_EXCEPTION_MM("MMReadoutElement -- Max number of strips not a valid value" );
190  }
191  MuonChannelDesign& design = m_etaDesign[il];
192 
194  design.detType = MuonChannelDesign::DetType::MM;
195  design.inputPitch = stripPitch;
196  design.thickness = gasTck;
197  design.nMissedTopEta = nMissedTopEta; // #of eta strips that are not connected to any FE board
198  design.nMissedBottomEta = nMissedBottomEta;
199  design.nMissedTopStereo = nMissedTopStereo; // #of stereo strips that are not connected to any FE board
200  design.nMissedBottomStereo = nMissedBottomStereo;
201  design.totalStrips = totalStrips;
203  design.defineTrapezoid(m_minHalfY, m_maxHalfY,m_halfX, stereoAngle[il]);
205  design.inputWidth = stripPitch * std::cos(design.stereoAngle());
206 
207  if (!design.hasStereoAngle()) { // eta layers
208  design.nch = design.totalStrips - design.nMissedBottomEta - design.nMissedTopEta;
209  design.setFirstPos(-0.5 * design.xSize() + stripPitch);
210  } else { // stereo layers
211  design.nch = design.totalStrips - design.nMissedBottomStereo - design.nMissedTopStereo;
212  design.setFirstPos( -0.5 * design.xSize() + (1 + design.nMissedBottomStereo - design.nMissedBottomEta) * stripPitch);
213  }
214  ATH_MSG_DEBUG("initDesign:" <<idHelperSvc()->toStringDetEl(identify())<< " layer " << il
215  << ", strip pitch " << design.inputPitch << ", nstrips " << design.nch
216  << " stereo " << design.stereoAngle() / Gaudi::Units::degree
217  <<", "<<design.xSize()<<", "<<design.maxYSize()<<" "<<design.minYSize()
218  <<", firstPos: "<<design.firstPos()<<", first pitch: "<<design.firstPitch);
219  }
220  }
221  }

◆ 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 }

◆ insideActiveBounds()

bool MuonGM::MMReadoutElement::insideActiveBounds ( const Identifier id,
const Amg::Vector2D locpos,
double  tol1 = 0.,
double  tol2 = 0. 
) const
inline

boundary check Wrapper Trk::PlaneSurface::insideBounds() taking into account the passivated width

Definition at line 252 of file MMReadoutElement.h.

252  {
253  const MuonChannelDesign* design = getDesign(id);
254  if(!design) return false;
255  // Get the nearest strip number; not the time yet to check boundaries (in case of tolerance)
256  int stripNo = stripNumber(locpos, id);
257  if (stripNo < 0) stripNo = (locpos.x()<0) ? 1 : design->totalStrips;
259 
260  // ** Horizontal passivation: mask entire strips
261  //==============================================
262  int pcb = (stripNo-1)/1024 + 1; // starts from 1
263  int pcbStrip = stripNo % 1024;// - 1024*(pcb - 1);
264  const PCBPassivation& pcbPassiv = manager()->getMMPassivation() ?
266  // the passivated width is constant along the PCB edge (not along y for stereo strips)
267  bool topPcb{pcb == 5 || (std::abs(getStationEta()) == 2 && pcb == 3)};
268  int pcbStripMin = 1 + (int)std::floor((design->passivatedHeight(pcbPassiv.bottom, pcb ==1) + 0.5*design->inputPitch - tol1)/design->inputPitch); // first pcb strip surviving passivation
269  int pcbStripMax = 1024 - (int)std::floor((design->passivatedHeight(pcbPassiv.top, topPcb) + 0.5*design->inputPitch - tol1)/design->inputPitch); // last pcb strip surviving passivation
270  if(pcbStrip < pcbStripMin || pcbStrip > pcbStripMax) return false;
271 
272  // ** Vertical passivation: cut strips from left and right
273  //=======================================
274  return bounds(id).inside(locpos, tol1, tol2 - design->passivatedLength(locpos[1]<0 ? pcbPassiv.left : pcbPassiv.right , locpos[1] < 0));
275  }

◆ largeSector()

bool MuonGM::MuonReadoutElement::largeSector ( ) const
inherited

Definition at line 49 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

49  {
50  // this doesn't apply to TGC
51  if(m_statname.size() >= 3){
52  char c = m_statname[2];
53  if (c == 'L')
54  return true;
55  else if (c == 'S')
56  return false;
57  else {
58  if (c == 'E' || c == 'F' || c == 'G') return false;
59  if (c == 'M' || c == 'R') return true;
60  }
61  }
62  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" largeSector() - is this station a larger sector answer is no for readout element "<<m_idHelperSvc->toStringDetEl(identify()));
63  throw std::runtime_error("Unknown sector");
64  return false;
65  }

◆ layerHash() [1/2]

int MuonGM::MMReadoutElement::layerHash ( const Identifier id) const
inlinefinaloverridevirtual

returns the hash to be used to look up the normal and center in the MuonClusterReadoutElement tracking cache

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 182 of file MMReadoutElement.h.

182 { return layerHash(m_idHelper.gasGap(id)); }

◆ layerHash() [2/2]

int MuonGM::MMReadoutElement::layerHash ( int  gasGap) const
inline

returns the hash to be used to look up the normal and center in the MuonClusterReadoutElement tracking cache

Definition at line 184 of file MMReadoutElement.h.

184 { return gasGap - 1; }

◆ localToGlobalCoords()

Amg::Vector3D MuonGM::MMReadoutElement::localToGlobalCoords ( const Amg::Vector3D locPos,
const Identifier id 
) const

simHit local (SD) To Global position - to be used by MuonGeoAdaprors only

Definition at line 355 of file MMReadoutElement.cxx.

355  {
356  int gg = m_idHelper.gasGap(id);
357  //const MuonChannelDesign* design = getDesign(id);
358  Amg::Vector3D locPos_ML = (m_Xlg[gg - 1]) * Amg::getTranslateZ3D(m_offset) *
359  // (design->hasStereoAngle() ?
360  // Amg::AngleAxis3D(90. * CLHEP::deg, Amg::Vector3D::UnitY()) * Amg::AngleAxis3D(design->stereoAngle(), Amg::Vector3D::UnitZ()) *
361  // Amg::AngleAxis3D(-90. * CLHEP::deg, Amg::Vector3D::UnitY()) : AmgSymMatrix(3)::Identity())*
362  locPos;
363 
364  ATH_MSG_DEBUG("position coordinates in the gas-gap r.f.: " << Amg::toString(locPos) );
365  ATH_MSG_DEBUG("position coordinates in the multilayer r.f.: " << Amg::toString(locPos_ML) );
366  return absTransform() * m_delta * locPos_ML;
367  }

◆ manager()

const MuonDetectorManager * MuonGM::MuonReadoutElement::manager ( ) const
inlineprotectedinherited

◆ measuresPhi()

bool MuonGM::MMReadoutElement::measuresPhi ( const Identifier id) const
inlinefinaloverridevirtual

returns whether the current identifier corresponds to a phi measurement

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 188 of file MMReadoutElement.h.

188 { return false; }

◆ 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 }

◆ normal() [1/3]

const Amg::Vector3D & MuonGM::MuonClusterReadoutElement::normal ( ) const
inlineoverridevirtualinherited

Return the normal of the element.

Implements Trk::TrkDetElementBase.

Definition at line 126 of file MuonClusterReadoutElement.h.

126 { return normal(0); }

◆ normal() [2/3]

const Amg::Vector3D & MuonGM::MuonClusterReadoutElement::normal ( const Identifier id) const
inlineoverridevirtualinherited

Return the normal of the surface associated with this identifier In the case of silicon it returns the same as normal()

Implements Trk::TrkDetElementBase.

Definition at line 132 of file MuonClusterReadoutElement.h.

132 { return normal(layerHash(id)); }

◆ normal() [3/3]

const Amg::Vector3D & MuonGM::MuonClusterReadoutElement::normal ( int  layHash) const
inlineinherited

Definition at line 173 of file MuonClusterReadoutElement.h.

173  {
174  if (!m_surfaceData) {
175  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<" Requesting normal but cache is empty");
176  throw std::runtime_error("Empty normal cache");
177  }
178  if (hash == -1 || hash >= (int)m_surfaceData->m_layerNormals.size()) {
179  ATH_MSG_WARNING("normal hash out of range: " << hash << " elements " << m_surfaceData->m_layerNormals.size());
180  return m_surfaceData->m_layerNormals.front();
181  }
182  return m_surfaceData->m_layerNormals[hash];
183  }

◆ numberOfLayers()

int MuonGM::MMReadoutElement::numberOfLayers ( bool  ) const
inlineoverridevirtual

number of layers in phi/eta projection

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 284 of file MMReadoutElement.h.

284 { return m_nlayers; }

◆ numberOfMissingBottomStrips()

int MuonGM::MMReadoutElement::numberOfMissingBottomStrips ( const Identifier layerId) const
inline

Definition at line 301 of file MMReadoutElement.h.

301  {
302  const MuonChannelDesign* design = getDesign(id);
303  if (!design) return -1;
304  return design->numberOfMissingBottomStrips();
305  }

◆ numberOfMissingTopStrips()

int MuonGM::MMReadoutElement::numberOfMissingTopStrips ( const Identifier layerId) const
inline

Number of missing bottom and top strips (not read out)

Definition at line 295 of file MMReadoutElement.h.

295  {
296  const MuonChannelDesign* design = getDesign(id);
297  if (!design) return -1;
298  return design->numberOfMissingTopStrips();
299  }

◆ numberOfStrips() [1/2]

int MuonGM::MMReadoutElement::numberOfStrips ( const Identifier layerId) const
inlinefinaloverridevirtual

number of strips per layer

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 286 of file MMReadoutElement.h.

286 { return m_etaDesign[layerHash(layerId)].totalStrips; }

◆ numberOfStrips() [2/2]

int MuonGM::MMReadoutElement::numberOfStrips ( int  lay,
bool  measuresPhi 
) const
inlinefinaloverridevirtual

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 288 of file MMReadoutElement.h.

288  {
289  if (lay > -1 && lay < static_cast<int>(m_etaDesign.size()))
290  return m_etaDesign[lay].totalStrips;
291  else
292  return -1;
293  }

◆ parentMuonStation()

const MuonStation * MuonGM::MuonReadoutElement::parentMuonStation ( ) const
inherited

◆ parentMuonStationPos()

Amg::Vector3D MuonGM::MuonReadoutElement::parentMuonStationPos ( ) const
inherited

Definition at line 138 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

138  {
139  return parentMuonStation()->getTransform().translation();
140  }

◆ parentStationPV()

PVConstLink MuonGM::MuonReadoutElement::parentStationPV ( ) const
inherited

◆ posOnDefChamber()

void MuonGM::MMReadoutElement::posOnDefChamber ( Amg::Vector3D locPosML) const

transform a position (in chamber-frame coordinates) to the deformed-chamber geometry

Definition at line 402 of file MMReadoutElement.cxx.

402  {
403 
404  // note: amdb frame (s, z, t) = chamber frame (y, z, x)
405  if (!has_BLines()) return;
406 
407  double t0 = locPosML.x();
408  double s0 = locPosML.y();
409  double z0 = locPosML.z();
410  double width = getSsize() + (getLongSsize() - getSsize())*(z0/getRsize() + 0.5); // because z0 is in [-length/2, length/2]
411 
412  double s_rel = s0/(width/2.); // in [-1, 1]
413  double z_rel = z0/(getRsize()/2.); // in [-1, 1]
414  double t_rel = t0/(getZsize()/2.); // in [-1, 1]
415 
416  // b-line parameters
417  using Parameter = BLinePar::Parameter;
418  double bp = m_BLinePar->getParameter(Parameter::bp);
420  double sp = m_BLinePar->getParameter(Parameter::sp);
421  double sn = m_BLinePar->getParameter(Parameter::sn);
422  double tw = m_BLinePar->getParameter(Parameter::tw);
423  double eg = m_BLinePar->getParameter(Parameter::eg)*1.e-3;
424  double ep = m_BLinePar->getParameter(Parameter::ep)*1.e-3;
425  double en = m_BLinePar->getParameter(Parameter::en)*1.e-3;
426 
427  double ds{0.}, dz{0.}, dt{0.};
428 
429  if (bp != 0 || bn != 0)
430  dt += 0.5*(s_rel*s_rel - 1)*((bp + bn) + (bp - bn)*z_rel);
431 
432  if (sp != 0 || sn != 0)
433  dt += 0.5*(z_rel*z_rel - 1)*((sp + sn) + (sp - sn)*s_rel);
434 
435  if (tw != 0) {
436  dt -= tw*s_rel*z_rel;
437  dz += tw*s_rel*t_rel*getZsize()/getRsize();
438  }
439 
440  if (eg != 0) {
441  dt += t0*eg;
442  ds += s0*eg;
443  dz += z0*eg;
444  }
445 
446  if (ep != 0 || en != 0) {
447  // the formulas below differ from those in Christoph's talk
448  // because are origin for NSW is at the center of the chamber,
449  // whereas in the talk (i.e. MDTs), it is at the bottom!
450  double delta = s_rel*s_rel * ((ep + en)*s_rel/6 + (ep - en)/4);
451  double phi = s_rel * ((ep + en)*s_rel + (ep - en)) / 2;
452  dt += phi*t0;
453  ds += delta*width/2;
454  dz += phi*z0;
455  }
456 
457  locPosML[0] += dt;
458  locPosML[1] += ds;
459  locPosML[2] += dz;
460  }

◆ refreshCache()

void MuonGM::MuonReadoutElement::refreshCache ( )
inherited

Definition at line 178 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

178  {
179  clearCache();
180  fillCache();
181  }

◆ setBLinePar()

void MuonGM::MMReadoutElement::setBLinePar ( const BLinePar bLine)

read B-line (chamber-deformation) parameters

Definition at line 397 of file MMReadoutElement.cxx.

397  {
398  ATH_MSG_VERBOSE("Setting B-line for " << idHelperSvc()->toStringDetEl(identify())<<" "<<bLine);
399  m_BLinePar = &bLine;
400  }

◆ setChamberLayer()

void MuonGM::MMReadoutElement::setChamberLayer ( int  ml)
inline

set methods only to be used by MuonGeoModel

Definition at line 120 of file MMReadoutElement.h.

120 { m_ml = ml; }

◆ setDelta()

void MuonGM::MMReadoutElement::setDelta ( const ALinePar aline)

Definition at line 371 of file MMReadoutElement.cxx.

371  {
372  // amdb frame (s, z, t) = chamber frame (y, z, x)
373  if (aline) {
374  const Amg::Transform3D permute{GeoTrf::GeoRotation{90.*Gaudi::Units::deg,90.*Gaudi::Units::deg, 0.}};
375  // The origin of the rotation axes is at the center of the active area
376  // in the z (radial) direction. Account for this shift in the definition
377  // of m_delta so that it can be applied on chamber frame coordinates.
378  m_ALinePar = &aline;
379  m_delta = Amg::getTranslateZ3D(m_offset)* permute*aline.delta()*
380  permute.inverse()*Amg::getTranslateZ3D(-m_offset);
381  ATH_MSG_DEBUG(idHelperSvc()->toStringDetEl(identify())<<" setup new alignment: "<<GeoTrf::toString(m_delta,true));
382  refreshCache();
383  } else {
384  clearALinePar();
385  }
386  }

◆ setHasCutouts()

void MuonGM::MuonReadoutElement::setHasCutouts ( bool  flag)
inlineinherited

◆ setIdentifier()

void MuonGM::MuonReadoutElement::setIdentifier ( const Identifier id)
inherited

Sets the Identifier, hashes & station names.

Definition at line 157 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

157  {
158  m_id = id;
159  if (!m_idHelperSvc->isMuon(id)) {
160  ATH_MSG_FATAL("The Identifier "<<m_idHelperSvc->toString(id)<<" is not a muon one.");
161  throw std::runtime_error("Invalid Identifier set");
162  }
163  m_stIdx = m_idHelperSvc->stationName(id);
164  m_eta = m_idHelperSvc->stationEta(id);
165  m_phi = m_idHelperSvc->stationPhi(id);
166  m_idhash = m_idHelperSvc->moduleHash(id);
167  m_detectorElIdhash = m_idHelperSvc->detElementHash(id);
168  }

◆ setIndexOfREinMuonStation()

void MuonGM::MuonReadoutElement::setIndexOfREinMuonStation ( )
privateinherited

Definition at line 104 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

104  {
105  PVConstLink par = parentStationPV();
106  if (par == PVConstLink(nullptr)) {
107  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" No parent station found for "<<m_idHelperSvc->toStringDetEl(identify()));
108  throw std::runtime_error("Parent station is a nullptr");
109  }
110  std::optional<unsigned int> c = par->indexOf(getMaterialGeom());
111  if (c) {
113  } else {
115  }
116  }

◆ 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 }

◆ setLongRsize()

void MuonGM::MuonReadoutElement::setLongRsize ( double  v)
inherited

◆ setLongSsize()

void MuonGM::MuonReadoutElement::setLongSsize ( double  v)
inherited

◆ setLongZsize()

void MuonGM::MuonReadoutElement::setLongZsize ( double  v)
inherited

◆ setParentMuonStation()

void MuonGM::MuonReadoutElement::setParentMuonStation ( const MuonStation mstat)
inherited

Definition at line 129 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

129  {
130  m_parentMuonStation = mstat;
131  if (mstat->getPhysVol()) {
132  setParentStationPV(mstat->getPhysVol());
133  }
134  }

◆ setParentStationPV() [1/2]

void MuonGM::MuonReadoutElement::setParentStationPV ( )
inherited

Definition at line 77 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

77  {
78  if (m_parentStationPV) return;
79 
80  std::string::size_type npos;
81  PVConstLink pStat = PVConstLink(nullptr);
82  PVConstLink myphysvol(getMaterialGeom());
83 
84  std::string name = (myphysvol->getLogVol())->getName();
85  if ((npos = name.find("Station")) != std::string::npos) {
86  pStat = myphysvol;
87  } else {
88  for (unsigned int k = 0; k < 10; k++) {
89  pStat = myphysvol->getParent();
90  if (pStat == PVConstLink(nullptr)) break;
91  name = (pStat->getLogVol())->getName();
92  if ((npos = name.find("Station")) != std::string::npos) { break; }
93  myphysvol = pStat;
94  }
95  }
96  m_parentStationPV = pStat;
98  }

◆ setParentStationPV() [2/2]

void MuonGM::MuonReadoutElement::setParentStationPV ( const PVConstLink &  x)
inherited

◆ setRsize()

void MuonGM::MuonReadoutElement::setRsize ( double  v)
inherited

◆ setSsize()

void MuonGM::MuonReadoutElement::setSsize ( double  v)
inherited

◆ setStationName()

void MuonGM::MuonReadoutElement::setStationName ( const std::string &  str)
inherited

◆ setStationS()

void MuonGM::MuonReadoutElement::setStationS ( double  v)
inherited

◆ setTechnologyName()

void MuonGM::MuonReadoutElement::setTechnologyName ( const std::string &  str)
inherited

◆ setZsize()

void MuonGM::MuonReadoutElement::setZsize ( double  v)
inherited

◆ sideA()

bool MuonGM::MuonReadoutElement::sideA ( ) const
inlineinherited

◆ sideC()

bool MuonGM::MuonReadoutElement::sideC ( ) const
inlineinherited

◆ smallSector()

bool MuonGM::MuonReadoutElement::smallSector ( ) const
inherited

Definition at line 67 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

67  {
68  // this doesn't apply to TGC
69  return (!largeSector());
70  }

◆ spacePointPosition() [1/3]

bool MuonGM::MMReadoutElement::spacePointPosition ( const Identifier layerId,
const Amg::Vector2D localPos,
Amg::Vector3D pos 
) const

Method calculating the global position of the hit on surface taking the as-built corrections into account.

The local position is expressed in the reference frame of each individual layer

Definition at line 464 of file MMReadoutElement.cxx.

464  {
465 
466  pos = Amg::Vector3D(lpos.x(), lpos.y(), 0.);
467 
468  const MuonChannelDesign* design = getDesign(layerId);
469  if (!design) {
470  ATH_MSG_WARNING("Unable to get MuonChannelDesign, therefore cannot provide position corrections. Returning." );
471  return false;
472  }
473 
474  bool conditionsApplied{false};
475  Amg::Transform3D trfToML{Amg::Transform3D::Identity()};
476 
477 #ifndef SIMULATIONBASE
478  //*********************
479  // As-Built (MuonNswAsBuilt is not included in AthSimulation)
480  //*********************
482  if (sc) {
483 
484  // express the local position w.r.t. the nearest active strip
485  Amg::Vector2D rel_pos;
486  int istrip = design->positionRelativeToStrip(lpos, rel_pos);
487  if (istrip < 0) {
488  ATH_MSG_WARNING("As-built corrections are provided only within the active area. Returning." );
489  return false;
490  }
491 
492  // setup strip calculator
495  strip_id.ilayer = m_idHelper.gasGap(layerId);
496  strip_id.istrip = istrip;
497 
498  // get the position coordinates, in the chamber frame, from NswAsBuilt.
499  // Applying a 2.75mm correction along the layer normal, since NswAsBuilt considers the layer
500  // on the readout strips, whereas Athena wants it at the middle of the drift gap.
501  NswAsBuilt::StripCalculator::position_t calcPos = sc->getPositionAlongStrip(NswAsBuilt::Element::ParameterClass::CORRECTION, strip_id, rel_pos.y(), rel_pos.x());
502 
504  pos = calcPos.pos;
505  pos[0] += strip_id.ilayer%2 ? -2.75 : 2.75;
506 
507  // signal that pos is now in the chamber reference frame
508  // (don't go back to the layer frame yet, since we may apply b-lines later on)
509  trfToML = m_delta.inverse()*absTransform().inverse()*transform(layerId);
510  conditionsApplied = true;
511  } else {
512  ATH_MSG_DEBUG( "No as-built corrections provided for "<<idHelperSvc()->toStringDetEl(identify())<<" layer: "<<strip_id.ilayer);
513  }
514  }
515 #endif
516 
517  //*********************
518  // B-Lines
519  //*********************
520  if (has_BLines()) {
521  // go to the multilayer reference frame if we are not already there
522  if (!conditionsApplied) {
523  trfToML = m_delta.inverse()*absTransform().inverse()*transform(layerId);
524  pos = trfToML*pos;
525 
526  // signal that pos is now in the multilayer reference frame
527  conditionsApplied = true;
528  }
530  }
531 
532  // back to the layer reference frame from where we started
533  if (conditionsApplied) pos = trfToML.inverse()*pos;
534 
535  return true;
536  }

◆ spacePointPosition() [2/3]

bool MuonGM::MMReadoutElement::spacePointPosition ( const Identifier phiId,
const Identifier etaId,
Amg::Vector2D pos 
) const
inlinefinaloverridevirtual

space point position for a given pair of phi and eta identifiers The LocalPosition is expressed in the reference frame of the phi surface.

If one of the identifiers is outside the valid range, the function will return false

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 307 of file MMReadoutElement.h.

307  {
308  if (!stripPosition(etaId, pos)) return false;
309  const MuonChannelDesign* phi_design = getDesign(phiId);
310  const MuonChannelDesign* eta_design = getDesign(etaId);
311  if (!phi_design || !eta_design) return false;
312  pos = phi_design->rotation() * eta_design->rotation().inverse()*pos;
313  return true;
314  }

◆ spacePointPosition() [3/3]

bool MuonGM::MMReadoutElement::spacePointPosition ( const Identifier phiId,
const Identifier etaId,
Amg::Vector3D pos 
) const
inlinefinaloverridevirtual

Global space point position for a given pair of phi and eta identifiers If one of the identifiers is outside the valid range, the function will return false.

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 316 of file MMReadoutElement.h.

316  {
318  spacePointPosition(phiId, etaId, lpos);
319  surface(phiId).localToGlobal(lpos, pos, pos);
320  return true;
321  }

◆ stereoAngle()

double MuonGM::MMReadoutElement::stereoAngle ( const Identifier id) const
inline

Wrapper to MuonChannelDesign::stereoAngle()

Definition at line 212 of file MMReadoutElement.h.

212  {
213  const MuonChannelDesign* design = getDesign(id);
214  if (!design) return 0;
215  return design->stereoAngle();
216  }

◆ stripActiveLength()

double MuonGM::MMReadoutElement::stripActiveLength ( const Identifier id) const
inline

Definition at line 224 of file MMReadoutElement.h.

224  {
226  }

◆ stripActiveLengthLeft()

double MuonGM::MMReadoutElement::stripActiveLengthLeft ( const Identifier id) const
inline

Definition at line 228 of file MMReadoutElement.h.

228  {
229  const MuonChannelDesign* design = getDesign(id);
230  if (!design) return -1;
231 
232  const PCBPassivation& passiv = manager()->getMMPassivation() ?
234 
235  double l = design->channelHalfLength(m_idHelper.channel(id), true);
236  if (l < 0) return -1;
237  return std::max(0., l - design->passivatedLength(passiv.left, true));
238  }

◆ stripActiveLengthRight()

double MuonGM::MMReadoutElement::stripActiveLengthRight ( const Identifier id) const
inline

Definition at line 240 of file MMReadoutElement.h.

240  {
241  const MuonChannelDesign* design = getDesign(id);
242  if (!design) return -1;
243 
244  const PCBPassivation& passiv = manager()->getMMPassivation() ?
246 
247  double l = design->channelHalfLength(m_idHelper.channel(id), false);
248  if (l < 0) return -1;
249  return std::max(0., l - design->passivatedLength(passiv.right, false));
250  }

◆ stripGlobalPosition()

bool MuonGM::MMReadoutElement::stripGlobalPosition ( const Identifier id,
Amg::Vector3D gpos 
) const
inline

Definition at line 277 of file MMReadoutElement.h.

277  {
279  if (!stripPosition(id, lpos)) return false;
280  surface(id).localToGlobal(lpos, Amg::Vector3D::Zero(), gpos);
281  return true;
282  }

◆ stripLength()

double MuonGM::MMReadoutElement::stripLength ( const Identifier id) const
inline

strip length Wrappers to MuonChannelDesign::channelLength() taking into account the passivated width

Definition at line 218 of file MMReadoutElement.h.

218  {
219  const MuonChannelDesign* design = getDesign(id);
220  if (!design) return -1;
221  return design->channelLength(m_idHelper.channel(id));
222  }

◆ stripNumber()

int MuonGM::MMReadoutElement::stripNumber ( const Amg::Vector2D pos,
const Identifier id 
) const
inlinefinaloverridevirtual

strip number corresponding to local position.

If the local position is outside the active volume, the function first shift the position back into the active volume

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 199 of file MMReadoutElement.h.

199  {
200  // returns the position of the strip at pos, assuming the nominal geometry (no as-built conditions)
201  const MuonChannelDesign* design = getDesign(id);
202  if (!design) return -1;
203  return design->channelNumber(pos);
204  }

◆ stripPosition()

bool MuonGM::MMReadoutElement::stripPosition ( const Identifier id,
Amg::Vector2D pos 
) const
inlinefinaloverridevirtual

strip position – local or global If the strip number is outside the range of valid strips, the function will return false

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 206 of file MMReadoutElement.h.

206  {
207  const MuonChannelDesign* design = getDesign(id);
208  if (!design) return false;
209  return design->center(m_idHelper.channel(id), pos);
210  }

◆ surface() [1/3]

const Trk::PlaneSurface & MuonGM::MuonClusterReadoutElement::surface ( ) const
inlineoverridevirtualinherited

access to chamber surface (phi orientation), uses the first gas gap

Implements Trk::TrkDetElementBase.

Definition at line 123 of file MuonClusterReadoutElement.h.

123 { return surface(0); }

◆ surface() [2/3]

const Trk::PlaneSurface & MuonGM::MuonClusterReadoutElement::surface ( const Identifier id) const
inlineoverridevirtualinherited

access to layer surfaces

Implements Trk::TrkDetElementBase.

Definition at line 129 of file MuonClusterReadoutElement.h.

129 { return surface(surfaceHash(id)); }

◆ surface() [3/3]

const Trk::PlaneSurface & MuonGM::MuonClusterReadoutElement::surface ( int  surfHash) const
inlineinherited

access to layer surfaces

Definition at line 135 of file MuonClusterReadoutElement.h.

135  {
136  if (!m_surfaceData) {
137  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<" Requesting surface but cache is empty");
138  throw std::runtime_error("Empty surface cache");
139  }
140  if (hash == -1 || hash >= (int)m_surfaceData->m_layerSurfaces.size()) {
141  ATH_MSG_WARNING(" surface hash out of range: " << hash << " elements "
142  << m_surfaceData->m_layerSurfaces.size());
143  return *m_surfaceData->m_layerSurfaces.front();
144  }
145  return *m_surfaceData->m_layerSurfaces[hash];
146  }

◆ surfaceHash() [1/2]

int MuonGM::MMReadoutElement::surfaceHash ( const Identifier id) const
inlinefinaloverridevirtual

returns the hash to be used to look up the surface and transform in the MuonClusterReadoutElement tracking cache

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 178 of file MMReadoutElement.h.

178 { return surfaceHash(m_idHelper.gasGap(id), 0); }

◆ surfaceHash() [2/2]

int MuonGM::MMReadoutElement::surfaceHash ( int  gasGap,
int  measPhi 
) const
inline

returns the hash to be used to look up the surface and transform in the MuonClusterReadoutElement tracking cache

Definition at line 180 of file MMReadoutElement.h.

180 { return gasGap - 1; } // measPhi not used

◆ surfaces()

std::vector< const Trk::Surface * > MuonGM::MuonClusterReadoutElement::surfaces ( ) const
inlinevirtualinherited

returns all the surfaces contained in this detector element

Definition at line 197 of file MuonClusterReadoutElement.h.

197  {
198  std::vector<const Trk::Surface*> elementSurfaces;
199 
200  // create when first time requested and when possible
201  if (m_surfaceData) {
202  elementSurfaces.reserve(m_surfaceData->m_layerSurfaces.size());
203  for (const std::unique_ptr<Trk::PlaneSurface>& ptr : m_surfaceData->m_layerSurfaces) {
204  elementSurfaces.emplace_back(ptr.get());
205  }
206  }
207  // return the element surfaces
208  return elementSurfaces;
209  }

◆ toParentStation()

Amg::Transform3D MuonGM::MuonReadoutElement::toParentStation ( ) const
inherited

Definition at line 118 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

118  {
119  PVConstLink par = parentStationPV();
120  if (par == PVConstLink(nullptr)) {
121  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" No parent station found for "<<m_idHelperSvc->toStringDetEl(identify()));
122  throw std::runtime_error("Parent station is a nullptr");
123  }
124 
125  if (m_indexOfREinMuonStation >= 0) return par->getXToChildVol((unsigned int)m_indexOfREinMuonStation);
126  return GeoTrf::Transform3D::Identity();
127  }

◆ transform() [1/3]

const Amg::Transform3D & MuonGM::MuonClusterReadoutElement::transform ( ) const
inlineoverridevirtualinherited

Return local to global transform.

Implements Trk::TrkDetElementBase.

Definition at line 124 of file MuonClusterReadoutElement.h.

124 { return transform(0); }

◆ transform() [2/3]

const Amg::Transform3D & MuonGM::MuonClusterReadoutElement::transform ( const Identifier id) const
inlineoverridevirtualinherited

Return local to global transform associated with this identifier.

Implements Trk::TrkDetElementBase.

Definition at line 130 of file MuonClusterReadoutElement.h.

130 { return transform(surfaceHash(id)); }

◆ transform() [3/3]

const Amg::Transform3D & MuonGM::MuonClusterReadoutElement::transform ( int  surfHash) const
inlineinherited

Definition at line 148 of file MuonClusterReadoutElement.h.

148  {
149  if (!m_surfaceData) {
150  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<" Requesting transform but cache is empty");
151  throw std::runtime_error("Empty transform cache");
152  }
153  if (hash == -1 || hash >= (int)m_surfaceData->m_layerTransforms.size()) {
154  ATH_MSG_WARNING("transform hash out of range: " << hash << " elements "
155  << m_surfaceData->m_layerTransforms.size());
156  return m_surfaceData->m_layerTransforms.front();
157  }
158  return m_surfaceData->m_layerTransforms[hash];
159  }

Friends And Related Function Documentation

◆ MuonGMR4::ReadoutGeomCnvAlg

friend class MuonGMR4::ReadoutGeomCnvAlg
friend

Definition at line 27 of file MMReadoutElement.h.

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_ALinePar

const ALinePar* MuonGM::MMReadoutElement::m_ALinePar {nullptr}
private

Definition at line 171 of file MMReadoutElement.h.

◆ m_BLinePar

const BLinePar* MuonGM::MMReadoutElement::m_BLinePar {nullptr}
private

Definition at line 172 of file MMReadoutElement.h.

◆ m_caching

int MuonGM::MuonReadoutElement::m_caching {-1}
protectedinherited

0 if we want to avoid caching geometry info for tracking interface

Definition at line 156 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_delta

Amg::Transform3D MuonGM::MMReadoutElement::m_delta {Amg::Transform3D::Identity()}
private

Definition at line 170 of file MMReadoutElement.h.

◆ m_detectorElIdhash

IdentifierHash MuonGM::MuonReadoutElement::m_detectorElIdhash {0}
privateinherited

detector element hash identifier

Definition at line 167 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_eta

int MuonGM::MuonReadoutElement::m_eta {-1}
privateinherited

Identifier field of the station eta.

Definition at line 175 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_etaDesign

std::array<MuonChannelDesign, 4> MuonGM::MMReadoutElement::m_etaDesign {}
private

Definition at line 157 of file MMReadoutElement.h.

◆ m_halfX

double MuonGM::MMReadoutElement::m_halfX {100.}
private

Definition at line 165 of file MMReadoutElement.h.

◆ m_hasCutouts

bool MuonGM::MuonReadoutElement::m_hasCutouts {false}
protectedinherited

true is there are cutouts in the readdout-element

Definition at line 158 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_id

Identifier MuonGM::MuonReadoutElement::m_id {0}
privateinherited

extended data-collection identifier

Definition at line 165 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_idhash

IdentifierHash MuonGM::MuonReadoutElement::m_idhash {0}
privateinherited

data-collection hash identifier

Definition at line 166 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_idHelper

const MmIdHelper& MuonGM::MMReadoutElement::m_idHelper {idHelperSvc()->mmIdHelper()}
private

Definition at line 152 of file MMReadoutElement.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonGM::MuonReadoutElement::m_idHelperSvc {"Muon::MuonIdHelperSvc/MuonIdHelperSvc", "MuonDetectorManager"}
privateinherited

◆ m_imsg

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

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_indexOfREinMuonStation

int MuonGM::MuonReadoutElement::m_indexOfREinMuonStation {-999}
privateinherited

index of this RE in the mother MuonStation

Definition at line 169 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_LongRsize

double MuonGM::MuonReadoutElement::m_LongRsize {-9999.}
protectedinherited

◆ m_LongSsize

double MuonGM::MuonReadoutElement::m_LongSsize {-9999.}
protectedinherited

◆ m_LongZsize

double MuonGM::MuonReadoutElement::m_LongZsize {-9999.}
protectedinherited

size in the specified direction

Definition at line 148 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_lvl

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

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_maxHalfY

double MuonGM::MMReadoutElement::m_maxHalfY {2000.}
private

Definition at line 167 of file MMReadoutElement.h.

◆ m_minHalfY

double MuonGM::MMReadoutElement::m_minHalfY {1900.}
private

Definition at line 166 of file MMReadoutElement.h.

◆ m_ml

int MuonGM::MMReadoutElement::m_ml {0}
private

Definition at line 162 of file MMReadoutElement.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_muon_mgr

MuonDetectorManager* MuonGM::MuonReadoutElement::m_muon_mgr {nullptr}
privateinherited

◆ m_nlayers

int MuonGM::MMReadoutElement::m_nlayers {0}
private

Definition at line 159 of file MMReadoutElement.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_offset

double MuonGM::MMReadoutElement::m_offset {0.}
private

Definition at line 168 of file MMReadoutElement.h.

◆ m_parentMuonStation

const MuonStation* MuonGM::MuonReadoutElement::m_parentMuonStation {nullptr}
privateinherited

◆ m_parentStationPV

PVConstLink MuonGM::MuonReadoutElement::m_parentStationPV {nullptr}
privateinherited

◆ m_phi

int MuonGM::MuonReadoutElement::m_phi {-1}
privateinherited

Identifier field of the station phi.

Definition at line 177 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_readoutSide

std::array<int, 4> MuonGM::MMReadoutElement::m_readoutSide {}
private

Definition at line 173 of file MMReadoutElement.h.

◆ m_Rsize

double MuonGM::MuonReadoutElement::m_Rsize {-9999.}
protectedinherited

◆ m_Ssize

double MuonGM::MuonReadoutElement::m_Ssize {-9999.}
protectedinherited

◆ m_stationS

double MuonGM::MuonReadoutElement::m_stationS {0.}
privateinherited

◆ m_statname

std::string MuonGM::MuonReadoutElement::m_statname {"XXX0"}
protectedinherited

examples are BMS5, CSS1, EML1

Definition at line 154 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_stIdx

int MuonGM::MuonReadoutElement::m_stIdx {-1}
privateinherited

Identifier field of the station index.

Definition at line 173 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_surfaceData

std::unique_ptr<SurfaceData> MuonGM::MuonClusterReadoutElement::m_surfaceData {}
protectedinherited

Definition at line 120 of file MuonClusterReadoutElement.h.

◆ m_techname

std::string MuonGM::MuonReadoutElement::m_techname {"TTT0"}
protectedinherited

MDT or RPC or TGC or CSC plus a two digits subtype; example RPC17.

Definition at line 152 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h.

◆ m_type

Trk::DetectorElemType MuonGM::MuonReadoutElement::m_type {Trk::DetectorElemType::SolidState}
privateinherited

◆ m_Xlg

std::array<Amg::Transform3D, 4> MuonGM::MMReadoutElement::m_Xlg {make_array<Amg::Transform3D,4>(Amg::Transform3D::Identity())}
private

Definition at line 175 of file MMReadoutElement.h.

◆ m_Zsize

double MuonGM::MuonReadoutElement::m_Zsize {-9999.}
protectedinherited

◆ s_dummy_passiv

constexpr PCBPassivation MuonGM::MMReadoutElement::s_dummy_passiv {}
staticconstexprprivate

Definition at line 155 of file MMReadoutElement.h.


The documentation for this class was generated from the following files:
MuonGM::MMReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position – local or global If the strip number is outside the range of valid strips,...
Definition: MMReadoutElement.h:206
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
PlotCalibFromCool.il
il
Definition: PlotCalibFromCool.py:381
python.changerun.bn
bn
Definition: changerun.py:77
MMReadoutParameters::activeH
double activeH
Definition: MMDetectorDescription.h:30
NswAsBuilt::StripCalculator::position_t
Definition: StripCalculator.h:58
MuonGM::MuonClusterReadoutElement::transform
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Definition: MuonClusterReadoutElement.h:124
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
checkxAOD.ds
ds
Definition: Tools/PyUtils/bin/checkxAOD.py:260
MMReadoutParameters::nMissedTopEta
int nMissedTopEta
Definition: MMDetectorDescription.h:34
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
CxxUtils::tokenizeDouble
std::vector< double > tokenizeDouble(const std::string &the_str, std::string_view delimiter)
Definition: Control/CxxUtils/Root/StringUtils.cxx:34
MuonGM::MuonReadoutElement::m_statname
std::string m_statname
examples are BMS5, CSS1, EML1
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:154
MuonGM::MuonReadoutElement::setZsize
void setZsize(double)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:177
MMReadoutParameters::tStrips
int tStrips
Definition: MMDetectorDescription.h:42
Trk::SurfaceBounds::inside
virtual bool inside(const Amg::Vector2D &locpo, double tol1=0., double tol2=0.) const =0
Each Bounds has a method inside, which checks if a LocalPosition is inside the bounds.
MuonGM::MuonReadoutElement::absTransform
const Amg::Transform3D & absTransform() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:210
python.SystemOfUnits.mm
float mm
Definition: SystemOfUnits.py:98
MuonGM::MuonReadoutElement::m_id
Identifier m_id
extended data-collection identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:165
MuonGM::MMReadoutElement::m_readoutSide
std::array< int, 4 > m_readoutSide
Definition: MMReadoutElement.h:173
MuonGM::MuonReadoutElement::m_techname
std::string m_techname
MDT or RPC or TGC or CSC plus a two digits subtype; example RPC17.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:152
MuonGM::MuonReadoutElement::m_Zsize
double m_Zsize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:145
MMReadoutParameters::activeBottomLength
double activeBottomLength
Definition: MMDetectorDescription.h:28
MuonGM::MuonClusterReadoutElement::MuonClusterReadoutElement
MuonClusterReadoutElement(GeoVFullPhysVol *pv, MuonDetectorManager *mgr, Trk::DetectorElemType detType)
Definition: MuonClusterReadoutElement.cxx:8
MuonGM::MuonClusterReadoutElement::normal
virtual const Amg::Vector3D & normal() const override
Return the normal of the element.
Definition: MuonClusterReadoutElement.h:126
MuonGM::MuonReadoutElement::m_LongRsize
double m_LongRsize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:147
ParticleTest.eg
eg
Definition: ParticleTest.py:29
MuonGM::MuonReadoutElement::m_eta
int m_eta
Identifier field of the station eta.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:175
MMReadoutParameters::readoutSide
std::vector< int > readoutSide
Definition: MMDetectorDescription.h:24
MuonGM::MuonReadoutElement::m_detectorElIdhash
IdentifierHash m_detectorElIdhash
detector element hash identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:167
NswAsBuilt::stripIdentifier_t::quadruplet
quadrupletIdentifier_t quadruplet
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:82
NswAsBuilt::StripCalculator::IsValid::VALID
@ VALID
MuonGM::MuonClusterReadoutElement::center
virtual const Amg::Vector3D & center() const override
Return the center of the element.
Definition: MuonClusterReadoutElement.h:125
MuonGM::MMReadoutElement::AmdbLRSToGlobalTransform
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const override final
Definition: MMReadoutElement.h:143
MuonGM::MuonReadoutElement::fillCache
virtual void fillCache()=0
Trk::DetectorElemType::Tgc
@ Tgc
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
CxxUtils::tokenizeInt
std::vector< int > tokenizeInt(const std::string &the_str, std::string_view delimiter)
Definition: Control/CxxUtils/Root/StringUtils.cxx:55
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
Trk::DetectorElemType::TRT
@ TRT
MmIdHelper::channelMax
static int channelMax()
Definition: MmIdHelper.cxx:831
MMReadoutParameters::activeTopLength
double activeTopLength
Definition: MMDetectorDescription.h:29
Amg::getTranslateZ3D
Amg::Transform3D getTranslateZ3D(const double Z)
: Returns a shift transformation along the z-axis
Definition: GeoPrimitivesHelpers.h:285
MuonGM::MuonReadoutElement::largeSector
bool largeSector() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:49
MuonGM::MMReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MMReadoutElement.h:190
Muon::MuonStationIndex::stName
const std::string & stName(StIndex index)
convert StIndex into a string
Definition: MuonStationIndex.cxx:104
MuonGM::MuonStation::getTransform
Amg::Transform3D getTransform() const
Definition: MuonStation.h:180
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
MuonGM::MuonReadoutElement::m_Ssize
double m_Ssize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:143
MuonGM::MMReadoutElement::initDesignSqLite
void initDesignSqLite()
Definition: MMReadoutElement.cxx:138
MuonGM::MuonReadoutElement::getZsize
double getZsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:198
MCP::ScaleSmearParam::s0
@ s0
MuonGM::MuonReadoutElement::setParentStationPV
void setParentStationPV()
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:77
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGM::MMReadoutElement::GlobalToAmdbLRSTransform
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const override final
Definition: MMReadoutElement.h:146
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:157
MuonGM::MMReadoutElement::m_Xlg
std::array< Amg::Transform3D, 4 > m_Xlg
Definition: MMReadoutElement.h:175
MuonGM::MuonReadoutElement::m_parentMuonStation
const MuonStation * m_parentMuonStation
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:180
MuonGM::MuonReadoutElement::m_type
Trk::DetectorElemType m_type
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:164
MuonGM::MuonReadoutElement::m_stationS
double m_stationS
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:171
BLinePar::getParameter
float getParameter(const Parameter p) const
Returns a given parameter.
Definition: BLinePar.h:40
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
MuonGM::MuonDetectorManager::getMMAsBuiltCalculator
const NswAsBuilt::StripCalculator * getMMAsBuiltCalculator() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:152
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
MuonGM::MuonReadoutElement::getLongSsize
double getLongSsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:199
NswPassivationDbData::getPassivation
const PCBPassivation & getPassivation(const Identifier &id) const
Definition: NswPassivationDbData.cxx:47
MuonGM::MuonReadoutElement::setSsize
void setSsize(double)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:175
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
x
#define x
MuonGM::MuonClusterReadoutElement::boundaryHash
virtual int boundaryHash(const Identifier &id) const =0
returns the hash function to be used to look up the surface boundary for a given identifier
python.SystemOfUnits.mL
float mL
Definition: SystemOfUnits.py:95
MuonGM::MuonClusterReadoutElement::surface
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
Definition: MuonClusterReadoutElement.h:123
MuonGM::MuonReadoutElement::setIndexOfREinMuonStation
void setIndexOfREinMuonStation()
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:104
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
keylayer_zslicemap.strip
strip
Definition: keylayer_zslicemap.py:151
Trk::DetectorElemType::Csc
@ Csc
dumpTruth.getName
getName
Definition: dumpTruth.py:34
MuonGM::MMReadoutElement::has_BLines
bool has_BLines() const
Definition: MMReadoutElement.h:134
Trk::TrkDetElementBase::detectorType
virtual DetectorElemType detectorType() const =0
Return the Detector element type.
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Amg::getRotateZ3D
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
Definition: GeoPrimitivesHelpers.h:270
MuonGM::MuonReadoutElement::m_phi
int m_phi
Identifier field of the station phi.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:177
MmIdHelper::multilayer
int multilayer(const Identifier &id) const
Definition: MmIdHelper.cxx:796
TRT::Hit::side
@ side
Definition: HitInfo.h:83
MuonGM::MuonReadoutElement::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:136
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
MuonGM::MuonReadoutElement::getSsize
double getSsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:196
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
Trk::DetectorElemType::Silicon
@ Silicon
MuonGM::MMReadoutElement::stripActiveLengthRight
double stripActiveLengthRight(const Identifier &id) const
Definition: MMReadoutElement.h:240
MuonGM::MuonReadoutElement::setRsize
void setRsize(double)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:176
MuonGM::MMReadoutElement::m_nlayers
int m_nlayers
Definition: MMReadoutElement.h:159
MuonGM::MuonReadoutElement::refreshCache
void refreshCache()
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:178
MuonGM::MuonDetectorManager::getMMPassivation
const NswPassivationDbData * getMMPassivation() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:167
MuonGM::MuonClusterReadoutElement::m_surfaceData
std::unique_ptr< SurfaceData > m_surfaceData
Definition: MuonClusterReadoutElement.h:120
NswAsBuilt::StripCalculator::position_t::isvalid
IsValid isvalid
Definition: StripCalculator.h:59
MuonGM::MuonReadoutElement::clearCache
virtual void clearCache()=0
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
MMDetectorDescription
Definition: MMDetectorDescription.h:45
MuonGM::MuonReadoutElement::getStationName
const std::string & getStationName() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:190
Trk::DetectorElemType::SolidState
@ SolidState
THROW_EXCEPTION_MM
#define THROW_EXCEPTION_MM(MSG)
Definition: MMReadoutElement.cxx:49
MuonGM::MuonReadoutElement::m_Rsize
double m_Rsize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:144
MuonGM::MuonChannelDesign::DetType::MM
@ MM
MuonGM::MMReadoutElement::has_ALines
bool has_ALines() const
Definition: MMReadoutElement.h:133
MMReadoutParameters::gasThickness
double gasThickness
Definition: MMDetectorDescription.h:20
MuonGM::MuonReadoutElement::setIdentifier
void setIdentifier(const Identifier &id)
Sets the Identifier, hashes & station names.
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:157
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloNoise_fillDB.dt
dt
Definition: CaloNoise_fillDB.py:56
MuonGM::MMReadoutElement::PCBPassivation
NswPassivationDbData::PCBPassivation PCBPassivation
Definition: MMReadoutElement.h:154
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonGM::MuonReadoutElement::parentMuonStation
const MuonStation * parentMuonStation() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:136
python.CaloAddPedShiftConfig.str
str
Definition: CaloAddPedShiftConfig.py:42
NswAsBuilt::stripIdentifier_t
Athena indices of a MM strip.
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:81
master.flag
bool flag
Definition: master.py:29
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
NswAsBuilt::quadrupletIdentifier_t::MML
@ MML
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:28
MuonGM::MMReadoutElement::m_BLinePar
const BLinePar * m_BLinePar
Definition: MMReadoutElement.h:172
MuonGM::MuonReadoutElement::m_parentStationPV
PVConstLink m_parentStationPV
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:179
MMReadoutParameters::stripPitch
double stripPitch
Definition: MMDetectorDescription.h:19
MuonGM::MMReadoutElement::surfaceHash
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...
Definition: MMReadoutElement.h:178
MuonGM::MMReadoutElement::m_minHalfY
double m_minHalfY
Definition: MMReadoutElement.h:166
MuonGM::MuonReadoutElement::manager
const MuonDetectorManager * manager() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:204
MuonGM::MuonReadoutElement::m_hasCutouts
bool m_hasCutouts
true is there are cutouts in the readdout-element
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:158
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
MMDetectorHelper::Get_MMDetector
MMDetectorDescription * Get_MMDetector(char type, int ieta, int iphi, int layer=1, char side='A')
Definition: MMDetectorHelper.cxx:41
NswAsBuilt::StripCalculator::position_t::pos
Amg::Vector3D pos
Definition: StripCalculator.h:60
ALinePar::delta
Amg::Transform3D delta() const
Returns the final transformations of the A lines.
Definition: ALinePar.cxx:35
MuonGM::MMReadoutElement::m_delta
Amg::Transform3D m_delta
Definition: MMReadoutElement.h:170
MuonGM::MuonReadoutElement::setLongSsize
void setLongSsize(double)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:172
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:121
MuonGM::MMReadoutElement::clearALinePar
void clearALinePar()
Definition: MMReadoutElement.cxx:388
MuonGM::MMReadoutElement::setChamberLayer
void setChamberLayer(int ml)
set methods only to be used by MuonGeoModel
Definition: MMReadoutElement.h:120
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
MuonGM::MuonReadoutElement::setStationName
void setStationName(const std::string &)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:170
MuonIdHelper::stationPhi
int stationPhi(const Identifier &id) const
Definition: MuonIdHelper.cxx:814
MuonGM::MuonReadoutElement::m_LongSsize
double m_LongSsize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:146
Trk::DetectorElemType::sTgc
@ sTgc
MuonGM::MMReadoutElement::getDelta
const Amg::Transform3D & getDelta() const
read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) re...
Definition: MMReadoutElement.h:124
MuonGM::MMReadoutElement::m_etaDesign
std::array< MuonChannelDesign, 4 > m_etaDesign
Definition: MMReadoutElement.h:157
MuonGM::MuonClusterReadoutElement::layerHash
virtual int layerHash(const Identifier &id) const =0
returns the hash function to be used to look up the center and the normal of the tracking surface for...
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:28
MuonGM::MuonReadoutElement::m_idhash
IdentifierHash m_idhash
data-collection hash identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:166
PlotCalibFromCool.en
en
Definition: PlotCalibFromCool.py:399
MuonGM::MMReadoutElement::m_idHelper
const MmIdHelper & m_idHelper
Definition: MMReadoutElement.h:152
MuonGM::MMReadoutElement::m_ml
int m_ml
Definition: MMReadoutElement.h:162
MuonGM::MMReadoutElement::m_maxHalfY
double m_maxHalfY
Definition: MMReadoutElement.h:167
MuonIdHelper::stationEta
int stationEta(const Identifier &id) const
Definition: MuonIdHelper.cxx:809
Amg::getRotateY3D
Amg::Transform3D getRotateY3D(double angle)
get a rotation transformation around Y-axis
Definition: GeoPrimitivesHelpers.h:261
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGM::MMReadoutElement::layerHash
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...
Definition: MMReadoutElement.h:182
MuonGM::MuonReadoutElement::m_LongZsize
double m_LongZsize
size in the specified direction
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:148
MMReadoutParameters::nMissedTopStereo
int nMissedTopStereo
Definition: MMDetectorDescription.h:36
MMReadoutParameters::stereoAngle
std::vector< double > stereoAngle
Definition: MMDetectorDescription.h:23
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
MMReadoutParameters::nMissedBottomStereo
int nMissedBottomStereo
Definition: MMDetectorDescription.h:37
MuonGM::MMReadoutElement::posOnDefChamber
void posOnDefChamber(Amg::Vector3D &locPosML) const
transform a position (in chamber-frame coordinates) to the deformed-chamber geometry
Definition: MMReadoutElement.cxx:402
python.PyAthena.v
v
Definition: PyAthena.py:154
BLinePar::Parameter
Parameter
Definition: BLinePar.h:21
NswAsBuilt::stripIdentifier_t::ilayer
int ilayer
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:83
MuonGM::MuonReadoutElement::m_muon_mgr
MuonDetectorManager * m_muon_mgr
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:181
Trk::DetectorElemType::MM
@ MM
MmIdHelper::channel
int channel(const Identifier &id) const override
Definition: MmIdHelper.cxx:800
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
MuonGM::MuonReadoutElement::getRsize
double getRsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:197
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
MmIdHelper::gasGap
int gasGap(const Identifier &id) const override
get the hashes
Definition: MmIdHelper.cxx:798
Trk::DetectorElemType::Rpc
@ Rpc
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:108
NswAsBuilt::quadrupletIdentifier_t::MMS
@ MMS
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:27
MuonGM::MMReadoutElement::spacePointPosition
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...
Definition: MMReadoutElement.h:307
MuonGM::MMReadoutElement::stereoAngle
double stereoAngle(const Identifier &id) const
Wrapper to MuonChannelDesign::stereoAngle()
Definition: MMReadoutElement.h:212
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
MuonGM::MuonReadoutElement::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:163
MuonGM::MMReadoutElement::stripNumber
virtual int stripNumber(const Amg::Vector2D &pos, const Identifier &id) const override final
strip number corresponding to local position.
Definition: MMReadoutElement.h:199
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
NswAsBuilt::stripIdentifier_t::istrip
int istrip
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:84
MuonGM::MuonReadoutElement::identify
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:184
python.changerun.pv
pv
Definition: changerun.py:79
MMReadoutParameters::nMissedBottomEta
int nMissedBottomEta
Definition: MMDetectorDescription.h:35
python.DecayParser.children
children
Definition: DecayParser.py:32
NswAsBuilt::StripCalculator
Definition: StripCalculator.h:30
MuonGM::MuonReadoutElement::m_indexOfREinMuonStation
int m_indexOfREinMuonStation
index of this RE in the mother MuonStation
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:169
MuonGM::MuonReadoutElement::m_stIdx
int m_stIdx
Identifier field of the station index.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:173
NswAsBuilt::Element::ParameterClass::CORRECTION
@ CORRECTION
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
MMDetectorHelper
Definition: MMDetectorHelper.h:24
MuonGM::MMReadoutElement::m_ALinePar
const ALinePar * m_ALinePar
Definition: MMReadoutElement.h:171
Trk::PlaneSurface::localToGlobal
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
Specified for PlaneSurface: LocalToGlobal method without dynamic memory allocation.
Definition: PlaneSurface.cxx:198
MuonGM::MMReadoutElement::m_halfX
double m_halfX
Definition: MMReadoutElement.h:165
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
MuonGM::MuonClusterReadoutElement::bounds
virtual const Trk::SurfaceBounds & bounds() const override
Return the boundaries of the element.
Definition: MuonClusterReadoutElement.h:127
MmIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
Definition: MmIdHelper.cxx:736
python.compressB64.c
def c
Definition: compressB64.py:93
MuonGM::MMReadoutElement::m_offset
double m_offset
Definition: MMReadoutElement.h:168
MuonGM::MuonReadoutElement::parentStationPV
PVConstLink parentStationPV() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:100
MuonGM::MuonClusterReadoutElement::surfaceHash
virtual int surfaceHash(const Identifier &id) const =0
returns the hash function to be used to look up the surface and surface transform for a given identif...
python.SystemOfUnits.degree
tuple degree
Definition: SystemOfUnits.py:121
MuonGM::MuonReadoutElement::getStationPhi
int getStationPhi() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:194
MuonGM::MMReadoutElement::s_dummy_passiv
static constexpr PCBPassivation s_dummy_passiv
Definition: MMReadoutElement.h:155
MMReadoutParameters
Definition: MMDetectorDescription.h:18
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
Trk::DetectorElemType::Mdt
@ Mdt
MuonGM::MuonChannelDesign::ChannelType::etaStrip
@ etaStrip
fitman.k
k
Definition: fitman.py:528
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
python.SystemOfUnits.ms
float ms
Definition: SystemOfUnits.py:148
MuonGM::MMReadoutElement::stripActiveLengthLeft
double stripActiveLengthLeft(const Identifier &id) const
Definition: MMReadoutElement.h:228
Identifier
Definition: IdentifierFieldParser.cxx:14