ATLAS Offline Software
MuonChamberToolTest.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "MuonChamberToolTest.h"
6 
14 #include <GaudiKernel/SystemOfUnits.h>
15 
16 #include "Acts/Geometry/TrapezoidVolumeBounds.hpp"
17 
18 #include <format>
19 namespace{
20  constexpr double tolerance = 10. *Gaudi::Units::micrometer;
21 }
22 
23 namespace MuonGMR4 {
24  MuonChamberToolTest::MuonChamberToolTest(const std::string& name, ISvcLocator* pSvcLocator):
25  AthReentrantAlgorithm{name, pSvcLocator} {}
26 
28  ATH_CHECK(m_idHelperSvc.retrieve());
31  return StatusCode::SUCCESS;
32  }
33  template <class EnvelopeType>
34  StatusCode MuonChamberToolTest::pointInside(const EnvelopeType& chamb,
35  const Acts::Volume& boundVol,
36  const Amg::Vector3D& point,
37  const std::string& descr,
38  const Identifier& channelId) const {
39 
40  if (boundVol.inside(point,tolerance)) {
41  ATH_MSG_VERBOSE("In channel "<<m_idHelperSvc->toString(channelId)
42  <<", point "<<descr <<" is inside of the chamber "<<std::endl<<chamb<<std::endl
43  <<"Local position:" <<Amg::toString(boundVol.itransform() * point));
44  return StatusCode::SUCCESS;
45  }
46  const Amg::Vector3D locPos{boundVol.itransform() * point};
47 
48  StripDesign planeTrapezoid{};
49  planeTrapezoid.defineTrapezoid(chamb.halfXShort(), chamb.halfXLong(), chamb.halfY());
50  planeTrapezoid.setLevel(MSG::VERBOSE);
52  static const Eigen::Rotation2D axisSwap{90. *Gaudi::Units::deg};
53  if (std::abs(locPos.z()) - chamb.halfZ() < -tolerance &&
54  planeTrapezoid.insideTrapezoid(axisSwap*locPos.block<2,1>(0,0))) {
55  return StatusCode::SUCCESS;
56  }
57  planeTrapezoid.defineStripLayout(locPos.y() * Amg::Vector2D::UnitX(), 1, 1, 1);
58  ATH_MSG_FATAL("In channel "<<m_idHelperSvc->toString(channelId) <<", the point "
59  << descr <<" "<<Amg::toString(point)<<" is not part of the chamber volume."
60  <<std::endl<<std::endl<<chamb<<std::endl<<"Local position "<<Amg::toString(locPos)
61  <<", box left edge: "<<Amg::toString(planeTrapezoid.leftEdge(1).value_or(Amg::Vector2D::Zero()))
62  <<", box right edge "<<Amg::toString(planeTrapezoid.rightEdge(1).value_or(Amg::Vector2D::Zero())));
63  return StatusCode::FAILURE;
64  }
65 
66  template <class EnvelopeType>
68  const EnvelopeType& envelope) const {
69  std::shared_ptr<Acts::Volume> boundVol = envelope.boundingVolume(gctx);
70  const Chamber::ReadoutSet reEles = envelope.readoutEles();
71  for(const MuonReadoutElement* readOut : reEles) {
72  if constexpr (std::is_same_v<EnvelopeType, SpectrometerSector>) {
73  if (readOut->msSector() != &envelope) {
74  ATH_MSG_FATAL("Mismatch in the sector association "<<m_idHelperSvc->toStringDetEl(readOut->identify())
75  <<std::endl<<(*readOut->msSector())<<std::endl<<envelope);
76  return StatusCode::FAILURE;
77  }
78  } else if constexpr (std::is_same_v<EnvelopeType, Chamber>) {
79  if (readOut->chamber() != &envelope) {
80  ATH_MSG_FATAL("Mismatch in the chamber association "<<m_idHelperSvc->toStringDetEl(readOut->identify())
81  <<std::endl<<(*readOut->chamber())<<std::endl<<envelope);
82  return StatusCode::FAILURE;
83  }
84  }
85  switch (readOut->detectorType()) {
87  const auto* detEle = static_cast<const TgcReadoutElement*>(readOut);
88  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
89  break;
91  const auto* detEle = static_cast<const MdtReadoutElement*>(readOut);
92  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
93  break;
95  const auto* detEle = static_cast<const RpcReadoutElement*>(readOut);
96  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
97  break;
99  const auto* detEle = static_cast<const MmReadoutElement*>(readOut);
100  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
101  break;
103  const auto* detEle = static_cast<const sTgcReadoutElement*>(readOut);
104  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
105  break;
106  } default: {
107  ATH_MSG_FATAL("Who came up with putting "<<ActsTrk::to_string(readOut->detectorType())
108  <<" into the MS");
109  return StatusCode::FAILURE;
110  }
111  }
112  }
113  ATH_MSG_DEBUG("All "<<reEles.size()<<" readout elements are embedded in "<<envelope);
114  return StatusCode::SUCCESS;
115  }
116 
117  std::array<Amg::Vector3D, 8> MuonChamberToolTest::cornerPoints(const Acts::Volume& volume) const {
118  std::array<Amg::Vector3D, 8> edges{make_array<Amg::Vector3D,8>(Amg::Vector3D::Zero())};
119  unsigned int edgeIdx{0};
120  using BoundEnum = Acts::TrapezoidVolumeBounds::BoundValues;
121  const auto& bounds = static_cast<const Acts::TrapezoidVolumeBounds&>(volume.volumeBounds());
122  ATH_MSG_VERBOSE("Fetch volume bounds "<<Amg::toString(volume.transform()));
123  for (const double signX : {-1., 1.}) {
124  for (const double signY : { -1., 1.}) {
125  for (const double signZ: {-1., 1.}) {
126  const Amg::Vector3D edge{signX* (signY>0 ? bounds.get(BoundEnum::eHalfLengthXposY) :
127  bounds.get(BoundEnum::eHalfLengthXnegY)),
128  signY*bounds.get(BoundEnum::eHalfLengthY),
129  signZ*bounds.get(BoundEnum::eHalfLengthZ)};
130  edges[edgeIdx] = volume.transform() * edge;
131  ATH_MSG_VERBOSE("Local edge "<<Amg::toString(edge)<<", global edge: "<<Amg::toString(edges[edgeIdx]));
132  ++edgeIdx;
133  }
134  }
135  }
136  return edges;
137  }
138 
139  StatusCode MuonChamberToolTest::execute(const EventContext& ctx) const {
140  SG::ReadHandle gctx{m_geoCtxKey, ctx};
141  if (!gctx.isValid()) {
142  ATH_MSG_FATAL("Failed to retrieve the Acts alignment "<<m_geoCtxKey.fullKey());
143  return StatusCode::FAILURE;
144  }
146  using SectorSet = MuonDetectorManager::MuonSectorSet;
147  const SectorSet sectors = m_detMgr->getAllSectors();
148  ATH_MSG_INFO("Fetched "<<sectors.size()<<" sectors. ");
149  for (const SpectrometerSector* sector : sectors) {
150  ATH_CHECK(allReadoutInEnvelope(*gctx, *sector));
151  const std::shared_ptr<Acts::Volume> secVolume = sector->boundingVolume(*gctx);
152  for (const SpectrometerSector::ChamberPtr& chamber : sector->chambers()){
153  const std::array<Amg::Vector3D, 8> edges = cornerPoints(*chamber->boundingVolume(*gctx));
154  unsigned int edgeCount{0};
155  for (const Amg::Vector3D& edge : edges) {
156  ATH_CHECK(pointInside(*sector,*secVolume,edge,
157  std::format("Edge {:}", edgeCount++),
158  chamber->readoutEles().front()->identify()));
159  }
160  }
161  }
163  const ChamberSet chambers = m_detMgr->getAllChambers();
164  for (const Chamber* chamber : chambers) {
166  }
167  return StatusCode::SUCCESS;
168  }
169  template <class EnvelopeType>
171  const MdtReadoutElement& mdtMl,
172  const EnvelopeType& chamber,
173  const Acts::Volume& detVol) const {
174  ATH_MSG_VERBOSE("Test whether "<<m_idHelperSvc->toStringDetEl(mdtMl.identify())<<std::endl<<mdtMl.getParameters());
175 
176  for (unsigned int layer = 1; layer <= mdtMl.numLayers(); ++layer) {
177  for (unsigned int tube = 1; tube <= mdtMl.numTubesInLay(); ++tube) {
178  const IdentifierHash idHash = mdtMl.measurementHash(layer, tube);
179  if (!mdtMl.isValid(idHash)){
180  continue;
181  }
182  const Amg::Transform3D& locToGlob{mdtMl.localToGlobalTrans(gctx, idHash)};
183  const Identifier measId{mdtMl.measurementId(idHash)};
184 
185  ATH_CHECK(pointInside(chamber, detVol, mdtMl.globalTubePos(gctx, idHash), "tube center", measId));
186 
187  ATH_CHECK(pointInside(chamber, detVol, mdtMl.readOutPos(gctx, idHash), "tube readout", measId));
188  ATH_CHECK(pointInside(chamber, detVol, mdtMl.highVoltPos(gctx, idHash), "tube HV", measId));
189 
190  ATH_CHECK(pointInside(chamber, detVol, locToGlob*(-mdtMl.innerTubeRadius() * Amg::Vector3D::UnitX()),
191  "bottom of the tube box", measId));
192  ATH_CHECK(pointInside(chamber, detVol, locToGlob*(mdtMl.innerTubeRadius() * Amg::Vector3D::UnitX()),
193  "sealing of the tube box", measId));
194 
195  ATH_CHECK(pointInside(chamber, detVol, locToGlob*(-mdtMl.innerTubeRadius() * Amg::Vector3D::UnitY()),
196  "wall to the previous tube", measId));
197  ATH_CHECK(pointInside(chamber, detVol, locToGlob*(-mdtMl.innerTubeRadius() * Amg::Vector3D::UnitY()),
198  "wall to the next tube", measId));
199  }
200  }
201  return StatusCode::SUCCESS;
202  }
203  template<class EnvelopeType>
205  const RpcReadoutElement& rpc,
206  const EnvelopeType& chamber,
207  const Acts::Volume& detVol) const {
208 
209  ATH_MSG_VERBOSE("Test whether "<<m_idHelperSvc->toStringDetEl(rpc.identify())<<std::endl<<rpc.getParameters());
210 
211  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
212  for (unsigned int gasGap = 1 ; gasGap <= rpc.nGasGaps(); ++gasGap) {
213  for (int doubletPhi = rpc.doubletPhi(); doubletPhi <= rpc.doubletPhiMax(); ++doubletPhi){
214  for (bool measPhi : {false, true}) {
215  const int nStrips = measPhi ? rpc.nPhiStrips() : rpc.nEtaStrips();
216  for (int strip = 1; strip <= nStrips; ++strip) {
217  const Identifier stripId = idHelper.channelID(rpc.identify(),rpc.doubletZ(),
218  doubletPhi, gasGap, measPhi, strip);
219  ATH_CHECK(pointInside(chamber, detVol, rpc.stripPosition(gctx, stripId), "center", stripId));
220  ATH_CHECK(pointInside(chamber, detVol, rpc.leftStripEdge(gctx, stripId), "right edge", stripId));
221  ATH_CHECK(pointInside(chamber, detVol, rpc.rightStripEdge(gctx, stripId), "left edge", stripId));
222  }
223  }
224  }
225  }
226  return StatusCode::SUCCESS;
227  }
228  template <class EnevelopeType>
230  const TgcReadoutElement& tgc,
231  const EnevelopeType& chamber,
232  const Acts::Volume& detVol) const {
233 
234  const TgcIdHelper& idHelper{m_idHelperSvc->tgcIdHelper()};
235  for (unsigned int gasGap = 1; gasGap <= tgc.nGasGaps(); ++gasGap){
236  for (bool isStrip : {false}) {
237  unsigned int nChannel = isStrip ? tgc.numStrips(gasGap) : tgc.numWireGangs(gasGap);
238  for (unsigned int channel = 1; channel <= nChannel ; ++channel) {
239  const Identifier stripId = idHelper.channelID(tgc.identify(), gasGap, isStrip, channel);
240  ATH_CHECK(pointInside(chamber, detVol, tgc.channelPosition(gctx, stripId), "center", stripId));
241  }
242  }
243  }
244  return StatusCode::SUCCESS;
245  }
246  template <class EnevelopeType>
248  const MmReadoutElement& mm,
249  const EnevelopeType& chamber,
250  const Acts::Volume& detVol) const {
251 
252  const MmIdHelper& idHelper{m_idHelperSvc->mmIdHelper()};
253  for(unsigned int gasGap = 1; gasGap <= mm.nGasGaps(); ++gasGap){
255  unsigned int firstStrip = mm.firstStrip(gasGapHash);
256  for(unsigned int strip = firstStrip; strip <= mm.numStrips(gasGapHash); ++strip){
257  const Identifier stripId = idHelper.channelID(mm.identify(), mm.multilayer(), gasGap, strip);
258  ATH_CHECK(pointInside(chamber, detVol, mm.stripPosition(gctx, stripId), "center", stripId));
259  ATH_CHECK(pointInside(chamber, detVol, mm.leftStripEdge(gctx, mm.measurementHash(stripId)), "left edge", stripId));
260  ATH_CHECK(pointInside(chamber, detVol, mm.rightStripEdge(gctx, mm.measurementHash(stripId)), "right edge", stripId));
261  }
262  }
263 
264  return StatusCode::SUCCESS;
265  }
266  template <class EnvelopeType>
268  const sTgcReadoutElement& stgc,
269  const EnvelopeType& chamber,
270  const Acts::Volume& detVol) const{
271 
272  const sTgcIdHelper& idHelper{m_idHelperSvc->stgcIdHelper()};
273  for(unsigned int gasGap = 1; gasGap <= stgc.numLayers(); ++gasGap){
274 
275  for(unsigned int nch = 1; nch <= stgc.nChTypes(); ++nch){
276  IdentifierHash gasGapHash = sTgcReadoutElement::createHash(gasGap, nch, 0, 0);
277  unsigned int nStrips = stgc.numStrips(stgc.measurementId(gasGapHash));
279  switch (channelType){
280  case sTgcReadoutElement::ReadoutChannelType::Pad:
281  nStrips = stgc.numPads(stgc.measurementId(gasGapHash));
282  break;
283  case sTgcReadoutElement::ReadoutChannelType::Wire:
284  nStrips = stgc.numWires(gasGap);
285  break;
286  default:
287 
288  break;
289  }
290 
291  for(unsigned int strip = 1; strip <= nStrips; ++strip){
292  const Identifier stripId = idHelper.channelID(stgc.identify(), stgc.multilayer(), gasGap, nch, strip);
293  ATH_CHECK(pointInside(chamber, detVol, stgc.globalChannelPosition(gctx, stripId), "channel position", stripId));
294 
295  if(channelType == sTgcReadoutElement::ReadoutChannelType::Wire || channelType == sTgcReadoutElement::ReadoutChannelType::Strip){
296 
297  ATH_CHECK(pointInside(chamber, detVol, stgc.rightStripEdge(gctx, stgc.measurementHash(stripId)), "channel position", stripId));
298  ATH_CHECK(pointInside(chamber, detVol, stgc.leftStripEdge(gctx, stgc.measurementHash(stripId)), "channel position", stripId));
299 
300  }
301 
302  }
303 
304  }
305 
306  }
307 
308  return StatusCode::SUCCESS;
309 
310  }
311 }
312 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
MuonGMR4::RpcReadoutElement::doubletPhiMax
int doubletPhiMax() const
Returns the maximum phi panel.
MuonGMR4::MuonChamberToolTest::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonChamberToolTest.h:90
MuonGMR4::TgcReadoutElement::numWireGangs
unsigned int numWireGangs(unsigned int gasGap) const
Returns the number of wire gangs for a given gasGap [1-3].
MuonGMR4::sTgcReadoutElement::multilayer
int multilayer() const
Returns the multilayer of the sTgcReadoutElement.
GeoModel::TransientConstSharedPtr
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
Definition: TransientConstSharedPtr.h:13
MuonGMR4::MmReadoutElement
Definition: MmReadoutElement.h:19
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGMR4::StripDesign
Definition: StripDesign.h:30
MuonGMR4::MmReadoutElement::createHash
static IdentifierHash createHash(const int gasGap, const int strip)
MuonGMR4::SpectrometerSector
A spectrometer sector forms the envelope of all chambers that are placed in the same MS sector & laye...
Definition: SpectrometerSector.h:39
MuonGMR4::MuonDetectorManager::MuonSectorSet
std::set< const SpectrometerSector *, MSEnvelopeSorter > MuonSectorSet
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonDetectorManager.h:113
MuonGMR4::MdtReadoutElement::numTubesInLay
unsigned int numTubesInLay() const
Returns the number of tubes per layer.
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
vtune_athena.format
format
Definition: vtune_athena.py:14
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TgcIdHelper
Definition: TgcIdHelper.h:50
calibdata.chamber
chamber
Definition: calibdata.py:32
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
MuonGMR4::MdtReadoutElement::measurementHash
static IdentifierHash measurementHash(unsigned int layerNumber, unsigned int tubeNumber)
Transform the layer and tube number to the measurementHash.
MuonGMR4::MuonChamberToolTest::execute
StatusCode execute(const EventContext &ctx) const override
Definition: MuonChamberToolTest.cxx:139
MuonGMR4::TgcReadoutElement::nGasGaps
unsigned int nGasGaps() const
Returns the number of gasgaps described by this ReadOutElement (usally 2 or 3)
CaloCondBlobAlgs_fillNoiseFromASCII.nChannel
nChannel
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:91
MuonGMR4::TgcReadoutElement::channelPosition
Amg::Vector3D channelPosition(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the center of the measurement channel eta measurement: wire gang center phi measurement: stri...
ActsTrk::DetectorType::Tgc
@ Tgc
Resitive Plate Chambers.
MuonGMR4::RpcReadoutElement::nGasGaps
unsigned int nGasGaps() const
Returns the number of gasgaps described by this ReadOutElement (usally 2 or 3)
MuonGMR4::MuonReadoutElement
The MuonReadoutElement is an abstract class representing the geometry representing the muon detector.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:38
MuonGMR4::sTgcReadoutElement::nChTypes
unsigned int nChTypes() const
Number of Channel Types.
MuonGMR4::MuonChamberToolTest::m_detMgr
const MuonDetectorManager * m_detMgr
Definition: MuonChamberToolTest.h:95
MuonGMR4::MdtReadoutElement::readOutPos
Amg::Vector3D readOutPos(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global position of the readout card.
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGMR4::sTgcReadoutElement::ReadoutChannelType
ReadoutChannelType
ReadoutChannelType to distinguish the available readout channels Pad - pad readout channel Strip - et...
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:30
MuonGMR4::RpcReadoutElement::rightStripEdge
Amg::Vector3D rightStripEdge(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global position of the strip edge at negative local Y.
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ActsTrk::DetectorType::sTgc
@ sTgc
Micromegas (NSW)
SpectrometerSector.h
MuonGMR4::RpcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:17
RpcIdHelper
Definition: RpcIdHelper.h:51
MuonGMR4::sTgcReadoutElement::measurementHash
IdentifierHash measurementHash(const Identifier &measId) const override final
Constructs the identifier hash from the full measurement Identifier.
ReadCondHandle.h
MuonGMR4::RpcReadoutElement::getParameters
const parameterBook & getParameters() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/RpcReadoutElement.cxx:34
MuonGMR4::ChamberSet
SpectrometerSector::ChamberSet ChamberSet
Definition: SpectrometerSector.cxx:14
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
MuonGMR4::MuonChamberToolTest::testReadoutEle
StatusCode testReadoutEle(const ActsGeometryContext &gctx, const MdtReadoutElement &readOutEle, const EnvelopeType &envelope, const Acts::Volume &boundVol) const
Checks whether all channels of a given readout element are fully covered by the envelope.
Definition: MuonChamberToolTest.cxx:170
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
SCT_CalibAlgs::firstStrip
@ firstStrip
Definition: SCT_CalibNumbers.h:10
MuonGMR4::RpcReadoutElement::nEtaStrips
unsigned int nEtaStrips() const
Number of strips measuring the eta coordinate.
MuonGMR4::TgcReadoutElement::numStrips
unsigned int numStrips(unsigned int gasGap) const
Returns the number of strips for a given gasGap [1-3].
MuonGMR4::MdtReadoutElement::measurementId
Identifier measurementId(const IdentifierHash &measHash) const override final
Converts the measurement hash back to the full Identifier.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx:47
MuonGMR4::Chamber
Definition: Chamber.h:22
sTgcReadoutElement.h
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
MuonGMR4
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
Definition: MdtCalibInput.h:20
ActsTrk::DetectorType::Mm
@ Mm
Maybe not needed in the migration.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonGMR4::MuonDetectorManager::MuonChamberSet
std::set< const Chamber *, MSEnvelopeSorter > MuonChamberSet
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonDetectorManager.h:114
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonGMR4::RpcReadoutElement::doubletPhi
int doubletPhi() const
Returns the doublet Phi field of the MuonReadoutElement identifier.
MuonGMR4::MdtReadoutElement::numLayers
unsigned int numLayers() const
Returns the number of tube layer.
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGMR4::RpcReadoutElement::stripPosition
Amg::Vector3D stripPosition(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the position of the strip center.
MuonGMR4::sTgcReadoutElement::leftStripEdge
Amg::Vector3D leftStripEdge(const ActsGeometryContext &ctx, const IdentifierHash &measHash) const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx:247
MuonGMR4::Chamber::ReadoutSet
std::vector< const MuonReadoutElement * > ReadoutSet
Define the list of read out elements of the chamber.
Definition: Chamber.h:25
MuonGMR4::StripDesign::defineTrapezoid
void defineTrapezoid(double HalfShortY, double HalfLongY, double HalfHeight)
Defines the edges of the trapezoid.
Definition: StripDesign.cxx:69
MuonGMR4::RpcReadoutElement::doubletZ
int doubletZ() const
Returns the doublet Z field of the MuonReadoutElement identifier.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
python.TransformConfig.descr
descr
print "%s.properties()" % self.__name__
Definition: TransformConfig.py:360
python.SystemOfUnits.micrometer
int micrometer
Definition: SystemOfUnits.py:71
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
MuonGMR4::MuonChamberToolTest::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: MuonChamberToolTest.h:93
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
MuonGMR4::sTgcReadoutElement::measurementId
Identifier measurementId(const IdentifierHash &measHash) const override final
Converts the measurement hash back to the full Identifier.
MuonChamberToolTest.h
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
MuonGMR4::MdtReadoutElement::innerTubeRadius
double innerTubeRadius() const
Returns the inner tube radius.
tolerance
Definition: suep_shower.h:17
MuonGM::nStrips
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelTgcTest.cxx:46
dumpTgcDigiThreshold.isStrip
list isStrip
Definition: dumpTgcDigiThreshold.py:33
ActsTrk::DetectorType::Mdt
@ Mdt
MuonSpectrometer.
MuonGMR4::sTgcReadoutElement::globalChannelPosition
Amg::Vector3D globalChannelPosition(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global pad/strip/wireGroup position.
MuonGMR4::MdtReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:22
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
MuonGMR4::sTgcReadoutElement::rightStripEdge
Amg::Vector3D rightStripEdge(const ActsGeometryContext &ctx, const IdentifierHash &measHash) const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx:291
sTgcIdHelper
Definition: sTgcIdHelper.h:55
MuonGMR4::MuonReadoutElement::identify
Identifier identify() const override final
Return the athena identifier.
MuonGMR4::RpcReadoutElement::nPhiStrips
unsigned int nPhiStrips() const
Number of strips measuring the phi coordinate.
MuonGMR4::MuonChamberToolTest::pointInside
StatusCode pointInside(const EnvelopeType &envelope, const Acts::Volume &boundVol, const Amg::Vector3D &point, const std::string &descr, const Identifier &channelId) const
Checks whether the point is inside of an envelope object, i.e.
Definition: MuonChamberToolTest.cxx:34
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::numLayers
unsigned int numLayers() const
Returns the number of gas gap layers.
MuonGMR4::sTgcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:20
RpcReadoutElement.h
Chamber.h
MuonGMR4::MuonDetectorManager::getAllSectors
MuonSectorSet getAllSectors() const
: Returns all MuonChambers associated with the readout geometry
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx:168
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
MuonGMR4::RpcReadoutElement::leftStripEdge
Amg::Vector3D leftStripEdge(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global posiition of the strip edge at positive local Y.
MuonGMR4::MuonChamberToolTest::cornerPoints
std::array< Amg::Vector3D, 8 > cornerPoints(const Acts::Volume &volume) const
Definition: MuonChamberToolTest.cxx:117
MmIdHelper
Definition: MmIdHelper.h:54
MdtReadoutElement.h
MuonGMR4::MuonChamberToolTest::initialize
StatusCode initialize() override
Definition: MuonChamberToolTest.cxx:27
ActsTrk::DetectorType::Rpc
@ Rpc
Monitored Drift Tubes.
MuonGMR4::sTgcReadoutElement::numPads
unsigned int numPads(const Identifier &measId) const
Pads Total number of pads in the given layer.
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
MuonGMR4::MdtReadoutElement::globalTubePos
Amg::Vector3D globalTubePos(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global position of the tube center.
createCablingJSON.doubletPhi
int doubletPhi
Definition: createCablingJSON.py:11
MuonGMR4::MuonChamberToolTest::allReadoutInEnvelope
StatusCode allReadoutInEnvelope(const ActsGeometryContext &ctx, const EnvelopeType &envelope) const
Checks whether the readout elements of an enevelope are completely embedded into the envelope.
Definition: MuonChamberToolTest.cxx:67
MuonGMR4::MdtReadoutElement::getParameters
const parameterBook & getParameters() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx:46
MuonGMR4::MdtReadoutElement::highVoltPos
Amg::Vector3D highVoltPos(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global position of the High Voltage connectors.
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
MuonGMR4::MuonChamberToolTest::MuonChamberToolTest
MuonChamberToolTest(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MuonChamberToolTest.cxx:24
MuonGMR4::MuonDetectorManager::getAllChambers
MuonChamberSet getAllChambers() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx:176
MuonGMR4::MdtReadoutElement::isValid
bool isValid(const IdentifierHash &measHash) const
MuonGMR4::TgcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/TgcReadoutElement.h:19
calibdata.tube
tube
Definition: calibdata.py:31
MmReadoutElement.h
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
Identifier
Definition: IdentifierFieldParser.cxx:14