ATLAS Offline Software
MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.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 "GeoModelsTgcTest.h"
5 
6 #include <fstream>
7 #include <iostream>
8 
12 #include "GeoModelKernel/GeoDefinitions.h"
14 #include "GaudiKernel/SystemOfUnits.h"
15 
16 namespace MuonGM {
17 
18 
21  return StatusCode::SUCCESS;
22 }
25  ATH_CHECK(m_idHelperSvc.retrieve());
26  ATH_CHECK(m_tree.init(this));
27  const sTgcIdHelper& idHelper{m_idHelperSvc->stgcIdHelper()};
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  const EventContext& ctx{Gaudi::Hive::currentContext()};
91  SG::ReadCondHandle detMgr{m_detMgrKey, ctx};
92  if (!detMgr.isValid()) {
93  ATH_MSG_FATAL("Failed to retrieve MuonDetectorManager "
94  << m_detMgrKey.fullKey());
95  return StatusCode::FAILURE;
96  }
97  for (const Identifier& test_me : m_testStations) {
98  ATH_MSG_VERBOSE("Test retrieval of sTgc detector element "
99  << m_idHelperSvc->toStringDetEl(test_me));
100  const sTgcReadoutElement* reElement = detMgr->getsTgcReadoutElement(test_me);
101  if (!reElement) {
102  ATH_MSG_VERBOSE("Detector element is invalid");
103  continue;
104  }
106  if (m_idHelperSvc->toStringDetEl(reElement->identify()) != m_idHelperSvc->toStringDetEl(test_me)) {
107  ATH_MSG_FATAL("Expected to retrieve "
108  << m_idHelperSvc->toStringDetEl(test_me) << ". But got instead "
109  << m_idHelperSvc->toStringDetEl(reElement->identify()));
110  return StatusCode::FAILURE;
111  }
112  ATH_CHECK(dumpToTree(ctx, reElement));
113  }
114  return StatusCode::SUCCESS;
115 }
116 StatusCode GeoModelsTgcTest::dumpToTree(const EventContext& ctx, const sTgcReadoutElement* roEl) {
117  const sTgcIdHelper& id_helper{m_idHelperSvc->stgcIdHelper()};
118 
119  const Amg::Transform3D permute{GeoTrf::GeoRotation{90.*Gaudi::Units::deg,90.*Gaudi::Units::deg, 0.}};
120  m_alignableNode = roEl->AmdbLRSToGlobalTransform() * roEl->getDelta().inverse()*permute;
122  int stIndex = roEl->getStationIndex();
123  int stEta = roEl->getStationEta();
124  int stPhi = roEl->getStationPhi();
125  int stML = id_helper.multilayer(roEl->identify());
126  std::string chamberDesign = roEl->getStationType();
127 
128  m_stIndex = stIndex;
129  m_stEta = stEta;
130  m_stPhi = stPhi;
131  m_stML = stML;
132  m_chamberDesign = chamberDesign;
133 
134  const Identifier genStripID =id_helper.channelID(stIndex, stEta, stPhi,
135  stML, 1, sTgcIdHelper::sTgcChannelTypes::Strip, 1);
136  const Identifier genPadID =id_helper.channelID(stIndex, stEta, stPhi,
137  stML, 1, sTgcIdHelper::sTgcChannelTypes::Pad, 1);
138 
140  int numLayers = roEl->numberOfLayers(true);
141  double yCutout = roEl->getDesign(genStripID)->yCutout();
142  double gasTck = roEl->getDesign(genStripID)->thickness;
143 
145  m_yCutout = yCutout;
146  m_gasTck = gasTck;
148  double sGapLength = roEl->getDesign(genStripID)->minYSize();
149  double lGapLength = roEl->getDesign(genStripID)->maxYSize();
150  double gapHeight = roEl->getDesign(genStripID)->xSize();
151 
152  double sPadLength = roEl->getPadDesign(genPadID)->sPadWidth;
153  double lPadLength = roEl->getPadDesign(genPadID)->lPadWidth;
154 
155  m_sGapLength = sGapLength;
156  m_lGapLength = lGapLength;
157  m_gapHeight = gapHeight;
158 
159  m_sPadLength = sPadLength;
160  m_lPadLength = lPadLength;
162  double sChamberLength = roEl->getPadDesign(genPadID)->sWidth;
163  double lChamberLength = roEl->getPadDesign(genPadID)->lWidth;
164  double chamberHeight = roEl->getPadDesign(genPadID)->Length;
165 
166  m_sChamberLength = sChamberLength;
167  m_lChamberLength = lChamberLength;
168  m_chamberHeight = chamberHeight;
169 
171  const Amg::Transform3D& trans{roEl->transform()};
172  m_readoutTransform = trans;
173 
175  for (int lay = 1; lay <= numLayers; ++lay) {
176  const Identifier layWireID =id_helper.channelID(stIndex, stEta, stPhi,
177  stML, lay, sTgcIdHelper::sTgcChannelTypes::Wire, 1);
178  const Identifier layStripID =id_helper.channelID(stIndex, stEta, stPhi,
179  stML, lay, sTgcIdHelper::sTgcChannelTypes::Strip, 1);
180  const Identifier layPadID =id_helper.padID(stIndex, stEta, stPhi,
181  stML, lay, sTgcIdHelper::sTgcChannelTypes::Pad, 1, 1);
182 
184  unsigned int numWires = roEl->numberOfWires(layWireID);
185  unsigned int firstWireGroupWidth = roEl->getDesign(layWireID)->firstPitch;
186  int numWireGroups = roEl->getDesign(layWireID)->nGroups;
187  double wireCutout = roEl->getDesign(layWireID)->wireCutout;
188  double wirePitch = roEl->wirePitch();
189  double wireWidth = roEl->getDesign(layWireID)->inputWidth;
190  double wireGroupWidth = roEl->getDesign(layWireID)->groupWidth;
191 
192  m_numWires.push_back(numWires);
193  m_firstWireGroupWidth.push_back(firstWireGroupWidth);
194  m_numWireGroups.push_back(numWireGroups);
195  m_wireCutout.push_back(wireCutout);
196  m_wirePitch = wirePitch;
197  m_wireWidth = wireWidth;
198  m_wireGroupWidth = wireGroupWidth;
199 
201  for (int wireGroupIndex = 1; wireGroupIndex <= numWireGroups; ++wireGroupIndex) {
202  bool isValid = false;
203  const Identifier wireGroupID =id_helper.channelID(stIndex, stEta, stPhi, stML, lay,
204  sTgcIdHelper::sTgcChannelTypes::Wire, wireGroupIndex, isValid);
205  if(!isValid) {
206  ATH_MSG_WARNING("The following wire group ID is not valid: " << wireGroupID);
207  }
208  Amg::Vector3D wireGroupPos(Amg::Vector3D::Zero());
209  Amg::Vector2D localWireGroupPos(Amg::Vector2D::Zero());
210  roEl->stripPosition(wireGroupID, localWireGroupPos);
211  m_localWireGroupPos.push_back(localWireGroupPos);
212  roEl->stripGlobalPosition(wireGroupID, wireGroupPos);
213  m_globalWireGroupPos.push_back(wireGroupPos);
214  m_wireGroupNum.push_back(wireGroupIndex);
216 
217  if (wireGroupIndex != 1) continue;
218  const Amg::Transform3D locToGlob = roEl->transform(wireGroupID);
219  m_wireGroupRot.push_back(locToGlob);
221  }
222 
224  int numStrips = roEl->getDesign(layStripID)->nch;
225  double stripPitch = roEl->channelPitch(layStripID);
226  double stripWidth = roEl->getDesign(layStripID)->inputWidth;
227  double firstStripPitch = roEl->getDesign(layStripID)->firstPitch;
228 
229  m_numStrips = numStrips;
230  m_stripPitch = stripPitch;
231  m_stripWidth = stripWidth;
232  m_firstStripPitch.push_back(firstStripPitch);
233 
235  for (int stripIndex = 1; stripIndex <= numStrips; ++stripIndex) {
236  bool isValid = false;
237  const Identifier stripID =id_helper.channelID(stIndex, stEta, stPhi, stML, lay,
238  sTgcIdHelper::sTgcChannelTypes::Strip, stripIndex, isValid);
239  if(!isValid) {
240  ATH_MSG_WARNING("The following strip ID is not valid: " << stripID);
241  }
242  double stripLength = roEl->getDesign(stripID)->channelLength(stripIndex);
243  Amg::Vector3D globalStripPos(Amg::Vector3D::Zero());
244  Amg::Vector2D localStripPos(Amg::Vector2D::Zero());
245  roEl->stripPosition(stripID, localStripPos);
246  m_localStripPos.push_back(localStripPos);
247  roEl->stripGlobalPosition(stripID, globalStripPos);
248  m_globalStripPos.push_back(globalStripPos);
249  m_stripNum.push_back(stripIndex);
251  m_stripLengths.push_back(stripLength);
252 
253  if (stripIndex != 1) continue;
254  const Amg::Transform3D locToGlob = roEl->transform(stripID);
255  m_stripRot.push_back(locToGlob);
257  }
258 
260  unsigned int numPads = roEl->numberOfPads(layPadID);
261  int numPadEta = roEl->getPadDesign(layPadID)->nPadH;
262  int numPadPhi = roEl->getPadDesign(layPadID)->nPadColumns;
263  double firstPadHeight = roEl->getPadDesign(layPadID)->firstRowPos;
264  double padHeight = roEl->getPadDesign(layPadID)->inputRowPitch;
265  double padPhiShift = roEl->getPadDesign(layPadID)->PadPhiShift;
266  double firstPadPhiDiv = roEl->getPadDesign(layPadID)->firstPhiPos;
267  double anglePadPhi = roEl->getPadDesign(layPadID)->inputPhiPitch;
268  double beamlineRadius = roEl->getPadDesign(layPadID)->radialDistance;
269 
270  m_numPads.push_back(numPads);
271  m_numPadEta.push_back(numPadEta);
272  m_numPadPhi.push_back(numPadPhi);
273  m_firstPadHeight.push_back(firstPadHeight);
274  m_padHeight.push_back(padHeight);
275  m_padPhiShift.push_back(padPhiShift);
276  m_firstPadPhiDiv.push_back(firstPadPhiDiv);
277  m_anglePadPhi = anglePadPhi;
278  m_beamlineRadius = beamlineRadius;
279 
281  for (int phiIndex = 1; phiIndex <= numPadPhi; ++phiIndex) {
282  for(int etaIndex = 1; etaIndex <= numPadEta; ++etaIndex) {
283  bool isValid = false;
284  const Identifier padID =id_helper.padID(stIndex, stEta, stPhi, stML, lay,
285  sTgcIdHelper::sTgcChannelTypes::Pad, etaIndex, phiIndex, isValid);
286  if(!isValid) {
287  ATH_MSG_WARNING("The following pad ID is not valid: " << padID);
288  }
289  Amg::Vector2D localPadPos(Amg::Vector2D::Zero());
290  Amg::Vector3D globalPadPos(Amg::Vector3D::Zero());
291  std::array<Amg::Vector2D,4> localPadCorners{make_array<Amg::Vector2D, 4>(Amg::Vector2D::Zero())};
292  std::array<Amg::Vector3D,4> globalPadCorners{make_array<Amg::Vector3D, 4>(Amg::Vector3D::Zero())};
293 
294  roEl->padPosition(padID, localPadPos);
295  roEl->padGlobalPosition(padID, globalPadPos);
296  roEl->padCorners(padID, localPadCorners);
297  roEl->padGlobalCorners(padID, globalPadCorners);
298 
299  m_localPadPos.push_back(localPadPos);
300  m_localPadCornerBL.push_back(localPadCorners[0]);
301  m_localPadCornerBR.push_back(localPadCorners[1]);
302  m_localPadCornerTL.push_back(localPadCorners[2]);
303  m_localPadCornerTR.push_back(localPadCorners[3]);
304 
305  Amg::Vector2D hitCorrection{-.1, -.1};
306  Amg::Vector2D hitPos = localPadCorners[3] + hitCorrection;
307  m_hitPosition.push_back(hitPos);
308  m_padNumber.push_back(roEl->padNumber(hitPos, padID));
309 
310  m_globalPadPos.push_back(globalPadPos);
311  m_globalPadCornerBR.push_back(globalPadCorners[0]);
312  m_globalPadCornerBL.push_back(globalPadCorners[1]);
313  m_globalPadCornerTR.push_back(globalPadCorners[2]);
314  m_globalPadCornerTL.push_back(globalPadCorners[3]);
315 
316  m_padEta.push_back(etaIndex);
318  m_padGasGap.push_back(lay);
319 
320  if (etaIndex != 1 || phiIndex != 1) continue;
321  const Amg::Transform3D locToGlob = roEl->transform(padID);
322  m_padRot.push_back(locToGlob);
324  }
325  }
326  }
327 
328  return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;
329 }
330 
331 }
MuonGM::GeoModelsTgcTest::m_chamberHeight
MuonVal::ScalarBranch< float > & m_chamberHeight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:67
MuonGM::sTgcReadoutElement::padCorners
bool padCorners(const Identifier &id, std::array< Amg::Vector2D, 4 > &corners) const
pad corners
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:358
MuonGM::GeoModelsTgcTest::m_padRotGasGap
MuonVal::VectorBranch< uint8_t > & m_padRotGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:87
MuonGM::GeoModelsTgcTest::m_yCutout
MuonVal::ScalarBranch< float > & m_yCutout
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:62
MuonGM::MuonPadDesign::firstPhiPos
double firstPhiPos
Definition: MuonPadDesign.h:53
MuonGM::MuonClusterReadoutElement::transform
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Definition: MuonClusterReadoutElement.h:124
MuonGM::GeoModelsTgcTest::m_numStrips
MuonVal::ScalarBranch< uint > & m_numStrips
Strip dimensions.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:103
MuonGM::GeoModelsTgcTest::m_stripWidth
MuonVal::ScalarBranch< float > & m_stripWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:105
MuonGM::GeoModelsTgcTest::execute
StatusCode execute() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.cxx:89
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::GeoModelsTgcTest::m_stripLengths
MuonVal::VectorBranch< float > & m_stripLengths
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:111
MuonGM::MuonChannelDesign::xSize
double xSize() const
Definition: MuonChannelDesign.h:473
MuonGM::MuonPadDesign::lWidth
double lWidth
Definition: MuonPadDesign.h:57
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::MuonChannelDesign::groupWidth
double groupWidth
Definition: MuonChannelDesign.h:39
MuonGM::GeoModelsTgcTest::m_padGasGap
MuonVal::VectorBranch< uint8_t > & m_padGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:139
MuonGM::sTgcReadoutElement::getDelta
const Amg::Transform3D & getDelta() const
read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) re...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:182
sTgcReadoutElement.h
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MuonGM::GeoModelsTgcTest::m_padPhi
MuonVal::VectorBranch< uint > & m_padPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:141
MuonGM::MuonChannelDesign::firstPitch
double firstPitch
Definition: MuonChannelDesign.h:38
MuonGM::GeoModelsTgcTest::m_globalPadCornerTL
MuonVal::ThreeVectorBranch m_globalPadCornerTL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:138
MuonGM::MuonChannelDesign::inputWidth
double inputWidth
Definition: MuonChannelDesign.h:36
MuonGM::GeoModelsTgcTest::m_localWireGroupPos
MuonVal::TwoVectorBranch m_localWireGroupPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:97
MuonGM::GeoModelsTgcTest::m_globalPadCornerBL
MuonVal::ThreeVectorBranch m_globalPadCornerBL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:136
MuonGM::GeoModelsTgcTest::m_firstPadHeight
MuonVal::VectorBranch< float > & m_firstPadHeight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:119
MuonGM::GeoModelsTgcTest::m_stEta
MuonVal::ScalarBranch< short > & m_stEta
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:54
MuonGM::GeoModelsTgcTest::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:39
MuonGM::GeoModelsTgcTest::m_firstPadPhiDiv
MuonVal::VectorBranch< float > & m_firstPadPhiDiv
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:122
MuonGM::sTgcReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:279
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGM::GeoModelsTgcTest::m_tree
MuonVal::MuonTesterTree m_tree
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:50
MuonGM::MuonChannelDesign::wireCutout
double wireCutout
Definition: MuonChannelDesign.h:41
MuonGM::GeoModelsTgcTest::m_excludeStat
Gaudi::Property< std::vector< std::string > > m_excludeStat
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:49
MuonGM::GeoModelsTgcTest::m_stripPitch
MuonVal::ScalarBranch< float > & m_stripPitch
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:104
MuonGM::sTgcReadoutElement::numberOfWires
int numberOfWires(const Identifier &id) const
Get the total number of wires (single wires) of a chamber.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:691
MuonGM::GeoModelsTgcTest::m_alignableNode
MuonVal::CoordTransformBranch m_alignableNode
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:75
MuonGM::GeoModelsTgcTest::m_sChamberLength
MuonVal::ScalarBranch< float > & m_sChamberLength
Chamber Length for debug.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:65
MuonGM::sTgcReadoutElement::numberOfPads
int numberOfPads(const Identifier &layerId) const
Get the number of pad per layer.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:418
MuonGM::GeoModelsTgcTest::m_localPadPos
MuonVal::TwoVectorBranch m_localPadPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:126
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonGM::GeoModelsTgcTest::m_wireGroupGasGap
MuonVal::VectorBranch< uint8_t > & m_wireGroupGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:100
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::GeoModelsTgcTest::m_testStations
std::set< Identifier > m_testStations
Set of stations to be tested.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:43
MuonGM::GeoModelsTgcTest::m_numPadPhi
MuonVal::VectorBranch< uint > & m_numPadPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:118
MuonGM::MuonPadDesign::radialDistance
double radialDistance
DT-2015-11-29 distance from the beamline to the center of the module.
Definition: MuonPadDesign.h:60
MuonGM::GeoModelsTgcTest::m_numWireGroups
MuonVal::VectorBranch< uint > & m_numWireGroups
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:92
ReadCondHandle.h
MuonGM::MuonPadDesign::lPadWidth
double lPadWidth
Definition: MuonPadDesign.h:63
MuonGM::GeoModelsTgcTest::m_stripGasGap
MuonVal::VectorBranch< uint8_t > & m_stripGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:110
MuonGM::sTgcReadoutElement::padGlobalCorners
bool padGlobalCorners(const Identifier &id, std::array< Amg::Vector3D, 4 > &gcorners) const
pad global corners
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:370
MuonGM::GeoModelsTgcTest::m_gasTck
MuonVal::ScalarBranch< float > & m_gasTck
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:63
MuonGM::GeoModelsTgcTest::m_numPads
MuonVal::VectorBranch< uint > & m_numPads
Pad dimensions.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:114
MuonGM::GeoModelsTgcTest::m_localPadCornerTR
MuonVal::TwoVectorBranch m_localPadCornerTR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:129
MuonGM::MuonPadDesign::sWidth
double sWidth
Definition: MuonPadDesign.h:56
MuonGM::sTgcReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position - should be renamed to channel position If the strip number is outside the range of va...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:321
MuonGM::sTgcReadoutElement::padNumber
int padNumber(const Amg::Vector2D &pos, const Identifier &id) const
pad number corresponding to local position
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:611
MuonGM::MuonPadDesign::nPadH
int nPadH
Definition: MuonPadDesign.h:68
MuonGM::GeoModelsTgcTest::m_globalPadCornerBR
MuonVal::ThreeVectorBranch m_globalPadCornerBR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:135
MuonGM::GeoModelsTgcTest::m_lChamberLength
MuonVal::ScalarBranch< float > & m_lChamberLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:66
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonGM::GeoModelsTgcTest::m_padNumber
MuonVal::VectorBranch< int > & m_padNumber
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:132
MuonGM::MuonChannelDesign::minYSize
double minYSize() const
Definition: MuonChannelDesign.h:475
MuonGM::GeoModelsTgcTest::m_chamberDesign
MuonVal::ScalarBranch< std::string > & m_chamberDesign
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:57
MuonGM::GeoModelsTgcTest::m_padPhiShift
MuonVal::VectorBranch< float > & m_padPhiShift
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:121
MuonGM::GeoModelsTgcTest::m_beamlineRadius
MuonVal::ScalarBranch< float > & m_beamlineRadius
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:124
MuonGM::GeoModelsTgcTest::m_globalPadPos
MuonVal::ThreeVectorBranch m_globalPadPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:134
EventPrimitivesToStringConverter.h
MuonVal::TwoVectorBranch::push_back
void push_back(const Amg::Vector2D &vec)
interface using the Amg::Vector3D
Definition: TwoVectorBranch.cxx:21
MuonGM::GeoModelsTgcTest::m_localPadCornerTL
MuonVal::TwoVectorBranch m_localPadCornerTL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:130
MuonGM::sTgcReadoutElement::padGlobalPosition
bool padGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
pad global position
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:351
MuonGM::GeoModelsTgcTest::m_wireGroupRot
MuonVal::CoordSystemsBranch m_wireGroupRot
Rotation matrix of the respective wireGroup layers.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:82
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonGM::MuonPadDesign::inputRowPitch
double inputRowPitch
Definition: MuonPadDesign.h:49
MuonGM::GeoModelsTgcTest::m_padEta
MuonVal::VectorBranch< uint > & m_padEta
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:140
MuonGM::GeoModelsTgcTest::m_wireGroupWidth
MuonVal::ScalarBranch< uint > & m_wireGroupWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:96
MuonGM::sTgcReadoutElement
An sTgcReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station c...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:30
MuonGM::GeoModelsTgcTest::m_sPadLength
MuonVal::ScalarBranch< float > & m_sPadLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:115
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGM::GeoModelsTgcTest::m_wireWidth
MuonVal::ScalarBranch< float > & m_wireWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:95
MuonGM::GeoModelsTgcTest::m_wireGroupRotGasGap
MuonVal::VectorBranch< uint8_t > & m_wireGroupRotGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:83
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonGM::sTgcReadoutElement::padPosition
bool padPosition(const Identifier &id, Amg::Vector2D &pos) const
pad position
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:339
MuonGM::GeoModelsTgcTest::m_wireCutout
MuonVal::VectorBranch< float > & m_wireCutout
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:93
MuonGM::GeoModelsTgcTest::m_sGapLength
MuonVal::ScalarBranch< float > & m_sGapLength
GasGap Lengths for debug.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:69
MuonGM::GeoModelsTgcTest::m_globalPadCornerTR
MuonVal::ThreeVectorBranch m_globalPadCornerTR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:137
GeoModelsTgcTest.h
MuonGM::GeoModelsTgcTest::m_anglePadPhi
MuonVal::ScalarBranch< float > & m_anglePadPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:123
MuonGM::GeoModelsTgcTest::m_stripNum
MuonVal::VectorBranch< uint > & m_stripNum
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:109
MuonGM::sTgcReadoutElement::channelPitch
double channelPitch(const Identifier &id) const
Channel pitch.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:589
MuonGM::GeoModelsTgcTest::m_stIndex
MuonVal::ScalarBranch< short > & m_stIndex
Identifier of the readout element.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:53
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
MuonGM::GeoModelsTgcTest::m_globalWireGroupPos
MuonVal::ThreeVectorBranch m_globalWireGroupPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:98
MuonGM::GeoModelsTgcTest::m_lPadLength
MuonVal::ScalarBranch< float > & m_lPadLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:116
MuonGM::GeoModelsTgcTest::finalize
StatusCode finalize() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.cxx:19
MuonGM::GeoModelsTgcTest::m_padRot
MuonVal::CoordSystemsBranch m_padRot
Rotation matrix of the respective pad layers.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:86
MuonGM::sTgcReadoutElement::numberOfLayers
virtual int numberOfLayers(bool) const override final
number of layers in phi/eta projection
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:406
MuonGM::sTgcReadoutElement::AmdbLRSToGlobalTransform
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const override final
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:200
MuonGM::sTgcReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:332
sTgcIdHelper
Definition: sTgcIdHelper.h:55
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
HI::TowerBins::numLayers
constexpr unsigned int numLayers()
Definition: HIEventDefs.h:23
MuonGM::GeoModelsTgcTest::dumpToTree
StatusCode dumpToTree(const EventContext &ctx, const sTgcReadoutElement *readoutEle)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.cxx:116
MuonGM::MuonPadDesign::nPadColumns
int nPadColumns
Definition: MuonPadDesign.h:69
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGM::GeoModelsTgcTest::m_gapHeight
MuonVal::ScalarBranch< float > & m_gapHeight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:71
MuonGM::MuonPadDesign::firstRowPos
double firstRowPos
Definition: MuonPadDesign.h:52
MuonGM::GeoModelsTgcTest::m_numLayers
MuonVal::ScalarBranch< short > & m_numLayers
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:61
MuonGM::MuonChannelDesign::channelLength
double channelLength(int channel) const
STRIPS ONLY: calculate channel length for a given strip number.
Definition: MuonChannelDesign.h:386
eflowRec::phiIndex
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition: EtaPhiLUT.cxx:23
MuonGM::MuonPadDesign::Length
double Length
Definition: MuonPadDesign.h:55
MuonGM::GeoModelsTgcTest::m_numPadEta
MuonVal::VectorBranch< uint > & m_numPadEta
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:117
MuonGM::GeoModelsTgcTest::m_localPadCornerBL
MuonVal::TwoVectorBranch m_localPadCornerBL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:128
MuonGM::MuonReadoutElement::getStationIndex
int getStationIndex() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:192
MuonGM::GeoModelsTgcTest::m_firstStripPitch
MuonVal::VectorBranch< float > & m_firstStripPitch
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:106
MuonGM::MuonChannelDesign::maxYSize
double maxYSize() const
Definition: MuonChannelDesign.h:474
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonGM::MuonReadoutElement::getStationType
std::string getStationType() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:189
MuonGM::MuonChannelDesign::yCutout
double yCutout() const
Definition: MuonChannelDesign.h:75
MuonGM::MuonPadDesign::PadPhiShift
double PadPhiShift
Definition: MuonPadDesign.h:70
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::GeoModelsTgcTest::m_stPhi
MuonVal::ScalarBranch< short > & m_stPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:55
MuonGM::GeoModelsTgcTest::m_detMgrKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_detMgrKey
MuonDetectorManager from the conditions store.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:35
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::GeoModelsTgcTest::m_hitPosition
MuonVal::TwoVectorBranch m_hitPosition
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:131
MuonGM::GeoModelsTgcTest::m_numWires
MuonVal::VectorBranch< uint > & m_numWires
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:90
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::GeoModelsTgcTest::m_localStripPos
MuonVal::TwoVectorBranch m_localStripPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:107
MuonGM::MuonChannelDesign::nch
int nch
Definition: MuonChannelDesign.h:34
MuonGM::GeoModelsTgcTest::m_globalStripPos
MuonVal::ThreeVectorBranch m_globalStripPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:108
MuonGM::MuonPadDesign::sPadWidth
double sPadWidth
Definition: MuonPadDesign.h:62
MuonGM::MuonChannelDesign::nGroups
double nGroups
Definition: MuonChannelDesign.h:40
MuonGM::sTgcReadoutElement::getPadDesign
const MuonPadDesign * getPadDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:285
MuonGM::sTgcReadoutElement::wirePitch
double wirePitch(int gas_gap=1) const
single wire pitch.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:664
MuonGM::GeoModelsTgcTest::m_localPadCornerBR
MuonVal::TwoVectorBranch m_localPadCornerBR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:127
MuonGM::GeoModelsTgcTest::m_stripRotGasGap
MuonVal::VectorBranch< uint8_t > & m_stripRotGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:79
MuonGM::GeoModelsTgcTest::m_wirePitch
MuonVal::ScalarBranch< float > & m_wirePitch
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:94
MuonGM::GeoModelsTgcTest::m_stML
MuonVal::ScalarBranch< short > & m_stML
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:56
MuonGM::GeoModelsTgcTest::m_selectStat
Gaudi::Property< std::vector< std::string > > m_selectStat
String should be formated like <stationName><stationEta><A/C><stationPhi>
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:47
MuonStation.h
MuonGM::GeoModelsTgcTest::m_firstWireGroupWidth
MuonVal::VectorBranch< uint > & m_firstWireGroupWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:91
MuonGM::GeoModelsTgcTest::m_readoutTransform
MuonVal::CoordTransformBranch m_readoutTransform
Transformation of the readout element (Translation, ColX, ColY, ColZ)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:74
MuonGM::GeoModelsTgcTest::m_stripRot
MuonVal::CoordSystemsBranch m_stripRot
Rotation matrix of the respective strip layers.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:78
MuonGM::GeoModelsTgcTest::m_wireGroupNum
MuonVal::VectorBranch< uint8_t > & m_wireGroupNum
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:99
MuonGM::GeoModelsTgcTest::m_padHeight
MuonVal::VectorBranch< float > & m_padHeight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:120
MuonGM::MuonPadDesign::inputPhiPitch
double inputPhiPitch
Definition: MuonPadDesign.h:50
MuonGM::MuonChannelDesign::thickness
double thickness
Definition: MuonChannelDesign.h:42
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
MuonGM::GeoModelsTgcTest::initialize
StatusCode initialize() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.cxx:23
MuonGM::GeoModelsTgcTest::m_lGapLength
MuonVal::ScalarBranch< float > & m_lGapLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:70
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
Identifier
Definition: IdentifierFieldParser.cxx:14