ATLAS Offline Software
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 58 of file MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx.

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

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

578  {
579  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) {
580  const MuonPadDesign* design = getPadDesign(id);
581  if (!design) {
582  ATH_MSG_WARNING( "no pad Design" );
583  return -1;
584  }
585  return design->channelWidth(Amg::Vector2D::Zero(), 0);
586  }
587 
588  const MuonChannelDesign* design = getDesign(id);
589  if (!design) return -1;
590  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Strip) // sTGC strips
591  return design->inputPitch;
592  else if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) // sTGC wires
593  return design->inputPitch * design->groupWidth; // wire Pitch * number of wires in a group
594  else
595  return -1;
596  }

◆ clearALinePar()

void MuonGM::sTgcReadoutElement::clearALinePar ( )

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

732  {
733  if (has_ALines()) {
734  m_ALinePar = nullptr;
735  m_delta = Amg::Transform3D::Identity();
736  refreshCache();
737  }
738  }

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

556  {
557  if (m_idHelper.stationEta(id) != getStationEta()) return false;
558  if (m_idHelper.stationPhi(id) != getStationPhi()) return false;
559 
560  if (m_idHelper.multilayerID(id) != m_ml) return false;
561 
562  int gasgap = m_idHelper.gasGap(id);
563  if (gasgap < 1 || gasgap > m_nlayers) return false;
564 
565  int strip = m_idHelper.channel(id);
566  if (strip < 1) return false;
567  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Strip && strip > m_etaDesign[gasgap - 1].nch) return false;
568  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire && strip > m_phiDesign[gasgap -1].nGroups) return false;
569  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) {
570  const auto [etaId, phiId] = m_padDesign[gasgap -1].etaPhiId(strip);
571  if (etaId < 0 || phiId < 0) return false;
572  }
573  return true;
574  }

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

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

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

423  {
424 
425  if (manager()->MinimalGeoFlag() == 0) {
426  PVConstLink pvc {getMaterialGeom()};
427  unsigned int nchildvol = pvc->getNChildVols();
428  int llay = 0;
429  std::string::size_type npos;
430  for (unsigned ich = 0; ich < nchildvol; ++ich) {
431  PVConstLink pc = pvc->getChildVol(ich);
432  std::string childname = (pc->getLogVol())->getName();
433 
434  ATH_MSG_DEBUG("Volume Type: " << pc->getLogVol()->getShape()->type());
435  if ((npos = childname.find("Sensitive")) != std::string::npos) {
436  ++llay;
437  if (llay > 4) {
438  ATH_MSG_DEBUG("number of sTGC layers > 4: increase transform array size");
439  continue;
440  }
441  m_Xlg[llay - 1] = pvc->getXToChildVol(ich);
442  }
443  }
444  assert(m_nlayers == llay);
445  }
446 
447  SmartIF<IGeoDbTagSvc> geoDbTag{Gaudi::svcLocator()->service("GeoDbTagSvc")};
448  if (!geoDbTag) THROW_EXCEPTION_RE( "Could not locate GeoDbTagSvc" );
449  if (geoDbTag->getSqliteReader()) initDesignFromSQLite(thickness);
450  else initDesignFromAGDD(thickness);
451 
452  }

◆ initDesignFromAGDD()

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

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

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

◆ initDesignFromSQLite()

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

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

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

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

697  {
698  int gg = m_idHelper.gasGap(id);
699  int channelType = m_idHelper.channelType(id);
700 
701  // The assigned coordinate along the layer normal is at the center of the gas gap;
702  // wires are considered at x=0, while:
703  // for layers 1, 3 strips (pads) are shifted by +10 (-10) microns
704  // for layers 2, 4 strips (pads) are shifted by -10 (+10) microns
705  double shift{0.};
706  if (channelType != 2) shift = ((gg % 2) ^ (channelType==0)) ? 0.01 : -0.01;
707  const Amg::Vector3D locPos_ML = m_Xlg[gg - 1] * Amg::getTranslate3D(shift, 0., m_offset) * locPos;
708 
709  ATH_MSG_DEBUG( "position coordinates in the gas-gap r.f.: " << Amg::toString(locPos) );
710  ATH_MSG_DEBUG( "position coordinates in the multilayer r.f.: " << Amg::toString(locPos_ML) );
711  return absTransform() * m_delta * locPos_ML;
712  }

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

680  {
681  int nWires = -1;
682  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) {
683  const MuonChannelDesign* design = getDesign(id);
684  if (!design) {
685  ATH_MSG_WARNING( "no wire design when trying to get the total number of wires" );
686  return nWires;
687  }
688  nWires = design->nch;
689  } else {
690  ATH_MSG_WARNING( "attempt to retrieve the number of wires with a wrong identifier" );
691  }
692  return nWires;
693  }

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

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

◆ 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 137 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

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

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

663  {
664  double pos_wire = -9999.9;
665  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) {
666  const MuonChannelDesign* design = getDesign(id);
667  if (!design) {
668  ATH_MSG_WARNING( "no wire design when trying to get the 1st wire position" );
669  return pos_wire;
670  }
671  pos_wire = design->firstPos();
672  } else {
673  ATH_MSG_WARNING( "attempt to retrieve the 1st wire position with a wrong identifier" );
674  }
675  return pos_wire;
676  }

◆ posOnDefChamber()

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

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

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

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

◆ refreshCache()

void MuonGM::MuonReadoutElement::refreshCache ( )
inherited

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

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

◆ setBLinePar()

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

read B-line (chamber-deformation) parameters

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

741  {
742  ATH_MSG_DEBUG("Setting B-line for " <<idHelperSvc()->toStringDetEl(identify())<<" "<<bLine);
743  m_BLinePar = &bLine;
744  }

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

716  {
717  // amdb frame (s, z, t) = chamber frame (y, z, x)
718  if (aline) {
719  m_delta = aline.delta();
720  // The origin of the rotation axes is at the center of the active area
721  // in the z (radial) direction. Account for this shift in the definition
722  // of m_delta so that it can be applied on chamber frame coordinates.
723  m_ALinePar = &aline;
725  refreshCache();
726  } else {
727  clearALinePar();
728  }
729  }

◆ 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 156 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

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

◆ 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  Query<unsigned int> c = par->indexOf(getMaterialGeom());
111  if (c.isValid()) {
113  } else
115  }

◆ 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 128 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

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

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

809  {
810 
811  pos = Amg::Vector3D(locXpos, locYpos, 0.);
812 
813  const MuonChannelDesign* design = getDesign(layerId);
814  if (!design) {
815  ATH_MSG_WARNING( "Unable to get MuonChannelDesign, therefore cannot provide position corrections. Returning." );
816  return;
817  }
818 
819  bool conditionsApplied{false};
820  Amg::Transform3D trfToML{Amg::Transform3D::Identity()};
821 
822 #ifndef SIMULATIONBASE
823  //*********************
824  // As-Built (MuonNswAsBuilt is not included in AthSimulation)
825  //*********************
827  if(manager()->getsTGCAsBuilt2() && design->type == MuonChannelDesign::ChannelType::etaStrip){
828  pos.head<2>() = manager()->getsTGCAsBuilt2()->correctPosition(layerId, pos.head<2>());
829 
830  } else if (sc && design->type == MuonChannelDesign::ChannelType::etaStrip) {
831 
832  Amg::Vector2D lpos(locXpos, locYpos);
833 
834  // express the local position w.r.t. the nearest active strip
835  Amg::Vector2D rel_pos;
836  int istrip = design->positionRelativeToStrip(lpos, rel_pos);
837  if (istrip < 0) {
838  ATH_MSG_WARNING( "As-built corrections are provided only for eta strips within the active area. Returning." );
839  return;
840  }
841 
842  // setup strip calculator
845  strip_id.ilayer = m_idHelper.gasGap(layerId);
846  strip_id.istrip = istrip;
847 
848  // get the position coordinates, in the chamber frame, from NswAsBuilt.
849  // applying the 10um shift along the beam axis for strips (see fillCache()).
850  NswAsBuilt::StgcStripCalculator::position_t calcPos = sc->getPositionAlongStgcStrip(NswAsBuilt::Element::ParameterClass::CORRECTION, strip_id, rel_pos.y(), rel_pos.x());
851 
853  pos = calcPos.pos;
854  pos[0] += (strip_id.ilayer%2) ? 0.01 : -0.01; // 1st layer gets +0.01; layer numbering starts from 1
855 
856  // signal that pos is now in the chamber reference frame
857  // (don't go back to the layer frame yet, since we may apply b-lines later on)
858  trfToML = m_delta.inverse()*absTransform().inverse()*transform(layerId);
859  conditionsApplied = true;
860  } else {
861  ATH_MSG_DEBUG( "No as-built corrections provided for stEta: "<<getStationEta() << " stPhi: "<<getStationPhi()<<" ml: "<<m_ml<<" layer: "<<strip_id.ilayer);
862  }
863  }
864 #endif
865 
866 
867  //*********************
868  // B-Lines
869  //*********************
870  if (has_BLines()) {
871  // go to the multilayer reference frame if we are not already there
872  if (!conditionsApplied) {
873  trfToML = m_delta.inverse()*absTransform().inverse()*transform(layerId);
874  pos = trfToML*pos;
875  // signal that pos is now in the multilayer reference frame
876  conditionsApplied = true;
877  }
879  }
880 
881  // back to the layer reference frame from where we started
882  if (conditionsApplied) pos = trfToML.inverse()*pos;
883  }

◆ 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 117 of file MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx.

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

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

642  {
643  const MuonChannelDesign* design = getDesign(id);
644  if (!design) {
645  ATH_MSG_WARNING( "no wire design when trying to get the wire number" );
646  return -1;
647  }
648  return design->wireNumber(pos);
649  }

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

653  {
654  if (m_phiDesign.empty()) {
655  ATH_MSG_WARNING( "no wire design when trying to get the wire pitch" );
656  return -1.0;
657  }
658  return (m_phiDesign[gas_gap - 1]).inputPitch;
659  }

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:
THROW_EXCEPTION_RE
#define THROW_EXCEPTION_RE(MSG)
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:46
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:272
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:176
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
NswAsBuilt::StgcStripCalculator::position_t
The return object for querying strip positions with the method getPositionAlongStrip: a single point ...
Definition: StgcStripCalculator.h:67
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
NswAsBuilt::stripIdentifier_t::quadruplet
quadrupletIdentifier_t quadruplet
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:82
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
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
sTGCAsBuiltData2::correctPosition
Amg::Vector2D correctPosition(const Identifier &channelId, const Amg::Vector2D &pos) const
Definition: sTGCAsBuiltData2.cxx:13
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
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:169
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
NswAsBuilt::quadrupletIdentifier_t::STS
@ STS
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:29
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:174
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:77
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
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.
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
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::MuonDetectorManager::getStgcAsBuiltCalculator
const NswAsBuilt::StgcStripCalculator * getStgcAsBuiltCalculator() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:154
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:600
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
NswAsBuilt::StgcStripCalculator::IsValid::VALID
@ VALID
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:175
MuonGM::MuonReadoutElement::refreshCache
void refreshCache()
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:177
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
MuonGM::MuonReadoutElement::setIdentifier
void setIdentifier(const Identifier &id)
Sets the Identifier, hashes & station names.
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:156
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:135
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:747
NswAsBuilt::stripIdentifier_t
Athena indices of a MM strip.
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:81
master.flag
bool flag
Definition: master.py:29
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
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:241
MuonGM::sTgcReadoutElement::padPosition
bool padPosition(const Identifier &id, Amg::Vector2D &pos) const
pad position
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:339
MuonGM::MuonDetectorManager::getsTGCAsBuilt2
const sTGCAsBuiltData2 * getsTGCAsBuilt2() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:165
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
Definition: ALinePar.cxx:45
sTGCReadoutParameters::wireGroupWidth
int wireGroupWidth
Definition: sTGCDetectorDescription.h:37
MuonGM::MuonReadoutElement::setLongSsize
void setLongSsize(double)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:171
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:169
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:732
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:227
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:228
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
NswAsBuilt::StgcStripCalculator
The main interface of the NswAsBuilt package: determines strip positions in the frame of the quadrupl...
Definition: StgcStripCalculator.h:31
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
NswAsBuilt::stripIdentifier_t::ilayer
int ilayer
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:83
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
python.CaloScaleNoiseConfig.str
str
Definition: CaloScaleNoiseConfig.py:78
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
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
NswAsBuilt::stripIdentifier_t::istrip
int istrip
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:84
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
NswAsBuilt::StgcStripCalculator::position_t::pos
Amg::Vector3D pos
Definition: StgcStripCalculator.h:69
python.changerun.pv
pv
Definition: changerun.py:81
checkFileSG.fi
fi
Definition: checkFileSG.py:65
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
NswAsBuilt::quadrupletIdentifier_t::STL
@ STL
Definition: MuonSpectrometer/MuonDetDescr/MuonNSWAsBuilt/MuonNSWAsBuilt/Identifier.h:30
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
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:653
NswAsBuilt::Element::ParameterClass::CORRECTION
@ CORRECTION
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
NswAsBuilt::StgcStripCalculator::position_t::isvalid
IsValid isvalid
Definition: StgcStripCalculator.h:68
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
checkFileSG.ind
list ind
Definition: checkFileSG.py:118
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
Trk::DetectorElemType::Mdt
@ Mdt
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