ATLAS Offline Software
MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.cxx
Go to the documentation of this file.
1 
2 /*
3  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
4 */
5 #include "GeoModelMmTest.h"
9 #include <fstream>
10 
11 using namespace ActsTrk;
12 
13 namespace MuonGMR4{
14 
15 GeoModelMmTest::GeoModelMmTest(const std::string& name, ISvcLocator* pSvcLocator):
16  AthHistogramAlgorithm(name,pSvcLocator) {}
17 
19  ATH_CHECK(m_idHelperSvc.retrieve());
22  ATH_CHECK(m_tree.init(this));
23 
24  const MmIdHelper& id_helper{m_idHelperSvc->mmIdHelper()};
25  for (const std::string& testCham : m_selectStat) {
27  if (std::find(m_excludeStat.begin(), m_excludeStat.end(), testCham) != m_excludeStat.end()) {
28  continue;
29  }
31  if (testCham.size() != 6) {
32  ATH_MSG_FATAL("Wrong format given " << testCham);
33  return StatusCode::FAILURE;
34  }
36  std::string statName = testCham.substr(0, 3);
37  unsigned int statEta = std::atoi(testCham.substr(3, 1).c_str()) *
38  (testCham[4] == 'A' ? 1 : -1);
39  unsigned int statPhi = std::atoi(testCham.substr(5, 1).c_str());
40  bool is_valid{false};
41  const Identifier eleId = id_helper.elementID(statName, statEta, statPhi, is_valid);
42  if (!is_valid) {
43  ATH_MSG_FATAL("Failed to deduce a station name for " << testCham);
44  return StatusCode::FAILURE;
45  }
46  std::copy_if(id_helper.detectorElement_begin(),
47  id_helper.detectorElement_end(),
48  std::inserter(m_testStations, m_testStations.end()),
49  [&](const Identifier& id) {
50  return id_helper.elementID(id) == eleId;
51  });
52  }
54  if (m_testStations.empty()){
56  std::set<Identifier> excludedStations{};
57  for (const std::string& testCham : m_excludeStat) {
59  if (testCham.size() != 6) {
60  ATH_MSG_FATAL("Wrong format given " << testCham);
61  return StatusCode::FAILURE;
62  }
64  std::string statName = testCham.substr(0, 3);
65  unsigned int statEta = std::atoi(testCham.substr(3, 1).c_str()) * (testCham[4] == 'A' ? 1 : -1);
66  unsigned int statPhi = std::atoi(testCham.substr(5, 1).c_str());
67  bool is_valid{false};
68  const Identifier eleId = id_helper.elementID(statName, statEta, statPhi, is_valid);
69  if (!is_valid) {
70  ATH_MSG_FATAL("Failed to deduce a station name for " << testCham);
71  return StatusCode::FAILURE;
72  }
74  std::copy_if(id_helper.detectorElement_begin(),
75  id_helper.detectorElement_end(),
76  std::inserter(excludedStations, excludedStations.end()),
77  [&](const Identifier& id) {
78  return id_helper.elementID(id) == eleId;
79  });
80  }
82  std::copy_if(id_helper.detectorElement_begin(),
83  id_helper.detectorElement_end(),
84  std::inserter(m_testStations, m_testStations.end()),
85  [&](const Identifier& id) {
86  return excludedStations.count(id) == 0;
87  });
89  if (!excludedStations.empty()) {
90  std::stringstream excluded_report{};
91  for (const Identifier& id : excludedStations){
92  excluded_report << " *** " << m_idHelperSvc->toString(id) << std::endl;
93  }
94  ATH_MSG_INFO("Test all station except the following excluded ones " << std::endl << excluded_report.str());
95  }
96  } else {
97  std::stringstream sstr{};
98  for (const Identifier& id : m_testStations) {
99  sstr<<" *** "<<m_idHelperSvc->toString(id)<<std::endl;
100  }
101  ATH_MSG_INFO("Test only the following stations "<<std::endl<<sstr.str());
102  }
104  return StatusCode::SUCCESS;
105 }
108  return StatusCode::SUCCESS;
109 }
111  const EventContext& ctx{Gaudi::Hive::currentContext()};
112  SG::ReadHandle<ActsGeometryContext> geoContextHandle{m_geoCtxKey, ctx};
113  ATH_CHECK(geoContextHandle.isPresent());
114  const ActsGeometryContext& gctx{*geoContextHandle};
115 
116  for (const Identifier& test_me : m_testStations) {
117  ATH_MSG_DEBUG("Test retrieval of Mm detector element "<<m_idHelperSvc->toStringDetEl(test_me));
118  const MmReadoutElement* reElement = m_detMgr->getMmReadoutElement(test_me);
119  if (!reElement) {
120  continue;
121  }
123  if (reElement->identify() != test_me) {
124  ATH_MSG_FATAL("Expected to retrieve "<<m_idHelperSvc->toStringDetEl(test_me)
125  <<". But got instead "<<m_idHelperSvc->toStringDetEl(reElement->identify()));
126  return StatusCode::FAILURE;
127  }
128  const Amg::Transform3D globToLocal{reElement->globalToLocalTrans(gctx)};
129  const Amg::Transform3D& localToGlob{reElement->localToGlobalTrans(gctx)};
131  if (!Amg::doesNotDeform(globToLocal * localToGlob)) {
132  ATH_MSG_FATAL("Closure test failed for "<<m_idHelperSvc->toStringDetEl(test_me)
133  <<" "<<Amg::toString(globToLocal * localToGlob));
134  return StatusCode::FAILURE;
135  }
136  const MmIdHelper& id_helper{m_idHelperSvc->mmIdHelper()};
137  for (unsigned int layer = 1; layer <= reElement->nGasGaps(); ++layer) {
138  const IdentifierHash layerHash{MuonGMR4::MmReadoutElement::createHash(layer, 0)};
139  const int numStrips = reElement->numStrips(layerHash);
140  const int fStrip = reElement->firstStrip(layerHash);
141  const int lStrip = fStrip+numStrips-1;
142 
143  for (int strip = fStrip; strip <= lStrip; ++strip) {
144  bool isValid{false};
145 
146  const Identifier chId = id_helper.channelID(reElement->identify(),
147  reElement->multilayer(),
148  layer, strip, isValid);
149  if (!isValid) {
150  continue;
151  }
152 
154  const IdentifierHash channelHash = reElement->measurementHash(chId);
155  const IdentifierHash layHash = reElement->layerHash(chId);
156  const Identifier backCnv = reElement->measurementId(channelHash);
157  if (backCnv != chId) {
158  ATH_MSG_FATAL("The back and forth conversion of "<<m_idHelperSvc->toString(chId)
159  <<" failed. Got "<<m_idHelperSvc->toString(backCnv));
160  return StatusCode::FAILURE;
161  }
162  if (layHash != reElement->layerHash(channelHash)) {
163  ATH_MSG_FATAL("Constructing the layer hash from the identifier "<<
164  m_idHelperSvc->toString(chId)<<" leads to different layer hashes "<<
165  layHash<<" vs. "<< reElement->layerHash(channelHash));
166  return StatusCode::FAILURE;
167  }
168  const MuonGMR4::StripDesign& design{reElement->stripLayer(layHash).design()};
169  const Amg::Vector3D stripPos = reElement->stripPosition(gctx, channelHash);
170  const Amg::Vector3D locStripPos = reElement->globalToLocalTrans(gctx, layHash) * stripPos;
171  const Amg::Vector2D stripPos2D{locStripPos.block<2,1>(0,0)};
172  const double stripLen{design.stripLength(strip)};
173  if (stripLen && (design.stripNumber(stripPos2D) != strip ||
174  design.stripNumber(stripPos2D - 0.49 * stripLen * Amg::Vector2D::UnitY()) != strip ||
175  design.stripNumber(stripPos2D + 0.49 * stripLen * Amg::Vector2D::UnitY()) != strip)) {
176  ATH_MSG_FATAL("Conversion channel -> strip -> channel failed for "
177  <<m_idHelperSvc->toString(chId)<<" "<<Amg::toString(stripPos)<<", local: "
178  <<Amg::toString(locStripPos)<<" got "<<design.stripNumber(stripPos2D)
179  <<", first strip: "<<fStrip<<std::endl<<design);
180  return StatusCode::FAILURE;
181  }
182  ATH_MSG_VERBOSE("first strip "<<fStrip<<", numStrips "<< numStrips << ", channel "
183  << m_idHelperSvc->toString(chId) <<", strip position " << Amg::toString(stripPos));
184  }
185  }
186  ATH_CHECK(dumpToTree(ctx,gctx,reElement));
187  }
188 
189  return StatusCode::SUCCESS;
190 }
191 StatusCode GeoModelMmTest::dumpToTree(const EventContext& ctx,
192  const ActsGeometryContext& gctx,
193  const MmReadoutElement* reElement) {
194 
195 
196 
197  m_stIndex = reElement->stationName();
198  m_stEta = reElement->stationEta();
199  m_stPhi = reElement->stationPhi();
200  m_stML = reElement->multilayer();
201  m_chamberDesign = reElement->chamberDesign();
205  const Amg::Transform3D& transform{reElement->localToGlobalTrans(gctx)};
207  m_alignableNode = reElement->alignableTransform()->getDefTransform();
208 
210  m_moduleHeight = reElement->moduleHeight();
211  m_moduleWidthS = reElement->moduleWidthL();
212  m_moduleWidthL = reElement->moduleWidthS();
213 
214  const MmIdHelper& id_helper{m_idHelperSvc->mmIdHelper()};
215  for (unsigned int layer = 1; layer <= reElement->nGasGaps(); ++layer) {
216 
217  const IdentifierHash layHash{MuonGMR4::MmReadoutElement::createHash(layer, 0)};
218  unsigned int numStrips = reElement->numStrips(layHash);
219  unsigned int fStrip = reElement->firstStrip(layHash);
220  unsigned int lStrip = fStrip+numStrips-1;
221 
222  for (unsigned int strip = fStrip; strip <= lStrip ; ++strip) {
223  bool isValid{false};
224  const Identifier chId = id_helper.channelID(reElement->identify(),
225  reElement->multilayer(),
226  layer, strip, isValid);
227  if (!isValid) {
228  ATH_MSG_WARNING("Invalid Identifier detected for readout element "
229  <<m_idHelperSvc->toStringDetEl(reElement->identify())
230  <<" layer: "<<layer<<" strip: "<<strip);
231  continue;
232  }
233  const IdentifierHash measHash{reElement->measurementHash(chId)};
234 
235  const MuonGMR4::StripDesign& design{reElement->stripLayer(measHash).design()};
236  m_locStripCenter.push_back(design.center(strip).value_or(Amg::Vector2D::Zero()));
237  m_isStereo.push_back(design.hasStereoAngle());
238  m_stripCenter.push_back(reElement->stripPosition(gctx, measHash));
239  m_stripLeftEdge.push_back(reElement->leftStripEdge(gctx,measHash));
240  m_stripRightEdge.push_back(reElement->rightStripEdge(gctx,measHash));
241  m_stripLength.push_back(reElement->stripLength(measHash));
243  m_channel.push_back(strip);
244 
245  m_ActiveWidthS = reElement->gapLengthS(measHash);
246  m_ActiveWidthL = reElement->gapLengthL(measHash);
247  m_ActiveHeightR = reElement->gapHeight(measHash);
248 
249  if (strip != fStrip) continue;
250  const Amg::Transform3D stripGlobToLoc = reElement->globalToLocalTrans(gctx, chId);
251  ATH_MSG_VERBOSE("The global to local transformation on layers is: " << Amg::toString(stripGlobToLoc));
252  ATH_MSG_VERBOSE("The local to global transformation on layers is: " << Amg::toString(reElement->localToGlobalTrans(gctx, chId)));
253  m_stripRot.push_back(stripGlobToLoc);
255  m_firstStripPos.push_back(design.firstStripPos());
256  m_readoutFirstStrip.push_back(design.firstStripNumber());
257  m_readoutSide.push_back(reElement->readoutSide(measHash));
258 
259  }
260 
261  }
262  return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;
263 }
264 
265 }
266 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
MuonGMR4::MmReadoutElement::moduleWidthS
double moduleWidthS() const
Returns the width at the short edge.
MuonGMR4::GeoModelMmTest::m_stripRightEdge
MuonVal::ThreeVectorBranch m_stripRightEdge
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:78
MuonGMR4::MmReadoutElement
Definition: MmReadoutElement.h:19
MuonGMR4::MmReadoutElement::stripLength
double stripLength(const IdentifierHash &measHash) const
Returns the strip length.
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGMR4::StripDesign
Definition: StripDesign.h:30
MuonGMR4::GeoModelMmTest::m_channel
MuonVal::VectorBranch< uint > & m_channel
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:82
GeoModelMmTest.h
MuonGMR4::MmReadoutElement::createHash
static IdentifierHash createHash(const int gasGap, const int strip)
MuonGMR4::GeoModelMmTest::m_readoutSide
MuonVal::VectorBranch< int > & m_readoutSide
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:70
MuonGMR4::MmReadoutElement::nGasGaps
unsigned int nGasGaps() const
Returns the number of gas gaps.
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonVal::MuonTesterTree::init
StatusCode init(OWNER *instance)
Initialize method.
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
MuonGMR4::GeoModelMmTest::m_readoutFirstStrip
MuonVal::VectorBranch< unsigned > & m_readoutFirstStrip
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:71
ActsGeometryContext.h
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
MuonGMR4::GeoModelMmTest::m_chamberDesign
MuonVal::ScalarBranch< std::string > & m_chamberDesign
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:58
MuonGMR4::MmReadoutElement::gapLengthS
double gapLengthS(const IdentifierHash &layerHash) const
Length of gas Gap on short side.
MuonGMR4::MuonReadoutElement::chamberDesign
std::string chamberDesign() const
The chamber design refers to the construction parameters of a readout element.
MuonGMR4::GeoModelMmTest::m_isStereo
MuonVal::VectorBranch< bool > & m_isStereo
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:75
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
MuonGMR4::MmReadoutElement::gapLengthL
double gapLengthL(const IdentifierHash &layerHash) const
Length of gas Gap on long side.
MuonGMR4::MmReadoutElement::numStrips
unsigned int numStrips(const IdentifierHash &layerHash) const
Returns the number of total active strips.
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
isValid
bool isValid(const T &p)
Definition: AtlasPID.h:225
MuonGMR4::GeoModelMmTest::m_ActiveWidthS
MuonVal::ScalarBranch< float > & m_ActiveWidthS
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:90
MuonGMR4::GeoModelMmTest::m_selectStat
Gaudi::Property< std::vector< std::string > > m_selectStat
String should be formated like MM_<Large/Small Sector + Module type><Quadruplet number>
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:42
MuonGMR4::GeoModelMmTest::m_stEta
MuonVal::ScalarBranch< short > & m_stEta
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:55
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
MuonGMR4::GeoModelMmTest::m_ActiveHeightR
MuonVal::ScalarBranch< float > & m_ActiveHeightR
GasGap Lengths for debug.
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:89
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonGMR4::GeoModelMmTest::m_tree
MuonVal::MuonTesterTree m_tree
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:51
MuonGMR4::GeoModelMmTest::m_stripRot
MuonVal::CoordSystemsBranch m_stripRot
Rotation matrix of the respective strip layers.
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:67
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
MuonGMR4::MmReadoutElement::multilayer
int multilayer() const
Returns the multi layer of the element [1-2].
MuonGMR4
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
Definition: MdtCalibInput.h:20
MuonGMR4::GeoModelMmTest::m_stIndex
MuonVal::ScalarBranch< unsigned short > & m_stIndex
Identifier of the readout element.
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:54
EventPrimitivesToStringConverter.h
MuonVal::TwoVectorBranch::push_back
void push_back(const Amg::Vector2D &vec)
interface using the Amg::Vector3D
Definition: TwoVectorBranch.cxx:21
MuonGMR4::MmReadoutElement::stripPosition
Amg::Vector3D stripPosition(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the position of the strip center.
MuonGMR4::MmReadoutElement::moduleWidthL
double moduleWidthL() const
Returns the width at the top edge.
MuonGMR4::GeoModelMmTest::m_gasGap
MuonVal::VectorBranch< short > & m_gasGap
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:74
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
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonGMR4::GeoModelMmTest::m_stripCenter
MuonVal::ThreeVectorBranch m_stripCenter
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:76
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Amg::doesNotDeform
bool doesNotDeform(const Amg::Transform3D &trans)
Checks whether the linear part of the transformation rotates or stetches any of the basis vectors.
Definition: GeoPrimitivesHelpers.h:361
MuonGMR4::GeoModelMmTest::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:32
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
MuonGMR4::GeoModelMmTest::m_stripRotGasGap
MuonVal::VectorBranch< uint8_t > & m_stripRotGasGap
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:68
MuonGMR4::MmReadoutElement::measurementId
Identifier measurementId(const IdentifierHash &measHash) const override final
Converts the measurement hash back to the full Identifier.
MuonGMR4::MmReadoutElement::readoutSide
int readoutSide(const IdentifierHash &measHash) const
Returns the readout side.
AnalysisUtils::copy_if
Out copy_if(In first, const In &last, Out res, const Pred &p)
Definition: IFilterUtils.h:30
MuonGMR4::MmReadoutElement::firstStrip
unsigned int firstStrip(const IdentifierHash &layerHash) const
Returns the first active strip.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
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::GeoModelMmTest::m_stML
MuonVal::ScalarBranch< short > & m_stML
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:57
AthHistogramAlgorithm
Definition: AthHistogramAlgorithm.h:32
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
MuonGMR4::GeoModelMmTest::m_moduleHeight
MuonVal::ScalarBranch< float > & m_moduleHeight
Chamber Length for debug.
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:85
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
MuonGMR4::GeoModelMmTest::m_alignableNode
MuonVal::CoordTransformBranch m_alignableNode
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:64
MuonGMR4::MmReadoutElement::leftStripEdge
Amg::Vector3D leftStripEdge(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global position of the strip edge.
MuonGMR4::MmReadoutElement::stripLayer
const StripLayer & stripLayer(const Identifier &measId) const
MuonGMR4::GeoModelMmTest::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:35
MuonGMR4::GeoModelMmTest::m_stPhi
MuonVal::ScalarBranch< short > & m_stPhi
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:56
MuonGMR4::GeoModelMmTest::m_stripLeftEdge
MuonVal::ThreeVectorBranch m_stripLeftEdge
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:77
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
MuonGMR4::MuonReadoutElement::alignableTransform
const GeoAlignableTransform * alignableTransform() const
Returnsthe alignable transform of the readout element.
MuonGMR4::MuonReadoutElement::identify
Identifier identify() const override final
Return the athena identifier.
MuonGMR4::GeoModelMmTest::m_firstStripPos
MuonVal::TwoVectorBranch m_firstStripPos
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:69
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGMR4::StripLayer::design
const StripDesign & design() const
Returns the underlying strip design.
MuonGMR4::GeoModelMmTest::finalize
StatusCode finalize() override
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.cxx:106
MuonGMR4::MmReadoutElement::gapHeight
double gapHeight(const IdentifierHash &layerHash) const
Height of gas Gap.
MuonGMR4::GeoModelMmTest::dumpToTree
StatusCode dumpToTree(const EventContext &ctx, const ActsGeometryContext &gctx, const MmReadoutElement *readoutEle)
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.cxx:191
MuonGMR4::MuonReadoutElement::stationName
int stationName() const
Returns the stationName (BIS, BOS, etc) encoded into the integer.
MuonGMR4::GeoModelMmTest::m_stripLength
MuonVal::VectorBranch< float > & m_stripLength
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:81
MmIdHelper
Definition: MmIdHelper.h:54
MuonGMR4::MmReadoutElement::measurementHash
IdentifierHash measurementHash(const Identifier &measId) const override final
Constructs the identifier hash from the full measurement Identifier.
MuonGMR4::MmReadoutElement::layerHash
IdentifierHash layerHash(const Identifier &measId) const override final
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonGMR4::GeoModelMmTest::execute
StatusCode execute() override
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.cxx:110
MuonGMR4::GeoModelMmTest::m_ActiveWidthL
MuonVal::ScalarBranch< float > & m_ActiveWidthL
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:91
MuonGMR4::MmReadoutElement::moduleHeight
double moduleHeight() const
Returns the height along the z-axis.
MuonVal::CoordSystemsBranch::push_back
void push_back(const Amg::Transform3D &trans)
Definition: CoordTransformBranch.cxx:28
MuonGMR4::MmReadoutElement::rightStripEdge
Amg::Vector3D rightStripEdge(const ActsGeometryContext &ctx, const Identifier &measId) const
Returns the global position of the strip edge.
MuonVal::MuonTesterTree::fill
bool fill(const EventContext &ctx)
Fills the tree per call.
Definition: MuonTesterTree.cxx:89
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
MuonVal::MuonTesterTree::write
StatusCode write()
Finally write the TTree objects.
Definition: MuonTesterTree.cxx:178
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:49
MuonGMR4::MuonReadoutElement::stationEta
int stationEta() const
Returns the stationEta (positive A site, negative O site)
MuonGMR4::StripDesign::stripPitch
double stripPitch() const
Distance between two adjacent strips.
MuonGMR4::GeoModelMmTest::initialize
StatusCode initialize() override
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.cxx:18
MuonGMR4::GeoModelMmTest::m_moduleWidthL
MuonVal::ScalarBranch< float > & m_moduleWidthL
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:87
MuonGMR4::MuonReadoutElement::stationPhi
int stationPhi() const
Returns the stationPhi (1-8) -> sector (2*phi - (isSmall))
MuonGMR4::GeoModelMmTest::m_moduleWidthS
MuonVal::ScalarBranch< float > & m_moduleWidthS
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:86
MuonGMR4::GeoModelMmTest::m_locStripCenter
MuonVal::TwoVectorBranch m_locStripCenter
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:79
MuonGMR4::GeoModelMmTest::m_stStripPitch
MuonVal::ScalarBranch< float > & m_stStripPitch
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:59
MuonGMR4::GeoModelMmTest::m_excludeStat
Gaudi::Property< std::vector< std::string > > m_excludeStat
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:43
MmReadoutElement.h
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
MuonGMR4::GeoModelMmTest::m_readoutTransform
MuonVal::CoordTransformBranch m_readoutTransform
Transformation of the readout element (Translation, ColX, ColY, ColZ)
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:63
MuonGMR4::GeoModelMmTest::m_detMgr
const MuonDetectorManager * m_detMgr
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:45
MuonGMR4::GeoModelMmTest::m_testStations
std::set< Identifier > m_testStations
Set of stations to be tested.
Definition: MuonPhaseII/MuonDetDescr/MuonGeoModelTestR4/src/GeoModelMmTest.h:38
Identifier
Definition: IdentifierFieldParser.cxx:14