ATLAS Offline Software
MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.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 "GeoModelRpcTest.h"
5 
6 #include <fstream>
7 #include <iostream>
8 
13 #include "GaudiKernel/SystemOfUnits.h"
14 
15 
16 namespace MuonGM {
17 
20  return StatusCode::SUCCESS;
21 }
24  ATH_CHECK(m_idHelperSvc.retrieve());
25  ATH_CHECK(m_tree.init(this));
26  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
27  auto translateTokenList = [this, &idHelper](const std::vector<std::string>& chNames){
28 
29  std::set<Identifier> transcriptedIds{};
30  for (const std::string& token : chNames) {
31  if (token.size() != 6) {
32  ATH_MSG_WARNING("Wrong format given for "<<token<<". Expecting 6 characters");
33  continue;
34  }
36  const std::string statName = token.substr(0, 3);
37  const unsigned statEta = std::atoi(token.substr(3, 1).c_str()) * (token[4] == 'A' ? 1 : -1);
38  const unsigned statPhi = std::atoi(token.substr(5, 1).c_str());
39  bool isValid{false};
40  const Identifier eleId = idHelper.elementID(statName, statEta, statPhi, 1, isValid);
41  if (!isValid) {
42  ATH_MSG_WARNING("Failed to deduce a station name for " << token);
43  continue;
44  }
45  transcriptedIds.insert(eleId);
46  std::copy_if(idHelper.detectorElement_begin(), idHelper.detectorElement_end(),
47  std::inserter(transcriptedIds, transcriptedIds.end()),
48  [&eleId, &idHelper](const Identifier& copyMe){
49  return idHelper.stationName(copyMe) == idHelper.stationName(eleId) &&
50  idHelper.stationEta(copyMe) == idHelper.stationEta(eleId) &&
51  idHelper.stationPhi(copyMe) == idHelper.stationPhi(eleId);
52  });
53  }
54  return transcriptedIds;
55  };
56 
57  std::vector <std::string>& selectedSt = m_selectStat.value();
58  const std::vector <std::string>& excludedSt = m_excludeStat.value();
59  selectedSt.erase(std::remove_if(selectedSt.begin(), selectedSt.end(),
60  [&excludedSt](const std::string& token){
61  return std::ranges::find(excludedSt, token) != excludedSt.end();
62  }), selectedSt.end());
63 
64  if (selectedSt.size()) {
65  m_testStations = translateTokenList(selectedSt);
66  std::stringstream sstr{};
67  for (const Identifier& id : m_testStations) {
68  sstr<<" *** "<<m_idHelperSvc->toString(id)<<std::endl;
69  }
70  ATH_MSG_INFO("Test only the following stations "<<std::endl<<sstr.str());
71  } else {
72  const std::set<Identifier> excluded = translateTokenList(excludedSt);
74  for(auto itr = idHelper.detectorElement_begin();
75  itr!= idHelper.detectorElement_end();++itr){
76  if (!excluded.count(*itr)) {
77  m_testStations.insert(*itr);
78  }
79  }
81  if (!excluded.empty()) {
82  std::stringstream excluded_report{};
83  for (const Identifier& id : excluded){
84  excluded_report << " *** " << m_idHelperSvc->toStringDetEl(id) << std::endl;
85  }
86  ATH_MSG_INFO("Test all station except the following excluded ones " << std::endl << excluded_report.str());
87  }
88  }
89  return StatusCode::SUCCESS;
90 }
92  const EventContext& ctx{Gaudi::Hive::currentContext()};
94  if (!detMgr.isValid()) {
95  ATH_MSG_FATAL("Failed to retrieve MuonDetectorManager "
96  << m_detMgrKey.fullKey());
97  return StatusCode::FAILURE;
98  }
99  for (const Identifier& test_me : m_testStations) {
100  ATH_MSG_VERBOSE("Test retrieval of Mdt detector element "
101  << m_idHelperSvc->toStringDetEl(test_me));
102  const RpcReadoutElement* reElement = detMgr->getRpcReadoutElement(test_me);
103  if (!reElement) {
104  ATH_MSG_VERBOSE("Detector element is invalid");
105  continue;
106  }
108  if (reElement->identify() != test_me) {
109  ATH_MSG_FATAL("Expected to retrieve "
110  << m_idHelperSvc->toStringDetEl(test_me) << ". But got instead "
111  << m_idHelperSvc->toStringDetEl(reElement->identify()));
112  return StatusCode::FAILURE;
113  }
114  ATH_CHECK(dumpToTree(ctx, reElement));
115  if (m_idHelperSvc->stationNameString(reElement->identify()) == "BIS") continue;
116  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
117  for (int gasGap = 1 ; gasGap <= reElement->numberOfLayers(); ++gasGap) {
118  for (int doubPhi = reElement->getDoubletPhi(); doubPhi <= reElement->NphiStripPanels(); ++doubPhi) {
119  for (bool measPhi: {false, true}) {
120  for (int strip = 1 ; strip < reElement->Nstrips(measPhi); ++strip) {
121  bool isValid{false};
122  const Identifier stripId = idHelper.channelID(test_me,
123  idHelper.doubletZ(test_me),
124  doubPhi,
125  gasGap, measPhi, strip, isValid);
126  if (!isValid) {
127  ATH_MSG_DEBUG("Could not construct Identifier from "
128  <<m_idHelperSvc->toStringChamber(test_me)
129  <<", gasGap:"<<gasGap<<", doubletPhi: "<<doubPhi
130  <<", measurePhi "<<measPhi<<", strip: "<<strip);
131  continue;
132  }
134  if (!reElement->stripPosition(stripId, locPos2D)) {
135  ATH_MSG_FATAL("Could not retrieve the local strip position for "<<m_idHelperSvc->toString(stripId));
136  return StatusCode::FAILURE;
137  }
138  const Trk::Surface& planeSurf{reElement->surface(stripId)};
139  const Amg::Vector3D globPos3D = planeSurf.localToGlobal(locPos2D);
141  const Amg::Vector3D stripPos = reElement->stripPos(stripId);
142  if ( (stripPos - globPos3D).mag() > std::numeric_limits<float>::epsilon()) {
143  ATH_MSG_FATAL("Retrieving the strip position in two different ways leads to two distinct results "
144  <<Amg::toString(stripPos)<<" as reference. Second path "<<Amg::toString(globPos3D));
145  return StatusCode::FAILURE;
146  }
147  const Trk::Surface& laySurf{reElement->surface(stripId)};
148  const double stripLen = 0.5 *reElement->StripLength(measPhi) - 1. * Gaudi::Units::cm;
149  if (!laySurf.insideBounds(locPos2D)){
150  ATH_MSG_FATAL("The strip center "<<Amg::toString(locPos2D)<<" of "<<m_idHelperSvc->toString(stripId)
151  <<" is outside bounds "<<laySurf.bounds());
152  return StatusCode::FAILURE;
153  }
154  if (!laySurf.insideBounds(locPos2D + stripLen * Amg::Vector2D::UnitY())){
155  ATH_MSG_FATAL("The right strip edge "<<Amg::toString(locPos2D + stripLen * Amg::Vector2D::UnitY())<<
156  " of "<<m_idHelperSvc->toString(stripId)<<" is outside bounds "<<laySurf.bounds());
157  return StatusCode::FAILURE;
158  }if (!laySurf.insideBounds(locPos2D - stripLen * Amg::Vector2D::UnitY())){
159  ATH_MSG_FATAL("The left strip edge "<<Amg::toString(locPos2D - stripLen * Amg::Vector2D::UnitY())
160  <<" of "<<m_idHelperSvc->toString(stripId)<<" is outside bounds "<<laySurf.bounds());
161  return StatusCode::FAILURE;
162  }
163  }
164  }
165  }
166  }
167  }
168  return StatusCode::SUCCESS;
169 }
170 StatusCode GeoModelRpcTest::dumpToTree(const EventContext& ctx, const RpcReadoutElement* readoutEle) {
171 
172  m_stIndex = readoutEle->getStationIndex();
173  m_stEta = readoutEle->getStationEta();
174  m_stPhi = readoutEle->getStationPhi();
175  m_doubletR = readoutEle->getDoubletR();
176  m_doubletZ = readoutEle->getDoubletZ();
177  m_doubletPhi = readoutEle->getDoubletPhi();
178  m_chamberDesign = readoutEle->getTechnologyName();
179 
180  m_numStripsEta = readoutEle->Nstrips(false);
181  m_numStripsPhi = readoutEle->Nstrips(true);
182  m_numRpcLayers = readoutEle->numberOfLayers();
183  m_numPhiPanels = readoutEle->NphiStripPanels();
184 
185  m_stripEtaPitch = readoutEle->StripPitch(false);
186  m_stripPhiPitch = readoutEle->StripPitch(true);
187  m_stripEtaWidth = readoutEle->StripWidth(false);
188  m_stripPhiWidth = readoutEle->StripWidth(true);
189  m_stripEtaLength = readoutEle->StripLength(false);
190  m_stripPhiLength = readoutEle->StripLength(true);
191 
192 
193  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
194 
195  const Amg::Transform3D& trans{readoutEle->absTransform()};
196  m_readoutTransform = trans;
197  const MuonGM::MuonStation* station = readoutEle->parentMuonStation();
198  m_alignableNode = station->getGeoTransform()->getDefTransform() *
199  station->getNativeToAmdbLRS().inverse();
200  if (station->hasALines()) {
201  m_ALineTransS = station->getALine_tras();
202  m_ALineTransT = station->getALine_traz();
203  m_ALineTransZ = station->getALine_trat();
204  m_ALineRotS = station->getALine_rots();
205  m_ALineRotT = station->getALine_rotz();
206  m_ALineRotZ = station->getALine_rott();
207  }
208  const int maxDoubPhi = std::max(readoutEle->getDoubletPhi(), readoutEle->NphiStripPanels());
209  for (int doubPhi = readoutEle->getDoubletPhi(); doubPhi <= maxDoubPhi; ++doubPhi) {
210  for (int gap = 1; gap <= readoutEle->numberOfLayers(); ++gap) {
211  for (bool measPhi : {false, true}) {
212  unsigned int numStrip = readoutEle->Nstrips(measPhi);
213  for (unsigned int strip = 1; strip <= numStrip ; ++strip) {
214  bool isValid{false};
215  const Identifier stripID = idHelper.channelID(readoutEle->identify(),
216  readoutEle->getDoubletZ(),
217  doubPhi, gap, measPhi, strip, isValid);
218  if (!isValid) {
219  ATH_MSG_WARNING("Invalid Identifier detected for readout element "
220  <<m_idHelperSvc->toStringDetEl(readoutEle->identify())
221  <<" gap: "<<gap<<" strip: "<<strip<<" meas phi: "<<measPhi);
222  continue;
223  }
224  Amg::Vector2D lStripPos{Amg::Vector2D::Zero()};
225  if (!readoutEle->stripPosition(stripID, lStripPos)){
226  ATH_MSG_FATAL("Failed to obtain strip position for "<<m_idHelperSvc->toString(stripID));
227  return StatusCode::FAILURE;
228  }
229 
230  m_stripPos.push_back(readoutEle->stripPos(stripID));
231  m_locPos.push_back(lStripPos);
233  m_stripPosMeasPhi.push_back(measPhi);
234  m_stripPosNum.push_back(strip);
235  m_stripDblPhi.push_back(doubPhi);
236 
237  if (strip != 1) continue;
238  const Amg::Transform3D locToGlob = readoutEle->transform(stripID);
239  m_stripRot.push_back(locToGlob);
241  m_stripRotMeasPhi.push_back(measPhi);
242  m_stripRotDblPhi.push_back(doubPhi);
243 
244  }
245  }
246  }
247  }
248 
249  return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;
250 }
251 
252 
253 }
MuonGM::GeoModelRpcTest::m_stripEtaWidth
MuonVal::ScalarBranch< float > & m_stripEtaWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:70
MuonGM::MuonClusterReadoutElement::transform
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Definition: MuonClusterReadoutElement.h:124
MuonGM::GeoModelRpcTest::finalize
StatusCode finalize() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.cxx:18
MuonGM::MuonStation::getALine_trat
double getALine_trat() const
Definition: MuonStation.h:203
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
MuonGM::RpcReadoutElement::NphiStripPanels
int NphiStripPanels() const
returns the number of phi strip panels (1 or 2)
MuonGM::MuonReadoutElement::absTransform
const Amg::Transform3D & absTransform() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:210
MuonGM::GeoModelRpcTest::m_detMgrKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_detMgrKey
MuonDetectorManager from the conditions store.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:35
MuonGM::GeoModelRpcTest::m_ALineRotS
MuonVal::ScalarBranch< float > & m_ALineRotS
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:86
MuonGM::RpcReadoutElement::StripLength
double StripLength(bool measphi) const
returns the strip length for the phi or eta plane
MuonGM::GeoModelRpcTest::m_stripPhiWidth
MuonVal::ScalarBranch< float > & m_stripPhiWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:71
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.
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MuonGM::GeoModelRpcTest::execute
StatusCode execute() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.cxx:91
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
MuonGM::MuonStation::getALine_rotz
double getALine_rotz() const
Definition: MuonStation.h:205
MuonGM::MuonStation::getALine_traz
double getALine_traz() const
Definition: MuonStation.h:202
MuonGM::GeoModelRpcTest::m_doubletPhi
MuonVal::ScalarBranch< uint8_t > & m_doubletPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:59
MuonGM::GeoModelRpcTest::m_stripDblPhi
MuonVal::VectorBranch< uint8_t > & m_stripDblPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:101
MuonGM::GeoModelRpcTest::m_locPos
MuonVal::TwoVectorBranch m_locPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:102
MuonGM::GeoModelRpcTest::m_selectStat
Gaudi::Property< std::vector< std::string > > m_selectStat
String should be formated like <stationName><stationEta><A/C><stationPhi>
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:47
MuonGM::MuonStation::getALine_tras
double getALine_tras() const
Definition: MuonStation.h:201
MuonGM::RpcReadoutElement
An RpcReadoutElement corresponds to a single RPC module; therefore typicaly a barrel muon station con...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h:55
MuonGM::MuonReadoutElement::getTechnologyName
const std::string & getTechnologyName() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:188
MuonGM::GeoModelRpcTest::m_doubletR
MuonVal::ScalarBranch< uint8_t > & m_doubletR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:57
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::GeoModelRpcTest::m_numPhiPanels
MuonVal::ScalarBranch< uint8_t > & m_numPhiPanels
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:76
CaloSwCorrections.gap
def gap(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:212
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
RpcIdHelper
Definition: RpcIdHelper.h:51
ReadCondHandle.h
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonGM::GeoModelRpcTest::m_stripRotDblPhi
MuonVal::VectorBranch< uint8_t > & m_stripRotDblPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:93
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
MuonGM::RpcReadoutElement::getDoubletR
int getDoubletR() const
return DoubletR value for the given readout element
MuonGM::GeoModelRpcTest::m_stripPosGasGap
MuonVal::VectorBranch< uint8_t > & m_stripPosGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:99
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
EventPrimitivesToStringConverter.h
MuonVal::TwoVectorBranch::push_back
void push_back(const Amg::Vector2D &vec)
interface using the Amg::Vector3D
Definition: TwoVectorBranch.cxx:21
MuonGM::GeoModelRpcTest::m_doubletZ
MuonVal::ScalarBranch< uint8_t > & m_doubletZ
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:58
MuonGM::MuonStation::getALine_rott
double getALine_rott() const
Definition: MuonStation.h:206
MuonGM::GeoModelRpcTest::m_stripRot
MuonVal::CoordSystemsBranch m_stripRot
Rotation matrix of the respective layers.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:91
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
MuonGM::MuonReadoutElement::parentMuonStation
const MuonStation * parentMuonStation() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:136
MuonGM::GeoModelRpcTest::m_numStripsPhi
MuonVal::ScalarBranch< uint8_t > & m_numStripsPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:65
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGM::MuonStation
Definition: MuonStation.h:51
MuonGM::GeoModelRpcTest::m_stripRotGasGap
MuonVal::VectorBranch< uint8_t > & m_stripRotGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:92
GeoModelRpcTest.h
MuonGM::GeoModelRpcTest::m_excludeStat
Gaudi::Property< std::vector< std::string > > m_excludeStat
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:49
MuonGM::GeoModelRpcTest::m_stripPosMeasPhi
MuonVal::VectorBranch< bool > & m_stripPosMeasPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:98
AnalysisUtils::copy_if
Out copy_if(In first, const In &last, Out res, const Pred &p)
Definition: IFilterUtils.h:30
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonGM::MuonStation::getNativeToAmdbLRS
const Amg::Transform3D & getNativeToAmdbLRS() const
Definition: MuonStation.h:193
MuonGM::RpcReadoutElement::getDoubletPhi
int getDoubletPhi() const
return DoubletPhi value for the given readout element, be aware that one RE can contain two DoubletPh...
MuonGM::GeoModelRpcTest::m_stripEtaLength
MuonVal::ScalarBranch< float > & m_stripEtaLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:72
MuonGM::GeoModelRpcTest::m_stIndex
MuonVal::ScalarBranch< unsigned short > & m_stIndex
Identifier of the readout element.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:54
MuonGM::GeoModelRpcTest::m_stEta
MuonVal::ScalarBranch< short > & m_stEta
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:55
MuonGM::MuonStation::getGeoTransform
const GeoAlignableTransform * getGeoTransform() const
Definition: MuonStation.h:178
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
MuonGM::GeoModelRpcTest::m_stripRotMeasPhi
MuonVal::VectorBranch< bool > & m_stripRotMeasPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:94
MuonGM::GeoModelRpcTest::dumpToTree
StatusCode dumpToTree(const EventContext &ctx, const RpcReadoutElement *readoutEle)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.cxx:170
MuonGM::GeoModelRpcTest::m_stripPhiPitch
MuonVal::ScalarBranch< float > & m_stripPhiPitch
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:69
MuonGM::GeoModelRpcTest::m_ALineRotT
MuonVal::ScalarBranch< float > & m_ALineRotT
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:87
MuonGM::GeoModelRpcTest::initialize
StatusCode initialize() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.cxx:22
MuonGM::RpcReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position If the strip number is outside the range of valid strips, the function will return fal...
MuonGM::RpcReadoutElement::stripPos
Amg::Vector3D stripPos(const Identifier &id) const
Definition: MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx:177
MuonGM::GeoModelRpcTest::m_chamberDesign
MuonVal::ScalarBranch< std::string > & m_chamberDesign
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:60
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
MuonGM::RpcReadoutElement::StripPitch
double StripPitch(bool measphi) const
returns the strip pitch for the phi or eta plane
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGM::RpcReadoutElement::numberOfLayers
virtual int numberOfLayers(bool measphi=true) const override final
number of layers in phi/eta projection, same for eta/phi planes
MuonGM::GeoModelRpcTest::m_numStripsEta
MuonVal::ScalarBranch< uint8_t > & m_numStripsEta
Number of strips, strip pitch in eta & phi direction.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:64
MuonGM::RpcReadoutElement::StripWidth
double StripWidth(bool measphi) const
returns the strip width for the phi or eta plane
MuonGM::GeoModelRpcTest::m_ALineTransZ
MuonVal::ScalarBranch< float > & m_ALineTransZ
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:85
MuonGM::MuonReadoutElement::getStationIndex
int getStationIndex() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:192
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonGM::GeoModelRpcTest::m_stripEtaPitch
MuonVal::ScalarBranch< float > & m_stripEtaPitch
Strip dimensions.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:68
MuonGM::GeoModelRpcTest::m_stripPosNum
MuonVal::VectorBranch< uint8_t > & m_stripPosNum
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:100
MuonGM::GeoModelRpcTest::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:39
MuonGM::GeoModelRpcTest::m_stripPhiLength
MuonVal::ScalarBranch< float > & m_stripPhiLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:73
MuonGM::GeoModelRpcTest::m_ALineRotZ
MuonVal::ScalarBranch< float > & m_ALineRotZ
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:88
MuonGM::MuonReadoutElement::identify
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:184
MuonVal::CoordSystemsBranch::push_back
void push_back(const Amg::Transform3D &trans)
Definition: CoordTransformBranch.cxx:28
MuonGM::GeoModelRpcTest::m_tree
MuonVal::MuonTesterTree m_tree
Write a TTree for validation purposes.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:51
MuonVal::MuonTesterTree::fill
bool fill(const EventContext &ctx)
Fills the tree per call.
Definition: MuonTesterTree.cxx:89
MuonGM::RpcReadoutElement::Nstrips
int Nstrips(bool measphi) const
returns the number of strips for the phi or eta plane
MuonVal::MuonTesterTree::write
StatusCode write()
Finally write the TTree objects.
Definition: MuonTesterTree.cxx:178
MuonGM::MuonStation::hasALines
bool hasALines() const
Definition: MuonStation.h:207
MuonGM::GeoModelRpcTest::m_alignableNode
MuonVal::CoordTransformBranch m_alignableNode
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:79
MuonGM::GeoModelRpcTest::m_stripPos
MuonVal::ThreeVectorBranch m_stripPos
Strip positions.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:97
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::GeoModelRpcTest::m_numRpcLayers
MuonVal::ScalarBranch< uint8_t > & m_numRpcLayers
Number of eta & phi gas gaps.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:75
MuonGM::GeoModelRpcTest::m_ALineTransT
MuonVal::ScalarBranch< float > & m_ALineTransT
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:84
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
MuonStation.h
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
MuonGM::RpcReadoutElement::getDoubletZ
int getDoubletZ() const
return DoubletZ value for the given readout element
MuonGM::MuonStation::getALine_rots
double getALine_rots() const
Definition: MuonStation.h:204
MuonGM::GeoModelRpcTest::m_ALineTransS
MuonVal::ScalarBranch< float > & m_ALineTransS
Alignment parameters.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:83
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:26
MuonGM::GeoModelRpcTest::m_testStations
std::set< Identifier > m_testStations
Set of stations to be tested.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:43
MuonGM::MuonReadoutElement::getStationPhi
int getStationPhi() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:194
MuonGM::GeoModelRpcTest::m_stPhi
MuonVal::ScalarBranch< short > & m_stPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:56
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
MuonGM::GeoModelRpcTest::m_readoutTransform
MuonVal::CoordTransformBranch m_readoutTransform
Transformation of the readout element (Translation, ColX, ColY, ColZ)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:78
RpcReadoutElement.h
Identifier
Definition: IdentifierFieldParser.cxx:14