ATLAS Offline Software
MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.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 "GeoModelsTgcTest.h"
5 
6 #include <fstream>
7 #include <iostream>
8 
13 
14 namespace MuonGM {
15 
16 GeoModelsTgcTest::GeoModelsTgcTest(const std::string& name, ISvcLocator* pSvcLocator):
17  AthHistogramAlgorithm{name, pSvcLocator} {}
18 
21  return StatusCode::SUCCESS;
22 }
25  ATH_CHECK(m_idHelperSvc.retrieve());
26  ATH_CHECK(m_tree.init(this));
27  const sTgcIdHelper& id_helper{m_idHelperSvc->stgcIdHelper()};
28  for (const std::string& testCham : m_selectStat) {
29  if (testCham.size() != 6) {
30  ATH_MSG_FATAL("Wrong format given " << testCham);
31  return StatusCode::FAILURE;
32  }
34  std::string statName = testCham.substr(0, 3);
35  unsigned int statEta = std::atoi(testCham.substr(3, 1).c_str()) *
36  (testCham[4] == 'A' ? 1 : -1);
37  unsigned int statPhi = std::atoi(testCham.substr(5, 1).c_str());
38  bool is_valid{false};
39  const Identifier eleId = id_helper.elementID(statName, statEta, statPhi, is_valid);
40  if (!is_valid) {
41  ATH_MSG_FATAL("Failed to deduce a station name for " << testCham);
42  return StatusCode::FAILURE;
43  }
44  std::copy_if(id_helper.detectorElement_begin(),
45  id_helper.detectorElement_end(),
46  std::inserter(m_testStations, m_testStations.end()),
47  [&](const Identifier& id) {
48  return id_helper.elementID(id) == eleId;
49  });
50  }
52  if (m_testStations.empty()){
53  std::copy(id_helper.detectorElement_begin(),
54  id_helper.detectorElement_end(),
55  std::inserter(m_testStations, m_testStations.end()));
56  } else {
57  std::stringstream sstr{};
58  for (const Identifier& id : m_testStations){
59  sstr<<" *** "<<m_idHelperSvc->toString(id)<<std::endl;
60  }
61  ATH_MSG_INFO("Test only the following stations "<<std::endl<<sstr.str());
62  }
63  return StatusCode::SUCCESS;
64 }
66  const EventContext& ctx{Gaudi::Hive::currentContext()};
68  if (!detMgr.isValid()) {
69  ATH_MSG_FATAL("Failed to retrieve MuonDetectorManager "
70  << m_detMgrKey.fullKey());
71  return StatusCode::FAILURE;
72  }
73  for (const Identifier& test_me : m_testStations) {
74  ATH_MSG_VERBOSE("Test retrieval of sTgc detector element "
75  << m_idHelperSvc->toStringDetEl(test_me));
76  const sTgcReadoutElement* reElement = detMgr->getsTgcReadoutElement(test_me);
77  if (!reElement) {
78  ATH_MSG_VERBOSE("Detector element is invalid");
79  continue;
80  }
82  if (m_idHelperSvc->toStringDetEl(reElement->identify()) != m_idHelperSvc->toStringDetEl(test_me)) {
83  ATH_MSG_FATAL("Expected to retrieve "
84  << m_idHelperSvc->toStringDetEl(test_me) << ". But got instead "
85  << m_idHelperSvc->toStringDetEl(reElement->identify()));
86  return StatusCode::FAILURE;
87  }
88  ATH_CHECK(dumpToTree(ctx, reElement));
89  }
90  return StatusCode::SUCCESS;
91 }
92 StatusCode GeoModelsTgcTest::dumpToTree(const EventContext& ctx, const sTgcReadoutElement* readoutEle) {
93  const sTgcIdHelper& id_helper{m_idHelperSvc->stgcIdHelper()};
94 
96  int stIndex = readoutEle->getStationIndex();
97  int stEta = readoutEle->getStationEta();
98  int stPhi = readoutEle->getStationPhi();
99  int stML = id_helper.multilayer(readoutEle->identify());
100  std::string chamberDesign = readoutEle->getStationType();
101 
102  m_stIndex = stIndex;
103  m_stEta = stEta;
104  m_stPhi = stPhi;
105  m_stML = stML;
106  m_chamberDesign = chamberDesign;
107 
108  const Identifier genStripID =id_helper.channelID(stIndex, stEta, stPhi,
109  stML, 1, sTgcIdHelper::sTgcChannelTypes::Strip, 1);
110  const Identifier genPadID =id_helper.channelID(stIndex, stEta, stPhi,
111  stML, 1, sTgcIdHelper::sTgcChannelTypes::Pad, 1);
112 
114  int numLayers = readoutEle->numberOfLayers(true);
115  double yCutout = readoutEle->getDesign(genStripID)->yCutout();
116  double gasTck = readoutEle->getDesign(genStripID)->thickness;
117 
119  m_yCutout = yCutout;
120  m_gasTck = gasTck;
122  double sGapLength = readoutEle->getDesign(genStripID)->minYSize();
123  double lGapLength = readoutEle->getDesign(genStripID)->maxYSize();
124  double gapHeight = readoutEle->getDesign(genStripID)->xSize();
125 
126  double sPadLength = readoutEle->getPadDesign(genPadID)->sPadWidth;
127  double lPadLength = readoutEle->getPadDesign(genPadID)->lPadWidth;
128 
129  m_sGapLength = sGapLength;
130  m_lGapLength = lGapLength;
131  m_gapHeight = gapHeight;
132 
133  m_sPadLength = sPadLength;
134  m_lPadLength = lPadLength;
136  double sChamberLength = readoutEle->getPadDesign(genPadID)->sWidth;
137  double lChamberLength = readoutEle->getPadDesign(genPadID)->lWidth;
138  double chamberHeight = readoutEle->getPadDesign(genPadID)->Length;
139 
140  m_sChamberLength = sChamberLength;
141  m_lChamberLength = lChamberLength;
142  m_chamberHeight = chamberHeight;
143 
145  const Amg::Transform3D& trans{readoutEle->transform()};
146  m_readoutTransform = trans;
147 
149  for (int lay = 1; lay <= numLayers; ++lay) {
150  const Identifier layWireID =id_helper.channelID(stIndex, stEta, stPhi,
151  stML, lay, sTgcIdHelper::sTgcChannelTypes::Wire, 1);
152  const Identifier layStripID =id_helper.channelID(stIndex, stEta, stPhi,
153  stML, lay, sTgcIdHelper::sTgcChannelTypes::Strip, 1);
154  const Identifier layPadID =id_helper.padID(stIndex, stEta, stPhi,
155  stML, lay, sTgcIdHelper::sTgcChannelTypes::Pad, 1, 1);
156 
158  unsigned int numWires = readoutEle->numberOfWires(layWireID);
159  unsigned int firstWireGroupWidth = readoutEle->getDesign(layWireID)->firstPitch;
160  int numWireGroups = readoutEle->getDesign(layWireID)->nGroups;
161  double wireCutout = readoutEle->getDesign(layWireID)->wireCutout;
162  double wirePitch = readoutEle->wirePitch();
163  double wireWidth = readoutEle->getDesign(layWireID)->inputWidth;
164  double wireGroupWidth = readoutEle->getDesign(layWireID)->groupWidth;
165 
166  m_numWires.push_back(numWires);
167  m_firstWireGroupWidth.push_back(firstWireGroupWidth);
168  m_numWireGroups.push_back(numWireGroups);
169  m_wireCutout.push_back(wireCutout);
170  m_wirePitch = wirePitch;
171  m_wireWidth = wireWidth;
172  m_wireGroupWidth = wireGroupWidth;
173 
175  for (int wireGroupIndex = 1; wireGroupIndex <= numWireGroups; ++wireGroupIndex) {
176  bool isValid = false;
177  const Identifier wireGroupID =id_helper.channelID(stIndex, stEta, stPhi, stML, lay,
178  sTgcIdHelper::sTgcChannelTypes::Wire, wireGroupIndex, isValid);
179  if(!isValid) {
180  ATH_MSG_WARNING("The following wire group ID is not valid: " << wireGroupID);
181  }
182  Amg::Vector3D wireGroupPos(Amg::Vector3D::Zero());
183  Amg::Vector2D localWireGroupPos(Amg::Vector2D::Zero());
184  readoutEle->stripPosition(wireGroupID, localWireGroupPos);
185  m_localWireGroupPos.push_back(localWireGroupPos);
186  readoutEle->stripGlobalPosition(wireGroupID, wireGroupPos);
187  m_globalWireGroupPos.push_back(wireGroupPos);
188  m_wireGroupNum.push_back(wireGroupIndex);
190 
191  if (wireGroupIndex != 1) continue;
192  const Amg::Transform3D locToGlob = readoutEle->transform(wireGroupID);
193  m_wireGroupRot.push_back(locToGlob);
195  }
196 
198  int numStrips = readoutEle->getDesign(layStripID)->nch;
199  double stripPitch = readoutEle->channelPitch(layStripID);
200  double stripWidth = readoutEle->getDesign(layStripID)->inputWidth;
201  double firstStripPitch = readoutEle->getDesign(layStripID)->firstPitch;
202 
203  m_numStrips = numStrips;
204  m_stripPitch = stripPitch;
205  m_stripWidth = stripWidth;
206  m_firstStripPitch.push_back(firstStripPitch);
207 
209  for (int stripIndex = 1; stripIndex <= numStrips; ++stripIndex) {
210  bool isValid = false;
211  const Identifier stripID =id_helper.channelID(stIndex, stEta, stPhi, stML, lay,
212  sTgcIdHelper::sTgcChannelTypes::Strip, stripIndex, isValid);
213  if(!isValid) {
214  ATH_MSG_WARNING("The following strip ID is not valid: " << stripID);
215  }
216  double stripLength = readoutEle->getDesign(stripID)->channelLength(stripIndex);
217  Amg::Vector3D globalStripPos(Amg::Vector3D::Zero());
218  Amg::Vector2D localStripPos(Amg::Vector2D::Zero());
219  readoutEle->stripPosition(stripID, localStripPos);
220  m_localStripPos.push_back(localStripPos);
221  readoutEle->stripGlobalPosition(stripID, globalStripPos);
222  m_globalStripPos.push_back(globalStripPos);
223  m_stripNum.push_back(stripIndex);
225  m_stripLengths.push_back(stripLength);
226 
227  if (stripIndex != 1) continue;
228  const Amg::Transform3D locToGlob = readoutEle->transform(stripID);
229  m_stripRot.push_back(locToGlob);
231  }
232 
234  unsigned int numPads = readoutEle->numberOfPads(layPadID);
235  int numPadEta = readoutEle->getPadDesign(layPadID)->nPadH;
236  int numPadPhi = readoutEle->getPadDesign(layPadID)->nPadColumns;
237  double firstPadHeight = readoutEle->getPadDesign(layPadID)->firstRowPos;
238  double padHeight = readoutEle->getPadDesign(layPadID)->inputRowPitch;
239  double padPhiShift = readoutEle->getPadDesign(layPadID)->PadPhiShift;
240  double firstPadPhiDiv = readoutEle->getPadDesign(layPadID)->firstPhiPos;
241  double anglePadPhi = readoutEle->getPadDesign(layPadID)->inputPhiPitch;
242  double beamlineRadius = readoutEle->getPadDesign(layPadID)->radialDistance;
243 
244  m_numPads.push_back(numPads);
245  m_numPadEta.push_back(numPadEta);
246  m_numPadPhi.push_back(numPadPhi);
247  m_firstPadHeight.push_back(firstPadHeight);
248  m_padHeight.push_back(padHeight);
249  m_padPhiShift.push_back(padPhiShift);
250  m_firstPadPhiDiv.push_back(firstPadPhiDiv);
251  m_anglePadPhi = anglePadPhi;
252  m_beamlineRadius = beamlineRadius;
253 
255  for (int phiIndex = 1; phiIndex <= numPadPhi; ++phiIndex) {
256  for(int etaIndex = 1; etaIndex <= numPadEta; ++etaIndex) {
257  bool isValid = false;
258  const Identifier padID =id_helper.padID(stIndex, stEta, stPhi, stML, lay,
259  sTgcIdHelper::sTgcChannelTypes::Pad, etaIndex, phiIndex, isValid);
260  if(!isValid) {
261  ATH_MSG_WARNING("The following pad ID is not valid: " << padID);
262  }
263  Amg::Vector2D localPadPos(Amg::Vector2D::Zero());
264  Amg::Vector3D globalPadPos(Amg::Vector3D::Zero());
265  std::array<Amg::Vector2D,4> localPadCorners{make_array<Amg::Vector2D, 4>(Amg::Vector2D::Zero())};
266  std::array<Amg::Vector3D,4> globalPadCorners{make_array<Amg::Vector3D, 4>(Amg::Vector3D::Zero())};
267 
268  readoutEle->padPosition(padID, localPadPos);
269  readoutEle->padGlobalPosition(padID, globalPadPos);
270  readoutEle->padCorners(padID, localPadCorners);
271  readoutEle->padGlobalCorners(padID, globalPadCorners);
272 
273  m_localPadPos.push_back(localPadPos);
274  m_localPadCornerBL.push_back(localPadCorners[0]);
275  m_localPadCornerBR.push_back(localPadCorners[1]);
276  m_localPadCornerTL.push_back(localPadCorners[2]);
277  m_localPadCornerTR.push_back(localPadCorners[3]);
278 
279  Amg::Vector2D hitCorrection{-.1, -.1};
280  Amg::Vector2D hitPos = localPadCorners[3] + hitCorrection;
281  m_hitPosition.push_back(hitPos);
282  m_padNumber.push_back(readoutEle->padNumber(hitPos, padID));
283 
284  m_globalPadPos.push_back(globalPadPos);
285  m_globalPadCornerBR.push_back(globalPadCorners[0]);
286  m_globalPadCornerBL.push_back(globalPadCorners[1]);
287  m_globalPadCornerTR.push_back(globalPadCorners[2]);
288  m_globalPadCornerTL.push_back(globalPadCorners[3]);
289 
290  m_padEta.push_back(etaIndex);
292  m_padGasGap.push_back(lay);
293 
294  if (etaIndex != 1 || phiIndex != 1) continue;
295  const Amg::Transform3D locToGlob = readoutEle->transform(padID);
296  m_padRot.push_back(locToGlob);
298  }
299  }
300  }
301 
302  return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;
303 }
304 
305 }
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:86
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:102
MuonGM::GeoModelsTgcTest::m_stripWidth
MuonVal::ScalarBranch< float > & m_stripWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:104
MuonGM::GeoModelsTgcTest::execute
StatusCode execute() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.cxx:65
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:110
MuonGM::MuonChannelDesign::xSize
double xSize() const
Definition: MuonChannelDesign.h:478
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:138
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:140
MuonGM::MuonChannelDesign::firstPitch
double firstPitch
Definition: MuonChannelDesign.h:38
MuonGM::GeoModelsTgcTest::m_globalPadCornerTL
MuonVal::ThreeVectorBranch m_globalPadCornerTL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:137
MuonGM::MuonChannelDesign::inputWidth
double inputWidth
Definition: MuonChannelDesign.h:36
MuonGM::GeoModelsTgcTest::m_localWireGroupPos
MuonVal::TwoVectorBranch m_localWireGroupPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:96
MuonGM::GeoModelsTgcTest::m_globalPadCornerBL
MuonVal::ThreeVectorBranch m_globalPadCornerBL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:135
MuonGM::GeoModelsTgcTest::m_firstPadHeight
MuonVal::VectorBranch< float > & m_firstPadHeight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:118
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:121
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
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_stripPitch
MuonVal::ScalarBranch< float > & m_stripPitch
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:103
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:680
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:125
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:99
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:620
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:117
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:91
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:109
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:113
MuonGM::GeoModelsTgcTest::m_localPadCornerTR
MuonVal::TwoVectorBranch m_localPadCornerTR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:128
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:600
MuonGM::MuonPadDesign::nPadH
int nPadH
Definition: MuonPadDesign.h:68
MuonGM::GeoModelsTgcTest::m_globalPadCornerBR
MuonVal::ThreeVectorBranch m_globalPadCornerBR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:134
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:131
MuonGM::MuonChannelDesign::minYSize
double minYSize() const
Definition: MuonChannelDesign.h:480
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:120
MuonGM::GeoModelsTgcTest::m_beamlineRadius
MuonVal::ScalarBranch< float > & m_beamlineRadius
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:123
MuonGM::GeoModelsTgcTest::m_globalPadPos
MuonVal::ThreeVectorBranch m_globalPadPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:133
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:129
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:81
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:139
MuonGM::GeoModelsTgcTest::m_wireGroupWidth
MuonVal::ScalarBranch< uint > & m_wireGroupWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:95
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:114
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGM::GeoModelsTgcTest::m_wireWidth
MuonVal::ScalarBranch< float > & m_wireWidth
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:94
MuonGM::GeoModelsTgcTest::m_wireGroupRotGasGap
MuonVal::VectorBranch< uint8_t > & m_wireGroupRotGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:82
MuonGM::GeoModelsTgcTest::GeoModelsTgcTest
GeoModelsTgcTest(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.cxx:16
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::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:92
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:136
GeoModelsTgcTest.h
MuonGM::GeoModelsTgcTest::m_anglePadPhi
MuonVal::ScalarBranch< float > & m_anglePadPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:122
AthHistogramAlgorithm
Definition: AthHistogramAlgorithm.h:32
MuonGM::GeoModelsTgcTest::m_stripNum
MuonVal::VectorBranch< uint > & m_stripNum
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:108
MuonGM::sTgcReadoutElement::channelPitch
double channelPitch(const Identifier &id) const
Channel pitch.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:578
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:97
MuonGM::GeoModelsTgcTest::m_lPadLength
MuonVal::ScalarBranch< float > & m_lPadLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:115
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:85
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
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::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:92
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:391
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:116
MuonGM::GeoModelsTgcTest::m_localPadCornerBL
MuonVal::TwoVectorBranch m_localPadCornerBL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:127
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:105
MuonGM::MuonChannelDesign::maxYSize
double maxYSize() const
Definition: MuonChannelDesign.h:479
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:130
MuonGM::GeoModelsTgcTest::m_numWires
MuonVal::VectorBranch< uint > & m_numWires
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:89
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:106
MuonGM::MuonChannelDesign::nch
int nch
Definition: MuonChannelDesign.h:34
MuonGM::GeoModelsTgcTest::m_globalStripPos
MuonVal::ThreeVectorBranch m_globalStripPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:107
MuonGM::MuonPadDesign::sPadWidth
double sPadWidth
Definition: MuonPadDesign.h:62
calibdata.copy
bool copy
Definition: calibdata.py:27
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:653
MuonGM::GeoModelsTgcTest::m_localPadCornerBR
MuonVal::TwoVectorBranch m_localPadCornerBR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:126
MuonGM::GeoModelsTgcTest::m_stripRotGasGap
MuonVal::VectorBranch< uint8_t > & m_stripRotGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:78
MuonGM::GeoModelsTgcTest::m_wirePitch
MuonVal::ScalarBranch< float > & m_wirePitch
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:93
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:90
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:77
MuonGM::GeoModelsTgcTest::m_wireGroupNum
MuonVal::VectorBranch< uint8_t > & m_wireGroupNum
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:98
MuonGM::GeoModelsTgcTest::m_padHeight
MuonVal::VectorBranch< float > & m_padHeight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelsTgcTest.h:119
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