ATLAS Offline Software
Loading...
Searching...
No Matches
MuonGMR4::SpectrometerSector Class Reference

A spectrometer sector forms the envelope of all chambers that are placed in the same MS sector & layer E.g. More...

#include <SpectrometerSector.h>

Inheritance diagram for MuonGMR4::SpectrometerSector:
Collaboration diagram for MuonGMR4::SpectrometerSector:

Classes

struct  chamberLocation
 : Helper struct for fast approximate navigation. More...
struct  defineArgs

Public Types

using ChamberPtr = GeoModel::TransientConstSharedPtr<Chamber>
using ChamberSet = std::vector<ChamberPtr>

Public Member Functions

 SpectrometerSector (defineArgs &&args)
 Standard constructor taking the defining parameters.
 SpectrometerSector (const SpectrometerSector &other)=delete
 Delete the copy constructor and copy assignment.
SpectrometerSectoroperator= (const SpectrometerSector &other)=delete
 ~SpectrometerSector ()=default
bool operator< (const SpectrometerSector &other) const
std::string identString () const
 Returns a string encoding the chamber index & the sector of the MS sector.
const Muon::IMuonIdHelperSvcidHelperSvc () const
 Returns the IdHelpeSvc.
Muon::MuonStationIndex::ChIndex chamberIndex () const
 Returns the chamber index scheme.
int stationPhi () const
 : Returns the station phi of the sector
int sector () const
 Returns the sector of the MS-sector.
int8_t side () const
 Returns the side of the MS-sector 1 -> A side ; -1 -> C side.
bool barrel () const
 Returns whether the sector is placed in the barrel.
const Amg::Transform3DlocalToGlobalTransform (const ActsTrk::GeometryContext &gctx) const
 Returns the local -> global tarnsformation from the sector.
Amg::Transform3D globalToLocalTransform (const ActsTrk::GeometryContext &gctx) const
 Returns the global -> local transformation from the ATLAS global.
const Amg::Transform3DlocalToGlobalTransform (const Acts::GeometryContext &tgContext) const
 Returns the local -> global tarnsformation from the sector.
Amg::Transform3D globalToLocalTransform (const Acts::GeometryContext &tgContext) const
 Returns the global -> local transformation from the ATLAS global.
const Acts::PlaneSurface & surface () const
 Returns the associated surface.
const ChamberSetchambers () const
 Returns the associated chambers with this sector.
double halfXLong () const
 Long-extend of the chamber in the x-direction at positive Y.
double halfXShort () const
 Short extend of the chamber in the x-direction at negative Y.
double halfY () const
 Extend of the chamber in the y-direction.
double halfZ () const
 Thickness of the chamber in the z-direction.
const defineArgsparameters () const
 Returns the reference to the defining parameters of the sector.
std::shared_ptr< Acts::Volume > boundingVolume (const ActsTrk::GeometryContext &gctx) const
 Returns the Acts::Volume representation of the sector.
std::shared_ptr< Acts::VolumeBounds > bounds () const
 Returns the volume bounds.
Chamber::ReadoutSet readoutEles () const
 Returns the list of all associated readout elements.
const std::vector< chamberLocation > & chamberLocations () const
 returns the list of all MDT chambers in the sector for fast navigation
const std::vector< unsigned int > & logicalLayerIdx (const MuonReadoutElement *reEle) const
 Returns the logic layer numbering of a given Readout Element.
void addPlacement (std::unique_ptr< ActsTrk::VolumePlacement > &&placement) const
 Adds a volume placement to the Chamber's memory management.
bool msgLvl (const MSG::Level lvl) const
 Test the output level.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.
void setLevel (MSG::Level lvl)
 Change the current logging level.

Private Member Functions

std::unordered_map< const MuonReadoutElement *, std::vector< unsigned int > > fillDetLayIdCache () const
 Function filling the map mapping the readout elements to layer numbers.
Identifier computeDetLayerId (const MuonReadoutElement *rele) const
 Helper function calculating the logic layer Id and the physical layer id.
unsigned int nLayerPerReadout (const MuonReadoutElement *rele) const
 Helper function giving the number of measurement layers in a given readout ele.
void initMessaging () const
 Initialize our message level and MessageSvc.

Private Attributes

defineArgs m_args {}
const std::unordered_map< const MuonReadoutElement *, std::vector< unsigned int > > m_detLayIdCache {fillDetLayIdCache()}
 Map mapping each Readout Element to the layer numbering in the sector frame.
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels).
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging).

Detailed Description

A spectrometer sector forms the envelope of all chambers that are placed in the same MS sector & layer E.g.

sector 5 in BI on the A-side. The spectrometer sector defines a coordinate system which is primarly used in the pattern recognition stage of the muon reconstruction

    x-axis: Points along the Mdt tubes & is hence sensitive to the phi direction
    y-axis: Points to the next Mdt tube in the layer or in other words to the big wheel
            in the sector, if the chamber is in the barrel or outside in radial direction
    z-axis: Points radially outwards if the chamber is in the barrel or in towards the cavern
            wall if it's an endcap chamber

The origin of the spectrometer sector is placed in the nominal centre of the envelope.

The spectrometer contains pointer to all chambers & readout elements that are enclosed by it.

Definition at line 40 of file SpectrometerSector.h.

Member Typedef Documentation

◆ ChamberPtr

◆ ChamberSet

Definition at line 43 of file SpectrometerSector.h.

Constructor & Destructor Documentation

◆ SpectrometerSector() [1/2]

MuonGMR4::SpectrometerSector::SpectrometerSector ( defineArgs && args)

Standard constructor taking the defining parameters.

Definition at line 37 of file SpectrometerSector.cxx.

37 :
38 AthMessaging("MuonSpectrometerSector"), m_args{std::move(args)} {
39 for (auto & chamber : m_args.chambers) {
40 chamber->setParent(this);
41 }
42 }
AthMessaging()
Default constructor:

◆ SpectrometerSector() [2/2]

MuonGMR4::SpectrometerSector::SpectrometerSector ( const SpectrometerSector & other)
delete

Delete the copy constructor and copy assignment.

◆ ~SpectrometerSector()

MuonGMR4::SpectrometerSector::~SpectrometerSector ( )
default

Member Function Documentation

◆ addPlacement()

void MuonGMR4::SpectrometerSector::addPlacement ( std::unique_ptr< ActsTrk::VolumePlacement > && placement) const

Adds a volume placement to the Chamber's memory management.

Definition at line 263 of file SpectrometerSector.cxx.

263 {
264 m_args.chambers.front()->addPlacement(std::move(placement));
265}

◆ barrel()

bool MuonGMR4::SpectrometerSector::barrel ( ) const

Returns whether the sector is placed in the barrel.

Definition at line 55 of file SpectrometerSector.cxx.

55{ return m_args.chambers.front()->barrel(); }

◆ boundingVolume()

std::shared_ptr< Acts::Volume > MuonGMR4::SpectrometerSector::boundingVolume ( const ActsTrk::GeometryContext & gctx) const

Returns the Acts::Volume representation of the sector.

Parameters
gctxGeometry context carrrying the alignment transformations

Definition at line 85 of file SpectrometerSector.cxx.

85 {
86 return std::make_shared<Acts::Volume>(localToGlobalTransform(gctx), bounds());
87}
const Amg::Transform3D & localToGlobalTransform(const ActsTrk::GeometryContext &gctx) const
Returns the local -> global tarnsformation from the sector.
std::shared_ptr< Acts::VolumeBounds > bounds() const
Returns the volume bounds.

◆ bounds()

std::shared_ptr< Acts::VolumeBounds > MuonGMR4::SpectrometerSector::bounds ( ) const

Returns the volume bounds.

Definition at line 88 of file SpectrometerSector.cxx.

88{ return m_args.bounds; }

◆ chamberIndex()

Muon::MuonStationIndex::ChIndex MuonGMR4::SpectrometerSector::chamberIndex ( ) const

Returns the chamber index scheme.

Definition at line 52 of file SpectrometerSector.cxx.

52{ return m_args.chambers.front()->chamberIndex(); }

◆ chamberLocations()

const std::vector< SpectrometerSector::chamberLocation > & MuonGMR4::SpectrometerSector::chamberLocations ( ) const

returns the list of all MDT chambers in the sector for fast navigation

Definition at line 96 of file SpectrometerSector.cxx.

96 {
97 return m_args.detectorLocs;
98
99}

◆ chambers()

const ChamberSet & MuonGMR4::SpectrometerSector::chambers ( ) const

Returns the associated chambers with this sector.

Definition at line 61 of file SpectrometerSector.cxx.

61{ return m_args.chambers; }

◆ computeDetLayerId()

Identifier MuonGMR4::SpectrometerSector::computeDetLayerId ( const MuonReadoutElement * rele) const
private

Helper function calculating the logic layer Id and the physical layer id.

Definition at line 194 of file SpectrometerSector.cxx.

194 {
195
196 switch (rele->detectorType()) {
198 auto mdtRele = dynamic_cast<const MdtReadoutElement*>(rele);
199 return idHelperSvc()->mdtIdHelper().channelID(mdtRele->stationName(), 1,
200 mdtRele->stationPhi(),
201 mdtRele->multilayer(),
202 1,1);
203 }
205 auto rpcRele = dynamic_cast<const RpcReadoutElement*>(rele);
206 return idHelperSvc()->rpcIdHelper().channelID(rpcRele->stationName(), 1,
207 rpcRele->stationPhi(),
208 rpcRele->doubletR(), 1, 1,
209 1, 0, 1);
210 }
212 auto tgcRele = dynamic_cast<const TgcReadoutElement*>(rele);
213 return idHelperSvc()->tgcIdHelper().channelID(tgcRele->stationName(), 1,
214 tgcRele->stationPhi(),
215 1, 0, 1);
216 }
218 auto stgcRele = dynamic_cast<const sTgcReadoutElement*>(rele);
219 return idHelperSvc()->stgcIdHelper().channelID(stgcRele->stationName(), 1,
220 stgcRele->stationPhi(),
221 stgcRele->multilayer(),
222 1, 0, 1);
223 }
225 auto mmRele = dynamic_cast<const MmReadoutElement*>(rele);
226 return idHelperSvc()->mmIdHelper().channelID(mmRele->stationName(), 1,
227 mmRele->stationPhi(),
228 mmRele->multilayer(),
229 1, 1);
230 }
231 default:
232 THROW_EXCEPTION("Unexpected Readout Element Type in computeDetLayerId()");
233 }
234}
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int tubeLayer, int tube) const
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the IdHelpeSvc.
virtual const MmIdHelper & mmIdHelper() const =0
access to CscIdHelper
virtual const RpcIdHelper & rpcIdHelper() const =0
access to RpcIdHelper
virtual const sTgcIdHelper & stgcIdHelper() const =0
access to TgcIdHelper
virtual const TgcIdHelper & tgcIdHelper() const =0
access to TgcIdHelper
virtual const MdtIdHelper & mdtIdHelper() const =0
access to MdtIdHelper
Identifier channelID(int stationName, int stationEta, int stationPhi, int doubletR, int doubletZ, int doubletPhi, int gasGap, int measuresPhi, int strip) const
Identifier channelID(int stationName, int stationEta, int stationPhi, int gasGap, int isStrip, int channel) const
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channelType, int channel) const
@ Mm
Maybe not needed in the migration.
@ Tgc
Resitive Plate Chambers.
@ sTgc
Micromegas (NSW).
@ Rpc
Monitored Drift Tubes.
@ Mdt
MuonSpectrometer.
#define THROW_EXCEPTION(MESSAGE)
Definition throwExcept.h:10

◆ fillDetLayIdCache()

std::unordered_map< const MuonReadoutElement *, std::vector< unsigned int > > MuonGMR4::SpectrometerSector::fillDetLayIdCache ( ) const
private

Function filling the map mapping the readout elements to layer numbers.

Definition at line 122 of file SpectrometerSector.cxx.

122 {
123
124 std::unordered_map<const MuonReadoutElement*, std::vector<unsigned int>> cache{};
125 const ActsTrk::GeometryContext gctx{};
126 const Amg::Transform3D sectorTrans = globalToLocalTransform(gctx);
127
128 // sort the Readout elements by z in the sector fram
129 Chamber::ReadoutSet reEleSorted {readoutEles()};
130 std::ranges::sort(reEleSorted, [&sectorTrans, &gctx](const MuonReadoutElement* reEle1, const MuonReadoutElement* reEle2)-> bool {
131 return (sectorTrans * reEle1->center(gctx, reEle1->identify())).z() < (sectorTrans * reEle2->center(gctx, reEle2->identify())).z();
132 });
133
134 // this is a function to find the next logical layer, returning the corresponding reEle and Id
135 auto nextLayer = [this, &cache, &reEleSorted](const Identifier& lastId) ->
136 std::pair<const MuonReadoutElement*, const Identifier> {
137
138 const MuonReadoutElement* nextReEle {nullptr};
139 Identifier nextId {};
140
141 for (const MuonReadoutElement* reEle : reEleSorted){
142
143 // Check if this reEle has already been filled up
144 if (cache.count(reEle)) continue;
145
146 // compute the logical layer Id of the first layer of the reEle (first layer/gasgap, first channel, projecting to
147 // stationEta=1, doubletZ=1, doubletPhi=1, according to the technology)
148 const Identifier logicalId {computeDetLayerId(reEle)};
149
150 //if we find another measurement layer with the same detLayerId as the last we added (e.g. the same gasgap of two RPC z doublets)
151 if (logicalId == lastId){
152 return std::make_pair(reEle, logicalId);
153 }
154
155 // Save the next (subsequent) logic layer in z
156 if (!nextReEle) {
157 nextReEle = reEle;
158 nextId = logicalId;
159 }
160
161 }
162 return std::make_pair(nextReEle, nextId);
163 };
164
165 unsigned int layCounter {0}, nIter {0};
166 Identifier lastId {};
167 unsigned int deltaN {0};
168 while(++nIter <= reEleSorted.size()){
169
170 auto [nextReEle, nextId] = nextLayer(lastId);
171 if (!nextReEle){
172 THROW_EXCEPTION("Failed to retrieve next reEle in fillDetLayIdCache()");
173 }
174
175 unsigned int nLayers = nLayerPerReadout(nextReEle);
176
177 if (nextId != lastId) {
178 layCounter += deltaN;
179 deltaN = nLayers;
180 lastId = nextId;
181 }
182 else{
183 deltaN = std::max(deltaN, nLayers);
184 }
185
186 cache[nextReEle] = range(layCounter, layCounter + nLayers);
187
188 ATH_MSG_DEBUG( identString() << " ReEle: " << idHelperSvc()->toStringDetEl(nextReEle->identify()) <<
189 " Add logicLay: " << idHelperSvc()->toStringGasGap(nextId) << " nInserted, layCounter " << cache.at(nextReEle).size() << " ," << layCounter);
190 }
191 return cache;
192};
#define ATH_MSG_DEBUG(x)
std::vector< const MuonReadoutElement * > ReadoutSet
Define the list of read out elements of the chamber.
Definition Chamber.h:32
unsigned int nLayerPerReadout(const MuonReadoutElement *rele) const
Helper function giving the number of measurement layers in a given readout ele.
Chamber::ReadoutSet readoutEles() const
Returns the list of all associated readout elements.
Identifier computeDetLayerId(const MuonReadoutElement *rele) const
Helper function calculating the logic layer Id and the physical layer id.
std::string identString() const
Returns a string encoding the chamber index & the sector of the MS sector.
Amg::Transform3D globalToLocalTransform(const ActsTrk::GeometryContext &gctx) const
Returns the global -> local transformation from the ATLAS global.
Eigen::Affine3d Transform3D
const IIntersectionCache * cache() const
Retrieve the associated cache block, if it exists.

◆ globalToLocalTransform() [1/2]

Amg::Transform3D MuonGMR4::SpectrometerSector::globalToLocalTransform ( const Acts::GeometryContext & tgContext) const

Returns the global -> local transformation from the ATLAS global.

Definition at line 70 of file SpectrometerSector.cxx.

70 {
71 return localToGlobalTransform(tgContext).inverse();
72}

◆ globalToLocalTransform() [2/2]

Amg::Transform3D MuonGMR4::SpectrometerSector::globalToLocalTransform ( const ActsTrk::GeometryContext & gctx) const

Returns the global -> local transformation from the ATLAS global.

Definition at line 76 of file SpectrometerSector.cxx.

76 {
77 return localToGlobalTransform(gctx).inverse();
78}

◆ halfXLong()

double MuonGMR4::SpectrometerSector::halfXLong ( ) const

Long-extend of the chamber in the x-direction at positive Y.

Definition at line 79 of file SpectrometerSector.cxx.

79{ return MuonGMR4::halfXhighY(*m_args.bounds); }
double halfXhighY(const Acts::VolumeBounds &bounds)
Returns the half-Y length @ posiive Y for the parsed volume bounds (Trapezoid/ Cuboid).

◆ halfXShort()

double MuonGMR4::SpectrometerSector::halfXShort ( ) const

Short extend of the chamber in the x-direction at negative Y.

Definition at line 80 of file SpectrometerSector.cxx.

80{ return MuonGMR4::halfXlowY(*m_args.bounds); }
double halfXlowY(const Acts::VolumeBounds &bounds)
Returns the half-X length @ negative Y for the parsed volume bounds (Trapezoid/ Cuboid).

◆ halfY()

double MuonGMR4::SpectrometerSector::halfY ( ) const

Extend of the chamber in the y-direction.

Definition at line 81 of file SpectrometerSector.cxx.

81{ return MuonGMR4::halfY(* m_args.bounds); }
double halfY(const Acts::VolumeBounds &bounds)
Returns the half-Y length for the parsed volume bounds (Trapezoid/ Cuboid).

◆ halfZ()

double MuonGMR4::SpectrometerSector::halfZ ( ) const

Thickness of the chamber in the z-direction.

Definition at line 82 of file SpectrometerSector.cxx.

82{ return MuonGMR4::halfZ(*m_args.bounds);}
double halfZ(const Acts::VolumeBounds &bounds)
Returns the half-Z length for the parsed volume bounds (Trapezoid/ Cuboid).

◆ identString()

std::string MuonGMR4::SpectrometerSector::identString ( ) const

Returns a string encoding the chamber index & the sector of the MS sector.

Definition at line 56 of file SpectrometerSector.cxx.

56 {
57 return std::format("id: {:3d}, {:} {:}-side sector: {:2},", m_args.id,
59 side() == 1 ? 'A' : 'C' , sector());
60}
int8_t side() const
Returns the side of the MS-sector 1 -> A side ; -1 -> C side.
int sector() const
Returns the sector of the MS-sector.
Muon::MuonStationIndex::ChIndex chamberIndex() const
Returns the chamber index scheme.
const std::string & chName(ChIndex index)
convert ChIndex into a string

◆ idHelperSvc()

const Muon::IMuonIdHelperSvc * MuonGMR4::SpectrometerSector::idHelperSvc ( ) const

Returns the IdHelpeSvc.

Definition at line 51 of file SpectrometerSector.cxx.

51{ return m_args.chambers.front()->idHelperSvc();}

◆ 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 // If user did not set an explicit level, set a default
43 if (m_lvl == MSG::NIL) {
44 m_lvl = m_imsg ?
45 static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
46 MSG::INFO;
47 }
48}
std::string m_nm
Message source name.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::atomic< MSG::Level > m_lvl
Current logging level.
IMessageSvc * getMessageSvc(bool quiet=false)

◆ localToGlobalTransform() [1/2]

const Amg::Transform3D & MuonGMR4::SpectrometerSector::localToGlobalTransform ( const Acts::GeometryContext & tgContext) const

Returns the local -> global tarnsformation from the sector.

Parameters
gctxGeometry context carrrying the alignment transformations

Definition at line 67 of file SpectrometerSector.cxx.

67 {
68 return surface().localToGlobalTransform(tgContext);
69}
const Acts::PlaneSurface & surface() const
Returns the associated surface.

◆ localToGlobalTransform() [2/2]

const Amg::Transform3D & MuonGMR4::SpectrometerSector::localToGlobalTransform ( const ActsTrk::GeometryContext & gctx) const

Returns the local -> global tarnsformation from the sector.

Parameters
gctxGeometry context carrrying the alignment transformations

Definition at line 73 of file SpectrometerSector.cxx.

73 {
74 return surface().localToGlobalTransform(gctx.context());
75}
Acts::GeometryContext context() const

◆ logicalLayerIdx()

const std::vector< unsigned int > & MuonGMR4::SpectrometerSector::logicalLayerIdx ( const MuonReadoutElement * reEle) const

Returns the logic layer numbering of a given Readout Element.

Definition at line 117 of file SpectrometerSector.cxx.

117 {
118 return m_detLayIdCache.at(reEle);
119};
const std::unordered_map< const MuonReadoutElement *, std::vector< unsigned int > > m_detLayIdCache
Map mapping each Readout Element to the layer numbering in the sector frame.

◆ 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 167 of file AthMessaging.h.

168{
169 MsgStream* ms = m_msg_tls.get();
170 if (!ms) {
171 if (!m_initialized.test_and_set()) initMessaging();
172 ms = new MsgStream(m_imsg,m_nm);
173 m_msg_tls.reset( ms );
174 }
175
176 ms->setLevel (m_lvl);
177 return *ms;
178}
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels).
void initMessaging() const
Initialize our message level and MessageSvc.

◆ 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 182 of file AthMessaging.h.

183{ return msg() << lvl; }
MsgStream & msg() const
The standard message stream.

◆ 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 user did not set explicit message level we have to initialize
154 // the messaging and retrieve the default via the MessageSvc.
155 if (m_lvl==MSG::NIL && !m_initialized.test_and_set()) initMessaging();
156
157 if (m_lvl <= lvl) {
158 msg() << lvl;
159 return true;
160 } else {
161 return false;
162 }
163}

◆ nLayerPerReadout()

unsigned int MuonGMR4::SpectrometerSector::nLayerPerReadout ( const MuonReadoutElement * rele) const
private

Helper function giving the number of measurement layers in a given readout ele.

Definition at line 236 of file SpectrometerSector.cxx.

236 {
237
238 switch (rele->detectorType()) {
240 auto mdtRele = dynamic_cast<const MdtReadoutElement*>(rele);
241 return mdtRele->numLayers();
242 }
244 auto rpcRele = dynamic_cast<const RpcReadoutElement*>(rele);
245 return rpcRele->nGasGaps();
246 }
248 auto tgcRele = dynamic_cast<const TgcReadoutElement*>(rele);
249 return tgcRele->nGasGaps();
250 }
252 auto stgcRele = dynamic_cast<const sTgcReadoutElement*>(rele);
253 return stgcRele->numLayers();
254 }
256 auto mmRele = dynamic_cast<const MmReadoutElement*>(rele);
257 return mmRele->nGasGaps();
258 }
259 default:
260 THROW_EXCEPTION("Unexpected Readout Element Type in nLayerPerReadout()");
261 }
262}

◆ operator<()

bool MuonGMR4::SpectrometerSector::operator< ( const SpectrometerSector & other) const

Definition at line 44 of file SpectrometerSector.cxx.

44 {
45 return m_args.id < other.m_args.id;
46}

◆ operator=()

SpectrometerSector & MuonGMR4::SpectrometerSector::operator= ( const SpectrometerSector & other)
delete

◆ parameters()

const SpectrometerSector::defineArgs & MuonGMR4::SpectrometerSector::parameters ( ) const

Returns the reference to the defining parameters of the sector.

Definition at line 50 of file SpectrometerSector.cxx.

50{ return m_args; }

◆ readoutEles()

Chamber::ReadoutSet MuonGMR4::SpectrometerSector::readoutEles ( ) const

Returns the list of all associated readout elements.

Definition at line 89 of file SpectrometerSector.cxx.

89 {
90 Chamber::ReadoutSet toReturn{};
91 for (const ChamberPtr& ch : chambers()) {
92 toReturn.insert(toReturn.end(), ch->readoutEles().begin(), ch->readoutEles().end());
93 }
94 return toReturn;
95}
const ChamberSet & chambers() const
Returns the associated chambers with this sector.
GeoModel::TransientConstSharedPtr< Chamber > ChamberPtr

◆ sector()

int MuonGMR4::SpectrometerSector::sector ( ) const

Returns the sector of the MS-sector.

Definition at line 54 of file SpectrometerSector.cxx.

54{return m_args.chambers.front()->sector(); }

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

◆ side()

int8_t MuonGMR4::SpectrometerSector::side ( ) const

Returns the side of the MS-sector 1 -> A side ; -1 -> C side.

Definition at line 47 of file SpectrometerSector.cxx.

47 {
48 return Acts::copySign(1, chambers().front()->stationEta());
49}

◆ stationPhi()

int MuonGMR4::SpectrometerSector::stationPhi ( ) const

: Returns the station phi of the sector

Definition at line 53 of file SpectrometerSector.cxx.

53{ return m_args.chambers.front()->stationPhi(); }

◆ surface()

const Acts::PlaneSurface & MuonGMR4::SpectrometerSector::surface ( ) const

Returns the associated surface.

Definition at line 62 of file SpectrometerSector.cxx.

62 {
63 return *m_args.surface;
64}

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

defineArgs MuonGMR4::SpectrometerSector::m_args {}
private

Definition at line 180 of file SpectrometerSector.h.

180{};

◆ m_detLayIdCache

const std::unordered_map<const MuonReadoutElement*, std::vector<unsigned int> > MuonGMR4::SpectrometerSector::m_detLayIdCache {fillDetLayIdCache()}
private

Map mapping each Readout Element to the layer numbering in the sector frame.

Definition at line 185 of file SpectrometerSector.h.

std::unordered_map< const MuonReadoutElement *, std::vector< unsigned int > > fillDetLayIdCache() const
Function filling the map mapping the readout elements to layer numbers.

◆ m_imsg

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

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_lvl

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

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_msg_tls

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

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

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.


The documentation for this class was generated from the following files: