ATLAS Offline Software
MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 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 
18 GeoModelRpcTest::GeoModelRpcTest(const std::string& name, ISvcLocator* pSvcLocator):
19  AthHistogramAlgorithm{name, pSvcLocator} {}
20 
23  return StatusCode::SUCCESS;
24 }
27  ATH_CHECK(m_idHelperSvc.retrieve());
28  ATH_CHECK(m_tree.init(this));
29  const RpcIdHelper& id_helper{m_idHelperSvc->rpcIdHelper()};
30  for (const std::string& testCham : m_selectStat) {
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, 1, 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.stationName(id) == id_helper.stationName(eleId) &&
51  id_helper.stationEta(id) == id_helper.stationEta(eleId) &&
52  id_helper.stationPhi(id) == id_helper.stationPhi(eleId);
53  });
54  }
56  if (m_testStations.empty()){
57  std::copy(id_helper.detectorElement_begin(),
58  id_helper.detectorElement_end(),
59  std::inserter(m_testStations, m_testStations.end()));
60  } else {
61  std::stringstream sstr{};
62  for (const Identifier& id : m_testStations){
63  sstr<<" *** "<<m_idHelperSvc->toString(id)<<std::endl;
64  }
65  ATH_MSG_INFO("Test only the following stations "<<std::endl<<sstr.str());
66  }
67  return StatusCode::SUCCESS;
68 }
70  const EventContext& ctx{Gaudi::Hive::currentContext()};
72  if (!detMgr.isValid()) {
73  ATH_MSG_FATAL("Failed to retrieve MuonDetectorManager "
74  << m_detMgrKey.fullKey());
75  return StatusCode::FAILURE;
76  }
77  for (const Identifier& test_me : m_testStations) {
78  ATH_MSG_VERBOSE("Test retrieval of Mdt detector element "
79  << m_idHelperSvc->toStringDetEl(test_me));
80  const RpcReadoutElement* reElement = detMgr->getRpcReadoutElement(test_me);
81  if (!reElement) {
82  ATH_MSG_VERBOSE("Detector element is invalid");
83  continue;
84  }
86  if (reElement->identify() != test_me) {
87  ATH_MSG_FATAL("Expected to retrieve "
88  << m_idHelperSvc->toStringDetEl(test_me) << ". But got instead "
89  << m_idHelperSvc->toStringDetEl(reElement->identify()));
90  return StatusCode::FAILURE;
91  }
92  ATH_CHECK(dumpToTree(ctx, reElement));
93  if (m_idHelperSvc->stationNameString(reElement->identify()) == "BIS") continue;
94  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
95  for (int gasGap = 1 ; gasGap <= reElement->numberOfLayers(); ++gasGap) {
96  for (int doubPhi = reElement->getDoubletPhi(); doubPhi <= reElement->NphiStripPanels(); ++doubPhi) {
97  for (bool measPhi: {false, true}) {
98  for (int strip = 1 ; strip < reElement->Nstrips(measPhi); ++strip) {
99  bool isValid{false};
100  const Identifier stripId = idHelper.channelID(test_me,
101  idHelper.doubletZ(test_me),
102  doubPhi,
103  gasGap, measPhi, strip, isValid);
104  if (!isValid) {
105  ATH_MSG_DEBUG("Could not construct Identifier from "
106  <<m_idHelperSvc->toStringChamber(test_me)
107  <<", gasGap:"<<gasGap<<", doubletPhi: "<<doubPhi
108  <<", measurePhi "<<measPhi<<", strip: "<<strip);
109  continue;
110  }
112  if (!reElement->stripPosition(stripId, locPos2D)) {
113  ATH_MSG_FATAL("Could not retrieve the local strip position for "<<m_idHelperSvc->toString(stripId));
114  return StatusCode::FAILURE;
115  }
116  const Trk::Surface& planeSurf{reElement->surface(stripId)};
117  const Amg::Vector3D globPos3D = planeSurf.localToGlobal(locPos2D);
119  const Amg::Vector3D stripPos = reElement->stripPos(stripId);
120  if ( (stripPos - globPos3D).mag() > std::numeric_limits<float>::epsilon()) {
121  ATH_MSG_FATAL("Retrieving the strip position in two different ways leads to two distinct results "
122  <<Amg::toString(stripPos)<<" as reference. Second path "<<Amg::toString(globPos3D));
123  return StatusCode::FAILURE;
124  }
125  const Trk::Surface& laySurf{reElement->surface(stripId)};
126  const double stripLen = 0.5 *reElement->StripLength(measPhi) - 1. * Gaudi::Units::cm;
127  if (!laySurf.insideBounds(locPos2D)){
128  ATH_MSG_FATAL("The strip center "<<Amg::toString(locPos2D)<<" of "<<m_idHelperSvc->toString(stripId)
129  <<" is outside bounds "<<laySurf.bounds());
130  return StatusCode::FAILURE;
131  }
132  if (!laySurf.insideBounds(locPos2D + stripLen * Amg::Vector2D::UnitY())){
133  ATH_MSG_FATAL("The right strip edge "<<Amg::toString(locPos2D + stripLen * Amg::Vector2D::UnitY())<<
134  " of "<<m_idHelperSvc->toString(stripId)<<" is outside bounds "<<laySurf.bounds());
135  return StatusCode::FAILURE;
136  }if (!laySurf.insideBounds(locPos2D - stripLen * Amg::Vector2D::UnitY())){
137  ATH_MSG_FATAL("The left strip edge "<<Amg::toString(locPos2D - stripLen * Amg::Vector2D::UnitY())
138  <<" of "<<m_idHelperSvc->toString(stripId)<<" is outside bounds "<<laySurf.bounds());
139  return StatusCode::FAILURE;
140  }
141  }
142  }
143  }
144  }
145  }
146  return StatusCode::SUCCESS;
147 }
148 StatusCode GeoModelRpcTest::dumpToTree(const EventContext& ctx, const RpcReadoutElement* readoutEle) {
149 
150  m_stIndex = readoutEle->getStationIndex();
151  m_stEta = readoutEle->getStationEta();
152  m_stPhi = readoutEle->getStationPhi();
153  m_doubletR = readoutEle->getDoubletR();
154  m_doubletZ = readoutEle->getDoubletZ();
155  m_doubletPhi = readoutEle->getDoubletPhi();
156  m_chamberDesign = readoutEle->getTechnologyName();
157 
158  m_numStripsEta = readoutEle->Nstrips(false);
159  m_numStripsPhi = readoutEle->Nstrips(true);
160  m_numRpcLayers = readoutEle->numberOfLayers();
161  m_numPhiPanels = readoutEle->NphiStripPanels();
162 
163  m_stripEtaPitch = readoutEle->StripPitch(false);
164  m_stripPhiPitch = readoutEle->StripPitch(true);
165  m_stripEtaWidth = readoutEle->StripWidth(false);
166  m_stripPhiWidth = readoutEle->StripWidth(true);
167  m_stripEtaLength = readoutEle->StripLength(false);
168  m_stripPhiLength = readoutEle->StripLength(true);
169 
170 
171  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
172 
173  const Amg::Transform3D& trans{readoutEle->absTransform()};
174  m_readoutTransform = trans;
175  const MuonGM::MuonStation* station = readoutEle->parentMuonStation();
176  m_alignableNode = station->getGeoTransform()->getDefTransform() *
177  station->getNativeToAmdbLRS().inverse();
178  if (station->hasALines()) {
179  m_ALineTransS = station->getALine_tras();
180  m_ALineTransT = station->getALine_traz();
181  m_ALineTransZ = station->getALine_trat();
182  m_ALineRotS = station->getALine_rots();
183  m_ALineRotT = station->getALine_rotz();
184  m_ALineRotZ = station->getALine_rott();
185  }
186  const int maxDoubPhi = std::max(readoutEle->getDoubletPhi(), readoutEle->NphiStripPanels());
187  for (int doubPhi = readoutEle->getDoubletPhi(); doubPhi <= maxDoubPhi; ++doubPhi) {
188  for (int gap = 1; gap <= readoutEle->numberOfLayers(); ++gap) {
189  for (bool measPhi : {false, true}) {
190  unsigned int numStrip = readoutEle->Nstrips(measPhi);
191  for (unsigned int strip = 1; strip <= numStrip ; ++strip) {
192  bool isValid{false};
193  const Identifier stripID = idHelper.channelID(readoutEle->identify(),
194  readoutEle->getDoubletZ(),
195  doubPhi, gap, measPhi, strip, isValid);
196  if (!isValid) {
197  ATH_MSG_WARNING("Invalid Identifier detected for readout element "
198  <<m_idHelperSvc->toStringDetEl(readoutEle->identify())
199  <<" gap: "<<gap<<" strip: "<<strip<<" meas phi: "<<measPhi);
200  continue;
201  }
202  Amg::Vector2D lStripPos{Amg::Vector2D::Zero()};
203  if (!readoutEle->stripPosition(stripID, lStripPos)){
204  ATH_MSG_FATAL("Failed to obtain strip position for "<<m_idHelperSvc->toString(stripID));
205  return StatusCode::FAILURE;
206  }
207 
208  m_stripPos.push_back(readoutEle->stripPos(stripID));
209  m_locPos.push_back(lStripPos);
211  m_stripPosMeasPhi.push_back(measPhi);
212  m_stripPosNum.push_back(strip);
213  m_stripDblPhi.push_back(doubPhi);
214 
215  if (strip != 1) continue;
216  const Amg::Transform3D locToGlob = readoutEle->transform(stripID);
217  m_stripRot.push_back(locToGlob);
219  m_stripRotMeasPhi.push_back(measPhi);
220  m_stripRotDblPhi.push_back(doubPhi);
221 
222  }
223  }
224  }
225  }
226 
227  return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;
228 }
229 
230 
231 }
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:21
MuonGM::MuonStation::getALine_trat
double getALine_trat() const
Definition: MuonStation.h:192
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
max
#define max(a, b)
Definition: cfImp.cxx:41
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:69
MuonGM::MuonStation::getALine_rotz
double getALine_rotz() const
Definition: MuonStation.h:194
MuonGM::MuonStation::getALine_traz
double getALine_traz() const
Definition: MuonStation.h:191
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:190
MuonGM::RpcReadoutElement
An RpcReadoutElement corresponds to a single RPC module; therefore typicaly a barrel muon station con...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h:54
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)
Definition: AtlasPID.h:214
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:195
MuonGM::GeoModelRpcTest::m_stripRot
MuonVal::CoordSystemsBranch m_stripRot
Rotation matrix of the respective layers.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.h:91
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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:135
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_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:182
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
AthHistogramAlgorithm
Definition: AthHistogramAlgorithm.h:32
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:167
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:148
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:25
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...
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
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:196
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
MuonGM::GeoModelRpcTest::GeoModelRpcTest
GeoModelRpcTest(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelRpcTest.cxx:18
calibdata.copy
bool copy
Definition: calibdata.py:27
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:204
MuonStation.h
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
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:193
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:25
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