ATLAS Offline Software
MuonChamberToolTest.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #if defined(FLATTEN) && defined(__GNUC__)
6 // Avoid warning in dbg build
7 #pragma GCC optimize "-fno-var-tracking-assignments"
8 #endif
9 
10 #include "MuonChamberToolTest.h"
11 
19 #include <GaudiKernel/SystemOfUnits.h>
20 
21 #include "Acts/Geometry/TrapezoidVolumeBounds.hpp"
22 
23 #include <format>
24 namespace{
25  constexpr double tolerance = 10. *Gaudi::Units::micrometer;
26 }
27 
28 namespace MuonGMR4 {
29  MuonChamberToolTest::MuonChamberToolTest(const std::string& name, ISvcLocator* pSvcLocator):
30  AthReentrantAlgorithm{name, pSvcLocator} {}
31 
33  ATH_CHECK(m_idHelperSvc.retrieve());
36  return StatusCode::SUCCESS;
37  }
38  template <class EnvelopeType>
39 #if defined(FLATTEN) && defined(__GNUC__)
40 // We compile this function with optimization, even in debug builds; otherwise,
41 // the heavy use of Eigen makes it too slow. However, from here we may call
42 // to out-of-line Eigen code that is linked from other DSOs; in that case,
43 // it would not be optimized. Avoid this by forcing all Eigen code
44 // to be inlined here if possible.
45 [[gnu::flatten]]
46 #endif
47  StatusCode MuonChamberToolTest::pointInside(const EnvelopeType& chamb,
48  const Acts::Volume& boundVol,
49  const Amg::Vector3D& point,
50  const std::string& descr,
51  const Identifier& channelId) const {
52 
53  // Explicitly inline Volume::inside here so that it gets
54  // flattened in debug builds.
55  Acts::Vector3 posInVolFrame((boundVol.transform().inverse()) * point);
56  if (boundVol.volumeBounds().inside(posInVolFrame,tolerance)) {
57  ATH_MSG_VERBOSE("In channel "<<m_idHelperSvc->toString(channelId)
58  <<", point "<<descr <<" is inside of the chamber "<<std::endl<<chamb<<std::endl
59  <<"Local position:" <<Amg::toString(boundVol.itransform() * point));
60  return StatusCode::SUCCESS;
61  }
62  const Amg::Vector3D locPos{boundVol.itransform() * point};
63 
64  StripDesign planeTrapezoid{};
65  planeTrapezoid.defineTrapezoid(chamb.halfXShort(), chamb.halfXLong(), chamb.halfY());
66  planeTrapezoid.setLevel(MSG::VERBOSE);
68  static const Eigen::Rotation2D axisSwap{90. *Gaudi::Units::deg};
69  if (std::abs(locPos.z()) - chamb.halfZ() < -tolerance &&
70  planeTrapezoid.insideTrapezoid(axisSwap*locPos.block<2,1>(0,0))) {
71  return StatusCode::SUCCESS;
72  }
73  planeTrapezoid.defineStripLayout(locPos.y() * Amg::Vector2D::UnitX(), 1, 1, 1);
74  ATH_MSG_FATAL("In channel "<<m_idHelperSvc->toString(channelId) <<", the point "
75  << descr <<" "<<Amg::toString(point)<<" is not part of the chamber volume."
76  <<std::endl<<std::endl<<chamb<<std::endl<<"Local position "<<Amg::toString(locPos)
77  <<", box left edge: "<<Amg::toString(planeTrapezoid.leftEdge(1).value_or(Amg::Vector2D::Zero()))
78  <<", box right edge "<<Amg::toString(planeTrapezoid.rightEdge(1).value_or(Amg::Vector2D::Zero())));
79  return StatusCode::FAILURE;
80  }
81 
82  template <class EnvelopeType>
84  const EnvelopeType& envelope) const {
85  std::shared_ptr<Acts::Volume> boundVol = envelope.boundingVolume(gctx);
86  const Chamber::ReadoutSet reEles = envelope.readoutEles();
87  for(const MuonReadoutElement* readOut : reEles) {
88  if constexpr (std::is_same_v<EnvelopeType, SpectrometerSector>) {
89  if (readOut->msSector() != &envelope) {
90  ATH_MSG_FATAL("Mismatch in the sector association "<<m_idHelperSvc->toStringDetEl(readOut->identify())
91  <<std::endl<<(*readOut->msSector())<<std::endl<<envelope);
92  return StatusCode::FAILURE;
93  }
94  } else if constexpr (std::is_same_v<EnvelopeType, Chamber>) {
95  if (readOut->chamber() != &envelope) {
96  ATH_MSG_FATAL("Mismatch in the chamber association "<<m_idHelperSvc->toStringDetEl(readOut->identify())
97  <<std::endl<<(*readOut->chamber())<<std::endl<<envelope);
98  return StatusCode::FAILURE;
99  }
100  }
101  switch (readOut->detectorType()) {
103  const auto* detEle = static_cast<const TgcReadoutElement*>(readOut);
104  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
105  break;
107  const auto* detEle = static_cast<const MdtReadoutElement*>(readOut);
108  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
109  break;
111  const auto* detEle = static_cast<const RpcReadoutElement*>(readOut);
112  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
113  break;
114  } case ActsTrk::DetectorType::Mm: {
115  const auto* detEle = static_cast<const MmReadoutElement*>(readOut);
116  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
117  break;
119  const auto* detEle = static_cast<const sTgcReadoutElement*>(readOut);
120  ATH_CHECK(testReadoutEle(gctx, *detEle, envelope, *boundVol));
121  break;
122  } default: {
123  ATH_MSG_FATAL("Who came up with putting "<<ActsTrk::to_string(readOut->detectorType())
124  <<" into the MS");
125  return StatusCode::FAILURE;
126  }
127  }
128  }
129  ATH_MSG_DEBUG("All "<<reEles.size()<<" readout elements are embedded in "<<envelope);
130  return StatusCode::SUCCESS;
131  }
132 
133  std::array<Amg::Vector3D, 8> MuonChamberToolTest::cornerPoints(const Acts::Volume& volume) const {
134  std::array<Amg::Vector3D, 8> edges{make_array<Amg::Vector3D,8>(Amg::Vector3D::Zero())};
135  unsigned int edgeIdx{0};
136  using BoundEnum = Acts::TrapezoidVolumeBounds::BoundValues;
137  const auto& bounds = static_cast<const Acts::TrapezoidVolumeBounds&>(volume.volumeBounds());
138  ATH_MSG_VERBOSE("Fetch volume bounds "<<Amg::toString(volume.transform()));
139  for (const double signX : {-1., 1.}) {
140  for (const double signY : { -1., 1.}) {
141  for (const double signZ: {-1., 1.}) {
142  const Amg::Vector3D edge{signX* (signY>0 ? bounds.get(BoundEnum::eHalfLengthXposY) :
143  bounds.get(BoundEnum::eHalfLengthXnegY)),
144  signY*bounds.get(BoundEnum::eHalfLengthY),
145  signZ*bounds.get(BoundEnum::eHalfLengthZ)};
146  edges[edgeIdx] = volume.transform() * edge;
147  ATH_MSG_VERBOSE("Local edge "<<Amg::toString(edge)<<", global edge: "<<Amg::toString(edges[edgeIdx]));
148  ++edgeIdx;
149  }
150  }
151  }
152  return edges;
153  }
154 
155  StatusCode MuonChamberToolTest::execute(const EventContext& ctx) const {
156  SG::ReadHandle gctx{m_geoCtxKey, ctx};
157  if (!gctx.isValid()) {
158  ATH_MSG_FATAL("Failed to retrieve the Acts alignment "<<m_geoCtxKey.fullKey());
159  return StatusCode::FAILURE;
160  }
162  using SectorSet = MuonDetectorManager::MuonSectorSet;
163  const SectorSet sectors = m_detMgr->getAllSectors();
164  ATH_MSG_INFO("Fetched "<<sectors.size()<<" sectors. ");
165  for (const SpectrometerSector* sector : sectors) {
166  ATH_CHECK(allReadoutInEnvelope(*gctx, *sector));
167  const std::shared_ptr<Acts::Volume> secVolume = sector->boundingVolume(*gctx);
168  for (const SpectrometerSector::ChamberPtr& chamber : sector->chambers()){
169  const std::array<Amg::Vector3D, 8> edges = cornerPoints(*chamber->boundingVolume(*gctx));
170  unsigned int edgeCount{0};
171  for (const Amg::Vector3D& edge : edges) {
172  ATH_CHECK(pointInside(*sector,*secVolume,edge,
173  std::format("Edge {:}", edgeCount++),
174  chamber->readoutEles().front()->identify()));
175  }
176  }
177  }
179  const ChamberSet chambers = m_detMgr->getAllChambers();
180  for (const Chamber* chamber : chambers) {
182  }
183  return StatusCode::SUCCESS;
184  }
185  template <class EnvelopeType>
187  const MdtReadoutElement& mdtMl,
188  const EnvelopeType& chamber,
189  const Acts::Volume& detVol) const {
190  ATH_MSG_VERBOSE("Test whether "<<m_idHelperSvc->toStringDetEl(mdtMl.identify())<<std::endl<<mdtMl.getParameters());
191 
192  for (unsigned int layer = 1; layer <= mdtMl.numLayers(); ++layer) {
193  for (unsigned int tube = 1; tube <= mdtMl.numTubesInLay(); ++tube) {
194  const IdentifierHash idHash = mdtMl.measurementHash(layer, tube);
195  if (!mdtMl.isValid(idHash)){
196  continue;
197  }
198  const Amg::Transform3D& locToGlob{mdtMl.localToGlobalTrans(gctx, idHash)};
199  const Identifier measId{mdtMl.measurementId(idHash)};
200 
201  ATH_CHECK(pointInside(chamber, detVol, mdtMl.globalTubePos(gctx, idHash), "tube center", measId));
202 
203  ATH_CHECK(pointInside(chamber, detVol, mdtMl.readOutPos(gctx, idHash), "tube readout", measId));
204  ATH_CHECK(pointInside(chamber, detVol, mdtMl.highVoltPos(gctx, idHash), "tube HV", measId));
205 
206  ATH_CHECK(pointInside(chamber, detVol, locToGlob*(-mdtMl.innerTubeRadius() * Amg::Vector3D::UnitX()),
207  "bottom of the tube box", measId));
208  ATH_CHECK(pointInside(chamber, detVol, locToGlob*(mdtMl.innerTubeRadius() * Amg::Vector3D::UnitX()),
209  "sealing of the tube box", measId));
210 
211  ATH_CHECK(pointInside(chamber, detVol, locToGlob*(-mdtMl.innerTubeRadius() * Amg::Vector3D::UnitY()),
212  "wall to the previous tube", measId));
213  ATH_CHECK(pointInside(chamber, detVol, locToGlob*(-mdtMl.innerTubeRadius() * Amg::Vector3D::UnitY()),
214  "wall to the next tube", measId));
215  }
216  }
217  return StatusCode::SUCCESS;
218  }
219  template<class EnvelopeType>
221  const RpcReadoutElement& rpc,
222  const EnvelopeType& chamber,
223  const Acts::Volume& detVol) const {
224 
225  ATH_MSG_VERBOSE("Test whether "<<m_idHelperSvc->toStringDetEl(rpc.identify())<<std::endl<<rpc.getParameters());
226 
227  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
228  for (unsigned int gasGap = 1 ; gasGap <= rpc.nGasGaps(); ++gasGap) {
229  for (int doubletPhi = rpc.doubletPhi(); doubletPhi <= rpc.doubletPhiMax(); ++doubletPhi){
230  for (bool measPhi : {false, true}) {
231  const int nStrips = measPhi ? rpc.nPhiStrips() : rpc.nEtaStrips();
232  for (int strip = 1; strip <= nStrips; ++strip) {
233  const Identifier stripId = idHelper.channelID(rpc.identify(),rpc.doubletZ(),
234  doubletPhi, gasGap, measPhi, strip);
235  ATH_CHECK(pointInside(chamber, detVol, rpc.stripPosition(gctx, stripId), "center", stripId));
236  ATH_CHECK(pointInside(chamber, detVol, rpc.leftStripEdge(gctx, stripId), "right edge", stripId));
237  ATH_CHECK(pointInside(chamber, detVol, rpc.rightStripEdge(gctx, stripId), "left edge", stripId));
238  }
239  }
240  }
241  }
242  return StatusCode::SUCCESS;
243  }
244  template <class EnevelopeType>
246  const TgcReadoutElement& tgc,
247  const EnevelopeType& chamber,
248  const Acts::Volume& detVol) const {
249 
250  const TgcIdHelper& idHelper{m_idHelperSvc->tgcIdHelper()};
251  for (unsigned int gasGap = 1; gasGap <= tgc.nGasGaps(); ++gasGap){
252  for (bool isStrip : {false}) {
253  unsigned int nChannel = isStrip ? tgc.numStrips(gasGap) : tgc.numWireGangs(gasGap);
254  for (unsigned int channel = 1; channel <= nChannel ; ++channel) {
255  const Identifier stripId = idHelper.channelID(tgc.identify(), gasGap, isStrip, channel);
256  ATH_CHECK(pointInside(chamber, detVol, tgc.channelPosition(gctx, stripId), "center", stripId));
257  }
258  }
259  }
260  return StatusCode::SUCCESS;
261  }
262  template <class EnevelopeType>
264  const MmReadoutElement& mm,
265  const EnevelopeType& chamber,
266  const Acts::Volume& detVol) const {
267 
268  const MmIdHelper& idHelper{m_idHelperSvc->mmIdHelper()};
269  for(unsigned int gasGap = 1; gasGap <= mm.nGasGaps(); ++gasGap){
271  unsigned int firstStrip = mm.firstStrip(gasGapHash);
272  for(unsigned int strip = firstStrip; strip <= mm.numStrips(gasGapHash); ++strip){
273  const Identifier stripId = idHelper.channelID(mm.identify(), mm.multilayer(), gasGap, strip);
274  ATH_CHECK(pointInside(chamber, detVol, mm.stripPosition(gctx, stripId), "center", stripId));
275  ATH_CHECK(pointInside(chamber, detVol, mm.leftStripEdge(gctx, mm.measurementHash(stripId)), "left edge", stripId));
276  ATH_CHECK(pointInside(chamber, detVol, mm.rightStripEdge(gctx, mm.measurementHash(stripId)), "right edge", stripId));
277  }
278  }
279 
280  return StatusCode::SUCCESS;
281  }
282  template <class EnvelopeType>
284  const sTgcReadoutElement& stgc,
285  const EnvelopeType& chamber,
286  const Acts::Volume& detVol) const{
287 
288  const sTgcIdHelper& idHelper{m_idHelperSvc->stgcIdHelper()};
289  for(unsigned int gasGap = 1; gasGap <= stgc.numLayers(); ++gasGap){
290 
291  for(unsigned int nch = 1; nch <= stgc.nChTypes(); ++nch){
292  IdentifierHash gasGapHash = sTgcReadoutElement::createHash(gasGap, nch, 0, 0);
293  unsigned int nStrips = stgc.numStrips(stgc.measurementId(gasGapHash));
295  switch (channelType){
296  case sTgcReadoutElement::ReadoutChannelType::Pad:
297  nStrips = stgc.numPads(stgc.measurementId(gasGapHash));
298  break;
299  case sTgcReadoutElement::ReadoutChannelType::Wire:
300  nStrips = stgc.numWires(gasGap);
301  break;
302  default:
303 
304  break;
305  }
306 
307  for(unsigned int strip = 1; strip <= nStrips; ++strip){
308  const Identifier stripId = idHelper.channelID(stgc.identify(), stgc.multilayer(), gasGap, nch, strip);
309  ATH_CHECK(pointInside(chamber, detVol, stgc.globalChannelPosition(gctx, stripId), "channel position", stripId));
310 
311  if(channelType == sTgcReadoutElement::ReadoutChannelType::Wire || channelType == sTgcReadoutElement::ReadoutChannelType::Strip){
312 
313  ATH_CHECK(pointInside(chamber, detVol, stgc.rightStripEdge(gctx, stgc.measurementHash(stripId)), "channel position", stripId));
314  ATH_CHECK(pointInside(chamber, detVol, stgc.leftStripEdge(gctx, stgc.measurementHash(stripId)), "channel position", stripId));
315 
316  }
317 
318  }
319 
320  }
321 
322  }
323 
324  return StatusCode::SUCCESS;
325 
326  }
327 }
328 
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:40
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:155
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:186
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
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.
SCT_CalibAlgs::firstStrip
@ firstStrip
Definition: SCT_CalibNumbers.h:10
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:228
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:47
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:133
MmIdHelper
Definition: MmIdHelper.h:54
MdtReadoutElement.h
MuonGMR4::MuonChamberToolTest::initialize
StatusCode initialize() override
Definition: MuonChamberToolTest.cxx:32
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:16
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:83
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:29
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