ATLAS Offline Software
MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #include "GeoModelMmTest.h"
5 
6 #include <fstream>
7 #include <iostream>
8 
9 
12 #include "GeoModelKernel/GeoDefinitions.h"
14 #include "GaudiKernel/SystemOfUnits.h"
15 
16 namespace MuonGM {
17 
20  return StatusCode::SUCCESS;
21 }
24  ATH_CHECK(m_idHelperSvc.retrieve());
25  ATH_CHECK(m_tree.init(this));
26 
27  const MmIdHelper& idHelper{m_idHelperSvc->mmIdHelper()};
28  auto translateTokenList = [this, &idHelper](const std::vector<std::string>& chNames){
29 
30  std::set<Identifier> transcriptedIds{};
31  for (const std::string& token : chNames) {
32  if (token.size() != 6) {
33  ATH_MSG_WARNING("Wrong format given for "<<token<<". Expecting 6 characters");
34  continue;
35  }
37  const std::string statName = token.substr(0, 3);
38  const unsigned statEta = std::atoi(token.substr(3, 1).c_str()) * (token[4] == 'A' ? 1 : -1);
39  const unsigned statPhi = std::atoi(token.substr(5, 1).c_str());
40  bool isValid{false};
41  const Identifier eleId = idHelper.elementID(statName, statEta, statPhi, isValid);
42  if (!isValid) {
43  ATH_MSG_WARNING("Failed to deduce a station name for " << token);
44  continue;
45  }
46  transcriptedIds.insert(eleId);
47  const Identifier secMlId = idHelper.multilayerID(eleId, 2, isValid);
48  if (isValid){
49  transcriptedIds.insert(secMlId);
50  }
51  }
52  return transcriptedIds;
53  };
54 
55  std::vector <std::string>& selectedSt = m_selectStat.value();
56  const std::vector <std::string>& excludedSt = m_excludeStat.value();
57  selectedSt.erase(std::remove_if(selectedSt.begin(), selectedSt.end(),
58  [&excludedSt](const std::string& token){
59  return std::ranges::find(excludedSt, token) != excludedSt.end();
60  }), selectedSt.end());
61 
62  if (selectedSt.size()) {
63  m_testStations = translateTokenList(selectedSt);
64  std::stringstream sstr{};
65  for (const Identifier& id : m_testStations) {
66  sstr<<" *** "<<m_idHelperSvc->toString(id)<<std::endl;
67  }
68  ATH_MSG_INFO("Test only the following stations "<<std::endl<<sstr.str());
69  } else {
70  const std::set<Identifier> excluded = translateTokenList(excludedSt);
72  for(auto itr = idHelper.detectorElement_begin();
73  itr!= idHelper.detectorElement_end();++itr){
74  if (!excluded.count(*itr)) {
75  m_testStations.insert(*itr);
76  }
77  }
79  if (!excluded.empty()) {
80  std::stringstream excluded_report{};
81  for (const Identifier& id : excluded){
82  excluded_report << " *** " << m_idHelperSvc->toStringDetEl(id) << std::endl;
83  }
84  ATH_MSG_INFO("Test all station except the following excluded ones " << std::endl << excluded_report.str());
85  }
86  }
87  return StatusCode::SUCCESS;
88 }
90 
91  const EventContext& ctx{Gaudi::Hive::currentContext()};
92  SG::ReadCondHandle detMgr{m_detMgrKey, ctx};
93  if (!detMgr.isValid()) {
94  ATH_MSG_FATAL("Failed to retrieve MuonDetectorManager "
95  << m_detMgrKey.fullKey());
96  return StatusCode::FAILURE;
97  }
98  const MmIdHelper& id_helper{m_idHelperSvc->mmIdHelper()};
99  //Looping through the MicroMegas identifiers and pushing back the respective roe.
100  for (const Identifier& test_me : m_testStations) {
101  ATH_MSG_VERBOSE("Test retrieval of Mm detector element "
102  << m_idHelperSvc->toStringDetEl(test_me));
103  const MuonGM::MMReadoutElement *reElement = detMgr->getMMReadoutElement(test_me);
104  if (!reElement) {
105  ATH_MSG_VERBOSE("Detector element is invalid");
106  continue;
107  }
109  if (m_idHelperSvc->toStringDetEl(reElement->identify()) != m_idHelperSvc->toStringDetEl(test_me)) {
110  ATH_MSG_FATAL("Expected to retrieve "
111  << m_idHelperSvc->toStringDetEl(test_me) << ". But got instead "
112  << m_idHelperSvc->toStringDetEl(reElement->identify()));
113  return StatusCode::FAILURE;
114  }
115  for (int gasGap = 1; gasGap <= 4; ++gasGap) {
116  const Identifier layerId = id_helper.channelID(test_me, id_helper.multilayer(test_me), gasGap, 1024);
117  int fStrip = reElement->numberOfMissingBottomStrips(layerId) + 1;
118  int lStrip = id_helper.channelMax(layerId)-reElement->numberOfMissingTopStrips(layerId);
119  for (int channel=fStrip; channel<=lStrip; ++channel) {
120 
121  bool is_valid{false};
122  const Identifier strip_id = id_helper.channelID(test_me, id_helper.multilayer(test_me),
123  gasGap, channel, is_valid);
124  if (!is_valid) {
125  continue;
126  }
127  Amg::Vector3D globStripPos{Amg::Vector3D::Zero()};
128  reElement->stripGlobalPosition(strip_id, globStripPos);
130  reElement->surface(strip_id).globalToLocal(globStripPos, Amg::Vector3D::Zero(), locPos);
131  const MuonGM::MuonChannelDesign& design{*reElement->getDesign(strip_id)};
132  const double stripLength = 0.49 * reElement->stripLength(strip_id);
133  if (design.channelNumber(locPos) != channel ||
134  design.channelNumber(locPos + stripLength *Amg::Vector2D::UnitY()) != channel ||
135  design.channelNumber(locPos - stripLength *Amg::Vector2D::UnitY()) != channel ){
136  ATH_MSG_FATAL("Conversion of channel -> strip -> channel failed for "
137  <<m_idHelperSvc->toString(strip_id)<<", global pos:"
138  <<Amg::toString(globStripPos)<<", locPos: "<<Amg::toString(locPos)
139  <<", backward channel: "<<design.channelNumber(locPos));
140  return StatusCode::FAILURE;
141  }
142  }
143  }
144  ATH_CHECK(dumpToTree(ctx,reElement));
145 
146  }
147  return StatusCode::SUCCESS;
148 }
149 
150 StatusCode GeoModelMmTest::dumpToTree(const EventContext& ctx, const MuonGM::MMReadoutElement* roEl) {
151 
152  const MmIdHelper& id_helper = m_idHelperSvc->mmIdHelper();
153  const Identifier detElId = roEl->identify();
156  m_stationEta = roEl->getStationEta();
157  m_stationPhi = roEl->getStationPhi();
158  m_stationName = id_helper.stationName(detElId);
159  const int multilayer = id_helper.multilayer(detElId);
160  m_moduleHeight = roEl->getRsize();
161  m_moduleWidthS = roEl->getSsize();
162  m_moduleWidthL = roEl->getLongSsize();
163  m_multilayer = multilayer;
164  m_stStripPitch = roEl->getDesign(detElId)->inputPitch;
165  const Amg::Transform3D permute{GeoTrf::GeoRotation{90.*Gaudi::Units::deg,90.*Gaudi::Units::deg, 0.}};
166  m_alignableNode = roEl->AmdbLRSToGlobalTransform() * roEl->getDelta().inverse()*permute;
167 
169 
170  m_readoutTransform = roEl->transform();
171  for (int gasgap = 1; gasgap <= 4; ++gasgap) {
172 
173  const Identifier layerId = id_helper.channelID(detElId, multilayer, gasgap, 1024);
174  const int fStrip = roEl->numberOfMissingBottomStrips(layerId)+1;
175  const int lStrip = id_helper.channelMax(layerId)-roEl->numberOfMissingTopStrips(layerId);
176 
177  for (int channel=fStrip; channel<=lStrip; ++channel) {
178 
179  bool is_valid{false};
180  const Identifier strip_id = id_helper.channelID(detElId, multilayer,
181  gasgap, channel, is_valid);
182  if (!is_valid) continue;
183 
184 
185  //If the strip number is outside the range of valid strips, the function will return false
186  //this method also assignes strip center global coordinates to the gp vector.
187 
188  //Strip global points
189  Amg::Vector3D strip_center{Amg::Vector3D::Zero()},
190  strip_leftEdge{Amg::Vector3D::Zero()},
191  strip_rightEdge{Amg::Vector3D::Zero()};
192 
194  l_left{Amg::Vector2D::Zero()},
195  l_right{Amg::Vector2D::Zero()};
196 
197  const MuonGM::MuonChannelDesign& design{*roEl->getDesign(strip_id)};
198 
199  if (!design.leftEdge(channel, l_left) || !design.center(channel, l_cen) ||
200  !design.rightEdge(channel, l_right)){
201  continue;
202  }
203 
204  roEl->surface(strip_id).localToGlobal(l_left, Amg::Vector3D::Zero(), strip_leftEdge);
205  roEl->surface(strip_id).localToGlobal(l_cen, Amg::Vector3D::Zero(), strip_center);
206  roEl->surface(strip_id).localToGlobal(l_right, Amg::Vector3D::Zero(), strip_rightEdge);
207 
209  m_isStereo.push_back(design.hasStereoAngle());
210  m_gasGap.push_back(id_helper.gasGap(strip_id));
211  m_channel.push_back(id_helper.channel(strip_id));
212  m_stripCenter.push_back(strip_center);
213  m_stripLeftEdge.push_back(strip_leftEdge);
214  m_stripRightEdge.push_back(strip_rightEdge);
215  m_stripLength.push_back(roEl->stripLength(strip_id));
219 
220  m_ActiveHeightR = design.xSize();
221  m_ActiveWidthL = design.maxYSize();
222  m_ActiveWidthS = design.minYSize();
223 
224  if (channel != fStrip) continue;
225  ATH_MSG_VERBOSE(m_idHelperSvc->toStringGasGap(strip_id)<<" "<<Amg::toString(roEl->transform(strip_id).translation(), 4)
226  <<", "<<roEl->transform(strip_id).translation().perp());
227  m_stripRot.push_back(roEl->transform(strip_id));
228  m_stripRotGasGap.push_back(gasgap);
229  m_firstStripPos.push_back(design.firstPos() * Amg::Vector2D::UnitX());
230  m_firstStrip.push_back(design.numberOfMissingBottomStrips() + 1);
231  m_nStrips.push_back(design.nch);
232  m_readoutSide.push_back(roEl->getReadoutSide()[gasgap -1]);
233  }
234  }
235  return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;
236 }
237 
238 
239 
240 }
Trk::PlaneSurface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for PlaneSurface: GlobalToLocal method without dynamic memory allocation - boolean checks i...
Definition: PlaneSurface.cxx:209
MuonGM::GeoModelMmTest::m_ActiveHeightR
MuonVal::ScalarBranch< float > & m_ActiveHeightR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:84
MuonGM::MuonClusterReadoutElement::transform
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Definition: MuonClusterReadoutElement.h:124
MuonGM::MuonChannelDesign::inputPitch
double inputPitch
Definition: MuonChannelDesign.h:35
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
GeoModelMmTest.h
MuonGM::GeoModelMmTest::execute
StatusCode execute() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:89
MuonGM::GeoModelMmTest::m_alignableNode
MuonVal::CoordTransformBranch m_alignableNode
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:91
MuonGM::GeoModelMmTest::m_selectStat
Gaudi::Property< std::vector< std::string > > m_selectStat
String should be formated like MM<L or S><1 or 2><A/C><layer> Example string MML1A6 ,...
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:50
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
MuonGM::GeoModelMmTest::m_tree
MuonVal::MuonTesterTree m_tree
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:56
MuonGM::GeoModelMmTest::m_ActiveWidthS
MuonVal::ScalarBranch< float > & m_ActiveWidthS
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:85
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonVal::MuonTesterTree::init
StatusCode init(OWNER *instance)
Initialize method.
MuonGM::GeoModelMmTest::initialize
StatusCode initialize() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:22
MuonGM::GeoModelMmTest::m_stripActiveLengthRight
MuonVal::VectorBranch< float > & m_stripActiveLengthRight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:77
MuonGM::MMReadoutElement::AmdbLRSToGlobalTransform
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const override final
Definition: MMReadoutElement.h:143
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MmIdHelper::channelMax
static int channelMax()
Definition: MmIdHelper.cxx:831
MuonGM::MMReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MMReadoutElement.h:190
MuonGM::GeoModelMmTest::m_channel
MuonVal::VectorBranch< uint > & m_channel
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:72
MuonGM::GeoModelMmTest::m_locStripCenter
MuonVal::TwoVectorBranch m_locStripCenter
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:82
MuonGM::GeoModelMmTest::m_testStations
std::set< Identifier > m_testStations
Set of stations to be tested.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:45
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGM::GeoModelMmTest::m_stripActiveLength
MuonVal::VectorBranch< float > & m_stripActiveLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:75
MuonGM::GeoModelMmTest::m_moduleHeight
MuonVal::ScalarBranch< float > & m_moduleHeight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:66
MuonIdHelper::stationName
int stationName(const Identifier &id) const
Definition: MuonIdHelper.cxx:804
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:867
MuonGM::MuonReadoutElement::getLongSsize
double getLongSsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:199
MuonGM::GeoModelMmTest::m_moduleWidthL
MuonVal::ScalarBranch< float > & m_moduleWidthL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:68
MuonGM::GeoModelMmTest::m_stationEta
MuonVal::ScalarBranch< short > & m_stationEta
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:59
MuonGM::MMReadoutElement::stripActiveLength
double stripActiveLength(const Identifier &id) const
Definition: MMReadoutElement.h:224
MuonGM::MuonClusterReadoutElement::surface
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
Definition: MuonClusterReadoutElement.h:123
MuonGM::GeoModelMmTest::m_stationPhi
MuonVal::ScalarBranch< short > & m_stationPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:60
ReadCondHandle.h
MuonGM::GeoModelMmTest::m_stripRightEdge
MuonVal::ThreeVectorBranch m_stripRightEdge
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:81
MmIdHelper::multilayer
int multilayer(const Identifier &id) const
Definition: MmIdHelper.cxx:796
MuonGM::GeoModelMmTest::m_stripRotGasGap
MuonVal::VectorBranch< uint8_t > & m_stripRotGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:96
MuonGM::MuonReadoutElement::getSsize
double getSsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:196
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonGM::MMReadoutElement::stripActiveLengthRight
double stripActiveLengthRight(const Identifier &id) const
Definition: MMReadoutElement.h:240
MuonGM::GeoModelMmTest::m_stripCenter
MuonVal::ThreeVectorBranch m_stripCenter
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:79
MMReadoutElement.h
MuonGM::GeoModelMmTest::m_gasGap
MuonVal::VectorBranch< short > & m_gasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:71
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
MuonVal::TwoVectorBranch::push_back
void push_back(const Amg::Vector2D &vec)
interface using the Amg::Vector3D
Definition: TwoVectorBranch.cxx:21
MuonGM::GeoModelMmTest::m_ActiveWidthL
MuonVal::ScalarBranch< float > & m_ActiveWidthL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:86
MuonGM::GeoModelMmTest::m_firstStrip
MuonVal::VectorBranch< unsigned > & m_firstStrip
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:100
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonGM::MMReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition: MMReadoutElement.h:277
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGM::GeoModelMmTest::m_stripLeftEdge
MuonVal::ThreeVectorBranch m_stripLeftEdge
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:80
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonGM::GeoModelMmTest::m_stationIndex
MuonVal::ScalarBranch< unsigned short > & m_stationIndex
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:58
MuonGM::GeoModelMmTest::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:41
MuonGM::GeoModelMmTest::m_excludeStat
Gaudi::Property< std::vector< std::string > > m_excludeStat
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:53
MuonGM::GeoModelMmTest::m_stStripPitch
MuonVal::ScalarBranch< float > & m_stStripPitch
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:64
MuonGM::GeoModelMmTest::m_firstStripPos
MuonVal::TwoVectorBranch m_firstStripPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:97
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
MuonGM::GeoModelMmTest::m_nStrips
MuonVal::VectorBranch< unsigned > & m_nStrips
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:101
MuonGM::MMReadoutElement::getDelta
const Amg::Transform3D & getDelta() const
read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) re...
Definition: MMReadoutElement.h:124
MuonGM::GeoModelMmTest::m_readoutTransform
MuonVal::CoordTransformBranch m_readoutTransform
Transformation of the readout element (Translation, ColX, ColY, ColZ)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:90
MuonGM::GeoModelMmTest::m_stripRot
MuonVal::CoordSystemsBranch m_stripRot
Rotation matrix of the respective strip layers.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:95
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
MuonGM::MMReadoutElement::getReadoutSide
const std::array< int, 4 > & getReadoutSide() const
Definition: MMReadoutElement.h:139
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGM::GeoModelMmTest::m_detMgrKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_detMgrKey
MuonDetectorManager from the conditions store.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:36
MuonGM::MuonChannelDesign
Definition: MuonChannelDesign.h:24
MuonGM::MuonReadoutElement::getStationIndex
int getStationIndex() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:192
MmIdHelper::channel
int channel(const Identifier &id) const override
Definition: MmIdHelper.cxx:800
MmIdHelper
Definition: MmIdHelper.h:54
MuonGM::MuonReadoutElement::getRsize
double getRsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:197
MmIdHelper::gasGap
int gasGap(const Identifier &id) const override
get the hashes
Definition: MmIdHelper.cxx:798
MuonGM::MMReadoutElement::numberOfMissingBottomStrips
int numberOfMissingBottomStrips(const Identifier &layerId) const
Definition: MMReadoutElement.h:301
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonGM::MMReadoutElement::stripLength
double stripLength(const Identifier &id) const
strip length Wrappers to MuonChannelDesign::channelLength() taking into account the passivated width
Definition: MMReadoutElement.h:218
MuonGM::MuonReadoutElement::identify
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:184
MuonGM::GeoModelMmTest::m_multilayer
MuonVal::ScalarBranch< short > & m_multilayer
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:62
MuonVal::CoordSystemsBranch::push_back
void push_back(const Amg::Transform3D &trans)
Definition: CoordTransformBranch.cxx:28
GeoPrimitivesToStringConverter.h
MuonGM::MMReadoutElement
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
Definition: MMReadoutElement.h:25
MuonVal::MuonTesterTree::fill
bool fill(const EventContext &ctx)
Fills the tree per call.
Definition: MuonTesterTree.cxx:89
MuonVal::MuonTesterTree::write
StatusCode write()
Finally write the TTree objects.
Definition: MuonTesterTree.cxx:178
MuonGM::GeoModelMmTest::finalize
StatusCode finalize() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:18
MuonGM::MMReadoutElement::numberOfMissingTopStrips
int numberOfMissingTopStrips(const Identifier &layerId) const
Number of missing bottom and top strips (not read out)
Definition: MMReadoutElement.h:295
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
MuonGM::GeoModelMmTest::dumpToTree
StatusCode dumpToTree(const EventContext &ctx, const MuonGM::MMReadoutElement *detEl)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:150
MuonGM::GeoModelMmTest::m_stationName
MuonVal::ScalarBranch< int > & m_stationName
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:61
MuonGM::GeoModelMmTest::m_readoutSide
MuonVal::VectorBranch< int > & m_readoutSide
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:98
MuonGM::GeoModelMmTest::m_stripLength
MuonVal::VectorBranch< float > & m_stripLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:74
Trk::PlaneSurface::localToGlobal
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
Specified for PlaneSurface: LocalToGlobal method without dynamic memory allocation.
Definition: PlaneSurface.cxx:198
MuonGM::GeoModelMmTest::m_moduleWidthS
MuonVal::ScalarBranch< float > & m_moduleWidthS
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:67
MmIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
Definition: MmIdHelper.cxx:736
MuonGM::GeoModelMmTest::m_stripActiveLengthLeft
MuonVal::VectorBranch< float > & m_stripActiveLengthLeft
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:76
MuonGM::MuonReadoutElement::getStationPhi
int getStationPhi() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:194
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
MuonGM::GeoModelMmTest::m_isStereo
MuonVal::VectorBranch< bool > & m_isStereo
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:70
MuonGM::MMReadoutElement::stripActiveLengthLeft
double stripActiveLengthLeft(const Identifier &id) const
Definition: MMReadoutElement.h:228
Identifier
Definition: IdentifierFieldParser.cxx:14