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

#include <sTgcReadoutElement.h>

Inheritance diagram for MuonGMR4::sTgcReadoutElement:
Collaboration diagram for MuonGMR4::sTgcReadoutElement:

Classes

struct  defineArgs
 
struct  parameterBook
 Set of parameters to describe an sTGC chamber. More...
 

Public Types

enum  ReadoutChannelType { Pad = sTgcIdHelper::sTgcChannelTypes::Pad, Strip = sTgcIdHelper::sTgcChannelTypes::Strip, Wire = sTgcIdHelper::sTgcChannelTypes::Wire, WireInGrp }
 ReadoutChannelType to distinguish the available readout channels Pad - pad readout channel Strip - eta strip readout channel Wire - phi wire group readout channel WireIngrp - a particular wire in a given group. More...
 
using localCornerArray = std::array< Amg::Vector2D, 4 >
 Returns an array of four 2D vectors representing corner positions of the pads. More...
 
using globalCornerArray = std::array< Amg::Vector3D, 4 >
 Returns an array of four 3D vectors representing corner positions of the pads. More...
 

Public Member Functions

 sTgcReadoutElement (defineArgs &&args)
 
virtual ~sTgcReadoutElement ()
 
const parameterBookgetParameters () const
 
ActsTrk::DetectorType detectorType () const override final
 Overload from the ActsTrk::IDetectorElement. More...
 
StatusCode initElement () override final
 Element initialization. More...
 
double chamberHeight () const
 Height of the chamber. More...
 
double sChamberLength () const
 Length of the chamber on the short side. More...
 
double lChamberLength () const
 Length of the chamber on the long side. More...
 
double gasGapPitch () const
 Distance between 2 gas gaps. More...
 
double thickness () const override final
 Thickness of the chamber. More...
 
double sFrameWidth () const
 Width of the chamber frame on the short side. More...
 
double lFrameWidth () const
 Width of the chamber frame on the long side. More...
 
int multilayer () const
 Returns the multilayer of the sTgcReadoutElement. More...
 
unsigned int numLayers () const
 Returns the number of gas gap layers. More...
 
double gasGapThickness () const
 Returns the thickness of the gas gap. More...
 
double firstStripPitch (const Identifier &measId) const
 Gas Gaps. More...
 
double firstStripPitch (const IdentifierHash &measHash) const
 
double sGapLength (const Identifier &measId) const
 Length of gas Gap on short side for strips. More...
 
double sGapLength (const IdentifierHash &measHash) const
 
double lGapLength (const Identifier &measId) const
 Length of gas Gap on long side for strips. More...
 
double lGapLength (const IdentifierHash &measHash) const
 
double sPadLength (const Identifier &measId) const
 Length of gas Gap on short side for wireGroup/Pads. More...
 
double sPadLength (const IdentifierHash &measHash) const
 
double lPadLength (const Identifier &measId) const
 Length of gas Gap on long side for wireGroup/Pads. More...
 
double lPadLength (const IdentifierHash &measHash) const
 
double gapHeight (const Identifier &measId) const
 Height of gas Gap. More...
 
double gapHeight (const IdentifierHash &measHash) const
 
double yCutout (const Identifier &measId) const
 Returns the yCutout value of the chamber. More...
 
double yCutout (const IdentifierHash &measHash) const
 
unsigned int numStrips (const Identifier &measId) const
 Strips Number of strips in a chamber. More...
 
unsigned int numStrips (const IdentifierHash &measHash) const
 
double stripPitch (const Identifier &measId) const
 Pitch of a strip. More...
 
double stripPitch (const IdentifierHash &measHash) const
 
double stripWidth (const Identifier &measId) const
 Width of a strip. More...
 
double stripWidth (const IdentifierHash &measHash) const
 
double stripLength (const Identifier &measId) const
 Length of each strip. More...
 
double stripLength (const IdentifierHash &measHash) const
 
unsigned int nChTypes () const
 Number of Channel Types. More...
 
double wirePitch (const Identifier &measId) const
 Wires Pitch of the wire. More...
 
double wirePitch (const IdentifierHash &measHash) const
 
double wireWidth (const Identifier &measId) const
 Width of a single wire. More...
 
double wireWidth (const IdentifierHash &measHash) const
 
unsigned int wireGroupWidth (unsigned int gasGap) const
 Number of wires in a normal wire group. More...
 
unsigned int numWires (unsigned int gasGap) const
 Number of wires in the gas gap. More...
 
unsigned int firstWireGroupWidth (unsigned int gasGap) const
 Number of wires in the first wire group. More...
 
unsigned int numWireGroups (unsigned int gasGap) const
 Number of wire groups in the gas gap. More...
 
double wireCutout (unsigned int gasGap) const
 Wire Cutout of a gas Gap. More...
 
unsigned int numPads (const Identifier &measId) const
 Pads Total number of pads in the given layer. More...
 
unsigned int numPads (const IdentifierHash &measHash) const
 
unsigned int numPadEta (const Identifier &measId) const
 Returns the number of pads in the eta direction in the given layer. More...
 
unsigned int numPadEta (const IdentifierHash &measHash) const
 
unsigned int numPadPhi (const Identifier &measId) const
 Returns the number of pads in the Phi direction in the given gasGap layer. More...
 
unsigned int numPadPhi (const IdentifierHash &measHash) const
 
double firstPadHeight (const Identifier &measId) const
 Returns the height of the pads that are adjacent to the bottom edge of the trapezoid active area. More...
 
double firstPadHeight (const IdentifierHash &measHash) const
 
double padHeight (const Identifier &measId) const
 Returns the height of all the pads that are not adjacent to the bottom edge of the trapezoid active area. More...
 
double padHeight (const IdentifierHash &measHash) const
 
double padPhiShift (const Identifier &measId) const
 Returns the staggering shift of inner pad edges in the phi direction. More...
 
double padPhiShift (const IdentifierHash &measHash) const
 
double firstPadPhiDiv (const Identifier &measId) const
 Returns the angle of the first pad outer edge w.r.t. the gasGap center from the beamline for the given pad identifier. More...
 
double firstPadPhiDiv (const IdentifierHash &measHash) const
 
double anglePadPhi (const Identifier &measId) const
 Returns the angular pitch of the pads in the phi direction. More...
 
double anglePadPhi (const IdentifierHash &measHash) const
 
unsigned int maxPadEta (const Identifier &measId) const
 Returns the maximum number of pads that can be contained in a column of a pad. Used to match the pad numbering scheme. More...
 
unsigned int maxPadEta (const IdentifierHash &measHash) const
 
unsigned int padNumber (const Identifier &measId) const
 Returns the pad number in the conventional pad numbering scheme from the sequential channel number. More...
 
unsigned int padNumber (const IdentifierHash &measHash) const
 
std::pair< uint, uintpadEtaPhi (const Identifier &measId) const
 Returns a pair of Eta and Phi index for the given pad identifier. More...
 
std::pair< uint, uintpadEtaPhi (const IdentifierHash &measHash) const
 
unsigned int padEta (const Identifier &measId) const
 Returns the Eta index of the pad for the given pad identifier. More...
 
unsigned int padEta (const IdentifierHash &measHash) const
 
unsigned int padPhi (const Identifier &measId) const
 Returns the Phi index of the pad for the given pad identifier. More...
 
unsigned int padPhi (const IdentifierHash &measHash) const
 
double beamlineRadius (const Identifier &measId) const
 Returns the distance between the gasGap center and the beamline. More...
 
double beamlineRadius (const IdentifierHash &measHash) const
 
localCornerArray localPadCorners (const Identifier &measId) const
 
localCornerArray localPadCorners (const IdentifierHash &measHash) const
 
globalCornerArray globalPadCorners (const ActsGeometryContext &ctx, const Identifier &measId) const
 
globalCornerArray globalPadCorners (const ActsGeometryContext &ctx, const IdentifierHash &measHash) const
 
int padNumber (const Amg::Vector2D &hitPos, const Identifier &measId) const
 Returns the pad Number given local position of hit and Identifier/Hash. More...
 
int padNumber (const Amg::Vector2D &hitPos, const IdentifierHash &measHash) const
 
const StripDesignstripDesign (const Identifier &measId) const
 Retrieves the readoutElement Layer given the Identifier/Hash. More...
 
const StripDesignstripDesign (const IdentifierHash &measHash) const
 
const StripDesignstripDesign (unsigned int gasGap) const
 Retrieves the readoutElement Layer given the gasGap. More...
 
const WireGroupDesignwireDesign (const Identifier &measId) const
 Retrieves the readoutElement Layer given the Identifier/Hash. More...
 
const WireGroupDesignwireDesign (const IdentifierHash &measHash) const
 
const WireGroupDesignwireDesign (unsigned int gasGap) const
 Retrieves the readoutElement Layer given the gasGap. More...
 
const PadDesignpadDesign (const Identifier &measId) const
 Retrieves the readoutElement Layer given the Identifier/Hash. More...
 
const PadDesignpadDesign (const IdentifierHash &measHash) const
 
const PadDesignpadDesign (unsigned int gasGap) const
 Retrieves the readoutElement Layer given the gasGap. More...
 
Amg::Vector3D globalChannelPosition (const ActsGeometryContext &ctx, const Identifier &measId) const
 Returns the global pad/strip/wireGroup position. More...
 
Amg::Vector3D globalChannelPosition (const ActsGeometryContext &ctx, const IdentifierHash &measHash) const
 
Amg::Vector2D localChannelPosition (const Identifier &measId) const
 Returns the local pad/strip/wireGroup position. More...
 
Amg::Vector2D localChannelPosition (const IdentifierHash &measHash) const
 
Amg::Vector3D leftStripEdge (const ActsGeometryContext &ctx, const IdentifierHash &measHash) const
 
Amg::Vector3D rightStripEdge (const ActsGeometryContext &ctx, const IdentifierHash &measHash) const
 
IdentifierHash measurementHash (const Identifier &measId) const override final
 Constructs the identifier hash from the full measurement Identifier. More...
 
IdentifierHash layerHash (const Identifier &measId) const override final
 Transforms the Identifier into a layer hash. More...
 
Identifier measurementId (const IdentifierHash &measHash) const override final
 Converts the measurement hash back to the full Identifier. More...
 
const StripLayerstripLayer (const Identifier &measId) const
 
const StripLayerstripLayer (const IdentifierHash &measId) const
 
bool isEtaZero (const IdentifierHash &measurementHash, const Amg::Vector2D &localPosition) const
 
const GeoAlignableTransform * alignableTransform () const
 Returnsthe alignable transform of the readout element. More...
 
Identifier identify () const override final
 Return the athena identifier. More...
 
IdentifierHash identHash () const
 Returns the Identifier has of the Element that is Identical to the detElHash from the id_helper class. More...
 
int stationName () const
 Returns the stationName (BIS, BOS, etc) encoded into the integer. More...
 
int stationEta () const
 Returns the stationEta (positive A site, negative O site) More...
 
int stationPhi () const
 Returns the stationPhi (1-8) -> sector (2*phi - (isSmall)) More...
 
Muon::MuonStationIndex::ChIndex chamberIndex () const
 Returns the chamber index of the Identifier (MMS & STS) have the same chamber Index (EIS) More...
 
const std::string & chamberDesign () const
 The chamber design refers to the construction parameters of a readout element. More...
 
const Muon::IMuonIdHelperSvcidHelperSvc () const
 Returns the pointer to the muonIdHelperSvc. More...
 
Amg::Vector3D center (const ActsGeometryContext &ctx) const
 Returns the detector center (Which is the same as the detector center of the first measurement layer) More...
 
Amg::Vector3D center (const ActsGeometryContext &ctx, const Identifier &id) const
 Returns the center of a given detector layer using the complete Identifier of the measurement. More...
 
Amg::Vector3D center (const ActsGeometryContext &ctx, const IdentifierHash &hash) const
 Returns the center of a given detector layer using the Identifier hash of the measurement. More...
 
Amg::Transform3D globalToLocalTrans (const ActsGeometryContext &ctx) const
 Transformations to translate between local <-> global coordinates. More...
 
Amg::Transform3D globalToLocalTrans (const ActsGeometryContext &ctx, const Identifier &id) const
 Returns the global to local transformation into the rest frame of a given measurement layer. More...
 
Amg::Transform3D globalToLocalTrans (const ActsGeometryContext &ctx, const IdentifierHash &hash) const
 Returns the global to local transformation into the rest frame of a given measurement layer. More...
 
const Amg::Transform3DlocalToGlobalTrans (const ActsGeometryContext &ctx) const
 Returns the local to global transformation into the ATLAS coordinate system. More...
 
const Amg::Transform3DlocalToGlobalTrans (const ActsGeometryContext &ctx, const Identifier &id) const
 
const Amg::Transform3DlocalToGlobalTrans (const ActsGeometryContext &ctx, const IdentifierHash &id) const
 
const Amg::Transform3Dtransform (const Acts::GeometryContext &gctx) const override final
 Returns the transformation to the origin of the chamber coordinate system. More...
 
const Acts::Surface & surface () const override final
 Returns the surface associated to the readout element plane. More...
 
Acts::Surface & surface () override final
 
const Acts::Surface & surface (const IdentifierHash &hash) const
 Returns the sufrface associated to a wire / measurement plane in the detector. More...
 
Acts::Surface & surface (const IdentifierHash &hash)
 
std::shared_ptr< Acts::Surface > surfacePtr (const IdentifierHash &hash) const
 Returns the pointer associated to a certain wire / plane. More...
 
void setChamberLink (const Chamber *chamber)
 Sets the link to the enclosing chamber. More...
 
void setSectorLink (const SpectrometerSector *envelope)
 Set the link to the enclosing sector envelope. More...
 
const SpectrometerSectormsSector () const
 Returns the pointer to the envelope volume enclosing all chambers in the sector. More...
 
const Chamberchamber () const
 Returns the pointer to the chamber enclosing this readout element. More...
 
std::vector< std::shared_ptr< Acts::Surface > > getSurfaces () const
 Returns all surfaces that are associated with the active readout planes. More...
 
void releaseUnAlignedTrfs () const
 Releases all cached transforms that are not connected with alignment. More...
 
unsigned int storeAlignedTransforms (const ActsTrk::DetectorAlignStore &store) const override final
 Caches the aligned transformation in the provided store. Returns the number of cached elements. More...
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Static Public Member Functions

static IdentifierHash layerHash (const IdentifierHash &measHash)
 
static IdentifierHash createHash (const unsigned int gasGap, const unsigned int channelType, const unsigned int channel, const unsigned int wireInGrp=0)
 Create a measurement hash from the Identifier fields. More...
 

Protected Member Functions

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

Static Protected Member Functions

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

Private Types

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

Private Member Functions

Amg::Transform3D fromGapToChamOrigin (const IdentifierHash &layerHash) const
 
Amg::Vector3D chamberStripPos (const IdentifierHash &measHash) const
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Static Private Member Functions

static unsigned int channelNumber (const IdentifierHash &measHash)
 Returns channel position for a given identifierHash. More...
 
static unsigned int chType (const IdentifierHash &measHash)
 Returns the channel type for a given identifierHash. More...
 
static unsigned int gasGapNumber (const IdentifierHash &measHash)
 Returns the gasGap (0 to 3) for a given identifierHash. More...
 

Private Attributes

parameterBook m_pars {}
 
const sTgcIdHelperm_idHelper {idHelperSvc()->stgcIdHelper()}
 
const int m_multiLayer {m_idHelper.multilayer(identify())}
 
double m_gasGapPitch {-1.}
 
const unsigned int m_hashShiftChType {2*CxxUtils::count_ones(static_cast<unsigned int>(numLayers()))}
 Auxillary variables to translate the Identifier to a measurement hash and back. More...
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {"Muon::MuonIdHelperSvc/MuonIdHelperSvc", "MuonReadoutElement"}
 
const defineArgs m_args {}
 
IdentifierHash m_detElHash {}
 Cache of the detector element hash. More...
 
Muon::MuonStationIndex::ChIndex m_chIdx {Muon::MuonStationIndex::ChIndex::ChUnknown}
 Cache the chamber index of the Identifier. More...
 
int m_stName {-1}
 Cache the station name of the identifier. More...
 
int m_stEta {-1}
 Cache the station eta of the identifier. More...
 
int m_stPhi {-1}
 Cache the station phi of the identifier. More...
 
TransformCacheMap m_localToGlobalCaches
 
ActsTrk::SurfaceCacheSet m_surfaces
 Cache of all associated surfaces. More...
 
const SpectrometerSectorm_msSectorLink {}
 Pointer to the associated MS-sector & MuonChamber. More...
 
const Chamberm_chambLink {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...
 

Friends

class ActsTrk::TransformCacheDetEle< sTgcReadoutElement >
 

Detailed Description

Definition at line 20 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h.

Member Typedef Documentation

◆ globalCornerArray

Returns an array of four 3D vectors representing corner positions of the pads.

Definition at line 218 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h.

◆ localCornerArray

Returns an array of four 2D vectors representing corner positions of the pads.

Definition at line 214 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h.

◆ TransformCacheMap

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

Cache all local to global transformations.

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

Member Enumeration Documentation

◆ ReadoutChannelType

ReadoutChannelType to distinguish the available readout channels Pad - pad readout channel Strip - eta strip readout channel Wire - phi wire group readout channel WireIngrp - a particular wire in a given group.

Enumerator
Pad 
Strip 
Wire 
WireInGrp 

Definition at line 30 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h.

30  {
31  Pad = sTgcIdHelper::sTgcChannelTypes::Pad,
32  Strip = sTgcIdHelper::sTgcChannelTypes::Strip,
33  Wire = sTgcIdHelper::sTgcChannelTypes::Wire,
34  WireInGrp,
35 
36  };

Constructor & Destructor Documentation

◆ sTgcReadoutElement()

MuonGMR4::sTgcReadoutElement::sTgcReadoutElement ( defineArgs &&  args)

◆ ~sTgcReadoutElement()

MuonGMR4::sTgcReadoutElement::~sTgcReadoutElement ( )
virtualdefault

Member Function Documentation

◆ alignableTransform()

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

Returnsthe alignable transform of the readout element.

◆ anglePadPhi() [1/2]

double MuonGMR4::sTgcReadoutElement::anglePadPhi ( const Identifier measId) const

Returns the angular pitch of the pads in the phi direction.

◆ anglePadPhi() [2/2]

double MuonGMR4::sTgcReadoutElement::anglePadPhi ( const IdentifierHash measHash) const

◆ beamlineRadius() [1/2]

double MuonGMR4::sTgcReadoutElement::beamlineRadius ( const Identifier measId) const

Returns the distance between the gasGap center and the beamline.

◆ beamlineRadius() [2/2]

double MuonGMR4::sTgcReadoutElement::beamlineRadius ( const IdentifierHash measHash) const

◆ center() [1/3]

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

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

◆ center() [2/3]

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

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

◆ center() [3/3]

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

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

◆ chamber()

const Chamber* MuonGMR4::MuonReadoutElement::chamber ( ) const
inherited

Returns the pointer to the chamber enclosing this readout element.

◆ chamberDesign()

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

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

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

◆ chamberHeight()

double MuonGMR4::sTgcReadoutElement::chamberHeight ( ) const

Height of the chamber.

◆ chamberIndex()

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

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

◆ chamberStripPos()

Amg::Vector3D MuonGMR4::sTgcReadoutElement::chamberStripPos ( const IdentifierHash measHash) const
private

Definition at line 227 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

227  {
228  const IdentifierHash lHash = layerHash(measHash);
229  unsigned int layIdx = static_cast<unsigned int>(lHash);
230  if (layIdx < m_pars.stripLayers.size()) {
231  return m_pars.stripLayers[layIdx].stripPosition(channelNumber(measHash));
232  }
233  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
234  <<" is out of range. Maximum range "<<m_pars.stripLayers.size());
235  return Amg::Vector3D::Zero();
236 }

◆ channelNumber()

static unsigned int MuonGMR4::sTgcReadoutElement::channelNumber ( const IdentifierHash measHash)
staticprivate

Returns channel position for a given identifierHash.

◆ chType()

static unsigned int MuonGMR4::sTgcReadoutElement::chType ( const IdentifierHash measHash)
staticprivate

Returns the channel type for a given identifierHash.

◆ createGeoTransform()

StatusCode MuonGMR4::MuonReadoutElement::createGeoTransform ( )
protectedinherited

Check that the alignable node has been assigned

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

36  {
38  if(!alignableTransform()) {
39  ATH_MSG_FATAL("The readout element "<<idHelperSvc()->toStringDetEl(identify())<<" has no assigned alignable node");
40  return StatusCode::FAILURE;
41  }
42  return insertTransform<MuonReadoutElement>(geoTransformHash());
43 }

◆ createHash()

static IdentifierHash MuonGMR4::sTgcReadoutElement::createHash ( const unsigned int  gasGap,
const unsigned int  channelType,
const unsigned int  channel,
const unsigned int  wireInGrp = 0 
)
static

Create a measurement hash from the Identifier fields.

Parameters
gasGap in which the measurment sits
channelType (strip / pad/ wire / wireInGrp)
channel - electronics channel connected with the readout element
wireInGrp - number of a specific wire in the group (digi only)

◆ detectorType()

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

◆ firstPadHeight() [1/2]

double MuonGMR4::sTgcReadoutElement::firstPadHeight ( const Identifier measId) const

Returns the height of the pads that are adjacent to the bottom edge of the trapezoid active area.

◆ firstPadHeight() [2/2]

double MuonGMR4::sTgcReadoutElement::firstPadHeight ( const IdentifierHash measHash) const

◆ firstPadPhiDiv() [1/2]

double MuonGMR4::sTgcReadoutElement::firstPadPhiDiv ( const Identifier measId) const

Returns the angle of the first pad outer edge w.r.t. the gasGap center from the beamline for the given pad identifier.

◆ firstPadPhiDiv() [2/2]

double MuonGMR4::sTgcReadoutElement::firstPadPhiDiv ( const IdentifierHash measHash) const

◆ firstStripPitch() [1/2]

double MuonGMR4::sTgcReadoutElement::firstStripPitch ( const Identifier measId) const

Gas Gaps.

◆ firstStripPitch() [2/2]

double MuonGMR4::sTgcReadoutElement::firstStripPitch ( const IdentifierHash measHash) const

◆ firstWireGroupWidth()

unsigned int MuonGMR4::sTgcReadoutElement::firstWireGroupWidth ( unsigned int  gasGap) const

Number of wires in the first wire group.

◆ fromGapToChamOrigin()

Amg::Transform3D MuonGMR4::sTgcReadoutElement::fromGapToChamOrigin ( const IdentifierHash layerHash) const
private

Definition at line 103 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

103  {
104  unsigned int layIdx = static_cast<unsigned int>(measHash);
105  unsigned int gasGap = gasGapNumber(measHash);
106  if(chType(measHash) == ReadoutChannelType::Strip && gasGap < m_pars.stripLayers.size()) {
107  return m_pars.stripLayers[gasGap].toOrigin();
108  }
109  else if (chType(measHash) == ReadoutChannelType::Wire && gasGap < m_pars.wireGroupLayers.size()) {
110  return m_pars.wireGroupLayers[gasGap].toOrigin();
111  }
112  else if (chType(measHash) == ReadoutChannelType::Pad && gasGap < m_pars.padLayers.size()) {
113  return m_pars.padLayers[gasGap].toOrigin();
114  }
115  else {
116  unsigned int maxReadoutLayers = m_pars.stripLayers.size() + m_pars.wireGroupLayers.size() + m_pars.padLayers.size();
117  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
118  <<" is out of range. Maximum range "<< maxReadoutLayers);
119  return Amg::Transform3D::Identity();
120  }
121 }

◆ gapHeight() [1/2]

double MuonGMR4::sTgcReadoutElement::gapHeight ( const Identifier measId) const

Height of gas Gap.

◆ gapHeight() [2/2]

double MuonGMR4::sTgcReadoutElement::gapHeight ( const IdentifierHash measHash) const

◆ gasGapNumber()

static unsigned int MuonGMR4::sTgcReadoutElement::gasGapNumber ( const IdentifierHash measHash)
staticprivate

Returns the gasGap (0 to 3) for a given identifierHash.

◆ gasGapPitch()

double MuonGMR4::sTgcReadoutElement::gasGapPitch ( ) const

Distance between 2 gas gaps.

◆ gasGapThickness()

double MuonGMR4::sTgcReadoutElement::gasGapThickness ( ) const

Returns the thickness of the gas gap.

◆ geoTransformHash()

IdentifierHash MuonGMR4::MuonReadoutElement::geoTransformHash ( )
staticprotectedinherited

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

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

44  {
45  static const IdentifierHash hash{static_cast<unsigned>(~0)-1};
46  return hash;
47 }

◆ getParameters()

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

◆ getSurfaces()

std::vector< std::shared_ptr< Acts::Surface > > MuonGMR4::MuonReadoutElement::getSurfaces ( ) const
inherited

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

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

152  {
153  std::vector<std::shared_ptr<Acts::Surface>> surfaces{};
154  surfaces.reserve(m_surfaces.size());
155  for (const std::unique_ptr<SurfaceCache>& cache : m_surfaces) {
156  if (cache->hash() != geoTransformHash()) {
157  surfaces.push_back(cache->getSurface());
158  ATH_MSG_VERBOSE("Add surface "<<idHelperSvc()->toString(cache->identify())
159  <<std::endl<<(surfaces.back()->bounds()));
160  }
161  }
162  return surfaces;
163 }

◆ globalChannelPosition() [1/2]

Amg::Vector3D MuonGMR4::sTgcReadoutElement::globalChannelPosition ( const ActsGeometryContext ctx,
const Identifier measId 
) const

Returns the global pad/strip/wireGroup position.

◆ globalChannelPosition() [2/2]

Amg::Vector3D MuonGMR4::sTgcReadoutElement::globalChannelPosition ( const ActsGeometryContext ctx,
const IdentifierHash measHash 
) const

Definition at line 192 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

192  {
193  const IdentifierHash lHash = layerHash(measHash);
194  unsigned int layIdx = static_cast<unsigned int>(lHash);
195  unsigned int gasGap = gasGapNumber(measHash);
196  if((chType(measHash) < ReadoutChannelType::Pad || chType(measHash) > ReadoutChannelType::Wire) && gasGap < m_pars.padLayers.size()) {
197  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The channel type "<<chType(measHash)
198  <<"with the layer hash "<<layIdx<<" is invalid. Maximum range "<<m_pars.stripLayers.size());
199  return Amg::Vector3D::Zero();
200  }
201  Amg::Vector3D channelPos{Amg::Vector3D::Zero()};
202  Amg::Vector2D localChannel = localChannelPosition(measHash);
203  channelPos.block<2,1>(0,0) = std::move(localChannel);
204  return localToGlobalTrans(ctx, lHash) * channelPos;
205 }

◆ globalPadCorners() [1/2]

globalCornerArray MuonGMR4::sTgcReadoutElement::globalPadCorners ( const ActsGeometryContext ctx,
const Identifier measId 
) const

◆ globalPadCorners() [2/2]

globalCornerArray MuonGMR4::sTgcReadoutElement::globalPadCorners ( const ActsGeometryContext ctx,
const IdentifierHash measHash 
) const

Definition at line 209 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

209  {
210  const IdentifierHash lHash = layerHash(measHash);
211  unsigned int layIdx = static_cast<unsigned int>(lHash);
212  unsigned int gasGap = gasGapNumber(measHash);
213  globalCornerArray gPadCorners{make_array<Amg::Vector3D, 4>(Amg::Vector3D::Zero())};
214  if (chType(measHash) == ReadoutChannelType::Pad && gasGap < m_pars.padLayers.size()) {
215  localCornerArray lPadCorners = localPadCorners(measHash);
216  for (unsigned int corner = 0; corner < lPadCorners.size(); ++corner) {
217  gPadCorners[corner].block<2,1>(0,0) = std::move(lPadCorners[corner]);
218  gPadCorners[corner] = localToGlobalTrans(ctx, lHash) * gPadCorners[corner];
219  }
220  return gPadCorners;
221  }
222  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
223  <<" is out of range. Maximum range "<<m_pars.padLayers.size());
224  return gPadCorners;
225 }

◆ globalToLocalTrans() [1/3]

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

Transformations to translate between local <-> global coordinates.

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

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

78  {
79  return globalToLocalTrans(ctx, geoTransformHash());
80 }

◆ globalToLocalTrans() [2/3]

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

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

◆ globalToLocalTrans() [3/3]

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

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

◆ identHash()

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

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

◆ identify()

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

Return the athena identifier.

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

Implements ActsTrk::IDetectorElementBase.

◆ idHelperSvc()

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

Returns the pointer to the muonIdHelperSvc.

◆ initElement()

StatusCode MuonGMR4::sTgcReadoutElement::initElement ( )
finaloverridevirtual

Element initialization.

Implements MuonGMR4::MuonReadoutElement.

Definition at line 33 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

33  {
34  ATH_MSG_DEBUG("Parameter book "<<parameterBook());
35 
37 #ifndef SIMULATIONBASE
38 
42 #endif
43 
44  if (m_pars.stripLayers.empty() || m_pars.wireGroupLayers.empty()) {
45  ATH_MSG_FATAL("The readout element "<<idHelperSvc()->toStringDetEl(identify())<<" doesn't have any layers defined");
46  return StatusCode::FAILURE;
47  }
48  for (unsigned int layer = 0; layer < m_pars.stripLayers.size(); ++layer) {
49  IdentifierHash layHash{layer};
50  if (gasGapNumber(m_pars.stripLayers[layer].hash()) != layHash) {
51  ATH_MSG_FATAL("Layer "<<m_pars.stripLayers[layer]<<" has a very strange hash. Expect "<<layer);
52  return StatusCode::FAILURE;
53  }
54  ATH_CHECK(insertTransform<sTgcReadoutElement>(m_pars.stripLayers[layer].hash()));
55 
56 #ifndef SIMULATIONBASE
57  const StripDesign& design{m_pars.stripLayers[layer].design()};
59  m_pars.layerBounds->make_bounds(design.shortHalfHeight(),
60  design.longHalfHeight(),
61  design.halfWidth(),
62  90.*Gaudi::Units::deg)));
63 #endif
64 
65  }
66  for (unsigned int layer = 0; layer < m_pars.wireGroupLayers.size(); ++layer) {
67  IdentifierHash layHash{layer};
68  if (gasGapNumber(m_pars.wireGroupLayers[layer].hash()) != layHash) {
69  ATH_MSG_FATAL("Layer "<<m_pars.wireGroupLayers[layer]<<" has a very strange hash. Expect "<<layer);
70  return StatusCode::FAILURE;
71  }
72  ATH_CHECK(insertTransform<sTgcReadoutElement>(m_pars.wireGroupLayers[layer].hash()));
73 #ifndef SIMULATIONBASE
74  const StripDesign& design{m_pars.wireGroupLayers[layer].design()};
76  m_pars.layerBounds->make_bounds(design.shortHalfHeight(),
77  design.longHalfHeight(),
78  design.halfWidth())));
79 #endif
80  }
81  for (unsigned int layer = 0; layer < m_pars.padLayers.size(); ++layer) {
82  IdentifierHash layHash{layer};
83  if (gasGapNumber(m_pars.padLayers[layer].hash()) != layHash) {
84  ATH_MSG_FATAL("Layer "<<m_pars.padLayers[layer]<<" has a very strange hash. Expect "<<layer);
85  return StatusCode::FAILURE;
86  }
87  ATH_CHECK(insertTransform<sTgcReadoutElement>(m_pars.padLayers[layer].hash()));
88 #ifndef SIMULATIONBASE
89  const StripDesign& design{m_pars.padLayers[layer].design()};
91  m_pars.layerBounds->make_bounds(design.shortHalfHeight(),
92  design.longHalfHeight(),
93  design.halfWidth())));
94 #endif
95 
96  }
97  ActsGeometryContext gctx{};
98  m_gasGapPitch = (center(gctx, createHash(1, sTgcIdHelper::sTgcChannelTypes::Strip, 0)) -
99  center(gctx, createHash(2, sTgcIdHelper::sTgcChannelTypes::Strip, 0))).mag();
100  return StatusCode::SUCCESS;
101 }

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

◆ insertTransform()

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

Inserts a transfomration for caching.

◆ isEtaZero()

bool MuonGMR4::sTgcReadoutElement::isEtaZero ( const IdentifierHash measurementHash,
const Amg::Vector2D localPosition 
) const

Definition at line 335 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

335  {
336  if(std::abs(m_idHelper.stationEta(identify())) != 1 ) return false; // if we are not in a Q1 ro element we do not have to check further
337  const WireGroupDesign& wireDes = wireDesign(measurementHash); // function is not checking for channel type so we just use its gas gap info
338 
339  double lpos = (chType(measurementHash) == ReadoutChannelType::Strip ? localPosition.x() : localPosition.y() );
340  if (lpos < 0.5 * gapHeight(measurementHash) - wireDes.wireCutout()) return true;
341  return false;
342 }

◆ layerHash() [1/2]

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

Transforms the Identifier into a layer hash.

Implements MuonGMR4::MuonReadoutElement.

◆ layerHash() [2/2]

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

◆ lChamberLength()

double MuonGMR4::sTgcReadoutElement::lChamberLength ( ) const

Length of the chamber on the long side.

◆ leftStripEdge()

Amg::Vector3D MuonGMR4::sTgcReadoutElement::leftStripEdge ( const ActsGeometryContext ctx,
const IdentifierHash measHash 
) const

Definition at line 247 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

247  {
248  const IdentifierHash lHash = layerHash(measHash);
249  unsigned int gasGap = gasGapNumber(measHash);
250  unsigned int layIdx = static_cast<unsigned int>(lHash);
251 
252  if(chType(measHash) == ReadoutChannelType::Strip){
253  if(gasGap > m_pars.stripLayers.size()){
254  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
255  <<" is out of range. Maximum range "<<m_pars.stripLayers.size());
256  return Amg::Vector3D::Zero();
257  }
258  Amg::Vector3D stripleftEdge{Amg::Vector3D::Zero()};
259  Amg::Vector2D localstripleftEdge{Amg::Vector2D::Zero()};
260  std::optional<Amg::Vector2D> stripleftEdgeOpt = stripDesign(measHash).leftEdge(channelNumber(measHash));
261  localstripleftEdge = std::move(*stripleftEdgeOpt);
262  stripleftEdge.block<2,1>(0,0) = std::move(localstripleftEdge);
263 
264  return localToGlobalTrans(ctx, lHash)*stripleftEdge;
265 
266  }else if(chType(measHash) == ReadoutChannelType::Wire){
267  if(gasGap > m_pars.wireGroupLayers.size()){
268  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
269  <<" is out of range. Maximum range "<<m_pars.wireGroupLayers.size());
270  return Amg::Vector3D::Zero();
271 
272  }
273 
274  Amg::Vector3D wireleftEdge{Amg::Vector3D::Zero()};
275  Amg::Vector2D localwireleftEdge{Amg::Vector2D::Zero()};
276  std::optional<Amg::Vector2D> wireleftedgeOpt = wireDesign(measHash).leftEdge(channelNumber(measHash));
277  localwireleftEdge = std::move(*wireleftedgeOpt);
278  wireleftEdge.block<2,1>(0,0) = std::move(localwireleftEdge);
279 
280  return localToGlobalTrans(ctx, lHash)*wireleftEdge;
281 
282  }
283 
284  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
285  <<" is not valid Type "<< chType(measHash));
286  return Amg::Vector3D::Zero();
287 
288 }

◆ lFrameWidth()

double MuonGMR4::sTgcReadoutElement::lFrameWidth ( ) const

Width of the chamber frame on the long side.

◆ lGapLength() [1/2]

double MuonGMR4::sTgcReadoutElement::lGapLength ( const Identifier measId) const

Length of gas Gap on long side for strips.

◆ lGapLength() [2/2]

double MuonGMR4::sTgcReadoutElement::lGapLength ( const IdentifierHash measHash) const

◆ localChannelPosition() [1/2]

Amg::Vector2D MuonGMR4::sTgcReadoutElement::localChannelPosition ( const Identifier measId) const

Returns the local pad/strip/wireGroup position.

◆ localChannelPosition() [2/2]

Amg::Vector2D MuonGMR4::sTgcReadoutElement::localChannelPosition ( const IdentifierHash measHash) const

Shifting the first wireGroup center to the last wire of the first wireGroup

Defining the wireGroup center as the mean of the position of the last wire in the first group and the left edge of the active area defined for pads to match the R3 description

Shifting the last wireGroup center to the last wire of the second-last wireGroup

Defining the wireGroup center as the mean of the position of the last wire in the second last group and the right edge of the active area defined for pads to match the R3 description

In R3, the center of the normal wireGroup is defined on the 10th wire, whereas, in R4 the center is defined on the 11th wire. So shifting by a wirePitch to match R3

Definition at line 123 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

123  {
124  if (chType(measHash) == ReadoutChannelType::Strip) {
125  Amg::Vector2D stripCenter{Amg::Vector2D::Zero()};
126  std::optional<Amg::Vector2D> stripCenterOpt = stripDesign(measHash).center(channelNumber(measHash));
127  if (!stripCenterOpt) {
128  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The strip " << channelNumber(measHash) << " doesn't intersect with the edges of the trapezoid.");
129  return stripCenter;
130  }
131  stripCenter = std::move(*stripCenterOpt);
132  if (channelNumber(measHash) == 1 && firstStripPitch(measHash) < stripPitch(measHash)) {
133  stripCenter.x() += 0.25 * stripWidth(measHash);
134  }
135  if (channelNumber(measHash) == numStrips(measHash) && firstStripPitch(measHash) == stripPitch(measHash)) {
136  stripCenter.x() -= 0.25 * stripWidth(measHash);
137  }
138  return stripCenter;
139  }
140  else if (chType(measHash) == ReadoutChannelType::Wire) {
141  Amg::Vector2D wireGroupCenter{Amg::Vector2D::Zero()};
142  std::optional<Amg::Vector2D> wireGroupCenterOpt = wireDesign(measHash).center(channelNumber(measHash));
143  if (!wireGroupCenterOpt) {
144  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The wireGroup" << channelNumber(measHash) << "doesn't intersect with the edges of the trapezoid.");
145  return wireGroupCenter;
146  }
147  wireGroupCenter = std::move(*wireGroupCenterOpt);
148  unsigned int gasGap = gasGapNumber(measHash) + 1;
149  if (channelNumber(measHash) == 1) {
150  ATH_MSG_DEBUG("The first wiregroup width is " <<firstWireGroupWidth(gasGap));
151  ATH_MSG_DEBUG("The last wire pos is: " << wireGroupCenter.x() + ((firstWireGroupWidth(gasGap) + 1) / 2 - 1) * wirePitch(measHash) );
153  wireGroupCenter.x() = wireGroupCenter.x() + ((firstWireGroupWidth(gasGap) + 1) / 2 - 1) * wirePitch(measHash);
156  wireGroupCenter.x() = 0.5 * (wireGroupCenter.x() - 0.5 * lPadLength(measHash));
157  }
158  else if (channelNumber(measHash) == numWireGroups(gasGap)) {
159  ATH_MSG_DEBUG("The last wire center before modification is: " << wireGroupCenter.x());
160  unsigned int lastWireGroupWidth = numWires(gasGap) - firstWireGroupWidth(gasGap) - (numWireGroups(gasGap) - 2) * wireGroupWidth(gasGap);
161  ATH_MSG_DEBUG("The last wire group width is: " << lastWireGroupWidth << " and half of that is: "<< lastWireGroupWidth / 2);
163  wireGroupCenter.x() = wireGroupCenter.x() - (lastWireGroupWidth / 2 + 1) * wirePitch(measHash);
164  ATH_MSG_DEBUG("The last wire of the last second group is at: " << wireGroupCenter.x());
167  wireGroupCenter.x() = 0.5 * (wireGroupCenter.x() + 0.5 * lPadLength(measHash));
168  }
169  else {
172  wireGroupCenter.x() = wireGroupCenter.x() - wirePitch(measHash);
173  }
174  return wireGroupCenter;
175  }
176  else if (chType(measHash) == ReadoutChannelType::Pad) {
177  Amg::Vector2D padCenter{Amg::Vector2D::Zero()};
178  std::optional<Amg::Vector2D> padCenterOpt = padDesign(measHash).stripPosition(channelNumber(measHash));
179  if (!padCenterOpt) {
180  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The pad" << channelNumber(measHash) << "doesn't is not a valid pad number.");
181  return padCenter;
182  }
183  padCenter = std::move(*padCenterOpt);
184  return padCenter;
185  }
186  else {
187  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<"Invalid channel type: " << chType(measHash));
188  return Amg::Vector2D::Zero();
189  }
190 }

◆ localPadCorners() [1/2]

localCornerArray MuonGMR4::sTgcReadoutElement::localPadCorners ( const Identifier measId) const

◆ localPadCorners() [2/2]

localCornerArray MuonGMR4::sTgcReadoutElement::localPadCorners ( const IdentifierHash measHash) const

◆ localToGlobalTrans() [1/3]

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

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

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

81  {
82  return localToGlobalTrans(ctx, geoTransformHash());
83 }

◆ localToGlobalTrans() [2/3]

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

◆ localToGlobalTrans() [3/3]

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

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

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

◆ lPadLength() [1/2]

double MuonGMR4::sTgcReadoutElement::lPadLength ( const Identifier measId) const

Length of gas Gap on long side for wireGroup/Pads.

◆ lPadLength() [2/2]

double MuonGMR4::sTgcReadoutElement::lPadLength ( const IdentifierHash measHash) const

◆ maxPadEta() [1/2]

unsigned int MuonGMR4::sTgcReadoutElement::maxPadEta ( const Identifier measId) const

Returns the maximum number of pads that can be contained in a column of a pad. Used to match the pad numbering scheme.

◆ maxPadEta() [2/2]

unsigned int MuonGMR4::sTgcReadoutElement::maxPadEta ( const IdentifierHash measHash) const

◆ measurementHash()

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

Constructs the identifier hash from the full measurement Identifier.

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

Implements MuonGMR4::MuonReadoutElement.

◆ measurementId()

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

Converts the measurement hash back to the full Identifier.

Implements MuonGMR4::MuonReadoutElement.

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

◆ msSector()

const SpectrometerSector* MuonGMR4::MuonReadoutElement::msSector ( ) const
inherited

Returns the pointer to the envelope volume enclosing all chambers in the sector.

◆ multilayer()

int MuonGMR4::sTgcReadoutElement::multilayer ( ) const

Returns the multilayer of the sTgcReadoutElement.

◆ nChTypes()

unsigned int MuonGMR4::sTgcReadoutElement::nChTypes ( ) const

Number of Channel Types.

◆ numLayers()

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

Returns the number of gas gap layers.

◆ numPadEta() [1/2]

unsigned int MuonGMR4::sTgcReadoutElement::numPadEta ( const Identifier measId) const

Returns the number of pads in the eta direction in the given layer.

◆ numPadEta() [2/2]

unsigned int MuonGMR4::sTgcReadoutElement::numPadEta ( const IdentifierHash measHash) const

◆ numPadPhi() [1/2]

unsigned int MuonGMR4::sTgcReadoutElement::numPadPhi ( const Identifier measId) const

Returns the number of pads in the Phi direction in the given gasGap layer.

◆ numPadPhi() [2/2]

unsigned int MuonGMR4::sTgcReadoutElement::numPadPhi ( const IdentifierHash measHash) const

◆ numPads() [1/2]

unsigned int MuonGMR4::sTgcReadoutElement::numPads ( const Identifier measId) const

Pads Total number of pads in the given layer.

◆ numPads() [2/2]

unsigned int MuonGMR4::sTgcReadoutElement::numPads ( const IdentifierHash measHash) const

◆ numStrips() [1/2]

unsigned int MuonGMR4::sTgcReadoutElement::numStrips ( const Identifier measId) const

Strips Number of strips in a chamber.

◆ numStrips() [2/2]

unsigned int MuonGMR4::sTgcReadoutElement::numStrips ( const IdentifierHash measHash) const

◆ numWireGroups()

unsigned int MuonGMR4::sTgcReadoutElement::numWireGroups ( unsigned int  gasGap) const

Number of wire groups in the gas gap.

◆ numWires()

unsigned int MuonGMR4::sTgcReadoutElement::numWires ( unsigned int  gasGap) const

Number of wires in the gas gap.

◆ padDesign() [1/3]

const PadDesign& MuonGMR4::sTgcReadoutElement::padDesign ( const Identifier measId) const

Retrieves the readoutElement Layer given the Identifier/Hash.

◆ padDesign() [2/3]

const PadDesign& MuonGMR4::sTgcReadoutElement::padDesign ( const IdentifierHash measHash) const

◆ padDesign() [3/3]

const PadDesign& MuonGMR4::sTgcReadoutElement::padDesign ( unsigned int  gasGap) const

Retrieves the readoutElement Layer given the gasGap.

◆ padEta() [1/2]

unsigned int MuonGMR4::sTgcReadoutElement::padEta ( const Identifier measId) const

Returns the Eta index of the pad for the given pad identifier.

◆ padEta() [2/2]

unsigned int MuonGMR4::sTgcReadoutElement::padEta ( const IdentifierHash measHash) const

◆ padEtaPhi() [1/2]

std::pair<uint, uint> MuonGMR4::sTgcReadoutElement::padEtaPhi ( const Identifier measId) const

Returns a pair of Eta and Phi index for the given pad identifier.

◆ padEtaPhi() [2/2]

std::pair<uint, uint> MuonGMR4::sTgcReadoutElement::padEtaPhi ( const IdentifierHash measHash) const

◆ padHeight() [1/2]

double MuonGMR4::sTgcReadoutElement::padHeight ( const Identifier measId) const

Returns the height of all the pads that are not adjacent to the bottom edge of the trapezoid active area.

◆ padHeight() [2/2]

double MuonGMR4::sTgcReadoutElement::padHeight ( const IdentifierHash measHash) const

◆ padNumber() [1/4]

int MuonGMR4::sTgcReadoutElement::padNumber ( const Amg::Vector2D hitPos,
const Identifier measId 
) const

Returns the pad Number given local position of hit and Identifier/Hash.

◆ padNumber() [2/4]

int MuonGMR4::sTgcReadoutElement::padNumber ( const Amg::Vector2D hitPos,
const IdentifierHash measHash 
) const

Definition at line 237 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

237  {
238  int padEta = padDesign(measHash).channelNumber(hitPos).first;
239  int padPhi = padDesign(measHash).channelNumber(hitPos).second;
240  bool is_valid{true};
241  const Identifier padID = m_idHelper.padID(identify(), multilayer(), gasGapNumber(measHash) + 1, chType(measHash),
242  padEta, padPhi, is_valid);
243  int channel = m_idHelper.channel(padID);
244  return channel;
245 }

◆ padNumber() [3/4]

unsigned int MuonGMR4::sTgcReadoutElement::padNumber ( const Identifier measId) const

Returns the pad number in the conventional pad numbering scheme from the sequential channel number.

◆ padNumber() [4/4]

unsigned int MuonGMR4::sTgcReadoutElement::padNumber ( const IdentifierHash measHash) const

◆ padPhi() [1/2]

unsigned int MuonGMR4::sTgcReadoutElement::padPhi ( const Identifier measId) const

Returns the Phi index of the pad for the given pad identifier.

◆ padPhi() [2/2]

unsigned int MuonGMR4::sTgcReadoutElement::padPhi ( const IdentifierHash measHash) const

◆ padPhiShift() [1/2]

double MuonGMR4::sTgcReadoutElement::padPhiShift ( const Identifier measId) const

Returns the staggering shift of inner pad edges in the phi direction.

◆ padPhiShift() [2/2]

double MuonGMR4::sTgcReadoutElement::padPhiShift ( const IdentifierHash measHash) const

◆ planeSurfaceFactory()

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

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

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

◆ releaseUnAlignedTrfs()

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

Releases all cached transforms that are not connected with alignment.

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

62  {
63  for (const auto& cache : m_localToGlobalCaches) {
64  cache.second->releaseNominalCache();
65  }
66 }

◆ rightStripEdge()

Amg::Vector3D MuonGMR4::sTgcReadoutElement::rightStripEdge ( const ActsGeometryContext ctx,
const IdentifierHash measHash 
) const

Definition at line 291 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx.

291  {
292  const IdentifierHash lHash = layerHash(measHash);
293  unsigned int gasGap = gasGapNumber(measHash);
294  unsigned int layIdx = static_cast<unsigned int>(lHash);
295 
296  if(chType(measHash) == ReadoutChannelType::Strip){
297  if(gasGap > m_pars.stripLayers.size()){
298  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
299  <<" is out of range. Maximum range "<<m_pars.stripLayers.size());
300  return Amg::Vector3D::Zero();
301  }
302  Amg::Vector3D striprightEdge{Amg::Vector3D::Zero()};
303  Amg::Vector2D localstriprightEdge{Amg::Vector2D::Zero()};
304  std::optional<Amg::Vector2D> striprightEdgeOpt = stripDesign(measHash).rightEdge(channelNumber(measHash));
305  localstriprightEdge = std::move(*striprightEdgeOpt);
306  striprightEdge.block<2,1>(0,0) = std::move(localstriprightEdge);
307 
308  return localToGlobalTrans(ctx, lHash)*striprightEdge;
309 
310  }else if(chType(measHash) == ReadoutChannelType::Wire){
311  if(gasGap > m_pars.wireGroupLayers.size()){
312  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
313  <<" is out of range. Maximum range "<<m_pars.wireGroupLayers.size());
314  return Amg::Vector3D::Zero();
315 
316  }
317 
318  Amg::Vector3D wirerightEdge{Amg::Vector3D::Zero()};
319  Amg::Vector2D localwirerightEdge{Amg::Vector2D::Zero()};
320  std::optional<Amg::Vector2D> wirerightedgeOpt = wireDesign(measHash).rightEdge(channelNumber(measHash));
321  localwirerightEdge = std::move(*wirerightedgeOpt);
322  wirerightEdge.block<2,1>(0,0) = std::move(localwirerightEdge);
323 
324  return localToGlobalTrans(ctx, lHash)*wirerightEdge;
325 
326  }
327 
328  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" The layer hash "<<layIdx
329  <<" is not valid Type "<< chType(measHash));
330  return Amg::Vector3D::Zero();
331 
332 
333 }

◆ sChamberLength()

double MuonGMR4::sTgcReadoutElement::sChamberLength ( ) const

Length of the chamber on the short side.

◆ setChamberLink()

void MuonGMR4::MuonReadoutElement::setChamberLink ( const Chamber chamber)
inherited

Sets the link to the enclosing chamber.

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

145  {
147 }

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

◆ setSectorLink()

void MuonGMR4::MuonReadoutElement::setSectorLink ( const SpectrometerSector envelope)
inherited

Set the link to the enclosing sector envelope.

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

148  {
149  m_msSectorLink = envelope;
150 }

◆ sFrameWidth()

double MuonGMR4::sTgcReadoutElement::sFrameWidth ( ) const

Width of the chamber frame on the short side.

◆ sGapLength() [1/2]

double MuonGMR4::sTgcReadoutElement::sGapLength ( const Identifier measId) const

Length of gas Gap on short side for strips.

◆ sGapLength() [2/2]

double MuonGMR4::sTgcReadoutElement::sGapLength ( const IdentifierHash measHash) const

◆ sPadLength() [1/2]

double MuonGMR4::sTgcReadoutElement::sPadLength ( const Identifier measId) const

Length of gas Gap on short side for wireGroup/Pads.

◆ sPadLength() [2/2]

double MuonGMR4::sTgcReadoutElement::sPadLength ( const IdentifierHash measHash) const

◆ stationEta()

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

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

◆ stationName()

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

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

◆ stationPhi()

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

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

◆ storeAlignedTransforms()

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

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

Implements ActsTrk::IDetectorElement.

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

68  {
69  if (store.detType != detectorType()) return 0;
70  unsigned int aligned{0};
71  for (const auto& cache : m_localToGlobalCaches) {
72  cache.second->getTransform(&store);
73  ++aligned;
74  }
75  return aligned;
76 }

◆ strawSurfaceFactory()

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

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

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

◆ stripDesign() [1/3]

const StripDesign& MuonGMR4::sTgcReadoutElement::stripDesign ( const Identifier measId) const

Retrieves the readoutElement Layer given the Identifier/Hash.

◆ stripDesign() [2/3]

const StripDesign& MuonGMR4::sTgcReadoutElement::stripDesign ( const IdentifierHash measHash) const

◆ stripDesign() [3/3]

const StripDesign& MuonGMR4::sTgcReadoutElement::stripDesign ( unsigned int  gasGap) const

Retrieves the readoutElement Layer given the gasGap.

◆ stripLayer() [1/2]

const StripLayer& MuonGMR4::sTgcReadoutElement::stripLayer ( const Identifier measId) const

◆ stripLayer() [2/2]

const StripLayer& MuonGMR4::sTgcReadoutElement::stripLayer ( const IdentifierHash measId) const

◆ stripLength() [1/2]

double MuonGMR4::sTgcReadoutElement::stripLength ( const Identifier measId) const

Length of each strip.

◆ stripLength() [2/2]

double MuonGMR4::sTgcReadoutElement::stripLength ( const IdentifierHash measHash) const

◆ stripPitch() [1/2]

double MuonGMR4::sTgcReadoutElement::stripPitch ( const Identifier measId) const

Pitch of a strip.

◆ stripPitch() [2/2]

double MuonGMR4::sTgcReadoutElement::stripPitch ( const IdentifierHash measHash) const

◆ stripWidth() [1/2]

double MuonGMR4::sTgcReadoutElement::stripWidth ( const Identifier measId) const

Width of a strip.

◆ stripWidth() [2/2]

double MuonGMR4::sTgcReadoutElement::stripWidth ( const IdentifierHash measHash) const

◆ surface() [1/4]

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

Returns the surface associated to the readout element plane.

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

97 { return surface(geoTransformHash()); }

◆ surface() [2/4]

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

◆ surface() [3/4]

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

◆ surface() [4/4]

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

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

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

99 { return *surfacePtr(hash); }

◆ surfacePtr()

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

Returns the pointer associated to a certain wire / plane.

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

89  {
90  ActsTrk::SurfaceCacheSet::const_iterator cache = m_surfaces.find(hash);
91  if(cache != m_surfaces.end()) return (*cache)->getSurface();
92  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" "<<__func__<<"() -- Hash "<<hash
93  <<" is unknown to "<<idHelperSvc()->toStringDetEl(identify()));
94  return nullptr;
95 }

◆ thickness()

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

Thickness of the chamber.

◆ toStation()

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

Returns the local -> global transformation to go from the volume center origin.

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

59  {
60  return getMaterialGeom()->getAbsoluteTransform(alignStore ? alignStore->geoModelAlignment.get() : nullptr);
61 }

◆ transform()

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

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

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

85  {
86  const ActsGeometryContext *gctx = anygctx.get<const ActsGeometryContext *>();
87  return localToGlobalTrans(*gctx, geoTransformHash());
88 }

◆ wireCutout()

double MuonGMR4::sTgcReadoutElement::wireCutout ( unsigned int  gasGap) const

Wire Cutout of a gas Gap.

◆ wireDesign() [1/3]

const WireGroupDesign& MuonGMR4::sTgcReadoutElement::wireDesign ( const Identifier measId) const

Retrieves the readoutElement Layer given the Identifier/Hash.

◆ wireDesign() [2/3]

const WireGroupDesign& MuonGMR4::sTgcReadoutElement::wireDesign ( const IdentifierHash measHash) const

◆ wireDesign() [3/3]

const WireGroupDesign& MuonGMR4::sTgcReadoutElement::wireDesign ( unsigned int  gasGap) const

Retrieves the readoutElement Layer given the gasGap.

◆ wireGroupWidth()

unsigned int MuonGMR4::sTgcReadoutElement::wireGroupWidth ( unsigned int  gasGap) const

Number of wires in a normal wire group.

◆ wirePitch() [1/2]

double MuonGMR4::sTgcReadoutElement::wirePitch ( const Identifier measId) const

Wires Pitch of the wire.

◆ wirePitch() [2/2]

double MuonGMR4::sTgcReadoutElement::wirePitch ( const IdentifierHash measHash) const

◆ wireWidth() [1/2]

double MuonGMR4::sTgcReadoutElement::wireWidth ( const Identifier measId) const

Width of a single wire.

◆ wireWidth() [2/2]

double MuonGMR4::sTgcReadoutElement::wireWidth ( const IdentifierHash measHash) const

◆ yCutout() [1/2]

double MuonGMR4::sTgcReadoutElement::yCutout ( const Identifier measId) const

Returns the yCutout value of the chamber.

◆ yCutout() [2/2]

double MuonGMR4::sTgcReadoutElement::yCutout ( const IdentifierHash measHash) const

Friends And Related Function Documentation

◆ ActsTrk::TransformCacheDetEle< sTgcReadoutElement >

Member Data Documentation

◆ ATLAS_THREAD_SAFE

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

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_args

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

◆ m_chambLink

const Chamber* MuonGMR4::MuonReadoutElement::m_chambLink {nullptr}
privateinherited

◆ m_chIdx

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

◆ m_detElHash

IdentifierHash MuonGMR4::MuonReadoutElement::m_detElHash {}
privateinherited

Cache of the detector element hash.

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

◆ m_gasGapPitch

double MuonGMR4::sTgcReadoutElement::m_gasGapPitch {-1.}
private

◆ m_hashShiftChType

const unsigned int MuonGMR4::sTgcReadoutElement::m_hashShiftChType {2*CxxUtils::count_ones(static_cast<unsigned int>(numLayers()))}
private

Auxillary variables to translate the Identifier to a measurement hash and back.

Definition at line 298 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h.

◆ m_idHelper

const sTgcIdHelper& MuonGMR4::sTgcReadoutElement::m_idHelper {idHelperSvc()->stgcIdHelper()}
private

◆ m_idHelperSvc

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

◆ m_imsg

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

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_localToGlobalCaches

TransformCacheMap MuonGMR4::MuonReadoutElement::m_localToGlobalCaches
privateinherited

◆ m_lvl

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

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_msg_tls

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

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

Definition at line 132 of file AthMessaging.h.

◆ m_msSectorLink

const SpectrometerSector* MuonGMR4::MuonReadoutElement::m_msSectorLink {}
privateinherited

Pointer to the associated MS-sector & MuonChamber.

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

◆ m_multiLayer

const int MuonGMR4::sTgcReadoutElement::m_multiLayer {m_idHelper.multilayer(identify())}
private

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_pars

parameterBook MuonGMR4::sTgcReadoutElement::m_pars {}
private

◆ m_stEta

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

Cache the station eta of the identifier.

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

◆ m_stName

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

Cache the station name of the identifier.

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

◆ m_stPhi

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

Cache the station phi of the identifier.

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

◆ m_surfaces

ActsTrk::SurfaceCacheSet MuonGMR4::MuonReadoutElement::m_surfaces
privateinherited

Cache of all associated surfaces.

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


The documentation for this class was generated from the following files:
MuonGMR4::sTgcReadoutElement::localChannelPosition
Amg::Vector2D localChannelPosition(const Identifier &measId) const
Returns the local pad/strip/wireGroup position.
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
SGTest::store
TestStore store
Definition: TestStore.cxx:23
MuonGMR4::sTgcReadoutElement::multilayer
int multilayer() const
Returns the multilayer of the sTgcReadoutElement.
MuonGMR4::parameterBook
MmReadoutElement::parameterBook parameterBook
Definition: MmReadoutElement.cxx:22
MuonGMR4::sTgcReadoutElement::firstStripPitch
double firstStripPitch(const Identifier &measId) const
Gas Gaps.
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGMR4::MuonReadoutElement::m_chambLink
const Chamber * m_chambLink
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:217
MuonGMR4::MuonReadoutElement::chamber
const Chamber * chamber() const
Returns the pointer to the chamber enclosing this readout element.
MuonGMR4::sTgcReadoutElement::localCornerArray
std::array< Amg::Vector2D, 4 > localCornerArray
Returns an array of four 2D vectors representing corner positions of the pads.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:214
MuonGMR4::sTgcReadoutElement::padEta
unsigned int padEta(const Identifier &measId) const
Returns the Eta index of the pad for the given pad identifier.
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
ActsTrk::DetectorAlignStore::geoModelAlignment
std::shared_ptr< GeoAlignmentStore > geoModelAlignment
Store containing the aligned GeoModel nodes.
Definition: DetectorAlignStore.h:31
MuonGMR4::MuonReadoutElement::m_localToGlobalCaches
TransformCacheMap m_localToGlobalCaches
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:211
MuonGMR4::MuonReadoutElement::surface
const Acts::Surface & surface() const override final
Returns the surface associated to the readout element plane.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:97
MuonGMR4::StripDesign::leftEdge
CheckVector2D leftEdge(int stripNumb) const
Returns the left edge of the strip (Global numbering scheme)
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MuonGMR4::sTgcReadoutElement::globalCornerArray
std::array< Amg::Vector3D, 4 > globalCornerArray
Returns an array of four 3D vectors representing corner positions of the pads.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:218
MuonGMR4::sTgcReadoutElement::stripDesign
const StripDesign & stripDesign(const Identifier &measId) const
Retrieves the readoutElement Layer given the Identifier/Hash.
MuonGMR4::MuonReadoutElement::m_surfaces
ActsTrk::SurfaceCacheSet m_surfaces
Cache of all associated surfaces.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:214
MuonGMR4::sTgcReadoutElement::Wire
@ Wire
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:33
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGMR4::sTgcReadoutElement::parameterBook::lHalfChamberLength
double lHalfChamberLength
Length of the chamber on the long side.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:47
MuonGMR4::MuonReadoutElement::createGeoTransform
StatusCode createGeoTransform()
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:36
MuonGMR4::sTgcReadoutElement::Strip
@ Strip
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:32
ActsTrk::IDetectorElementBase::detectorType
virtual DetectorType detectorType() const =0
Returns the detector element type.
MuonGMR4::MuonReadoutElement::globalToLocalTrans
Amg::Transform3D globalToLocalTrans(const ActsGeometryContext &ctx) const
Transformations to translate between local <-> global coordinates.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:78
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ActsTrk::DetectorType::sTgc
@ sTgc
Micromegas (NSW)
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
MuonGMR4::sTgcReadoutElement::measurementHash
IdentifierHash measurementHash(const Identifier &measId) const override final
Constructs the identifier hash from the full measurement Identifier.
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
MuonGMR4::PadDesign::channelNumber
std::pair< int, int > channelNumber(const Amg::Vector2D &hitPos) const
Function to retrieve the pad eta and phi given a local position coordinate.
ActsGeometryContext::getStore
AlignmentStorePtr & getStore(const DetectorType type)
Returns the mutable alignable store for the ATLAS detector type (Pixel, Mdt, etc.)
Definition: ActsGeometryContext.h:33
MuonGMR4::sTgcReadoutElement::wireDesign
const WireGroupDesign & wireDesign(const Identifier &measId) const
Retrieves the readoutElement Layer given the Identifier/Hash.
MuonGMR4::MuonReadoutElement::MuonReadoutElement
MuonReadoutElement()=delete
MuonGMR4::sTgcReadoutElement::createHash
static IdentifierHash createHash(const unsigned int gasGap, const unsigned int channelType, const unsigned int channel, const unsigned int wireInGrp=0)
Create a measurement hash from the Identifier fields.
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
MuonGMR4::sTgcReadoutElement::numWireGroups
unsigned int numWireGroups(unsigned int gasGap) const
Number of wire groups in the gas gap.
MuonGMR4::MuonReadoutElement::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the pointer to the muonIdHelperSvc.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonGMR4::sTgcReadoutElement::parameterBook::wireGroupLayers
std::vector< StripLayer > wireGroupLayers
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:66
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonGMR4::sTgcReadoutElement::chType
static unsigned int chType(const IdentifierHash &measHash)
Returns the channel type for a given identifierHash.
MuonGMR4::sTgcReadoutElement::gapHeight
double gapHeight(const Identifier &measId) const
Height of gas Gap.
MuonGMR4::MuonReadoutElement::center
Amg::Vector3D center(const ActsGeometryContext &ctx) const
Returns the detector center (Which is the same as the detector center of the first measurement layer)
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonGMR4::sTgcReadoutElement::parameterBook::halfChamberHeight
double halfChamberHeight
sTGC Chamber Details
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:43
MuonGMR4::sTgcReadoutElement::m_pars
parameterBook m_pars
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:292
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
MuonGMR4::sTgcReadoutElement::parameterBook::padLayers
std::vector< StripLayer > padLayers
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:67
MuonGMR4::sTgcReadoutElement::parameterBook::layerBounds
ActsTrk::SurfaceBoundSetPtr< Acts::TrapezoidBounds > layerBounds
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:74
MuonGMR4::StripDesign::center
CheckVector2D center(int stripNumb) const
Returns the bisector of the strip (Global numbering scheme)
MuonGMR4::MuonReadoutElement::geoTransformHash
static IdentifierHash geoTransformHash()
Returns the hash that is associated with the surface cache holding the transformation that is placing...
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:44
MuonGMR4::MuonReadoutElement::alignableTransform
const GeoAlignableTransform * alignableTransform() const
Returnsthe alignable transform of the readout element.
sTgcIdHelper::padID
Identifier padID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channelType, int padEta, int padPhi) const
Definition: sTgcIdHelper.cxx:939
MuonGMR4::sTgcReadoutElement::gasGapNumber
static unsigned int gasGapNumber(const IdentifierHash &measHash)
Returns the gasGap (0 to 3) for a given identifierHash.
MuonGMR4::sTgcReadoutElement::m_idHelper
const sTgcIdHelper & m_idHelper
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:293
MuonGMR4::sTgcReadoutElement::wireGroupWidth
unsigned int wireGroupWidth(unsigned int gasGap) const
Number of wires in a normal wire group.
MuonIdHelper::stationEta
int stationEta(const Identifier &id) const
Definition: MuonIdHelper.cxx:805
MuonGMR4::MuonReadoutElement::identify
Identifier identify() const override final
Return the athena identifier.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGMR4::sTgcReadoutElement::numWires
unsigned int numWires(unsigned int gasGap) const
Number of wires in the gas gap.
MuonGMR4::sTgcReadoutElement::padPhi
unsigned int padPhi(const Identifier &measId) const
Returns the Phi index of the pad for the given pad identifier.
MuonGMR4::sTgcReadoutElement::padDesign
const PadDesign & padDesign(const Identifier &measId) const
Retrieves the readoutElement Layer given the Identifier/Hash.
MuonGMR4::sTgcReadoutElement::m_gasGapPitch
double m_gasGapPitch
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:295
MuonGMR4::sTgcReadoutElement::firstWireGroupWidth
unsigned int firstWireGroupWidth(unsigned int gasGap) const
Number of wires in the first wire group.
MuonGMR4::sTgcReadoutElement::stripWidth
double stripWidth(const Identifier &measId) const
Width of a strip.
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
MuonGMR4::MuonReadoutElement::planeSurfaceFactory
StatusCode planeSurfaceFactory(const IdentifierHash &hash, std::shared_ptr< Acts::PlanarBounds > pBounds)
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:125
MuonGMR4::MuonReadoutElement::surfacePtr
std::shared_ptr< Acts::Surface > surfacePtr(const IdentifierHash &hash) const
Returns the pointer associated to a certain wire / plane.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:89
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
MuonGMR4::sTgcReadoutElement::localPadCorners
localCornerArray localPadCorners(const Identifier &measId) const
MuonGMR4::sTgcReadoutElement::numStrips
unsigned int numStrips(const Identifier &measId) const
Strips Number of strips in a chamber.
MuonGMR4::MuonReadoutElement::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &ctx) const
Returns the local to global transformation into the ATLAS coordinate system.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:81
Pad
Definition: Pad.h:10
MuonGMR4::sTgcReadoutElement::wirePitch
double wirePitch(const Identifier &measId) const
Wires Pitch of the wire.
MuonGMR4::StripDesign::rightEdge
CheckVector2D rightEdge(int stripNumb) const
Returns the right edge of the strip (Global numbering scheme)
MuonGMR4::PadDesign::stripPosition
Amg::Vector2D stripPosition(int stripNum) const override final
Override from stripDesign. This function will give the center of the pad by taking the sequential cha...
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
MuonGMR4::sTgcReadoutElement::lPadLength
double lPadLength(const Identifier &measId) const
Length of gas Gap on long side for wireGroup/Pads.
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
MuonGMR4::sTgcReadoutElement::layerHash
IdentifierHash layerHash(const Identifier &measId) const override final
Transforms the Identifier into a layer hash.
MuonGMR4::sTgcReadoutElement::WireInGrp
@ WireInGrp
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:34
MuonGMR4::sTgcReadoutElement::channelNumber
static unsigned int channelNumber(const IdentifierHash &measHash)
Returns channel position for a given identifierHash.
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:26
python.CaloScaleNoiseConfig.args
args
Definition: CaloScaleNoiseConfig.py:80
MuonGMR4::MuonReadoutElement::m_msSectorLink
const SpectrometerSector * m_msSectorLink
Pointer to the associated MS-sector & MuonChamber.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:216
MuonGMR4::sTgcReadoutElement::stripPitch
double stripPitch(const Identifier &measId) const
Pitch of a strip.
MuonGMR4::sTgcReadoutElement::parameterBook::stripLayers
std::vector< StripLayer > stripLayers
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:65
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
MuonGMR4::sTgcReadoutElement::parameterBook::sHalfChamberLength
double sHalfChamberLength
Length of the chamber on the short side.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:45
Identifier
Definition: IdentifierFieldParser.cxx:14