ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Muon::MdtIntersectGeometry Class Reference

#include <MdtIntersectGeometry.h>

Inheritance diagram for Muon::MdtIntersectGeometry:
Collaboration diagram for Muon::MdtIntersectGeometry:

Public Member Functions

 MdtIntersectGeometry (MsgStream &msg, const Identifier &chid, const IMuonIdHelperSvc *idHelperSvc, const MuonGM::MuonDetectorManager *detMgr, const MdtCondDbData *dbData)
 
 MdtIntersectGeometry (const MdtIntersectGeometry &right)=delete
 
MdtIntersectGeometryoperator= (const MdtIntersectGeometry &right)=delete
 
virtual ~MdtIntersectGeometry ()
 
MuonStationIntersect intersection (const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override
 
const Amg::Transform3Dtransform () const
 
std::shared_ptr< const TrkDriftCircleMath::MdtChamberGeometrymdtChamberGeometry () const
 
const IdentifierchamberId () const
 

Private Member Functions

double tubeLength (const int ml, const int layer, const int tube) const
 
void init (MsgStream &msg)
 
void fillDeadTubes (const MuonGM::MdtReadoutElement *mydetEl, MsgStream &msg)
 

Private Attributes

Identifier m_chid {}
 
Amg::Transform3D m_transform
 
std::shared_ptr< TrkDriftCircleMath::MdtChamberGeometrym_mdtGeometry {}
 
const MuonGM::MdtReadoutElementm_detElMl0 {nullptr}
 
const MuonGM::MdtReadoutElementm_detElMl1 {nullptr}
 
const MuonGM::MuonDetectorManagerm_detMgr {nullptr}
 
const MdtCondDbDatam_dbData {nullptr}
 
const IMuonIdHelperSvcm_idHelperSvc {nullptr}
 
std::set< Identifierm_deadTubesML {}
 
std::vector< Identifierm_deadTubes {}
 

Detailed Description

Definition at line 23 of file MdtIntersectGeometry.h.

Constructor & Destructor Documentation

◆ MdtIntersectGeometry() [1/2]

Muon::MdtIntersectGeometry::MdtIntersectGeometry ( MsgStream &  msg,
const Identifier chid,
const IMuonIdHelperSvc idHelperSvc,
const MuonGM::MuonDetectorManager detMgr,
const MdtCondDbData dbData 
)

Definition at line 22 of file MdtIntersectGeometry.cxx.

23  :
24  m_chid(chid), m_detMgr(detMgr), m_dbData(dbData), m_idHelperSvc(idHelperSvc) {
25  init(msg);
26  }

◆ MdtIntersectGeometry() [2/2]

Muon::MdtIntersectGeometry::MdtIntersectGeometry ( const MdtIntersectGeometry right)
delete

◆ ~MdtIntersectGeometry()

Muon::MdtIntersectGeometry::~MdtIntersectGeometry ( )
virtualdefault

Member Function Documentation

◆ chamberId()

const Identifier& Muon::MdtIntersectGeometry::chamberId ( ) const
inline

Definition at line 38 of file MdtIntersectGeometry.h.

38 { return m_chid; }

◆ fillDeadTubes()

void Muon::MdtIntersectGeometry::fillDeadTubes ( const MuonGM::MdtReadoutElement mydetEl,
MsgStream &  msg 
)
private

Definition at line 199 of file MdtIntersectGeometry.cxx.

199  {
200  if ((mydetEl->getStationName()).find("BMG") != std::string::npos) {
201  PVConstLink cv = mydetEl->getMaterialGeom(); // it is "Multilayer"
202  int nGrandchildren = cv->getNChildVols();
203  if (nGrandchildren <= 0) return;
204 
205  std::vector<int> tubes;
206  geoGetIds([&](int id) { tubes.push_back(id); }, &*cv);
207  std::sort(tubes.begin(), tubes.end());
208 
209  Identifier detElId = mydetEl->identify();
210 
211  int name = m_idHelperSvc->mdtIdHelper().stationName(detElId);
212  int eta = m_idHelperSvc->mdtIdHelper().stationEta(detElId);
213  int phi = m_idHelperSvc->mdtIdHelper().stationPhi(detElId);
214  int ml = m_idHelperSvc->mdtIdHelper().multilayer(detElId);
215 
216  std::vector<int>::iterator it = tubes.begin();
217  for (int layer = 1; layer <= mydetEl->getNLayers(); layer++) {
218  for (int tube = 1; tube <= mydetEl->getNtubesperlayer(); tube++) {
219  int want_id = layer * MdtIdHelper::maxNTubesPerLayer + tube;
220  if (it != tubes.end() && *it == want_id) {
221  ++it;
222  } else {
223  it = std::lower_bound(tubes.begin(), tubes.end(), want_id);
224  if (it != tubes.end() && *it == want_id) {
225  ++it;
226  } else {
228  Identifier deadTubeMLId = m_idHelperSvc->mdtIdHelper().multilayerID(deadTubeId);
229  m_deadTubes.push_back(deadTubeId);
230  m_deadTubesML.insert(deadTubeMLId);
231  if (msg.level() == MSG::VERBOSE)
232  msg << MSG::VERBOSE << " MdtIntersectGeometry: adding dead tube (" << tube << "), layer(" << layer
233  << "), phi(" << phi << "), eta(" << eta << "), name(" << name << ") and adding multilayerId("
234  << deadTubeMLId << ")." << endmsg;
235  }
236  }
237  }
238  }
239  }
240  }

◆ init()

void Muon::MdtIntersectGeometry::init ( MsgStream &  msg)
private

Definition at line 98 of file MdtIntersectGeometry.cxx.

98  {
99  /* calculate chamber geometry
100  it takes as input:
101  distance between the first and second tube in the chamber within a layer along the tube layer (tube distance)
102  distance between the first tube in the first layer and the first tube in the second layer along the tube layer (tube stagering)
103  distance between the first and second layer perpendicular to the tube layers (layer distance)
104  position of the first hit in ml 0 and ml 1 (2D in plane)
105  total number of multilayers
106  total number of layers
107  total number of tubes per layer for each multilayer
108  an identifier uniquely identifying the chamber
109  */
110 
111  // get id
115  // get detEL for first ml (always there)
116  Identifier firstIdml0 = m_idHelperSvc->mdtIdHelper().channelID(name, eta, phi, 1, 1, 1);
117  Identifier firstIdml1;
118 
120  m_detElMl1 = nullptr;
121 
122  if (!m_detElMl0) {
123  msg << MSG::WARNING << "MdtIntersectGeometry::init() - failed to get readout element for ML0" << endmsg;
124  return;
125  }
126 
127  // number of multilayers in chamber
128  int nml = m_detElMl0->nMDTinStation();
129 
130  // treament of chambers with two ml
131  if (nml == 2) {
132  firstIdml1 = m_idHelperSvc->mdtIdHelper().channelID(name, eta, phi, 2, 1, 1);
134  }
135 
136  // if one of the two ml is dead treat the chamber as a single ML station
137  // if both are dead give a WARNING
138  // check status of the two multilayers using the MdtCondDbData if it exists
139  // otherwise (i.e. online) they are treated as both good by default
140  bool goodMl0{false}, goodMl1{false};
141  if (m_dbData) {
142  goodMl0 = m_dbData->isGoodMultilayer(firstIdml0);
143  goodMl1 = m_detElMl1 ? m_dbData->isGoodMultilayer(firstIdml1) : false;
144  } else {
145  goodMl0 = true;
146  goodMl1 = true;
147  }
148  int firstMlIndex = 1;
149  if (goodMl0 && !goodMl1) {
150  nml = 1;
151  m_detElMl1 = nullptr;
152  } else if (!goodMl0 && goodMl1) {
153  nml = 1;
154  // swap detEl1 and detEl0
156  m_detElMl1 = nullptr;
157  firstIdml0 = firstIdml1;
158  firstMlIndex = 2;
159  } else if (!goodMl0 && !goodMl1) {
160  msg << MSG::WARNING << "MdtIntersectGeometry::init() - neither multilayer is good" << endmsg;
161  return;
162  }
164 
165  // number of layers and tubes
166  int nlay = m_detElMl0->getNLayers();
167  int ntube0 = m_detElMl0->getNtubesperlayer();
168  int ntube1 = m_detElMl1 ? m_detElMl1->getNtubesperlayer() : 0;
169 
170  // position first tube in ml 0 and 1
171  Amg::Vector3D firstTubeMl0 = transform() * (m_detElMl0->tubePos(firstIdml0));
172  Amg::Vector3D firstTubeMl1 = m_detElMl1 ? transform() * (m_detElMl1->tubePos(firstIdml1)) : Amg::Vector3D{0., 0., 0.};
173 
174  TrkDriftCircleMath::LocVec2D firstTube0(firstTubeMl0.y(), firstTubeMl0.z());
175  TrkDriftCircleMath::LocVec2D firstTube1(firstTubeMl1.y(), firstTubeMl1.z());
176 
177  // position second tube in ml 0
178  Identifier secondIdml0 = m_idHelperSvc->mdtIdHelper().channelID(name, eta, phi, firstMlIndex, 1, 2);
179  Amg::Vector3D secondTubeMl0 = transform() * (m_detElMl0->tubePos(secondIdml0));
180 
183 
184  // position first tube in second layer ml 0
185  Identifier firstIdml0lay1 = m_idHelperSvc->mdtIdHelper().channelID(name, eta, phi, firstMlIndex, 2, 1);
186  Amg::Vector3D firstTubeMl0lay1 = transform() * (m_detElMl0->tubePos(firstIdml0lay1));
187 
188  double tubeDist = (secondTubeMl0 - firstTubeMl0).y(); // distance between tube in a given layer
189  double tubeStage = (firstTubeMl0lay1 - firstTubeMl0).y(); // tube stagering distance
190  double layDist = (firstTubeMl0lay1 - firstTubeMl0).z(); // distance between layers
191 
192  m_mdtGeometry = std::make_unique<TrkDriftCircleMath::MdtChamberGeometry>(
193  m_chid, m_idHelperSvc, nml, nlay, ntube0, ntube1, firstTube0, firstTube1, tubeDist, tubeStage, layDist, m_detElMl0->center().theta());
194 
195  // finally if the first ml is dead, configure the MdtChamberGeometry accordingly
196  if (!goodMl0 && goodMl1) m_mdtGeometry->isSecondMultiLayer(true);
197  }

◆ intersection()

MuonStationIntersect Muon::MdtIntersectGeometry::intersection ( const Amg::Vector3D pos,
const Amg::Vector3D dir 
) const
overridevirtual

Implements Muon::MuonIntersectGeometry.

Definition at line 30 of file MdtIntersectGeometry.cxx.

30  {
31  MuonStationIntersect intersect;
32  if (!m_mdtGeometry) {
33  MsgStream log(Athena::getMessageSvc(), "MdtIntersectGeometry");
34  log << MSG::WARNING << "MdtIntersectGeometry::intersection() - MdtIntersectGeometry not correctly initialized "
36  return intersect;
37  }
38 
39  Amg::Vector3D lpos = transform() * pos;
40  Amg::Vector3D ldir = (transform().linear() * dir).unit();
41 
42  double dxdy = std::abs(ldir.y()) > 0.001 ? ldir.x() / ldir.y() : 1000.;
43 
44  double lineAngle = std::atan2(ldir.z(), ldir.y());
45  TrkDriftCircleMath::LocVec2D linePos(lpos.y(), lpos.z());
46  TrkDriftCircleMath::Line line(linePos, lineAngle);
47  const TrkDriftCircleMath::DCVec dcs = m_mdtGeometry->tubesPassedByLine(line);
48 
50 
51  TrkDriftCircleMath::DCCit dit = dcs.begin();
52  TrkDriftCircleMath::DCCit dit_end = dcs.end();
53  for (; dit != dit_end; ++dit) {
54  const TrkDriftCircleMath::MdtId& mdtId = dit->id();
55 
56  double xint = dxdy * (dit->position().x() - lpos.y()) + lpos.x();
57  Identifier tubeid = m_idHelperSvc->mdtIdHelper().channelID(m_chid, mdtId.ml() + 1, mdtId.lay() + 1, mdtId.tube() + 1);
58  if (m_deadTubesML.find(m_idHelperSvc->mdtIdHelper().multilayerID(tubeid)) != m_deadTubesML.end()) {
59  if (std::find(m_deadTubes.begin(), m_deadTubes.end(), tubeid) != m_deadTubes.end()) continue;
60  }
61  double distWall = std::abs(xint) - 0.5 * tubeLength(mdtId.ml(), mdtId.lay(), mdtId.tube());
62  intersects.emplace_back(tubeid, dit->dr(), distWall);
63  }
64  intersect.setTubeIntersects(std::move(intersects));
65 
66  return intersect;
67  }

◆ mdtChamberGeometry()

std::shared_ptr< const TrkDriftCircleMath::MdtChamberGeometry > Muon::MdtIntersectGeometry::mdtChamberGeometry ( ) const

Definition at line 198 of file MdtIntersectGeometry.cxx.

198 { return m_mdtGeometry; }

◆ operator=()

MdtIntersectGeometry& Muon::MdtIntersectGeometry::operator= ( const MdtIntersectGeometry right)
delete

◆ transform()

const Amg::Transform3D& Muon::MdtIntersectGeometry::transform ( ) const
inline

Definition at line 35 of file MdtIntersectGeometry.h.

35 { return m_transform; }

◆ tubeLength()

double Muon::MdtIntersectGeometry::tubeLength ( const int  ml,
const int  layer,
const int  tube 
) const
private

Definition at line 69 of file MdtIntersectGeometry.cxx.

69  {
70 #ifndef NDEBUG
71  if (ml < 0 || ml > 1){
72  std::stringstream sstr{};
73  sstr<<__FILE__<<":"<<__LINE__<<" "<<__func__<<"() got called with ml="<<ml<<" which is definetly out of range";
74  throw std::runtime_error(sstr.str());
75  }
76  if (layer < 0 || layer > 3) {
77  std::stringstream sstr{};
78  sstr<<__FILE__<<":"<<__LINE__<<" "<<__func__<<"() got called with layer="<<layer<<" which is definetly out of range";
79  throw std::runtime_error(sstr.str());
80  }
81  if (tube < 0 || tube >= int(MdtIdHelper::maxNTubesPerLayer)){
82  std::stringstream sstr{};
83  sstr<<__FILE__<<":"<<__LINE__<<" "<<__func__<<"() got called with tube="<<tube<<" which is definetly out of range";
84  throw std::runtime_error(sstr.str());
85  }
86 #endif
87  // shift by one to account for MuonGeoModel scheme
88  int theTube = tube + 1;
89  int theLayer = layer + 1;
90  // handle case where first ml is dead
91  if (ml == 1 && !m_detElMl1) return m_detElMl0->getActiveTubeLength(theLayer, theTube);
92  if (ml == 0)
93  return m_detElMl0->getActiveTubeLength(theLayer, theTube);
94  else
95  return m_detElMl1->getActiveTubeLength(theLayer, theTube);
96  }

Member Data Documentation

◆ m_chid

Identifier Muon::MdtIntersectGeometry::m_chid {}
private

Definition at line 45 of file MdtIntersectGeometry.h.

◆ m_dbData

const MdtCondDbData* Muon::MdtIntersectGeometry::m_dbData {nullptr}
private

Definition at line 51 of file MdtIntersectGeometry.h.

◆ m_deadTubes

std::vector<Identifier> Muon::MdtIntersectGeometry::m_deadTubes {}
private

Definition at line 54 of file MdtIntersectGeometry.h.

◆ m_deadTubesML

std::set<Identifier> Muon::MdtIntersectGeometry::m_deadTubesML {}
private

Definition at line 53 of file MdtIntersectGeometry.h.

◆ m_detElMl0

const MuonGM::MdtReadoutElement* Muon::MdtIntersectGeometry::m_detElMl0 {nullptr}
private

Definition at line 48 of file MdtIntersectGeometry.h.

◆ m_detElMl1

const MuonGM::MdtReadoutElement* Muon::MdtIntersectGeometry::m_detElMl1 {nullptr}
private

Definition at line 49 of file MdtIntersectGeometry.h.

◆ m_detMgr

const MuonGM::MuonDetectorManager* Muon::MdtIntersectGeometry::m_detMgr {nullptr}
private

Definition at line 50 of file MdtIntersectGeometry.h.

◆ m_idHelperSvc

const IMuonIdHelperSvc* Muon::MdtIntersectGeometry::m_idHelperSvc {nullptr}
private

Definition at line 52 of file MdtIntersectGeometry.h.

◆ m_mdtGeometry

std::shared_ptr<TrkDriftCircleMath::MdtChamberGeometry> Muon::MdtIntersectGeometry::m_mdtGeometry {}
private

Definition at line 47 of file MdtIntersectGeometry.h.

◆ m_transform

Amg::Transform3D Muon::MdtIntersectGeometry::m_transform
private

Definition at line 46 of file MdtIntersectGeometry.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
MdtIdHelper::multilayer
int multilayer(const Identifier &id) const
Access to components of the ID.
Definition: MdtIdHelper.cxx:722
TrkDriftCircleMath::MdtId::lay
int lay() const
Definition: MdtId.h:32
MuonGM::MdtReadoutElement::getNLayers
int getNLayers() const
Returns the number of tube layers inside the multilayer.
checkFileSG.line
line
Definition: checkFileSG.py:75
Muon::MdtIntersectGeometry::m_detElMl0
const MuonGM::MdtReadoutElement * m_detElMl0
Definition: MdtIntersectGeometry.h:48
Muon::MdtIntersectGeometry::m_idHelperSvc
const IMuonIdHelperSvc * m_idHelperSvc
Definition: MdtIntersectGeometry.h:52
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
TrkDriftCircleMath::MdtId
Definition: MdtId.h:14
MuonGM::MdtReadoutElement::center
virtual const Amg::Vector3D & center(const Identifier &) const override final
Return the center of the surface associated with this identifier In the case of silicon it returns th...
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
MuonGM::MuonReadoutElement::GlobalToAmdbLRSTransform
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonReadoutElement.cxx:153
Muon::MdtIntersectGeometry::m_mdtGeometry
std::shared_ptr< TrkDriftCircleMath::MdtChamberGeometry > m_mdtGeometry
Definition: MdtIntersectGeometry.h:47
skel.it
it
Definition: skel.GENtoEVGEN.py:423
MuonIdHelper::stationName
int stationName(const Identifier &id) const
Definition: MuonIdHelper.cxx:804
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
TrkDriftCircleMath::MdtId::ml
int ml() const
Definition: MdtId.h:31
Muon::MdtIntersectGeometry::m_dbData
const MdtCondDbData * m_dbData
Definition: MdtIntersectGeometry.h:51
TrkDriftCircleMath::LocVec2D
Implementation of 2 dimensional vector class.
Definition: LocVec2D.h:16
TrkDriftCircleMath::DCVec
std::vector< DriftCircle > DCVec
Definition: DriftCircle.h:117
Muon::MdtIntersectGeometry::transform
const Amg::Transform3D & transform() const
Definition: MdtIntersectGeometry.h:35
Muon::MdtIntersectGeometry::m_deadTubes
std::vector< Identifier > m_deadTubes
Definition: MdtIntersectGeometry.h:54
TrkDriftCircleMath::Line
Definition: Line.h:17
MuonGM::MuonDetectorManager::getMdtReadoutElement
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:204
MuonGM::MuonReadoutElement::getStationName
const std::string & getStationName() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:190
z
#define z
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonGM::MdtReadoutElement::getActiveTubeLength
double getActiveTubeLength(const int tubeLayer, const int tube) const
MuonGM::MdtReadoutElement::nMDTinStation
unsigned int nMDTinStation() const
How many MDT chambers are in the station.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h:61
Muon::MdtIntersectGeometry::init
void init(MsgStream &msg)
Definition: MdtIntersectGeometry.cxx:98
beamspotman.dir
string dir
Definition: beamspotman.py:623
MuonIdHelper::stationPhi
int stationPhi(const Identifier &id) const
Definition: MuonIdHelper.cxx:814
AtlasDetectorID::print_to_string
std::string print_to_string(Identifier id, const IdContext *context=0) const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:655
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
MdtIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int tubeLayer, int tube) const
Definition: MdtIdHelper.cxx:659
Muon::IMuonIdHelperSvc::mdtIdHelper
virtual const MdtIdHelper & mdtIdHelper() const =0
access to MdtIdHelper
TrkDriftCircleMath::DCCit
DCVec::const_iterator DCCit
Definition: DriftCircle.h:119
MuonIdHelper::stationEta
int stationEta(const Identifier &id) const
Definition: MuonIdHelper.cxx:809
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Muon::MdtIntersectGeometry::tubeLength
double tubeLength(const int ml, const int layer, const int tube) const
Definition: MdtIntersectGeometry.cxx:69
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
geoGetIds
void geoGetIds(FUNCTION f, const GeoGraphNode *node, int depthLimit=1)
Template helper for running the visitor.
Definition: GeoGetIds.h:82
MuonGM::MdtReadoutElement::tubePos
Amg::Vector3D tubePos(const Identifier &id) const
Returns the global position of the given tube.
y
#define y
Muon::MdtIntersectGeometry::m_detElMl1
const MuonGM::MdtReadoutElement * m_detElMl1
Definition: MdtIntersectGeometry.h:49
Amg::intersect
std::optional< double > intersect(const AmgVector(N)&posA, const AmgVector(N)&dirA, const AmgVector(N)&posB, const AmgVector(N)&dirB)
Calculates the closest approach of two lines.
Definition: GeoPrimitivesHelpers.h:302
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
unit
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
Definition: AmgMatrixBasePlugin.h:20
Muon::MdtIntersectGeometry::m_chid
Identifier m_chid
Definition: MdtIntersectGeometry.h:45
Muon::MdtIntersectGeometry::m_deadTubesML
std::set< Identifier > m_deadTubesML
Definition: MdtIntersectGeometry.h:53
MuonGM::MuonReadoutElement::identify
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:184
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
Muon::MdtIntersectGeometry::fillDeadTubes
void fillDeadTubes(const MuonGM::MdtReadoutElement *mydetEl, MsgStream &msg)
Definition: MdtIntersectGeometry.cxx:199
MdtIdHelper::multilayerID
Identifier multilayerID(const Identifier &channeldID) const
Definition: MdtIdHelper.cxx:332
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
MdtIdHelper::maxNTubesPerLayer
static constexpr int maxNTubesPerLayer
The maxNTubesPerLayer represents the absolute maximum of tubes which are built into a single multilay...
Definition: MdtIdHelper.h:68
Muon::MuonStationIntersect::TubeIntersects
std::vector< MuonTubeIntersect > TubeIntersects
Definition: MuonStationIntersect.h:14
MuonGM::MdtReadoutElement::getNtubesperlayer
int getNtubesperlayer() const
Returns the number of tubes in each tube layer.
TrkDriftCircleMath::MdtId::tube
int tube() const
Definition: MdtId.h:33
Muon::MdtIntersectGeometry::m_detMgr
const MuonGM::MuonDetectorManager * m_detMgr
Definition: MdtIntersectGeometry.h:50
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
MdtCondDbData::isGoodMultilayer
bool isGoodMultilayer(const Identifier &Id) const
Definition: MdtCondDbData.cxx:36
calibdata.tube
tube
Definition: calibdata.py:31
Muon::MdtIntersectGeometry::m_transform
Amg::Transform3D m_transform
Definition: MdtIntersectGeometry.h:46