Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
MuonGM::sTgcReadoutElement Class Referencefinal

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

#include <sTgcReadoutElement.h>

Inheritance diagram for MuonGM::sTgcReadoutElement:
Collaboration diagram for MuonGM::sTgcReadoutElement:

Public Member Functions

 sTgcReadoutElement (GeoVFullPhysVol *pv, const std::string &stName, int zi, int fi, int mL, MuonDetectorManager *mgr)
 constructor More...
 
 ~sTgcReadoutElement ()
 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...
 
double channelPitch (const Identifier &id) const
 Channel pitch. More...
 
virtual bool stripPosition (const Identifier &id, Amg::Vector2D &pos) const override final
 strip position - should be renamed to channel position 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
 
int padNumber (const Amg::Vector2D &pos, const Identifier &id) const
 pad number corresponding to local position More...
 
int wireNumber (const Amg::Vector2D &pos, const Identifier &id) const
 wire number corresponding to local position More...
 
double wirePitch (int gas_gap=1) const
 single wire pitch. More...
 
double positionFirstWire (const Identifier &id) const
 Get the local position of the first wire of the chamber corresponding to the identifier. More...
 
int numberOfWires (const Identifier &id) const
 Get the total number of wires (single wires) of a chamber. More...
 
bool padPosition (const Identifier &id, Amg::Vector2D &pos) const
 pad position More...
 
bool padGlobalPosition (const Identifier &id, Amg::Vector3D &gpos) const
 pad global position More...
 
bool padCorners (const Identifier &id, std::array< Amg::Vector2D, 4 > &corners) const
 pad corners More...
 
bool padGlobalCorners (const Identifier &id, std::array< Amg::Vector3D, 4 > &gcorners) const
 pad global corners More...
 
bool isEtaZero (const Identifier &id, const Amg::Vector2D &localPosition) const
 is eta=0 of QL1 or QS1? Support for Strip and Pad cathodes is valid when the Strip, Pad and Wire surfaces have the same dimensions. More...
 
virtual int numberOfLayers (bool) const override final
 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 numberOfPads (const Identifier &layerId) const
 Get the number of pad per layer. More...
 
int maxPadNumber (const Identifier &layerId) const
 Get largest pad number, which is different to the number of pads in a gas volume due to the pad numbering in Athena. More...
 
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...
 
void spacePointPosition (const Amg::Vector2D &phiPos, const Amg::Vector2D &etaPos, Amg::Vector2D &pos) const
 space point position for a pair of phi and eta local positions and a layer identifier The LocalPosition is expressed in the reference frame of the phi projection. More...
 
void spacePointPosition (const Identifier &layerId, double locXpos, double locYpos, Amg::Vector3D &pos) const
 space point position, corrected for chamber deformations (b-lines), if b-lines are enabled. More...
 
Amg::Vector3D localToGlobalCoords (const Amg::Vector3D &locPos, Identifier id) const
 simHit local (SD) To Global position - to be used by MuonGeoAdaprors only
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 channelType) 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
 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 to be used to look up the normal and center in the MuonClusterReadoutElement tracking cache More...
 
virtual bool measuresPhi (const Identifier &id) const override final
 returns whether the current identifier corresponds to a phi measurement More...
 
void initDesign (double thickness)
 initialize the design classes for this readout element More...
 
const MuonChannelDesigngetDesign (const Identifier &id) const
 returns the MuonChannelDesign class for the given identifier More...
 
const MuonChannelDesigngetDesign (int gasGap, int channelType) const
 returns the MuonChannelDesign class
More...
 
const MuonPadDesigngetPadDesign (const Identifier &id) const
 returns the MuonChannelDesign class for the given identifier More...
 
MuonPadDesigngetPadDesign (const Identifier &id)
 
const MuonPadDesigngetPadDesign (int gasGap) const
 returns the MuonChannelDesign 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 ()
 
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...
 

Static Public Member Functions

static double triggerBandIdToRadius (bool isLarge, int triggerBand)
 

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 Member Functions

void initDesignFromSQLite (double thickness)
 
void initDesignFromAGDD (double thickness)
 
void setIndexOfREinMuonStation ()
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

const sTgcIdHelperm_idHelper {idHelperSvc()->stgcIdHelper()}
 
std::array< MuonChannelDesign, 4 > m_phiDesign {}
 
std::array< MuonChannelDesign, 4 > m_etaDesign {}
 
std::array< MuonPadDesign, 4 > m_padDesign {}
 
int m_ml {0}
 
double m_offset {0.}
 
bool m_diamondShape {false}
 
const ALineParm_ALinePar {nullptr}
 
const BLineParm_BLinePar {nullptr}
 
Amg::Transform3D m_delta {Amg::Transform3D::Identity()}
 
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 int m_nlayers {4}
 
static constexpr std::array< double, 94 > LBANDIDSP
 
static constexpr std::array< double, 92 > SBANDIDSP
 

Friends

class MuonGMR4::ReadoutGeomCnvAlg
 

Detailed Description

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

Definition at line 30 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

Constructor & Destructor Documentation

◆ sTgcReadoutElement()

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

constructor

Definition at line 61 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

63  , m_ml(mL) {
64 
65  std::string fixName = (stName[1] == 'L') ? "STL" : "STS";
66  Identifier id = mgr->stgcIdHelper()->channelID(fixName, zi, fi, mL, 1,
67  sTgcIdHelper::sTgcChannelTypes::Strip, 1);
68 
69  setStationName(fixName);
70  setChamberLayer(mL);
71  setIdentifier(id); // representative identifier, with stName, stEta, stPhi, mL
72  }

◆ ~sTgcReadoutElement()

MuonGM::sTgcReadoutElement::~sTgcReadoutElement ( )
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::sTgcReadoutElement::AmdbLRSToGlobalCoords ( const Amg::Vector3D x) const
inlinefinaloverridevirtual

◆ AmdbLRSToGlobalTransform()

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

◆ boundaryHash()

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

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

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

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 269 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

269  {
270  int iphi = m_idHelper.channelType(id) != sTgcIdHelper::sTgcChannelTypes::Strip; // wires and pads have locX oriented along phi
271  if (std::abs(getStationEta()) < 3) iphi += 2 * (m_idHelper.gasGap(id) - 1);
272  return iphi;
273  }

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

◆ channelPitch()

double MuonGM::sTgcReadoutElement::channelPitch ( const Identifier id) const

Channel pitch.

Gives full pitch for strips, width of a full wire group Gives the Height of a pad

Definition at line 589 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

589  {
590  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) {
591  const MuonPadDesign* design = getPadDesign(id);
592  if (!design) {
593  ATH_MSG_WARNING( "no pad Design" );
594  return -1;
595  }
596  return design->channelWidth(Amg::Vector2D::Zero(), 0);
597  }
598 
599  const MuonChannelDesign* design = getDesign(id);
600  if (!design) return -1;
601  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Strip) // sTGC strips
602  return design->inputPitch;
603  else if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) // sTGC wires
604  return design->inputPitch * design->groupWidth; // wire Pitch * number of wires in a group
605  else
606  return -1;
607  }

◆ clearALinePar()

void MuonGM::sTgcReadoutElement::clearALinePar ( )

Definition at line 745 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

745  {
746  if (has_ALines()) {
747  m_ALinePar = nullptr;
748  m_delta = Amg::Transform3D::Identity();
749  refreshCache();
750  }
751  }

◆ clearBLinePar()

void MuonGM::sTgcReadoutElement::clearBLinePar ( )
inline

◆ 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::sTgcReadoutElement::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 567 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

567  {
568  if (m_idHelper.stationEta(id) != getStationEta()) return false;
569  if (m_idHelper.stationPhi(id) != getStationPhi()) return false;
570 
571  if (m_idHelper.multilayerID(id) != m_ml) return false;
572 
573  int gasgap = m_idHelper.gasGap(id);
574  if (gasgap < 1 || gasgap > m_nlayers) return false;
575 
576  int strip = m_idHelper.channel(id);
577  if (strip < 1) return false;
578  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Strip && strip > m_etaDesign[gasgap - 1].nch) return false;
579  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire && strip > m_phiDesign[gasgap -1].nGroups) return false;
580  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) {
581  const auto [etaId, phiId] = m_padDesign[gasgap -1].etaPhiId(strip);
582  if (etaId < 0 || phiId < 0) return false;
583  }
584  return true;
585  }

◆ 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::sTgcReadoutElement::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 303 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

303  {
304  const MuonChannelDesign* design = getDesign(id);
305  if (!design) return -10000.;
306  return design->distanceToReadout(pos);
307  }

◆ fillCache()

void MuonGM::sTgcReadoutElement::fillCache ( )
finaloverridevirtual

function to fill tracking cache

Implements MuonGM::MuonReadoutElement.

Definition at line 466 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

466  {
467 
468  if (m_surfaceData) {
469  ATH_MSG_WARNING("calling fillCache on an already filled cache" );
470  return;
471  }
472 
473  m_surfaceData = std::make_unique<SurfaceData>();
474 
475  for (int layer{0}; layer < m_nlayers; ++layer) {
476 
477  // Define the geometry for the strips, pads and wires of this readout element.
478  // For QL3 (cutoff trapezoid), diamondBounds are used, while trapezoid bounds are used for the rest.
479  // The assigned coordinate along the layer normal is at the center of the gas gap;
480  // wires are considered at x=0, while strips and pads are shifted by +10/-10 microns.
481 
482  //-------------------
483  // Layer boundaries
484  //-------------------
485 
486  if (m_diamondShape) {
487  m_surfaceData->m_surfBounds.push_back(std::make_unique<Trk::RotatedDiamondBounds>(m_etaDesign[layer].minYSize() / 2.,
488  m_etaDesign[layer].maxYSize() / 2.,
489  m_etaDesign[layer].maxYSize() / 2.,
490  m_etaDesign[layer].xSize() / 2. - m_etaDesign[layer].yCutout() / 2,
491  m_etaDesign[layer].yCutout() / 2)); // strips
492 
493  m_surfaceData->m_surfBounds.push_back(std::make_unique<Trk::DiamondBounds>(m_padDesign[layer].sPadWidth / 2.,
494  m_padDesign[layer].lPadWidth / 2.,
495  m_padDesign[layer].lPadWidth / 2.,
496  m_padDesign[layer].Size / 2. - m_padDesign[layer].yCutout / 2, m_padDesign[layer].yCutout / 2)); // pad and wires
497 
498  } else {
499  m_surfaceData->m_surfBounds.push_back(std::make_unique<Trk::RotatedTrapezoidBounds>(m_etaDesign[layer].xSize() / 2.,
500  m_etaDesign[layer].minYSize() / 2.,
501  m_etaDesign[layer].maxYSize() / 2.)); // strips
502 
503  m_surfaceData->m_surfBounds.push_back(std::make_unique<Trk::TrapezoidBounds>(m_padDesign[layer].sPadWidth /2.,
504  m_padDesign[layer].lPadWidth / 2.,
505  m_padDesign[layer].Size / 2.));
506 
507 
508  }
509 
510  //-------------------
511  // Wires
512  //-------------------
513 
514  // identifier of the first channel - wire plane - locX along phi, locY max->min R
516 
517  m_surfaceData->m_layerSurfaces.push_back(std::make_unique<Trk::PlaneSurface>(*this, id));
518  m_surfaceData->m_layerTransforms.push_back(
519  absTransform() // transformation from chamber to ATLAS frame
520  * m_delta // transformations from the alignment group
521  * m_Xlg[layer] // x-shift of the gas-gap center w.r.t. quadruplet center
522  * Amg::getTranslateZ3D(m_offset) // z-shift to volume center (after m_delta!)
523  * Amg::getRotateY3D(-90 * CLHEP::deg) // x<->z because of GeoTrd definition
524  * Amg::getRotateZ3D(-90 * CLHEP::deg)); // x<->y for wires
525 
526  m_surfaceData->m_layerCenters.emplace_back(m_surfaceData->m_layerTransforms.back().translation());
527  m_surfaceData->m_layerNormals.emplace_back(m_surfaceData->m_layerTransforms.back().linear() * Amg::Vector3D(0., 0., -1.));
528 
529  //-------------------
530  // Strips
531  //-------------------
532 
533  const double shift{layer%2 == 0 ? 0.01 : -0.01}; // 1st layer gets +0.01; layer numbering starts from 0 here!
534 
535  // identifier of the first channel - strip plane
537 
538  m_surfaceData->m_layerSurfaces.push_back(std::make_unique<Trk::PlaneSurface>(*this, id));
539 
540  m_surfaceData->m_layerTransforms.push_back(absTransform() * m_delta * m_Xlg[layer] *Amg::Translation3D(shift, 0., m_offset)
541  *Amg::getRotateY3D(-90 * CLHEP::deg)); // x<->z because of GeoTrd definition
542 
543  m_surfaceData->m_layerCenters.emplace_back(m_surfaceData->m_layerTransforms.back().translation());
544  m_surfaceData->m_layerNormals.emplace_back(m_surfaceData->m_layerTransforms.back().linear() * Amg::Vector3D(0., 0., -1.));
545 
546  //-------------------
547  // Trigger Pads
548  //-------------------
549 
550  // identifier of the first channel - pad plane
552 
553  m_surfaceData->m_layerSurfaces.push_back(std::make_unique<Trk::PlaneSurface>(*this, id));
554 
555  m_surfaceData->m_layerTransforms.push_back(absTransform() * m_delta * m_Xlg[layer] *
556  Amg::getTranslate3D(-shift, 0., m_offset)
557  * Amg::getRotateY3D(-90 * CLHEP::deg) // x<->z because of GeoTrd definition
558  * Amg::getRotateZ3D(-90 * CLHEP::deg)); // x<->y for pads
559 
560  m_surfaceData->m_layerCenters.emplace_back(m_surfaceData->m_layerTransforms.back().translation());
561  m_surfaceData->m_layerNormals.emplace_back(m_surfaceData->m_layerTransforms.back().linear() * Amg::Vector3D(0., 0., -1.));
562  }
563  }

◆ getALinePar()

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

◆ getBLinePar()

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

◆ getDelta()

const Amg::Transform3D& MuonGM::sTgcReadoutElement::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 182 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

182 { return m_delta; }

◆ getDesign() [1/2]

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

returns the MuonChannelDesign class for the given identifier

Definition at line 279 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

279  {
280  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Strip) return &(m_etaDesign[m_idHelper.gasGap(id) - 1]);
281  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) return &(m_phiDesign[m_idHelper.gasGap(id) - 1]);
282  return nullptr;
283  }

◆ getDesign() [2/2]

const MuonChannelDesign * MuonGM::sTgcReadoutElement::getDesign ( int  gasGap,
int  channelType 
) const
inline

returns the MuonChannelDesign class

Definition at line 295 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

295  {
296  if (channelType == 1) return &(m_etaDesign[gasGap - 1]);
297  if (channelType == 2) return &(m_phiDesign[gasGap - 1]);
298  return 0;
299  }

◆ 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

◆ getPadDesign() [1/3]

MuonPadDesign * MuonGM::sTgcReadoutElement::getPadDesign ( const Identifier id)
inline

Definition at line 290 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

290  {
291  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) return &(m_padDesign[m_idHelper.gasGap(id) - 1]);
292  return nullptr;
293  }

◆ getPadDesign() [2/3]

const MuonPadDesign * MuonGM::sTgcReadoutElement::getPadDesign ( const Identifier id) const
inline

returns the MuonChannelDesign class for the given identifier

Definition at line 285 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

285  {
286  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) return &(m_padDesign[m_idHelper.gasGap(id) - 1]);
287  return nullptr;
288  }

◆ getPadDesign() [3/3]

const MuonPadDesign * MuonGM::sTgcReadoutElement::getPadDesign ( int  gasGap) const
inline

◆ 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::sTgcReadoutElement::GlobalToAmdbLRSCoords ( const Amg::Vector3D x) const
inlinefinaloverridevirtual

◆ GlobalToAmdbLRSTransform()

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

◆ has_ALines()

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

Definition at line 191 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

191 { return (m_ALinePar != nullptr); }

◆ has_BLines()

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

Definition at line 192 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

192 { 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::sTgcReadoutElement::initDesign ( double  thickness)

initialize the design classes for this readout element

Definition at line 454 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

454  {
455 
456 
457 
458  SmartIF<IGeoDbTagSvc> geoDbTag{Gaudi::svcLocator()->service("GeoDbTagSvc")};
459  if (!geoDbTag) THROW_EXCEPTION_RE( "Could not locate GeoDbTagSvc" );
460  if (geoDbTag->getSqliteReader()) initDesignFromSQLite(thickness);
461  else initDesignFromAGDD(thickness);
462 
463  }

◆ initDesignFromAGDD()

void MuonGM::sTgcReadoutElement::initDesignFromAGDD ( double  thickness)
private

Definition at line 280 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

280  {
281 
282  if (manager()->MinimalGeoFlag() == 0) {
283  PVConstLink pvc {getMaterialGeom()};
284  unsigned int nchildvol = pvc->getNChildVols();
285  int llay = 0;
286  std::string::size_type npos;
287  for (unsigned ich = 0; ich < nchildvol; ++ich) {
288  PVConstLink pc = pvc->getChildVol(ich);
289  std::string childname = (pc->getLogVol())->getName();
290 
291  ATH_MSG_DEBUG("Volume Type: " << pc->getLogVol()->getShape()->type());
292  if ((npos = childname.find("Sensitive")) == std::string::npos) {
293  continue;
294  }
295  ++llay;
296  if (llay > 4) {
297  ATH_MSG_DEBUG("number of sTGC layers > 4: increase transform array size");
298  continue;
299  }
300  m_Xlg[llay - 1] = pvc->getXToChildVol(ich);
301  }
302  assert(m_nlayers == llay);
303  }
304  char sector_l = getStationName().substr(2, 1) == "L" ? 'L' : 'S';
305  int stEta = std::abs(getStationEta());
306  int Etasign = getStationEta() / stEta;
307  std::string side = (Etasign > 0) ? "A" : "C";
308  m_diamondShape = sector_l == 'L' && stEta == 3;
309 
310  ATH_MSG_DEBUG("station name" << getStationName());
311 
312  sTGCDetectorHelper aHelper;
313  sTGCDetectorDescription* stgc = aHelper.Get_sTGCDetector(sector_l, stEta, getStationPhi(), m_ml, side.back());
314 
315  ATH_MSG_DEBUG( "Found sTGC Detector " << stgc->GetName() );
316 
317  MuonGM::sTGC_Technology *tech = stgc->GetTechnology();
318  if (!tech) THROW_EXCEPTION_RE(" Failed To get Technology for stgc element:"<< stgc->GetName());
319 
320 
321  // Get Chamber length, width and frame widths
322  setSsize(stgc->sWidth()); // bottom base length (full chamber)
323  setLongSsize(stgc->lWidth()); // top base length (full chamber)
324  setRsize(stgc->Length()); // height of the trapezoid (full chamber)
325  setZsize(stgc->Tck()); // thickness (full chamber)
326  double ysFrame = stgc->ysFrame(); // Frame thickness on short parallel edge
327  double ylFrame = stgc->ylFrame(); // Frame thickness on long parallel edge
328  double xFrame = stgc->xFrame(); // Frame thickness of non parallel edges
329  double yCutout = stgc->yCutoutCathode(); // y of cutout of trapezoid (only in outermost detectors)
331 
332 
333  // Radial shift of the local frame origin w.r.t. the center of the quadruplet.
334  // For diamond shape (QL3) the origin is on the cutout base. For the rest, the it is at the center
335  // of the active area, therefore the shift is half the difference of the top and bottom frame widths.
336  m_offset = (m_diamondShape) ? 0.5*getRsize() - (yCutout + ylFrame) : -0.5*(ylFrame - ysFrame);
337 
338  //-------------------
339  // Strips
340  //-------------------
341  for (int il = 0; il < m_nlayers; il++) {
342  // identifier of the first channel - strip plane - to retrieve max number of strips
345  if (yCutout == 0.) {
346  m_etaDesign[il].defineTrapezoid(0.5 * roParam.sStripWidth,
347  0.5 * roParam.lStripWidth,
348  0.5 * (getRsize() - ysFrame - ylFrame));
349  } else {
350  m_etaDesign[il].defineDiamond(0.5 * roParam.sStripWidth,
351  0.5 * roParam.lStripWidth,
352  0.5 * (getRsize() - ysFrame - ylFrame), yCutout);
353  }
354  m_etaDesign[il].inputPitch = stgc->stripPitch();
355  m_etaDesign[il].inputWidth = stgc->stripWidth();
356  m_etaDesign[il].thickness = tech->gasThickness;
357  m_etaDesign[il].firstPitch = roParam.firstStripWidth[il];
358  m_etaDesign[il].setFirstPos((m_diamondShape) ? -(m_etaDesign[il].xSize()- yCutout) + m_etaDesign[il].firstPitch
359  : -0.5 * m_etaDesign[il].xSize()+ m_etaDesign[il].firstPitch);
360  m_etaDesign[il].nch = roParam.nStrips;
361 
362  ATH_MSG_DEBUG("initDesign:" << getStationName() << " layer " << il
363  << ", strip pitch " << m_etaDesign[il].inputPitch
364  << ", nstrips " << m_etaDesign[il].nch
365  << ", firstPos: " << m_etaDesign[il].firstPos() );
366  }
367 
368  //-------------------
369  // Wires
370  //-------------------
371  for (int il = 0; il < m_nlayers; il++) {
374  if (yCutout == 0.) {
375  m_phiDesign[il].defineTrapezoid(0.5 * roParam.sPadWidth,
376  0.5 * roParam.lPadWidth,
377  0.5 * (getRsize() - ysFrame - ylFrame) );
378  } else {
379  m_phiDesign[il].defineDiamond(0.5 * roParam.sPadWidth,
380  0.5 * roParam.lPadWidth,
381  0.5 * (getRsize() - ysFrame - ylFrame), yCutout);
382  }
383  m_phiDesign[il].inputPitch = stgc->wirePitch();
384  m_phiDesign[il].inputWidth = 0.015;
385  m_phiDesign[il].thickness = getZsize();
386  m_phiDesign[il].setFirstPos(roParam.firstWire[il]); // Position of 1st wire, accounts for staggering
387  m_phiDesign[il].firstPitch = roParam.firstWireGroup[il]; // Number of Wires in 1st group, group staggering
388  m_phiDesign[il].groupWidth = roParam.wireGroupWidth; // Number of Wires normal group
389  m_phiDesign[il].nGroups = roParam.nWireGroups[il]; // Number of Wire Groups
390  m_phiDesign[il].wireCutout = roParam.wireCutout[il]; // Size of "active" wire region for digits
391  m_phiDesign[il].nch = roParam.nWires[il];
392 
393  ATH_MSG_DEBUG( "initDesign:" << getStationName() << " layer " << il << ", wireGang pitch "
394  << m_phiDesign[il].inputPitch << ", nWireGangs " << m_phiDesign[il].nch );
395  }
396 
397  //-------------------
398  // Pads
399  //-------------------
400  double radius = absTransform().translation().perp() + m_offset;
401  for (int il = 0; il < m_nlayers; il++) {
402  m_padDesign[il].Length = getRsize();
403  m_padDesign[il].sWidth = getSsize();
404  m_padDesign[il].lWidth = getLongSsize();
405  m_padDesign[il].Size = getRsize() - ylFrame - ysFrame;
406  m_padDesign[il].xFrame = xFrame;
407  m_padDesign[il].ysFrame = ysFrame;
408  m_padDesign[il].ylFrame = ylFrame;
409  m_padDesign[il].yCutout = yCutout;
410  m_padDesign[il].etasign = Etasign;
411  m_padDesign[il].setR(radius);
412  m_padDesign[il].sPadWidth = roParam.sPadWidth;
413  m_padDesign[il].lPadWidth = roParam.lPadWidth;
414  m_padDesign[il].nPadColumns = roParam.nPadPhi[il];
415 
416  // The C side of the NSW is mirrored instead of rotated
417  // We should be using the same values for the pads for both A and C
418  // It is easier for us to simply read the same correct value once
419  // whereas changing the XML and the reading functions will make this incompatible with past versions
420  // Alexandre Laurier 12 Sept 2018
421  m_padDesign[il].firstPhiPos = roParam.firstPadPhiDivision_A[il];
422  m_padDesign[il].inputPhiPitch = roParam.anglePadPhi; // stEta<2 ? PAD_PHI_DIVISION/PAD_PHI_SUBDIVISION : PAD_PHI_DIVISION ;
423  m_padDesign[il].PadPhiShift = roParam.PadPhiShift_A[il];
424  m_padDesign[il].padEtaMin = roParam.firstPadRow[il]; // FIRST_PAD_ROW_DIVISION[2*sector+(m_ml-1)][stEta-1][il];
425  m_padDesign[il].nPadH = roParam.nPadH[il];
426  m_padDesign[il].padEtaMax = m_padDesign[il].padEtaMin + roParam.nPadH[il]; // PAD_ROWS[2*sector+(m_ml-1)][stEta-1][il];
427  m_padDesign[il].firstRowPos = roParam.firstPadH[il]; // H_PAD_ROW_0[2*sector+(m_ml-1)][il];
428  m_padDesign[il].inputRowPitch = roParam.padH[il]; // PAD_HEIGHT[2*sector+(m_ml-1)][il];
429 
430  if (sector_l == 'L') {
431  m_padDesign[il].isLargeSector = 1;
432  m_padDesign[il].sectorOpeningAngle = m_padDesign[il].largeSectorOpeningAngle;
433  } else {
434  m_padDesign[il].isLargeSector = 0;
435  m_padDesign[il].sectorOpeningAngle = m_padDesign[il].smallSectorOpeningAngle;
436  }
437 
438  m_padDesign[il].thickness = thickness;
439 
440  ATH_MSG_DEBUG( "initDesign: " << idHelperSvc()->toStringDetEl(identify())
441  << " layer " << il<< ", pad phi angular width "
442  << m_padDesign[il].inputPhiPitch << ", eta pad size " << m_padDesign[il].inputRowPitch
443  << " Length: " << m_padDesign[il].Length << " sWidth: " << m_padDesign[il].sWidth
444  << " lWidth: " << m_padDesign[il].lWidth << " firstPhiPos:" << m_padDesign[il].firstPhiPos
445  << " padEtaMin:" << m_padDesign[il].padEtaMin << " padEtaMax:" << m_padDesign[il].padEtaMax
446  << " firstRowPos:" << m_padDesign[il].firstRowPos << " inputRowPitch:" << m_padDesign[il].inputRowPitch
447  << " thickness:" << m_padDesign[il].thickness << " sPadWidth: " << m_padDesign[il].sPadWidth
448  << " lPadWidth: " << m_padDesign[il].lPadWidth << " xFrame: " << m_padDesign[il].xFrame
449  << " ysFrame: " << m_padDesign[il].ysFrame << " ylFrame: " << m_padDesign[il].ylFrame
450  << " yCutout: " << m_padDesign[il].yCutout );
451  }
452  }

◆ initDesignFromSQLite()

void MuonGM::sTgcReadoutElement::initDesignFromSQLite ( double  thickness)
private

Definition at line 79 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

79  {
80 
81  PVConstLink pvc {getMaterialGeom()};
82  auto sensitiveVol = getAllSubVolumes(pvc,[](const GeoChildNodeWithTrf& node){
83  return node.nodeName.find("Gas") != std::string::npos;
84  });
85  assert(sensitiveVol.size() == m_nlayers);
86  for (unsigned int llay = 0; llay< sensitiveVol.size(); ++llay) {
87  m_Xlg[llay] = sensitiveVol[llay].transform;
88  }
89 
90  SmartIF<IGeoDbTagSvc> geoDbTag{Gaudi::svcLocator()->service("GeoDbTagSvc")};
91  SmartIF<IRDBAccessSvc> accessSvc{Gaudi::svcLocator()->service(geoDbTag->getParamSvcName())};
92 
93  IRDBRecordset_ptr nswdimRec = accessSvc->getRecordsetPtr("NSWDIM","","");
94  IRDBRecordset_ptr wstgcRec = accessSvc->getRecordsetPtr("WSTGC","","");
95  IRDBRecordset_ptr nswPars = accessSvc->getRecordsetPtr("NSWPARS","","");
96 
97  PVConstLink parent = getMaterialGeom()->getParent();
98  unsigned int index=parent->indexOf(getMaterialGeom()).value();
99  std::string pVName=parent->getNameOfChildVol(index);
100  float yCutoutCathode(0);
101  if (nswPars->size()==0) {
102  THROW_EXCEPTION_RE("Error, cannot access NSWPARS record!");
103  } else {
104  yCutoutCathode=(*nswPars)[0]->getFloat("NSW_sTGC_yCutoutCathode");
105  }
106 
107  for (size_t w=0;w<nswdimRec->size();w++) {
108  const IRDBRecord *nswdim = (*nswdimRec)[w];
109  const std::string type = nswdim->getString("NSW_TYPE").substr(5,4);
110  std::string logVolSubName=getMaterialGeom()->getLogVol()->getName().substr(7,4);
111  if (type==logVolSubName) {
112  setSsize(nswdim->getDouble("BASE_WIDTH")); // bottom base length (full chamber)
113  setLongSsize(nswdim->getDouble("TOP_WIDTH")); // top base length (full chamber)
114  setRsize(nswdim->getDouble("LENGTH")); // height of the trapezoid (full chamber)
115  break;
116  }
117  }
118 
119  for (unsigned int ind = 0; ind < wstgcRec->size(); ind++) {
120  std::string WSTGC_TYPE = (*wstgcRec)[ind]->getString("WSTGC_TYPE");
121 
122  if (getStationName()[2] != WSTGC_TYPE[6]) continue;
123  if (std::abs(getStationEta())!=(int) (WSTGC_TYPE[7]-'0')) continue;
124  if (getStationName()[2] == 'S' && WSTGC_TYPE[8] != (m_ml ==2 ?'P' : 'C')) continue;
125  if (getStationName()[2] == 'L' && WSTGC_TYPE[8] != (m_ml ==2 ?'C' : 'P')) continue;
126 
127  const double gasTck = (*wstgcRec)[ind]->getDouble("gasTck");
128  const double Tck = (*wstgcRec)[ind]->getDouble("Tck");
129  const double xFrame = (*wstgcRec)[ind]->getDouble("xFrame");
130  const double ylFrame = (*wstgcRec)[ind]->getDouble("ylFrame");
131  const double ysFrame = (*wstgcRec)[ind]->getDouble("ysFrame");
132  const double wirePitch = (*wstgcRec)[ind]->getDouble("wirePitch");
133  const double stripPitch = (*wstgcRec)[ind]->getDouble("stripPitch");
134  const double stripWidth = (*wstgcRec)[ind]->getDouble("stripWidth");
135  const double sPadWidth = (*wstgcRec)[ind]->getDouble("sPadWidth");
136  const double lPadWidth = (*wstgcRec)[ind]->getDouble("lPadWidth");
137  const double anglePadPhi = (*wstgcRec)[ind]->getDouble("anglePadPhi");
138  const double sStripWidth = (*wstgcRec)[ind]->getDouble("sStripWidth");
139  const double lStripWidth = (*wstgcRec)[ind]->getDouble("lStripWidth");
140  const int wireGroupWidth = (*wstgcRec)[ind]->getInt("wireGroupWidth");
141  const int nStrips = (*wstgcRec)[ind]->getInt("nStrips");
142  const std::vector<double> padH = tokenizeDouble((*wstgcRec)[ind]->getString("padH"),";");
143  const std::vector<int> nPadPhi = tokenizeInt((*wstgcRec)[ind]->getString("nPadPhi"),";");
144  const std::vector<double> firstPadPhiDivision_A = tokenizeDouble((*wstgcRec)[ind]->getString("firstPadPhiDivision_A"),";");
145  const std::vector<double> PadPhiShift_A = tokenizeDouble((*wstgcRec)[ind]->getString("PadPhiShift_A"),";");
146  const std::vector<int> nPadH = tokenizeInt((*wstgcRec)[ind]->getString("nPadH"),";");
147  const std::vector<double> firstPadH = tokenizeDouble((*wstgcRec)[ind]->getString("firstPadH"),";");
148  const std::vector<double> firstPadRow = tokenizeDouble((*wstgcRec)[ind]->getString("firstPadRow"),";");
149  const std::vector<double> wireCutout = tokenizeDouble((*wstgcRec)[ind]->getString("wireCutout"),";");
150  const std::vector<int> nWires = tokenizeInt((*wstgcRec)[ind]->getString("nWires"),";");
151  const std::vector<int> firstWire = tokenizeInt((*wstgcRec)[ind]->getString("firstWire"),";");
152  const std::vector<double> firstStripWidth = tokenizeDouble((*wstgcRec)[ind]->getString("firstStripWidth"),";");
153  const std::vector<int> nWireGroups = tokenizeInt((*wstgcRec)[ind]->getString("nWireGroups"),";");
154  const std::vector<double> firstWireGroup = tokenizeDouble((*wstgcRec)[ind]->getString("firstWireGroup"),";");
155 
156  char sector_l = getStationName()[2];
157  int stEta = std::abs(getStationEta());
158  int Etasign = getStationEta() / stEta;
159  std::string side = (Etasign > 0) ? "A" : "C";
160  m_diamondShape = sector_l == 'L' && stEta == 3;
161 
162 
163  // Get frame widths
164  setZsize(Tck); // thickness (full chamber)
165 
166  double yCutout = m_diamondShape ? yCutoutCathode: 0.0; // y of cutout of trapezoid (only in outermost detectors)
167 
168 
169  // Radial shift of the local frame origin w.r.t. the center of the quadruplet.
170  // For diamond shape (QL3) the origin is on the cutout base. For the rest, the it is at the center
171  // of the active area, therefore the shift is half the difference of the top and bottom frame widths.
172  m_offset = (m_diamondShape) ? 0.5*getRsize() - (yCutout + ylFrame) : -0.5*(ylFrame - ysFrame);
173 
174  //-------------------
175  // Strips
176  //-------------------
177  for (int il = 0; il < m_nlayers; il++) {
180  if (yCutout == 0.) {
181  m_etaDesign[il].defineTrapezoid(0.5 * sStripWidth,
182  0.5 * lStripWidth,
183  0.5 * (getRsize() - ysFrame - ylFrame));
184  } else {
185  m_etaDesign[il].defineDiamond(0.5 * sStripWidth,
186  0.5 * lStripWidth,
187  0.5 * (getRsize() - ysFrame - ylFrame), yCutout);
188  }
189  m_etaDesign[il].inputPitch = stripPitch;
190  m_etaDesign[il].inputWidth = stripWidth;
191  m_etaDesign[il].thickness = gasTck;
192  m_etaDesign[il].firstPitch = firstStripWidth[il];
193  m_etaDesign[il].setFirstPos(m_diamondShape ? -(m_etaDesign[il].xSize()- yCutout) + m_etaDesign[il].firstPitch
194  : -0.5 * m_etaDesign[il].xSize()+ m_etaDesign[il].firstPitch);
195  m_etaDesign[il].nch = nStrips;
196  }
197 
198  //-------------------
199  // Wires
200  //-------------------
201  for (int il = 0; il < m_nlayers; il++) {
204  if (yCutout == 0.) {
205  m_phiDesign[il].defineTrapezoid(0.5 * sPadWidth,
206  0.5 * lPadWidth,
207  0.5 * (getRsize() - ysFrame - ylFrame) );
208  } else {
209  m_phiDesign[il].defineDiamond(0.5 * sPadWidth,
210  0.5 * lPadWidth,
211  0.5 * (getRsize() - ysFrame - ylFrame), yCutout);
212  }
213  m_phiDesign[il].inputPitch = wirePitch;
214  m_phiDesign[il].inputWidth = 0.015;
215  m_phiDesign[il].thickness = getZsize();
216  m_phiDesign[il].setFirstPos(firstWire[il]); // Position of 1st wire, accounts for staggering
217  m_phiDesign[il].firstPitch = firstWireGroup[il]; // Number of Wires in 1st group, group staggering
218  m_phiDesign[il].groupWidth = wireGroupWidth; // Number of Wires normal group
219  m_phiDesign[il].nGroups = nWireGroups[il]; // Number of Wire Groups
220  m_phiDesign[il].wireCutout = wireCutout[il]; // Size of "active" wire region for digits
221  m_phiDesign[il].nch = nWires[il];
222 
223  }
224 
225  //-------------------
226  // Pads
227  //-------------------
228  double radius = absTransform().translation().perp() + m_offset;
229  for (int il = 0; il < m_nlayers; il++) {
230  m_padDesign[il].Length = getRsize();
231  m_padDesign[il].sWidth = getSsize();
232  m_padDesign[il].lWidth = getLongSsize();
233  m_padDesign[il].Size = getRsize() - ylFrame - ysFrame;
234  m_padDesign[il].xFrame = xFrame;
235  m_padDesign[il].ysFrame = ysFrame;
236  m_padDesign[il].ylFrame = ylFrame;
237  m_padDesign[il].yCutout = yCutout;
238  m_padDesign[il].etasign = Etasign;
239  m_padDesign[il].setR(radius);
240  m_padDesign[il].sPadWidth = sPadWidth;
241  m_padDesign[il].lPadWidth = lPadWidth;
242 
243  m_padDesign[il].nPadColumns = nPadPhi[il];
244 
245  // The C side of the NSW is mirrored instead of rotated
246  // We should be using the same values for the pads for both A and C
247  // It is easier for us to simply read the same correct value once
248  // whereas changing the XML and the reading functions will make this incompatible with past versions
249  // Alexandre Laurier 12 Sept 2018
250  m_padDesign[il].firstPhiPos= firstPadPhiDivision_A[il];
251  m_padDesign[il].inputPhiPitch = anglePadPhi; // stEta<2 ? PAD_PHI_DIVISION/PAD_PHI_SUBDIVISION : PAD_PHI_DIVISION ;
252  m_padDesign[il].PadPhiShift= PadPhiShift_A[il];
253  m_padDesign[il].padEtaMin = firstPadRow[il]; // FIRST_PAD_ROW_DIVISION[2*sector+(m_ml-1)][stEta-1][il];
254  m_padDesign[il].nPadH = nPadH[il];
255  m_padDesign[il].padEtaMax = m_padDesign[il].padEtaMin + m_padDesign[il].nPadH; // PAD_ROWS[2*sector+(m_ml-1)][stEta-1][il];
256  m_padDesign[il].firstRowPos = firstPadH[il]; // H_PAD_ROW_0[2*sector+(m_ml-1)][il];
257  m_padDesign[il].inputRowPitch = padH[il]; // PAD_HEIGHT[2*sector+(m_ml-1)][il];
258 
259  if (sector_l == 'L') {
260  m_padDesign[il].isLargeSector = 1;
261  m_padDesign[il].sectorOpeningAngle = m_padDesign[il].largeSectorOpeningAngle;
262  } else {
263  m_padDesign[il].isLargeSector = 0;
264  m_padDesign[il].sectorOpeningAngle = m_padDesign[il].smallSectorOpeningAngle;
265  }
266  m_padDesign[il].thickness = thickness;
267  ATH_MSG_DEBUG("initDesign: " << idHelperSvc()->toStringDetEl(identify()) << " layer " << il << ", pad phi angular width "
268  << m_padDesign[il].inputPhiPitch << ", eta pad size " << m_padDesign[il].inputRowPitch
269  << " Length: " << m_padDesign[il].Length << " sWidth: " << m_padDesign[il].sWidth
270  << " lWidth: " << m_padDesign[il].lWidth << " firstPhiPos:" << m_padDesign[il].firstPhiPos
271  << " padEtaMin:" << m_padDesign[il].padEtaMin << " padEtaMax:" << m_padDesign[il].padEtaMax
272  << " firstRowPos:" << m_padDesign[il].firstRowPos << " inputRowPitch:" << m_padDesign[il].inputRowPitch
273  << " thickness:" << m_padDesign[il].thickness << " sPadWidth: " << m_padDesign[il].sPadWidth
274  << " lPadWidth: " << m_padDesign[il].lPadWidth << " xFrame: " << m_padDesign[il].xFrame
275  << " ysFrame: " << m_padDesign[il].ysFrame << " ylFrame: " << m_padDesign[il].ylFrame
276  << " yCutout: " << m_padDesign[il].yCutout );
277  }
278  }
279  }

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

◆ isEtaZero()

bool MuonGM::sTgcReadoutElement::isEtaZero ( const Identifier id,
const Amg::Vector2D localPosition 
) const
inline

is eta=0 of QL1 or QS1? Support for Strip and Pad cathodes is valid when the Strip, Pad and Wire surfaces have the same dimensions.

Definition at line 382 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

382  {
383  // False if not a QL1 or QS1 quadruplet
384  if (std::abs(m_idHelper.stationEta(id)) != 1) return false;
385  const MuonChannelDesign* wireDesign = (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) ?
386  getDesign(id) :
389  m_idHelper.gasGap(id),
390  sTgcIdHelper::sTgcChannelTypes::Wire,
391  1));
392  if (!wireDesign) {
393  ATH_MSG_WARNING("Cannot determine whether the pos "<<Amg::toString(localPosition)<<" is etaZero() for "
394  <<idHelperSvc()->toString(id));
395  return false;
396  }
397 
398  // Require the x coordinate for strips, and the y coordinate for wires and pads
399  double lpos = (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Strip) ?
400  localPosition.x() : localPosition.y();
401  if (lpos < 0.5 * wireDesign->xSize() - wireDesign->wireCutout) return true;
402 
403  return false;
404  }

◆ 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()

int MuonGM::sTgcReadoutElement::layerHash ( const Identifier id) const
inlineoverridevirtual

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

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 265 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

265  {
266  return surfaceHash(id); // don't have a choice here : rewrite MuonClusterReadoutElement first
267  }

◆ localToGlobalCoords()

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

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

Definition at line 708 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

708  {
709  int gg = m_idHelper.gasGap(id);
710  int channelType = m_idHelper.channelType(id);
711 
712  // The assigned coordinate along the layer normal is at the center of the gas gap;
713  // wires are considered at x=0, while:
714  // for layers 1, 3 strips (pads) are shifted by +10 (-10) microns
715  // for layers 2, 4 strips (pads) are shifted by -10 (+10) microns
716  double shift{0.};
717  if (channelType != 2) shift = ((gg % 2) ^ (channelType==0)) ? 0.01 : -0.01;
718  const Amg::Vector3D locPos_ML = m_Xlg[gg - 1] * Amg::getTranslate3D(shift, 0., m_offset) * locPos;
719 
720  ATH_MSG_DEBUG( "position coordinates in the gas-gap r.f.: " << Amg::toString(locPos) );
721  ATH_MSG_DEBUG( "position coordinates in the multilayer r.f.: " << Amg::toString(locPos_ML) );
722  return absTransform() * m_delta * locPos_ML;
723  }

◆ manager()

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

◆ maxPadNumber()

int MuonGM::sTgcReadoutElement::maxPadNumber ( const Identifier layerId) const
inline

Get largest pad number, which is different to the number of pads in a gas volume due to the pad numbering in Athena.

Definition at line 427 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

427  {
428  const MuonPadDesign* design = getPadDesign(layerId);
429  if (!design) {
430  ATH_MSG_WARNING("no pad design found when trying to get the largest pad number "<<idHelperSvc()->toString(layerId));
431  return 0;
432  }
433  return (design->nPadColumns - 1) * m_idHelper.padEtaMax() + design->nPadH;
434  }

◆ measuresPhi()

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

returns whether the current identifier corresponds to a phi measurement

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 275 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

275  {
276  return (m_idHelper.channelType(id) != sTgcIdHelper::sTgcChannelTypes::Strip);
277  }

◆ 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::sTgcReadoutElement::numberOfLayers ( bool  ) const
inlinefinaloverridevirtual

number of layers in phi/eta projection

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 406 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

406 { return m_nlayers; }

◆ numberOfPads()

int MuonGM::sTgcReadoutElement::numberOfPads ( const Identifier layerId) const
inline

Get the number of pad per layer.

Definition at line 418 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

418  {
419  const MuonPadDesign* design = getPadDesign(layerId);
420  if (!design) {
421  ATH_MSG_WARNING("no pad design found when trying to get the number of pads "<<idHelperSvc()->toString(layerId));
422  return 0;
423  }
424  return design->nPadColumns * design->nPadH;
425  }

◆ numberOfStrips() [1/2]

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

number of strips per layer

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 408 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

408  {
409  return numberOfStrips(m_idHelper.gasGap(layerId) - 1,
410  m_idHelper.channelType(layerId) == sTgcIdHelper::sTgcChannelTypes::Wire);
411  }

◆ numberOfStrips() [2/2]

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

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 413 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

413  {
414  if (lay > -1 && lay < m_nlayers) { return !measPhi ? m_etaDesign[lay].nch : m_phiDesign[lay].nGroups; }
415  return -1;
416  }

◆ numberOfWires()

int MuonGM::sTgcReadoutElement::numberOfWires ( const Identifier id) const

Get the total number of wires (single wires) of a chamber.

Definition at line 691 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

691  {
692  int nWires = -1;
693  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) {
694  const MuonChannelDesign* design = getDesign(id);
695  if (!design) {
696  ATH_MSG_WARNING( "no wire design when trying to get the total number of wires" );
697  return nWires;
698  }
699  nWires = design->nch;
700  } else {
701  ATH_MSG_WARNING( "attempt to retrieve the number of wires with a wrong identifier" );
702  }
703  return nWires;
704  }

◆ padCorners()

bool MuonGM::sTgcReadoutElement::padCorners ( const Identifier id,
std::array< Amg::Vector2D, 4 > &  corners 
) const
inline

pad corners

Definition at line 358 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

358  {
359  const MuonPadDesign* design = getPadDesign(id);
360  if (!design) {
361  ATH_MSG_WARNING("Cannot find the pad corners for "<<idHelperSvc()->toString(id));
362  return false;
363  }
364  int padEta = m_idHelper.padEta(id);
365  int padPhi = m_idHelper.padPhi(id);
366 
367  return design->channelCorners(std::make_pair(padEta, padPhi), corners);
368  }

◆ padGlobalCorners()

bool MuonGM::sTgcReadoutElement::padGlobalCorners ( const Identifier id,
std::array< Amg::Vector3D, 4 > &  gcorners 
) const
inline

pad global corners

Definition at line 370 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

370  {
371  std::array<Amg::Vector2D,4> lcorners{make_array<Amg::Vector2D, 4>(Amg::Vector2D::Zero())};
372  if (!padCorners(id, lcorners)) {
373  return false;
374  }
375  for (size_t c = 0; c < lcorners.size() ; ++c) {
376  surface(id).localToGlobal(lcorners[c], Amg::Vector3D::Zero(), gcorners[c]);
377  }
378  return true;
379  }

◆ padGlobalPosition()

bool MuonGM::sTgcReadoutElement::padGlobalPosition ( const Identifier id,
Amg::Vector3D gpos 
) const
inline

pad global position

Definition at line 351 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

351  {
353  if (!padPosition(id, lpos)) return false;
354  surface(id).localToGlobal(lpos, Amg::Vector3D::Zero(), gpos);
355  return true;
356  }

◆ padNumber()

int MuonGM::sTgcReadoutElement::padNumber ( const Amg::Vector2D pos,
const Identifier id 
) const

pad number corresponding to local position

Definition at line 611 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

611  {
612  const MuonPadDesign* design = getPadDesign(id);
613  if (!design) {
614  ATH_MSG_WARNING( "no pad Design" );
615  return -1;
616  }
617  std::pair<int, int> pad(design->channelNumber(pos));
618  const sTgcIdHelper& id_helper{*manager()->stgcIdHelper()};
619  if (pad.first > 0 && pad.second > 0) {
620 #ifndef NDEBUG
621  bool is_valid {true};
622 #endif
623  const Identifier padID = id_helper.padID(id, id_helper.multilayer(id),
624  id_helper.gasGap(id), sTgcIdHelper::Pad, pad.first, pad.second
625 #ifndef NDEBUG
626  , is_valid
627 #endif
628 
629  );
630  int channel = id_helper.channel(padID);
631  int padEta = id_helper.padEta(padID);
632  int padPhi = id_helper.padPhi(padID);
633  if (
634 #ifndef NDEBUG
635  !is_valid ||
636 #endif
637  padEta != pad.first || padPhi != pad.second) {
638 
639  ATH_MSG_WARNING( " bad pad indices: input " << pad.first << " " << pad.second << " from ID " << padEta << " "
640  << padPhi );
641  return -1;
642  }
643  return channel;
644  }
645 
646  ATH_MSG_WARNING(__LINE__<< " bad channelNumber" <<pad.first<<" "<<pad.second );
647 
648  return -1;
649  }

◆ padPosition()

bool MuonGM::sTgcReadoutElement::padPosition ( const Identifier id,
Amg::Vector2D pos 
) const
inline

pad position

Definition at line 339 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

339  {
340  const MuonPadDesign* design = getPadDesign(id);
341  if (!design){
342  ATH_MSG_WARNING("Cannot determine the pad position for "<<idHelperSvc()->toString(id));
343  return false;
344  }
345  int padEta = m_idHelper.padEta(id);
346  int padPhi = m_idHelper.padPhi(id);
347 
348  return design->channelPosition(std::make_pair(padEta, padPhi), pos);
349  }

◆ 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

◆ positionFirstWire()

double MuonGM::sTgcReadoutElement::positionFirstWire ( const Identifier id) const

Get the local position of the first wire of the chamber corresponding to the identifier.

Definition at line 674 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

674  {
675  double pos_wire = -9999.9;
676  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) {
677  const MuonChannelDesign* design = getDesign(id);
678  if (!design) {
679  ATH_MSG_WARNING( "no wire design when trying to get the 1st wire position" );
680  return pos_wire;
681  }
682  pos_wire = design->firstPos();
683  } else {
684  ATH_MSG_WARNING( "attempt to retrieve the 1st wire position with a wrong identifier" );
685  }
686  return pos_wire;
687  }

◆ posOnDefChamber()

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

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

Definition at line 760 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

760  {
761 
762  // note: amdb frame (s, z, t) = chamber frame (y, z, x)
763  if (!has_BLines()) return;
764 
765  double t0 = locPosML.x();
766  double s0 = locPosML.y();
767  double z0 = locPosML.z();
768  double width = getSsize() + (getLongSsize() - getSsize())*(z0/getRsize() + 0.5); // because z0 is in [-length/2, length/2]
769 
770  double s_rel = s0/(width/2.); // in [-1, 1]
771  double z_rel = z0/(getRsize()/2.); // in [-1, 1]
772  double t_rel = t0/(getZsize()/2.); // in [-1, 1]
773 
774  // b-line parameters
775  using Parameter = BLinePar::Parameter;
776  const double bp = m_BLinePar->getParameter(Parameter::bp);
777  const double bn = m_BLinePar->getParameter(Parameter::bn);
778  const double sp = m_BLinePar->getParameter(Parameter::sp);
779  const double sn = m_BLinePar->getParameter(Parameter::sn);
780  const double tw = m_BLinePar->getParameter(Parameter::tw);
781  const double eg = m_BLinePar->getParameter(Parameter::eg)*1.e-3;
782  const double ep = m_BLinePar->getParameter(Parameter::ep)*1.e-3;
783  const double en = m_BLinePar->getParameter(Parameter::en)*1.e-3;
784 
785  double ds{0.}, dz{0.}, dt{0.};
786 
787  if (bp != 0 || bn != 0)
788  dt += 0.5*(s_rel*s_rel - 1)*((bp + bn) + (bp - bn)*z_rel);
789 
790  if (sp != 0 || sn != 0)
791  dt += 0.5*(z_rel*z_rel - 1)*((sp + sn) + (sp - sn)*s_rel);
792 
793  if (tw != 0) {
794  dt -= tw*s_rel*z_rel;
795  dz += tw*s_rel*t_rel*getZsize()/getRsize();
796  }
797 
798  if (eg != 0) {
799  dt += t0*eg;
800  ds += s0*eg;
801  dz += z0*eg;
802  }
803 
804  if (ep != 0 || en != 0) {
805  // the formulas below differ from those in Christoph's talk
806  // because are origin for NSW is at the center of the chamber,
807  // whereas in the talk (i.e. MDTs), it is at the bottom!
808  double delta = s_rel*s_rel * ((ep + en)*s_rel/6 + (ep - en)/4);
809  double phi = s_rel * ((ep + en)*s_rel + (ep - en)) / 2;
810  dt += phi*t0;
811  ds += delta*width/2;
812  dz += phi*z0;
813  }
814 
815  locPosML[0] += dt;
816  locPosML[1] += ds;
817  locPosML[2] += dz;
818  }

◆ 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::sTgcReadoutElement::setBLinePar ( const BLinePar bLine)

read B-line (chamber-deformation) parameters

Definition at line 754 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

754  {
755  ATH_MSG_DEBUG("Setting B-line for " <<idHelperSvc()->toStringDetEl(identify())<<" "<<bLine);
756  m_BLinePar = &bLine;
757  }

◆ setChamberLayer()

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

set methods only to be used by MuonGeoModel

Definition at line 176 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

176 { m_ml = ml; }

◆ setDelta()

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

Definition at line 727 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

727  {
728  // amdb frame (s, z, t) = chamber frame (y, z, x)
729  if (aline) {
730  static const Amg::Transform3D permute{GeoTrf::GeoRotation{90.*Gaudi::Units::deg,90.*Gaudi::Units::deg, 0.}};
731  // The origin of the rotation axes is at the center of the active area
732  // in the z (radial) direction. Account for this shift in the definition
733  // of m_delta so that it can be applied on chamber frame coordinates.
734  m_ALinePar = &aline;
735  m_delta = Amg::getTranslateZ3D(m_offset)* permute*aline.delta()*
736  permute.inverse()*Amg::getTranslateZ3D(-m_offset);
737  ATH_MSG_DEBUG(idHelperSvc()->toStringDetEl(identify())<<" setup new alignment: "<<GeoTrf::toString(m_delta));
738  refreshCache();
739  } else {
740  clearALinePar();
741  }
742  }

◆ 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/4]

void MuonGM::sTgcReadoutElement::spacePointPosition ( const Amg::Vector2D phiPos,
const Amg::Vector2D etaPos,
Amg::Vector2D pos 
) const
inline

space point position for a pair of phi and eta local positions and a layer identifier The LocalPosition is expressed in the reference frame of the phi projection.

Definition at line 450 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

450  {
451  pos[0] = phiPos.x();
452  pos[1] = etaPos.x();
453  }

◆ spacePointPosition() [2/4]

void MuonGM::sTgcReadoutElement::spacePointPosition ( const Identifier layerId,
double  locXpos,
double  locYpos,
Amg::Vector3D pos 
) const

space point position, corrected for chamber deformations (b-lines), if b-lines are enabled.

Accepts a precision (x) coordinate and a y-seed, in the local layer frame, and returns a 3D position, in the same frame so that sTgcReadoutElement::transform() can be directly cast on it. Accounts for: a) PCB deformations (as-built), if as-built conditions are enabled b) Chamber deformations (b-lines), if b-lines are enabled

Definition at line 822 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

822  {
823 
824  pos = Amg::Vector3D(locXpos, locYpos, 0.);
825 
826  const MuonChannelDesign* design = getDesign(layerId);
827  if (!design) {
828  ATH_MSG_WARNING( "Unable to get MuonChannelDesign, therefore cannot provide position corrections. Returning." );
829  return;
830  }
831 
832 #ifndef SIMULATIONBASE
833  //*********************
834  // As-Built (MuonNswAsBuilt is not included in AthSimulation)
835  //*********************
836  if(manager()->getsTGCAsBuilt() && design->type == MuonChannelDesign::ChannelType::etaStrip){
837 #if __GNUC__ >= 13
838 // Avoid a warning seen with -march=x86-64-v3.
839 // This has been cleaned up in eigen after 3.4.0.
840 # pragma GCC diagnostic push
841 # pragma GCC diagnostic ignored "-Warray-bounds"
842 #endif
843  pos.head(2) = manager()->getsTGCAsBuilt()->correctPosition(layerId, pos.head(2));
844 #if __GNUC__ >= 13
845 # pragma GCC diagnostic pop
846 #endif
847  }
848 #ifndef NDEBUG
849  else {
850  MsgStream log(Athena::getMessageSvc(), "sTgcReadoutElement");
851  if (log.level() <= MSG::DEBUG) {
852  log << MSG::DEBUG << "No as-built corrections provided for stEta: "<<getStationEta() << " stPhi: "<<getStationPhi()<<" ml: "<<m_ml<< endmsg;
853  }
854  }
855 #endif
856 #endif
857 
858 
859  //*********************
860  // B-Lines
861  //*********************
862  if (has_BLines()) {
863  // go to the muultilayer frame
864  Amg::Transform3D trfToML = m_delta.inverse()*absTransform().inverse()*transform(layerId);
865  pos = trfToML*pos;
867  // back to the layer reference frame from where we started
868  pos = trfToML.inverse()*pos;
869 
870  }
871  }

◆ spacePointPosition() [3/4]

bool MuonGM::sTgcReadoutElement::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 436 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

436  {
438  if (!stripPosition(phiId, phiPos) || !stripPosition(etaId, etaPos)) return false;
439  spacePointPosition(phiPos, etaPos, pos);
440  return true;
441  }

◆ spacePointPosition() [4/4]

bool MuonGM::sTgcReadoutElement::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 443 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

443  {
445  spacePointPosition(phiId, etaId, lpos);
446  surface(phiId).localToGlobal(lpos, pos, pos);
447  return true;
448  }

◆ stripGlobalPosition()

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

Definition at line 332 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

332  {
334  if (!stripPosition(id, lpos)) return false;
335  surface(id).localToGlobal(lpos, Amg::Vector3D::Zero(), gpos);
336  return true;
337  }

◆ stripNumber()

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

strip number corresponding to local position.

Should be renamed to channelNumber : the only public access for all hit types

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 309 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

309  {
310  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) return padNumber(pos, id);
311 
312  const MuonChannelDesign* design = getDesign(id);
313  if (!design) {
314  ATH_MSG_WARNING("Cannot associate the strip number for "<<Amg::toString(pos)<<" in layer "
315  <<idHelperSvc()->toStringGasGap(id));
316  return -1;
317  }
318  return design->channelNumber(pos);
319  }

◆ stripPosition()

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

strip position - should be renamed to channel position If the strip number is outside the range of valid strips, the function will return false

Implements MuonGM::MuonClusterReadoutElement.

Definition at line 321 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

321  {
322  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) return padPosition(id, pos);
323 
324  const MuonChannelDesign* design = getDesign(id);
325  if (!design) {
326  ATH_MSG_WARNING("Cannot determine the strip postion for "<<idHelperSvc()->toString(id));
327  return false;
328  }
329  return design->center(m_idHelper.channel(id), pos);
330  }

◆ 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::sTgcReadoutElement::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 257 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

257  {
259  }

◆ surfaceHash() [2/2]

int MuonGM::sTgcReadoutElement::surfaceHash ( int  gasGap,
int  channelType 
) const
inline

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

Definition at line 261 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

261  {
262  return (gasGap - 1) * 3 + (2 - channelType); // assumes channelType=2 (wires), 1(strips), 0(pads)
263  }

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

◆ triggerBandIdToRadius()

double MuonGM::sTgcReadoutElement::triggerBandIdToRadius ( bool  isLarge,
int  triggerBand 
)
inlinestatic

Definition at line 456 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

456  {
457  if(isLarge){
458  return LBANDIDSP[triggerBand];
459  } else {
460  return SBANDIDSP[triggerBand];
461  }
462  };

◆ wireNumber()

int MuonGM::sTgcReadoutElement::wireNumber ( const Amg::Vector2D pos,
const Identifier id 
) const

wire number corresponding to local position

Definition at line 653 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

653  {
654  const MuonChannelDesign* design = getDesign(id);
655  if (!design) {
656  ATH_MSG_WARNING( "no wire design when trying to get the wire number" );
657  return -1;
658  }
659  return design->wireNumber(pos);
660  }

◆ wirePitch()

double MuonGM::sTgcReadoutElement::wirePitch ( int  gas_gap = 1) const

single wire pitch.

sTGC wire pitch is the same for all chambers, so the default gas gap is set to the 1st gap

Definition at line 664 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

664  {
665  if (m_phiDesign.empty()) {
666  ATH_MSG_WARNING( "no wire design when trying to get the wire pitch" );
667  return -1.0;
668  }
669  return (m_phiDesign[gas_gap - 1]).inputPitch;
670  }

Friends And Related Function Documentation

◆ MuonGMR4::ReadoutGeomCnvAlg

friend class MuonGMR4::ReadoutGeomCnvAlg
friend

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.

◆ LBANDIDSP

constexpr std::array<double, 94> MuonGM::sTgcReadoutElement::LBANDIDSP
staticconstexprprivate
Initial value:
= {
10, 10, 10, 10, 10, 10, 1156.72, 1187.98, 1231.87, 1271.34, 1312.87, 1354.56, 1396.38, 1438.07,
1479.73, 1521.44, 1563.11, 1604.8, 1646.48, 1688.02, 1729.84, 1771.51, 1813.2, 1854.89, 1896.57, 1938.26, 1979.93, 2021.61,
2063.14, 2104.98, 2146.55, 2181.64, 2209.01, 2251.65, 2282.54, 2313.27, 2356.24, 2396.73, 2438.29, 2480.09, 2521.75, 2563.46,
2605.11, 2646.85, 2688.48, 2730.19, 2771.86, 2813.41, 2855.21, 2896.93, 2938.61, 2980.26, 3021.95, 3063.63, 3105.31, 3146.98,
3188.85, 3230.37, 3272.05, 3313.77, 3353.77, 3376.19, 3426.09, 3464.49, 3506.78, 3563.91, 3589.03, 3626.17, 3667.84, 3709.56,
3751.33, 3792.92, 3834.58, 3876.27, 3917.9, 3959.62, 4001.29, 4043.03, 4084.66, 4126.39, 4168.05, 4209.74, 4251.38, 4293.16,
4334.72, 4376.47, 4417.54, 4459.75, 4496.31, 4543.27, 4584.77, 4626.47, 4668.25, 4701.14
}

Definition at line 233 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.

◆ m_ALinePar

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

◆ m_BLinePar

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

◆ 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::sTgcReadoutElement::m_delta {Amg::Transform3D::Identity()}
private

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

bool MuonGM::sTgcReadoutElement::m_diamondShape {false}
private

◆ 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::sTgcReadoutElement::m_etaDesign {}
private

◆ 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 sTgcIdHelper& MuonGM::sTgcReadoutElement::m_idHelper {idHelperSvc()->stgcIdHelper()}
private

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

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

◆ 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

constexpr int MuonGM::sTgcReadoutElement::m_nlayers {4}
staticconstexprprivate

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_offset

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

◆ m_padDesign

std::array<MuonPadDesign,4> MuonGM::sTgcReadoutElement::m_padDesign {}
private

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

std::array<MuonChannelDesign,4> MuonGM::sTgcReadoutElement::m_phiDesign {}
private

◆ 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::sTgcReadoutElement::m_Xlg {make_array<Amg::Transform3D, 4>(Amg::Transform3D::Identity())}
private

◆ m_Zsize

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

◆ SBANDIDSP

constexpr std::array<double, 92> MuonGM::sTgcReadoutElement::SBANDIDSP
staticconstexprprivate
Initial value:
= {
10.0, 10.0, 958.077, 998.248, 1037.405, 1076.535, 1115.69, 1154.82, 1193.97, 1233.135, 1272.265, 1311.395,
1350.59, 1389.705, 1428.865, 1468.01, 1507.175, 1546.305, 1585.435, 1624.58, 1663.71, 1702.895, 1742.055,
1781.165, 1820.315, 1859.44, 1898.575, 1937.75, 1976.885, 2016.04, 2055.15, 2094.345, 2136.125, 2172.61,
2217.68, 2255.125, 2316.115, 2348.91, 2388.06, 2427.245, 2466.385, 2505.515, 2544.69, 2583.8, 2622.99,
2662.115, 2701.31, 2740.395, 2779.55, 2818.715, 2857.905, 2897.0, 2936.185, 2975.315, 3014.47, 3053.615,
3092.775, 3131.895, 3171.075, 3210.225, 3249.375, 3288.485, 3317.74, 3347.075, 3396.65, 3440.175, 3475.575,
3540.81, 3581.97, 3621.13, 3660.285, 3699.41, 3738.535, 3777.73, 3816.89, 3856.055, 3895.105, 3934.3, 3974.34,
4012.565, 4051.71, 4090.865, 4130.04, 4169.145, 4208.285, 4247.55, 4286.65, 4320.075, 4364.84, 4404.12, 4443.14, 4482.29
}

Definition at line 244 of file MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h.


The documentation for this class was generated from the following files:
MuonGM::MuonDetectorManager::getsTGCAsBuilt
const sTGCAsBuiltData * getsTGCAsBuilt() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:162
THROW_EXCEPTION_RE
#define THROW_EXCEPTION_RE(MSG)
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:49
MuonGM::sTgcReadoutElement::padCorners
bool padCorners(const Identifier &id, std::array< Amg::Vector2D, 4 > &corners) const
pad corners
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:358
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:79
MuonGM::sTgcReadoutElement::initDesignFromAGDD
void initDesignFromAGDD(double thickness)
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:280
sTgcIdHelper::multilayer
int multilayer(const Identifier &id) const
Definition: sTgcIdHelper.cxx:1017
sTGCReadoutParameters::sStripWidth
double sStripWidth
Definition: sTGCDetectorDescription.h:22
sTGCReadoutParameters::firstPadPhiDivision_A
std::vector< double > firstPadPhiDivision_A
Definition: sTGCDetectorDescription.h:27
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
sTGCDetectorDescription::ylFrame
void ylFrame(double y)
Definition: sTGCDetectorDescription.h:96
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
MuonGM::MuonReadoutElement::absTransform
const Amg::Transform3D & absTransform() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:210
MuonGM::MuonReadoutElement::m_id
Identifier m_id
extended data-collection identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:165
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
sTGCDetectorDescription::sWidth
double sWidth() const
Definition: sTGCDetectorDescription.h:70
MuonGM::MuonReadoutElement::m_Zsize
double m_Zsize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:145
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
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
MuonGM::sTgcReadoutElement::m_ALinePar
const ALinePar * m_ALinePar
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:223
MuonGM::MuonReadoutElement::m_LongRsize
double m_LongRsize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:147
MuonGM::sTgcReadoutElement::numberOfStrips
virtual int numberOfStrips(const Identifier &layerId) const override final
number of strips per layer
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:408
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
MuonGM::MuonReadoutElement::m_detectorElIdhash
IdentifierHash m_detectorElIdhash
detector element hash identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:167
MuonGM::MuonClusterReadoutElement::center
virtual const Amg::Vector3D & center() const override
Return the center of the element.
Definition: MuonClusterReadoutElement.h:125
MuonGM::MuonReadoutElement::fillCache
virtual void fillCache()=0
MuonGM::sTgcReadoutElement::getDelta
const Amg::Transform3D & getDelta() const
read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) re...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:182
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
index
Definition: index.py:1
sTgcIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channelType, int channel) const
Definition: sTgcIdHelper.cxx:886
TrigConf::JetWindowSize::Size
Size
Definition: TriggerThresholdValue.h:17
MuonGM::sTgcReadoutElement::m_BLinePar
const BLinePar * m_BLinePar
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:224
Trk::DetectorElemType::TRT
@ TRT
IRDBRecord::getString
virtual const std::string & getString(const std::string &fieldName) const =0
Get string field value.
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::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::MuonReadoutElement::getZsize
double getZsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:198
sTGCReadoutParameters::nPadPhi
std::vector< int > nPadPhi
Definition: sTGCDetectorDescription.h:25
sTGCReadoutParameters::lPadWidth
double lPadWidth
Definition: sTGCDetectorDescription.h:21
MuonGM::sTgcReadoutElement::m_delta
Amg::Transform3D m_delta
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:225
sTGCDetectorDescription::Length
double Length() const
Definition: sTGCDetectorDescription.h:72
MuonGM::sTgcReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:279
MCP::ScaleSmearParam::s0
@ s0
MuonGM::MuonReadoutElement::setParentStationPV
void setParentStationPV()
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:77
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGM::sTgcReadoutElement::has_ALines
bool has_ALines() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:191
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
sTGCReadoutParameters::nWireGroups
std::vector< int > nWireGroups
Definition: sTGCDetectorDescription.h:47
MuonGM::MuonReadoutElement::m_stationS
double m_stationS
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:171
MuonGM::sTgcReadoutElement::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: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:436
BLinePar::getParameter
float getParameter(const Parameter p) const
Returns a given parameter.
Definition: BLinePar.h:40
MuonGM::sTgcReadoutElement::m_offset
double m_offset
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:220
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
sTGCReadoutParameters
Definition: sTGCDetectorDescription.h:19
sTGCDetectorDescription::Tck
double Tck() const
Definition: sTGCDetectorDescription.h:73
MuonGM::MuonReadoutElement::getLongSsize
double getLongSsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:199
MuonGM::sTgcReadoutElement::m_padDesign
std::array< MuonPadDesign, 4 > m_padDesign
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:216
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
sTGCDetectorDescription::wirePitch
void wirePitch(double y)
Definition: sTGCDetectorDescription.h:81
x
#define x
MuonGM::sTgcReadoutElement::initDesignFromSQLite
void initDesignFromSQLite(double thickness)
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:79
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.ms
int ms
Definition: SystemOfUnits.py:132
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
Trk::TrkDetElementBase::detectorType
virtual DetectorElemType detectorType() const =0
Return the Detector element type.
AGDDDetector::GetName
const std::string & GetName() const
Definition: AGDDDetector.h:40
sTGCDetectorDescription
Definition: sTGCDetectorDescription.h:51
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
MuonGM::sTgcReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position - should be renamed to channel position If the strip number is outside the range of va...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:321
MuonGM::sTgcReadoutElement::padNumber
int padNumber(const Amg::Vector2D &pos, const Identifier &id) const
pad number corresponding to local position
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:611
TRT::Hit::side
@ side
Definition: HitInfo.h:83
MuonGM::MuonReadoutElement::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:136
MuonGM::MuonChannelDesign::ChannelType::phiStrip
@ phiStrip
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
MuonGM::sTGC_Technology
Definition: MuonAGDDDescription/MuonAGDDDescription/sTGC_Technology.h:16
Trk::DetectorElemType::Silicon
@ Silicon
sTGCDetectorDescription::yCutoutCathode
void yCutoutCathode(double y)
Definition: sTGCDetectorDescription.h:87
MuonGM::MuonReadoutElement::setRsize
void setRsize(double)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:176
MuonGM::MuonReadoutElement::refreshCache
void refreshCache()
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:178
MuonGM::MuonClusterReadoutElement::m_surfaceData
std::unique_ptr< SurfaceData > m_surfaceData
Definition: MuonClusterReadoutElement.h:120
MuonGM::sTgcReadoutElement::has_BLines
bool has_BLines() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:192
sTGCReadoutParameters::PadPhiShift_A
std::vector< double > PadPhiShift_A
Definition: sTGCDetectorDescription.h:29
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
sTgcIdHelper::channel
int channel(const Identifier &id) const override
Definition: sTgcIdHelper.cxx:1027
MuonGM::sTgcReadoutElement::GlobalToAmdbLRSTransform
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const override final
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:203
MuonGM::MuonReadoutElement::getStationName
const std::string & getStationName() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:190
Trk::DetectorElemType::SolidState
@ SolidState
MuonGM::MuonReadoutElement::m_Rsize
double m_Rsize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:144
MuonGM::sTgcReadoutElement::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: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:257
MuonGM::sTgcReadoutElement::LBANDIDSP
static constexpr std::array< double, 94 > LBANDIDSP
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:233
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
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:58
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
sTGCDetectorDescription::stripWidth
void stripWidth(double y)
Definition: sTGCDetectorDescription.h:84
MuonGM::sTgcReadoutElement::m_diamondShape
bool m_diamondShape
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:222
MuonGM::MuonReadoutElement::parentMuonStation
const MuonStation * parentMuonStation() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:136
python.CaloAddPedShiftConfig.str
str
Definition: CaloAddPedShiftConfig.py:42
MuonGM::sTgcReadoutElement::posOnDefChamber
void posOnDefChamber(Amg::Vector3D &locPosML) const
transform a position (in chamber-frame coordinates) to the deformed-chamber geometry
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:760
python.LArMinBiasAlgConfig.int
int
Definition: LArMinBiasAlgConfig.py:59
master.flag
bool flag
Definition: master.py:29
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
sTgcIdHelper::gasGap
int gasGap(const Identifier &id) const override
get the hashes
Definition: sTgcIdHelper.cxx:1020
MuonGM::MuonReadoutElement::m_parentStationPV
PVConstLink m_parentStationPV
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:179
test_pyathena.parent
parent
Definition: test_pyathena.py:15
MuonGM::MuonDetectorManager::stgcIdHelper
const sTgcIdHelper * stgcIdHelper() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:238
MuonGM::sTgcReadoutElement::padPosition
bool padPosition(const Identifier &id, Amg::Vector2D &pos) const
pad position
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:339
sTGCDetectorDescription::ysFrame
void ysFrame(double y)
Definition: sTGCDetectorDescription.h:93
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
ALinePar::delta
Amg::Transform3D delta() const
Returns the final transformations of the A lines.
Definition: ALinePar.cxx:35
sTGCReadoutParameters::wireGroupWidth
int wireGroupWidth
Definition: sTGCDetectorDescription.h:37
MuonGM::MuonReadoutElement::setLongSsize
void setLongSsize(double)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:172
sTGCReadoutParameters::nPadH
std::vector< double > nPadH
Definition: sTGCDetectorDescription.h:31
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
sTGCDetectorDescription::GetTechnology
MuonGM::sTGC_Technology * GetTechnology()
Definition: sTGCDetectorDescription.cxx:49
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
MuonGM::sTgcReadoutElement::setChamberLayer
void setChamberLayer(int ml)
set methods only to be used by MuonGeoModel
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:176
MuonGM::MuonReadoutElement::setStationName
void setStationName(const std::string &)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:170
sTGCReadoutParameters::firstWireGroup
std::vector< int > firstWireGroup
Definition: sTGCDetectorDescription.h:48
MuonIdHelper::stationPhi
int stationPhi(const Identifier &id) const
Definition: MuonIdHelper.cxx:810
MuonGM::sTgcReadoutElement::clearALinePar
void clearALinePar()
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:745
MuonGM::sTgcReadoutElement::m_Xlg
std::array< Amg::Transform3D, 4 > m_Xlg
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:228
sTGCReadoutParameters::lStripWidth
double lStripWidth
Definition: sTGCDetectorDescription.h:23
MuonGM::MuonReadoutElement::m_LongSsize
double m_LongSsize
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:146
MuonGM::nStrips
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelTgcTest.cxx:46
Trk::DetectorElemType::sTgc
@ sTgc
sTGCReadoutParameters::padH
std::vector< double > padH
Definition: sTGCDetectorDescription.h:24
sTgcIdHelper::padEtaMax
static int padEtaMax()
Definition: sTgcIdHelper.cxx:1056
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...
MuonGM::sTgcReadoutElement::SBANDIDSP
static constexpr std::array< double, 92 > SBANDIDSP
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:244
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:239
sTGCReadoutParameters::firstStripWidth
std::vector< double > firstStripWidth
Definition: sTGCDetectorDescription.h:42
sTGCDetectorDescription::xFrame
void xFrame(double y)
Definition: sTGCDetectorDescription.h:90
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
sTGCReadoutParameters::wireCutout
std::vector< double > wireCutout
Definition: sTGCDetectorDescription.h:35
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
MuonGM::sTgcReadoutElement::AmdbLRSToGlobalTransform
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const override final
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:200
MuonGM::sTgcReadoutElement::m_nlayers
static constexpr int m_nlayers
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:218
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::sTgcReadoutElement::m_idHelper
const sTgcIdHelper & m_idHelper
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:213
sTgcIdHelper
Definition: sTgcIdHelper.h:55
MuonIdHelper::stationEta
int stationEta(const Identifier &id) const
Definition: MuonIdHelper.cxx:805
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::MuonChannelDesign::DetType::STGC
@ STGC
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
sTGCReadoutParameters::firstPadRow
std::vector< int > firstPadRow
Definition: sTGCDetectorDescription.h:33
MuonGM::MuonReadoutElement::m_LongZsize
double m_LongZsize
size in the specified direction
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:148
MuonGM::sTGC_Technology::gasThickness
double gasThickness
Definition: MuonAGDDDescription/MuonAGDDDescription/sTGC_Technology.h:20
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
sTGCReadoutParameters::firstPadH
std::vector< double > firstPadH
Definition: sTGCDetectorDescription.h:32
python.PyAthena.v
v
Definition: PyAthena.py:154
BLinePar::Parameter
Parameter
Definition: BLinePar.h:21
sTgcIdHelper::padPhi
int padPhi(const Identifier &id) const
Definition: sTgcIdHelper.cxx:679
MuonGM::MuonReadoutElement::m_muon_mgr
MuonDetectorManager * m_muon_mgr
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:181
MuonGM::sTgcReadoutElement::m_phiDesign
std::array< MuonChannelDesign, 4 > m_phiDesign
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:214
Trk::DetectorElemType::MM
@ MM
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
Trk::DetectorElemType::Rpc
@ Rpc
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonGM::MuonReadoutElement::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:163
sTGCReadoutParameters::firstWire
std::vector< double > firstWire
Definition: sTGCDetectorDescription.h:36
sTgcIdHelper::Pad
@ Pad
Definition: sTgcIdHelper.h:190
sTGCDetectorDescription::lWidth
double lWidth() const
Definition: sTGCDetectorDescription.h:71
IRDBRecord
IRDBRecord is one record in the IRDBRecordset object.
Definition: IRDBRecord.h:27
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
DEBUG
#define DEBUG
Definition: page_access.h:11
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
MuonGM::MuonReadoutElement::identify
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:184
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
sTGCAsBuiltData::correctPosition
Amg::Vector2D correctPosition(const Identifier &channelId, const Amg::Vector2D &pos) const
Definition: sTGCAsBuiltData.cxx:19
python.changerun.pv
pv
Definition: changerun.py:81
MuonGM::sTgcReadoutElement::m_ml
int m_ml
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:219
sTgcIdHelper::multilayerID
Identifier multilayerID(const Identifier &channeldID) const
Definition: sTgcIdHelper.cxx:297
sTgcIdHelper::padEta
int padEta(const Identifier &id) const
Definition: sTgcIdHelper.cxx:669
sTGCReadoutParameters::sPadWidth
double sPadWidth
Definition: sTGCDetectorDescription.h:20
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
MuonGM::sTgcReadoutElement::m_etaDesign
std::array< MuonChannelDesign, 4 > m_etaDesign
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:215
IRDBRecord::getDouble
virtual double getDouble(const std::string &fieldName) const =0
Get double field value.
MuonGM::sTgcReadoutElement::getPadDesign
const MuonPadDesign * getPadDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:285
MuonGM::sTgcReadoutElement::wirePitch
double wirePitch(int gas_gap=1) const
single wire pitch.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:664
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
sTGCReadoutParameters::nWires
std::vector< int > nWires
Definition: sTGCDetectorDescription.h:34
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:204
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
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
sTgcIdHelper::channelType
int channelType(const Identifier &id) const
Definition: sTgcIdHelper.cxx:1022
python.compressB64.c
def c
Definition: compressB64.py:93
sTGCDetectorHelper
Definition: sTGCDetectorHelper.h:24
sTGCReadoutParameters::anglePadPhi
double anglePadPhi
Definition: sTGCDetectorDescription.h:26
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.pc
float pc
Definition: SystemOfUnits.py:99
MuonGM::MuonReadoutElement::getStationPhi
int getStationPhi() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:194
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
Trk::DetectorElemType::Mdt
@ Mdt
node
Definition: node.h:21
sTGCDetectorHelper::Get_sTGCDetector
sTGCDetectorDescription * Get_sTGCDetector(char type, int ieta, int iphi, int layer=1, char side='A')
Definition: sTGCDetectorHelper.cxx:35
MuonGM::MuonChannelDesign::ChannelType::etaStrip
@ etaStrip
fitman.k
k
Definition: fitman.py:528
sTGCDetectorDescription::stripPitch
void stripPitch(double y)
Definition: sTGCDetectorDescription.h:78
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
sTGCReadoutParameters::nStrips
int nStrips
Definition: sTGCDetectorDescription.h:38
Amg::getTranslate3D
Amg::Transform3D getTranslate3D(const double X, const double Y, const double Z)
: Returns a shift transformation along an arbitrary axis
Definition: GeoPrimitivesHelpers.h:289
sTGCDetectorDescription::GetReadoutParameters
sTGCReadoutParameters & GetReadoutParameters()
Definition: sTGCDetectorDescription.h:101
Identifier
Definition: IdentifierFieldParser.cxx:14