ATLAS Offline Software
MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.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 "GeoModelMmTest.h"
5 
6 #include <fstream>
7 #include <iostream>
8 
9 
13 
14 namespace MuonGM {
15 
16 GeoModelMmTest::GeoModelMmTest(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 
28  const MmIdHelper& id_helper{m_idHelperSvc->mmIdHelper()};
29 
30 
31  for (const std::string& testCham : m_selectStat) {
32  if (testCham.size() != 6) {
33  ATH_MSG_FATAL("Wrong format given " << testCham);
34  return StatusCode::FAILURE;
35  }
37  std::string statName = testCham.substr(0, 3);
38  unsigned int statEta = std::atoi(testCham.substr(3, 1).c_str()) *
39  (testCham[4] == 'A' ? 1 : -1);
40  unsigned int statPhi = std::atoi(testCham.substr(5, 1).c_str());
41  bool is_valid{false};
42  const Identifier eleId = id_helper.elementID(statName, statEta, statPhi, is_valid);
43  if (!is_valid) {
44  ATH_MSG_FATAL("Failed to deduce a station name for " << testCham);
45  return StatusCode::FAILURE;
46  }
47  std::copy_if(id_helper.detectorElement_begin(),
48  id_helper.detectorElement_end(),
49  std::inserter(m_testStations, m_testStations.end()),
50  [&](const Identifier& id) {
51  return id_helper.elementID(id) == eleId;
52  });
53  }
55  if (m_testStations.empty()) {
56  m_testStations.insert(id_helper.detectorElement_begin(),
57  id_helper.detectorElement_end());
58  } else {
59  std::stringstream sstr{};
60  for (const Identifier& id : m_testStations){
61  sstr<<" *** "<<m_idHelperSvc->toString(id)<<std::endl;
62  }
63  ATH_MSG_INFO("Test only the following stations "<<std::endl<<sstr.str());
64  }
65  return StatusCode::SUCCESS;
66 }
68 
69  const EventContext& ctx{Gaudi::Hive::currentContext()};
71  if (!detMgr.isValid()) {
72  ATH_MSG_FATAL("Failed to retrieve MuonDetectorManager "
73  << m_detMgrKey.fullKey());
74  return StatusCode::FAILURE;
75  }
76  const MmIdHelper& id_helper{m_idHelperSvc->mmIdHelper()};
77  //Looping through the MicroMegas identifiers and pushing back the respective roe.
78  for (const Identifier& test_me : m_testStations) {
79  ATH_MSG_VERBOSE("Test retrieval of Mm detector element "
80  << m_idHelperSvc->toStringDetEl(test_me));
81  const MuonGM::MMReadoutElement *reElement = detMgr->getMMReadoutElement(test_me);
82  if (!reElement) {
83  ATH_MSG_VERBOSE("Detector element is invalid");
84  continue;
85  }
87  if (m_idHelperSvc->toStringDetEl(reElement->identify()) != m_idHelperSvc->toStringDetEl(test_me)) {
88  ATH_MSG_FATAL("Expected to retrieve "
89  << m_idHelperSvc->toStringDetEl(test_me) << ". But got instead "
90  << m_idHelperSvc->toStringDetEl(reElement->identify()));
91  return StatusCode::FAILURE;
92  }
93  for (int gasGap = 1; gasGap <= 4; ++gasGap) {
94  const Identifier layerId = id_helper.channelID(test_me, id_helper.multilayer(test_me), gasGap, 1024);
95  int fStrip = reElement->numberOfMissingBottomStrips(layerId) + 1;
96  int lStrip = id_helper.channelMax(layerId)-reElement->numberOfMissingTopStrips(layerId);
97  for (int channel=fStrip; channel<=lStrip; ++channel) {
98 
99  bool is_valid{false};
100  const Identifier strip_id = id_helper.channelID(test_me, id_helper.multilayer(test_me),
101  gasGap, channel, is_valid);
102  if (!is_valid) {
103  continue;
104  }
105  Amg::Vector3D globStripPos{Amg::Vector3D::Zero()};
106  reElement->stripGlobalPosition(strip_id, globStripPos);
108  reElement->surface(strip_id).globalToLocal(globStripPos, Amg::Vector3D::Zero(), locPos);
109  const MuonGM::MuonChannelDesign& design{*reElement->getDesign(strip_id)};
110  const double stripLength = 0.49 * reElement->stripLength(strip_id);
111  if (design.channelNumber(locPos) != channel ||
112  design.channelNumber(locPos + stripLength *Amg::Vector2D::UnitY()) != channel ||
113  design.channelNumber(locPos - stripLength *Amg::Vector2D::UnitY()) != channel ){
114  ATH_MSG_FATAL("Conversion of channel -> strip -> channel failed for "
115  <<m_idHelperSvc->toString(strip_id)<<", global pos:"
116  <<Amg::toString(globStripPos)<<", locPos: "<<Amg::toString(locPos)
117  <<", backward channel: "<<design.channelNumber(locPos));
118  return StatusCode::FAILURE;
119  }
120  }
121  }
122  ATH_CHECK(dumpToTree(ctx,reElement));
123 
124  }
125  return StatusCode::SUCCESS;
126 }
127 
128 StatusCode GeoModelMmTest::dumpToTree(const EventContext& ctx, const MuonGM::MMReadoutElement* roEl) {
129 
130  const MmIdHelper& id_helper = m_idHelperSvc->mmIdHelper();
131  const Identifier detElId = roEl->identify();
134  m_stationEta = roEl->getStationEta();
135  m_stationPhi = roEl->getStationPhi();
136  m_stationName = id_helper.stationName(detElId);
137  const int multilayer = id_helper.multilayer(detElId);
138  m_multilayer = multilayer;
139  m_stStripPitch = roEl->getDesign(detElId)->inputPitch;
140 
141 
143 
144  m_readoutTransform = roEl->transform();
145  for (int gasgap = 1; gasgap <= 4; ++gasgap) {
146 
147  const Identifier layerId = id_helper.channelID(detElId, multilayer, gasgap, 1024);
148  const int fStrip = roEl->numberOfMissingBottomStrips(layerId)+1;
149  const int lStrip = id_helper.channelMax(layerId)-roEl->numberOfMissingTopStrips(layerId);
150 
151  for (int channel=fStrip; channel<=lStrip; ++channel) {
152 
153  bool is_valid{false};
154  const Identifier strip_id = id_helper.channelID(detElId, multilayer,
155  gasgap, channel, is_valid);
156  if (!is_valid) continue;
157 
158 
159  //If the strip number is outside the range of valid strips, the function will return false
160  //this method also assignes strip center global coordinates to the gp vector.
161 
162  //Strip global points
163  Amg::Vector3D strip_center{Amg::Vector3D::Zero()},
164  strip_leftEdge{Amg::Vector3D::Zero()},
165  strip_rightEdge{Amg::Vector3D::Zero()};
166 
168  l_left{Amg::Vector2D::Zero()},
169  l_right{Amg::Vector2D::Zero()};
170 
171  const MuonGM::MuonChannelDesign& design{*roEl->getDesign(strip_id)};
172 
173  design.leftEdge(channel, l_left);
174  design.center(channel, l_cen);
175  design.rightEdge(channel, l_right);
176 
177  roEl->surface(strip_id).localToGlobal(l_left, Amg::Vector3D::Zero(), strip_leftEdge);
178  roEl->surface(strip_id).localToGlobal(l_cen, Amg::Vector3D::Zero(), strip_center);
179  roEl->surface(strip_id).localToGlobal(l_right, Amg::Vector3D::Zero(), strip_rightEdge);
180 
182  m_isStereo.push_back(design.hasStereoAngle());
183  m_gasGap.push_back(id_helper.gasGap(strip_id));
184  m_channel.push_back(id_helper.channel(strip_id));
185  m_stripCenter.push_back(strip_center);
186  m_stripLeftEdge.push_back(strip_leftEdge);
187  m_stripRightEdge.push_back(strip_rightEdge);
188  m_stripLength.push_back(roEl->stripLength(strip_id));
192 
193  m_ActiveHeightR = design.xSize();
194  m_ActiveWidthL = design.maxYSize();
195  m_ActiveWidthS = design.minYSize();
196 
197  if (channel != fStrip) continue;
198 
199  m_stripRot.push_back(roEl->transform(strip_id));
200  m_stripRotGasGap.push_back(gasgap);
201  m_firstStripPos.push_back(design.firstPos() * Amg::Vector2D::UnitX());
202  m_readoutFirstStrip.push_back(design.numberOfMissingBottomStrips() + 1);
203  m_readoutSide.push_back(roEl->getReadoutSide()[gasgap -1]);
204  }
205  }
206  return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;
207 }
208 
209 
210 
211 }
Trk::PlaneSurface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for PlaneSurface: GlobalToLocal method without dynamic memory allocation - boolean checks i...
Definition: PlaneSurface.cxx:213
MuonGM::GeoModelMmTest::m_ActiveHeightR
MuonVal::ScalarBranch< float > & m_ActiveHeightR
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:80
MuonGM::MuonClusterReadoutElement::transform
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Definition: MuonClusterReadoutElement.h:124
MuonGM::MuonChannelDesign::inputPitch
double inputPitch
Definition: MuonChannelDesign.h:35
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
GeoModelMmTest.h
MuonGM::GeoModelMmTest::execute
StatusCode execute() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:67
MuonGM::GeoModelMmTest::m_selectStat
Gaudi::Property< std::vector< std::string > > m_selectStat
String should be formated like MM<L or S><1 or 2><A/C><layer> Example string MML1A6 ,...
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:50
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
MuonGM::GeoModelMmTest::m_tree
MuonVal::MuonTesterTree m_tree
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:55
MuonGM::GeoModelMmTest::m_ActiveWidthS
MuonVal::ScalarBranch< float > & m_ActiveWidthS
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:81
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonVal::MuonTesterTree::init
StatusCode init(OWNER *instance)
Initialize method.
MuonGM::GeoModelMmTest::initialize
StatusCode initialize() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:23
MuonGM::GeoModelMmTest::m_stripActiveLengthRight
MuonVal::VectorBranch< float > & m_stripActiveLengthRight
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:73
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MmIdHelper::channelMax
static int channelMax()
Definition: MmIdHelper.cxx:831
MuonGM::MMReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MMReadoutElement.h:191
MuonGM::GeoModelMmTest::m_channel
MuonVal::VectorBranch< uint > & m_channel
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:68
MuonGM::GeoModelMmTest::m_locStripCenter
MuonVal::TwoVectorBranch m_locStripCenter
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:78
MuonGM::GeoModelMmTest::m_testStations
std::set< Identifier > m_testStations
Set of stations to be tested.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:45
MuonGM::GeoModelMmTest::m_stripActiveLength
MuonVal::VectorBranch< float > & m_stripActiveLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:71
MuonIdHelper::stationName
int stationName(const Identifier &id) const
Definition: MuonIdHelper.cxx:800
MuonGM::GeoModelMmTest::GeoModelMmTest
GeoModelMmTest(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:16
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonGM::GeoModelMmTest::m_stationEta
MuonVal::ScalarBranch< short > & m_stationEta
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:58
MuonGM::MMReadoutElement::stripActiveLength
double stripActiveLength(const Identifier &id) const
Definition: MMReadoutElement.h:225
MuonGM::MuonClusterReadoutElement::surface
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
Definition: MuonClusterReadoutElement.h:123
MuonGM::GeoModelMmTest::m_stationPhi
MuonVal::ScalarBranch< short > & m_stationPhi
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:59
ReadCondHandle.h
MuonGM::GeoModelMmTest::m_stripRightEdge
MuonVal::ThreeVectorBranch m_stripRightEdge
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:77
MmIdHelper::multilayer
int multilayer(const Identifier &id) const
Definition: MmIdHelper.cxx:796
MuonGM::GeoModelMmTest::m_stripRotGasGap
MuonVal::VectorBranch< uint8_t > & m_stripRotGasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:90
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonGM::MMReadoutElement::stripActiveLengthRight
double stripActiveLengthRight(const Identifier &id) const
Definition: MMReadoutElement.h:242
MuonGM::GeoModelMmTest::m_stripCenter
MuonVal::ThreeVectorBranch m_stripCenter
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:75
MMReadoutElement.h
MuonGM::GeoModelMmTest::m_gasGap
MuonVal::VectorBranch< short > & m_gasGap
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:67
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
MuonVal::TwoVectorBranch::push_back
void push_back(const Amg::Vector2D &vec)
interface using the Amg::Vector3D
Definition: TwoVectorBranch.cxx:21
MuonGM::GeoModelMmTest::m_ActiveWidthL
MuonVal::ScalarBranch< float > & m_ActiveWidthL
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:82
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonGM::MMReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition: MMReadoutElement.h:280
MuonGM::GeoModelMmTest::m_stripLeftEdge
MuonVal::ThreeVectorBranch m_stripLeftEdge
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:76
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::GeoModelMmTest::m_stationIndex
MuonVal::ScalarBranch< unsigned short > & m_stationIndex
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:57
MuonGM::GeoModelMmTest::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:41
AthHistogramAlgorithm
Definition: AthHistogramAlgorithm.h:32
MuonGM::GeoModelMmTest::m_stStripPitch
MuonVal::ScalarBranch< float > & m_stStripPitch
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:63
MuonGM::GeoModelMmTest::m_firstStripPos
MuonVal::TwoVectorBranch m_firstStripPos
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:91
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
MuonGM::GeoModelMmTest::m_readoutTransform
MuonVal::CoordTransformBranch m_readoutTransform
Transformation of the readout element (Translation, ColX, ColY, ColZ)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:86
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
MuonGM::GeoModelMmTest::m_stripRot
MuonVal::CoordSystemsBranch m_stripRot
Rotation matrix of the respective strip layers.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:89
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
MuonGM::MMReadoutElement::getReadoutSide
const std::array< int, 4 > & getReadoutSide() const
Definition: MMReadoutElement.h:139
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGM::GeoModelMmTest::m_detMgrKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_detMgrKey
MuonDetectorManager from the conditions store.
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:36
MuonGM::MuonChannelDesign
Definition: MuonChannelDesign.h:24
MuonGM::MuonReadoutElement::getStationIndex
int getStationIndex() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:192
MmIdHelper::channel
int channel(const Identifier &id) const override
Definition: MmIdHelper.cxx:800
MmIdHelper
Definition: MmIdHelper.h:54
MmIdHelper::gasGap
int gasGap(const Identifier &id) const override
get the hashes
Definition: MmIdHelper.cxx:798
MuonGM::MMReadoutElement::numberOfMissingBottomStrips
int numberOfMissingBottomStrips(const Identifier &layerId) const
Definition: MMReadoutElement.h:304
MuonGM::MMReadoutElement::stripLength
double stripLength(const Identifier &id) const
strip length Wrappers to MuonChannelDesign::channelLength() taking into account the passivated width
Definition: MMReadoutElement.h:219
MuonGM::MuonReadoutElement::identify
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:184
MuonGM::GeoModelMmTest::m_multilayer
MuonVal::ScalarBranch< short > & m_multilayer
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:61
MuonVal::CoordSystemsBranch::push_back
void push_back(const Amg::Transform3D &trans)
Definition: CoordTransformBranch.cxx:28
GeoPrimitivesToStringConverter.h
MuonGM::MMReadoutElement
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
Definition: MMReadoutElement.h:25
MuonVal::MuonTesterTree::fill
bool fill(const EventContext &ctx)
Fills the tree per call.
Definition: MuonTesterTree.cxx:89
MuonVal::MuonTesterTree::write
StatusCode write()
Finally write the TTree objects.
Definition: MuonTesterTree.cxx:178
MuonGM::GeoModelMmTest::finalize
StatusCode finalize() override
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:19
MuonGM::MMReadoutElement::numberOfMissingTopStrips
int numberOfMissingTopStrips(const Identifier &layerId) const
Number of missing bottom and top strips (not read out)
Definition: MMReadoutElement.h:298
MuonGM::GeoModelMmTest::m_readoutFirstStrip
MuonVal::VectorBranch< unsigned > & m_readoutFirstStrip
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:93
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
MuonGM::GeoModelMmTest::dumpToTree
StatusCode dumpToTree(const EventContext &ctx, const MuonGM::MMReadoutElement *detEl)
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.cxx:128
MuonGM::GeoModelMmTest::m_stationName
MuonVal::ScalarBranch< int > & m_stationName
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:60
MuonGM::GeoModelMmTest::m_readoutSide
MuonVal::VectorBranch< int > & m_readoutSide
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:92
MuonGM::GeoModelMmTest::m_stripLength
MuonVal::VectorBranch< float > & m_stripLength
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:70
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
MmIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
Definition: MmIdHelper.cxx:736
MuonGM::GeoModelMmTest::m_stripActiveLengthLeft
MuonVal::VectorBranch< float > & m_stripActiveLengthLeft
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:72
MuonGM::MuonReadoutElement::getStationPhi
int getStationPhi() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:194
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
MuonGM::MuonChannelDesign::leftEdge
bool leftEdge(int channel, Amg::Vector2D &pos) const
STRIPS ONLY: Returns the left edge of the strip.
Definition: MuonChannelDesign.h:491
MuonGM::GeoModelMmTest::m_isStereo
MuonVal::VectorBranch< bool > & m_isStereo
Definition: MuonDetDescr/MuonGeoModelTest/src/GeoModelMmTest.h:66
MuonGM::MMReadoutElement::stripActiveLengthLeft
double stripActiveLengthLeft(const Identifier &id) const
Definition: MMReadoutElement.h:229
Identifier
Definition: IdentifierFieldParser.cxx:14