ATLAS Offline Software
MuonStation.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /***************************************************************************
6  Holds the info related to a full station
7  -----------------------------------------
8  ***************************************************************************/
9 
11 
12 #include <iomanip>
13 #include <utility>
14 
15 
20 #include "CxxUtils/inline_hints.h"
21 namespace MuonGM {
22 
23  MuonStation::MuonStation(std::string_view stName,
24  double Ssize, double Rsize, double Zsize,
25  double LongSsize, double LongRsize, double LongZsize,
26  int zi, int fi, bool descratzneg) :
27  AthMessaging{"MuonStation"},
28  m_statname(stName) {
29  m_Ssize = Ssize;
30  m_Rsize = Rsize;
31  m_Zsize = Zsize;
32  m_LongSsize = LongSsize;
33  m_LongRsize = LongRsize;
34  m_LongZsize = LongZsize;
35  m_descratzneg = descratzneg;
36  m_statEtaIndex = zi;
37  m_statPhiIndex = fi;
38  }
39 
40  MuonStation::~MuonStation() = default;
41 
42  void MuonStation::setEtaPhiIndices(int eta, int phi) {
45  }
46 
47  void MuonStation::setTransform(GeoAlignableTransform* xf) { m_transform = xf; }
48 
49  void MuonStation::setxAmdbCRO(double xpos) { m_xAmdbCRO = xpos; }
50 
52  m_native_to_amdbl = std::move(xf);
53  ATH_MSG_VERBOSE("stationName/Jff/Jzz " << getStationType() << " " << getPhiIndex() << " "<< getEtaIndex()
54  <<"setNativeToAmdbLRS: "<<Amg::toString(m_native_to_amdbl));
55  }
56 
58  m_amdbl_to_global = std::move(xf);
59  ATH_MSG_DEBUG("setNominalAmdbLRSToGlobal: stationName/Jff/Jzz " << getStationType() << " " << getPhiIndex() << " "<< getEtaIndex()
60  << " Origin of AmdbLocalFrame= " << Amg::toString(m_amdbl_to_global.translation()));
61  }
62  void MuonStation::setBlineFixedPointInAmdbLRS(double s0, double z0, double t0) {
63 
64  ATH_MSG_DEBUG("Station " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
65  << " setting fixed point for B-lines at s0,z0,t0 = " << s0 << " " << z0 << " " << t0 );
66 
67 
71 
72  ATH_MSG_DEBUG("setBlineFixedPointInAmdbLRS: stationName/Jff/Jzz " << getStationType() << " " << getPhiIndex() << " "
73  << getEtaIndex() << " nominal(i.e. from-station-envelop-only) B-line fixed point "
75 
76  }
77 
79  // needed to update the station-level BlineFixedPoint with data from second multilayer
81  }
82 
84 
87  // Before correction m_BlineFixedPointInAmdbLRS has a z set at the edge of
88  // lowest-z tube of the first layer of one of the two multilayers.
89  // For endcap A, endcap C, and barrel A, this is correct, given the tube staggering
90  // For barrel side C, given the tube staggering, the z should be at the
91  // edge at the second layer, i.e. the z should be corrected by a half tube
92  // pitch. Correction is thus computed only for barrel side C.
93  if (barrel() && (getEtaIndex() < 0)) {
94  for (auto&[jobId, alignPair] :m_REwithAlTransfInStation) {
95  const MuonReadoutElement* muonRE = alignPair.first;
96 
97  if (muonRE->detectorType() !=Trk::DetectorElemType::Mdt) {
98  continue;
99  }
100  const MdtReadoutElement* mdtRE = dynamic_cast<const MdtReadoutElement*>(muonRE);
101  // Correct for tube staggering on barrel side C
102  double shiftInZ = -0.5 * mdtRE->tubePitch();
103  // in addition, correct for 35microm glue width incorrectly applied
104  double multilayerRealSize{0};
105  for (int ilayer = 1; ilayer <= 2; ++ilayer) {
106  double val{0.};
107  bool wellDefined = mdtRE->getWireFirstLocalCoordAlongZ(ilayer, val);
108  if (!wellDefined) {
109  ATH_MSG_WARNING("getUpdatedBlineFixedPointInAmdbLRS: stationName/Jff/Jzz " << getStationType()
110  << " " << getPhiIndex() << " " << getEtaIndex()
111  << " cannot get wire coordinates for second tube layer");
112  val = 0.;
113  }
114  if ((ilayer == 1) || (val > multilayerRealSize)) multilayerRealSize = val;
115  }
116  multilayerRealSize += (mdtRE->getNtubesperlayer() - 1) * mdtRE->tubePitch();
117  multilayerRealSize += mdtRE->outerTubeRadius(); // last tube: no glue width
118  shiftInZ += mdtRE->getZsize() - multilayerRealSize;
119 
121  ATH_MSG_DEBUG("getUpdatedBlineFixedPointInAmdbLRS: stationName/Jff/Jzz " << getStationType() << " "
122  << getPhiIndex() << " " << getEtaIndex() << " shiftInZ = " << shiftInZ << " re-set B-line fixed point "
124  break;
125  }
126  }
128  }
129 
131  m_delta_amdb_frame = std::move(xf);
132  ATH_MSG_DEBUG("Station " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
133  << " adding Aline " << std::endl
134  << " native_to_amdbl computed from A-line " << Amg::toString(m_native_to_amdbl) << std::endl
135  << "Station amdbl_to_global " << endmsg << Amg::toString(m_amdbl_to_global));
137  }
138 
139  void MuonStation::setDelta_fromAline(double tras, double traz, double trat, double rots, double rotz, double rott) {
140  // store here the angles of A-line
141  m_rots = rots;
142  m_rotz = rotz;
143  m_rott = rott;
144 
145  Amg::Transform3D delta_amdb{Amg::Transform3D::Identity()};
146  if (std::abs(tras) + std::abs(traz) + std::abs(trat) + (std::abs(rots) + std::abs(rotz) + std::abs(rott)) * 1000. > 0.01) {
147  // compute the delta transform in the local AMDB frame
148  delta_amdb = Amg::Translation3D{tras, traz, trat} *
150  m_hasALines = true;
151  }
152 
153  // store the delta transform in the local AMDB frame
154  setDeltaAmdbLRS(delta_amdb);
155 
156  ATH_MSG_DEBUG("Station " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
157  << " adding Aline " << setiosflags(std::ios::fixed) << std::setprecision(6) << std::setw(12)
158  << tras << " " << traz << " " << trat << " " << rots << " " << rotz << " " << rott << std::endl
159  << " delta_amdb computed from A-line " << Amg::toString(delta_amdb));
160  }
161 
162  const MuonReadoutElement* MuonStation::getMuonReadoutElement(int jobIndex) const {
163  std::map<int, pairRE_AlignTransf>::const_iterator itr = m_REwithAlTransfInStation.find(jobIndex);
164  return itr !=m_REwithAlTransfInStation.end() ? itr->second.first : nullptr;
165  }
166 
168  std::map<int, pairRE_AlignTransf>::const_iterator itr = m_REwithAlTransfInStation.find(jobIndex);
169  return itr !=m_REwithAlTransfInStation.end() ? itr->second.first : nullptr;
170  }
171 
172  GeoAlignableTransform* MuonStation::getComponentAlTransf(int jobIndex) const {
173  std::map<int, pairRE_AlignTransf>::const_iterator itr = m_REwithAlTransfInStation.find(jobIndex);
174  return itr != m_REwithAlTransfInStation.end() ? itr->second.second : nullptr;
175  }
176 
177  void MuonStation::addMuonReadoutElementWithAlTransf(MuonReadoutElement* a, GeoAlignableTransform* ptrsf, int jobIndex) {
178  ATH_MSG_DEBUG("addMuonReadoutElementWithAlTransf for station " << getStationName() << " at zi/fi = " << getEtaIndex()
179  << "/" << getPhiIndex() << " adding new component with Alignable transf... " << a->getStationName()
180  << " job ondex = " << jobIndex );
181  m_REwithAlTransfInStation[jobIndex] = std::make_pair(a, ptrsf);
182 
183  ATH_MSG_DEBUG("addMuonReadoutElementWithAlTransf for station " << getStationName() << " at zi/fi = " << getEtaIndex()
184  << "/" << getPhiIndex() << " added new component - now size of map is " << m_REwithAlTransfInStation.size());
185  }
186 
187  void MuonStation::setDelta_fromAline_forComp(int jobindex, double tras, double traz, double trat, double rots, double rotz,
188  double rott) {
189  GeoAlignableTransform* parentToChild = getComponentAlTransf(jobindex);
190  if (!parentToChild) {
191  ATH_MSG_WARNING( "setDelta_fromAline_forComp: WARNING: component for index " << jobindex
192  << " not found in MuonStation named " << getStationName() << " at zi/fi = " << getEtaIndex() << "/" << getPhiIndex());
193  return;
194  }
195  if (std::abs(tras) + std::abs(traz) + std::abs(trat) + (std::abs(rots) + std::abs(rotz) + std::abs(rott)) * 1000. < 0.01) {
196  ATH_MSG_DEBUG("setDelta_fromAline_forComp: A-line ignored --- too small (translations < 10microns & rotations <10microrad)");
197  return;
198  }
199 
202 
203  Amg::Transform3D parentToChildT = parentToChild->getTransform();
204  Amg::Transform3D delta_amdb = Amg::Translation3D{tras, traz, trat} *
206  // The station to component transform is static and must be computed in terms of "nominal geometry parameters"; fixing here bug
207  const Amg::Vector3D thisREnominalCenter{getMuonReadoutElement(jobindex)->defTransform().translation()};
208  double Rcomp = thisREnominalCenter.perp() - (getMuonReadoutElement(jobindex)->getRsize()) / 2.;
209  double DZcomp = std::abs(thisREnominalCenter.z()) - std::abs((m_amdbl_to_global.translation()).z()) -
210  std::abs((getMuonReadoutElement(jobindex)->getZsize()) / 2.);
211 
212  Amg::Transform3D childToLocAmdbStation = m_native_to_amdbl * parentToChildT;
213  Amg::Transform3D locAmdbStatToLocAmdbComp{Amg::Transform3D::Identity()};
214  // the following line is needed to go for scenario B in last slide of
215  // http://www.fisica.unisalento.it/~spagnolo/allow_listing/TGC_Alines/TGC-ALines_2011_03_01.pdf COMMENT next line to go
216  // for scenario A in last slide of http://www.fisica.unisalento.it/~spagnolo/allow_listing/TGC_Alines/TGC-ALines_2011_03_01.pdf
217  if (getStationType()[0] == 'T') locAmdbStatToLocAmdbComp = Amg::Translation3D{0,-Rcomp, -DZcomp};
218  Amg::Transform3D childToLocAmdbComponent = locAmdbStatToLocAmdbComp * childToLocAmdbStation;
219 
220  ATH_MSG_DEBUG("setDelta_fromAline_forComp: stationName/Jff/Jzz " << getStationType() << " " << getPhiIndex() << " "
221  << getEtaIndex() << " Job " << jobindex << " Origin of component/station AmdbLocalFrame= "
222  <<Amg::toString(m_amdbl_to_global * locAmdbStatToLocAmdbComp.inverse().translation()) << " / "
223  << Amg::toString(m_amdbl_to_global.translation()));
224 
225  parentToChild->setDelta(childToLocAmdbComponent.inverse() * delta_amdb * childToLocAmdbComponent);
226  ATH_MSG_DEBUG("setDelta_fromAline_forComp2:stationName/Jff/Jzz " << getStationType() << " " << getPhiIndex() << " "
227  << getEtaIndex() << " Job " << jobindex << " Origin of component/station AmdbLocalFrame= "
228  << Amg::toString(m_amdbl_to_global * locAmdbStatToLocAmdbComp.inverse().translation()) << " / "
229  << Amg::toString(m_amdbl_to_global.translation()));
230 
231  ATH_MSG_DEBUG("Station " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
232  << " adding Aline " << tras << " " << traz << " " << trat << " " << rots << " " << rotz << " " << rott
233  << " for component with index =" << jobindex << std::endl
234  << " delta_amdb computed from A-line " <<Amg::toString(delta_amdb));
235  }
236 
237  void MuonStation::clearCache() {
238  ATH_MSG_DEBUG("n. of RE in this station is " << m_REwithAlTransfInStation.size());
239  for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
240  ATH_MSG_DEBUG("Clearing cache .... for RE ... iteration n. " << jobId);
241  MuonReadoutElement* re = readAlignPair.first;
242  if (!re) {
243  ATH_MSG_WARNING(" in MuonStation:clearCache " << getStationType() << " at zi/fi " << getEtaIndex() << "/"
244  << getPhiIndex() << " trying to get a not existing RE (iteration n. ) " << jobId << " RE is null, skipping" );
245  continue;
246  }
247  re->clearCache();
248  ATH_MSG_DEBUG("cache cleared ");
249  }
250  }
251 
252  void MuonStation::fillCache() {
253  for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
254  ATH_MSG_DEBUG("fillCache cache .... for RE ... iteration n. " << jobId);
255  MuonReadoutElement* re = readAlignPair.first;
256  if (!re) {
257  ATH_MSG_WARNING(" in MuonStation:fillCache " << getStationType() << " at zi/fi " << getEtaIndex() << "/"
258  << getPhiIndex() << " trying to get a not existing RE (iteration n. ) " << jobId << " RE is null, skipping" );
259  continue;
260  }
261  re->fillCache();
262  }
263  }
264 
266  clearCache();
267  fillCache();
268  }
269 
270  void MuonStation::setBline(const BLinePar* bline) {
271  if (!bline) return;
272  m_hasBLines = true;
273  for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
274  ATH_MSG_DEBUG("fillCache cache .... for RE ... iteration n. " << jobId);
275  MuonReadoutElement* re = readAlignPair.first;
276  if (re->detectorType() !=Trk::DetectorElemType::Mdt) {
277  continue;
278  }
279  MdtReadoutElement* mdt = dynamic_cast<MdtReadoutElement*>(re);
280  mdt->setBLinePar(bline);
281  }
282  }
283 
284 
285 #if defined(FLATTEN)
286  // We compile this package with optimization, even in debug builds; otherwise,
287  // the heavy use of Eigen makes it too slow. However, from here we may call
288  // to out-of-line Eigen code that is linked from other DSOs; in that case,
289  // it would not be optimized. Avoid this by forcing all Eigen code
290  // to be inlined here if possible.
292 #endif
293  double
295  if (getStationName()[0] == 'T' || getStationName()[0] == 'C') return 0.; // TGC and CSC stations
296  double Rsize = 0.;
297 
299  bool first = true;
300  int nmdt = 0;
301  ATH_MSG_DEBUG("RsizeMdtStation for " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
302  << " nRE = " << nMuonReadoutElements());
303 
304  for (int j = 1; j < 30; ++j) {
305  const MuonReadoutElement* activeComponent = getMuonReadoutElement(j);
306  if (!activeComponent) continue;
307  if (activeComponent->detectorType() !=Trk::DetectorElemType::Mdt) {
308  continue;
309  }
310  ++nmdt;
311  Rsize += activeComponent->getRsize() / 2.;
312  Rpos = activeComponent->toParentStation().translation();
313  if (first) {
314  RposFirst = Rpos;
315  first = false;
316  } else {
317  if (barrel())
318  Rsize += std::abs(Rpos.x() - RposFirst.x());
319  else
320  Rsize += std::abs(Rpos.y() - RposFirst.y());
321  }
322  }
323  if (nmdt == 1) Rsize = 2. * Rsize;
324  return Rsize;
325  }
326  double MuonStation::ZsizeMdtStation() const {
327  if (getStationName()[0] == 'T' || getStationName()[0] == 'C') return 0.; // TGC and CSC stations
328  double Zsize = 0.;
329 
331  bool first = true;
332  int nmdt = 0;
333 
334 
335  ATH_MSG_DEBUG("ZsizeMdtStation for " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
336  << " nRE = " << nMuonReadoutElements());
337 
338  for (int j = 1; j < 30; ++j) {
339  const MuonReadoutElement* activeComponent = getMuonReadoutElement(j);
340  if (!activeComponent) continue;
341  if (activeComponent->detectorType() !=Trk::DetectorElemType::Mdt) {
342  continue;
343  }
344  ++nmdt;
345 
346  Zsize += activeComponent->getZsize() / 2.;
347  Zpos = activeComponent->toParentStation() * Amg::Vector3D(0., 0., 0.);
348  if (first) {
349  ZposFirst = Zpos;
350  first = false;
351  } else {
352  if (barrel())
353  Zsize += std::abs(Zpos.z() - ZposFirst.z());
354  else
355  Zsize += std::abs(Zpos.x() - ZposFirst.x());
356  }
357  }
358  if (nmdt == 1) Zsize = 2. * Zsize;
359 
360  return Zsize;
361  }
362 
363  bool MuonStation::barrel() const {
364  return getStationName()[0] == 'B';
365  }
366  bool MuonStation::endcap() const { return !barrel(); }
367 
369  if (!m_XTomoData) {
370  ATH_MSG_WARNING("No Mdt AsBuilt parameters for chamber " << getStationName());
371  }
372  return m_XTomoData;
373  }
374 
375  void MuonStation::setMdtAsBuiltParams(const MdtAsBuiltPar* xtomo) {
376  m_XTomoData = xtomo;
377  refreshCache();
378  }
379  void MuonStation::setPhysVol(const PVLink& vol) { m_physVol = vol; }
380  PVConstLink MuonStation::getPhysVol() const {return m_physVol; }
381  PVLink MuonStation::getPhysVol() { return m_physVol; }
382 } // namespace MuonGM
MuonGM::MuonStation::setEtaPhiIndices
void setEtaPhiIndices(int eta, int phi)
a la AMDB
Definition: MuonStation.cxx:45
MdtReadoutElement.h
MuonGM::MuonStation::m_XTomoData
const MdtAsBuiltPar * m_XTomoData
Definition: MuonStation.h:154
MuonGM::MuonStation::getStationType
std::string getStationType() const
like BMS, T1F, CSL
Definition: MuonStation.h:164
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
MuonGM::MuonStation::setDelta_fromAline_forComp
void setDelta_fromAline_forComp(int, double, double, double, double, double, double)
Definition: MuonStation.cxx:190
inline_hints.h
MuonGM::MuonStation::m_native_to_amdbl
Amg::Transform3D m_native_to_amdbl
Definition: MuonStation.h:146
MuonGM::MuonStation::m_REwithAlTransfInStation
std::map< int, pairRE_AlignTransf > m_REwithAlTransfInStation
keep track of the REs in this station
Definition: MuonStation.h:157
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
MuonGM::MuonStation::fillCache
void fillCache()
Definition: MuonStation.cxx:255
MuonGM::MuonStation::getPhysVol
PVConstLink getPhysVol() const
Definition: MuonStation.cxx:383
MuonGM::MuonStation::m_hasBLines
bool m_hasBLines
Definition: MuonStation.h:152
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
MuonGM::MuonStation::m_hasALines
bool m_hasALines
Definition: MuonStation.h:151
MuonGM::MdtReadoutElement::tubePitch
double tubePitch() const
Returns the distance between 2 tubes in a tube layer.
MuonGM::MuonReadoutElement::defTransform
const Amg::Transform3D & defTransform() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:212
MuonGM::MdtReadoutElement::getWireFirstLocalCoordAlongZ
bool getWireFirstLocalCoordAlongZ(int tubeLayer, double &coord) const
Definition: MuonDetDescr/MuonReadoutGeometry/src/MdtReadoutElement.cxx:80
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
Amg::y
@ y
Definition: GeoPrimitives.h:35
MuonGM::MuonReadoutElement::getZsize
double getZsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:198
MuonGM::MuonStation::setBlineFixedPointInAmdbLRS
void setBlineFixedPointInAmdbLRS(double s0, double z0, double t0)
Definition: MuonStation.cxx:65
MuonGM::MuonStation::setMdtAsBuiltParams
void setMdtAsBuiltParams(const MdtAsBuiltPar *xtomo)
Definition: MuonStation.cxx:378
MuonGM::MuonStation::m_physVol
PVLink m_physVol
Link the full physical volume associated with the station.
Definition: MuonStation.h:159
MuonGM::MuonStation::~MuonStation
~MuonStation()
MuonGM::MuonStation::updateBlineFixedPointInAmdbLRS
void updateBlineFixedPointInAmdbLRS()
Definition: MuonStation.cxx:88
MuonGM::MuonStation::m_delta_amdb_frame
Amg::Transform3D m_delta_amdb_frame
Definition: MuonStation.h:145
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonGM::MuonStation::endcap
bool endcap() const
Definition: MuonStation.cxx:369
MuonGM::MuonStation::getStationName
const std::string & getStationName() const
like BMS5, T1F1, CSL1
Definition: MuonStation.h:165
MuonGM::MuonStation::m_BlineFixedPointInAmdbLRS
Amg::Vector3D m_BlineFixedPointInAmdbLRS
Definition: MuonStation.h:153
MuonGM::MuonStation::getUpdatedBlineFixedPointInAmdbLRS
const Amg::Vector3D & getUpdatedBlineFixedPointInAmdbLRS() const
Definition: MuonStation.cxx:86
MuonGM::MuonStation::getComponentAlTransf
GeoAlignableTransform * getComponentAlTransf(int jobIndex) const
Definition: MuonStation.cxx:175
MuonGM::MuonStation::m_rots
double m_rots
Definition: MuonStation.h:148
Amg::getRotateZ3D
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
Definition: GeoPrimitivesHelpers.h:270
MuonGM::MuonReadoutElement
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:40
MuonGM::MuonStation::getMuonReadoutElement
const MuonReadoutElement * getMuonReadoutElement(int jobIndex) const
Definition: MuonStation.cxx:165
MuonGM::MuonStation::m_statPhiIndex
int m_statPhiIndex
Definition: MuonStation.h:140
Amg::z
@ z
Definition: GeoPrimitives.h:36
MuonGM::MuonStation::m_amdbl_to_global
Amg::Transform3D m_amdbl_to_global
Definition: MuonStation.h:147
MuonGM::MuonStation::getPhiIndex
int getPhiIndex() const
a la AMDB
Definition: MuonStation.h:162
MuonGM::MuonStation::Zsize
double Zsize() const
Definition: MuonStation.h:175
Amg::getRotateX3D
Amg::Transform3D getRotateX3D(double angle)
get a rotation transformation around X-axis
Definition: GeoPrimitivesHelpers.h:252
MuonGM::MuonStation::setNativeToAmdbLRS
void setNativeToAmdbLRS(Amg::Transform3D xf)
Definition: MuonStation.cxx:54
MuonGM::MuonStation::m_xAmdbCRO
double m_xAmdbCRO
Definition: MuonStation.h:138
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
EventPrimitivesToStringConverter.h
MuonGM::MuonStation::Rsize
double Rsize() const
Definition: MuonStation.h:173
MuonGM::MdtReadoutElement
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h:50
ATH_FLATTEN
#define ATH_FLATTEN
Definition: inline_hints.h:52
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonGM::MuonStation::setTransform
void setTransform(GeoAlignableTransform *xf)
Definition: MuonStation.cxx:50
Amg::x
@ x
Definition: GeoPrimitives.h:34
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGM::MdtReadoutElement::outerTubeRadius
double outerTubeRadius() const
Returns the tube radius taking the thickness of the tubes into account.
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
MuonGM::MuonStation::refreshCache
void refreshCache()
Definition: MuonStation.cxx:268
MuonGM::MuonStation::barrel
bool barrel() const
Definition: MuonStation.cxx:366
beamspotman.jobId
int jobId
Definition: beamspotman.py:1148
MuonReadoutElement.h
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
BLinePar
Definition: BLinePar.h:14
MuonGM::MuonReadoutElement::detectorType
Trk::DetectorElemType detectorType() const override final
Return the Detector element type.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:138
MuonGM::MuonStation::m_firstRequestBlineFixedP
bool m_firstRequestBlineFixedP
Definition: MuonStation.h:129
MuonGM::MuonStation::setBline
void setBline(const BLinePar *bline)
Definition: MuonStation.cxx:273
MuonGM::MuonStation::m_transform
GeoAlignableTransform * m_transform
Definition: MuonStation.h:143
MuonGM::MuonStation::nMuonReadoutElements
int nMuonReadoutElements() const
Definition: MuonStation.h:188
MuonGM::MuonStation::setDelta_fromAline
void setDelta_fromAline(double, double, double, double, double, double)
set the delta transform in the amdb frame and update the geoModel Delta
Definition: MuonStation.cxx:142
MuonGM::MdtReadoutElement::setBLinePar
void setBLinePar(const BLinePar *bLine)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MdtReadoutElement.cxx:942
Amg::getRotateY3D
Amg::Transform3D getRotateY3D(double angle)
get a rotation transformation around Y-axis
Definition: GeoPrimitivesHelpers.h:261
MuonGM::MuonStation::setPhysVol
void setPhysVol(const PVLink &vol)
Definition: MuonStation.cxx:382
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGM::MuonStation::m_rotz
double m_rotz
Definition: MuonStation.h:149
MuonGM::MuonStation::addMuonReadoutElementWithAlTransf
void addMuonReadoutElementWithAlTransf(MuonReadoutElement *a, GeoAlignableTransform *ptrsf, int jobIndex)
Definition: MuonStation.cxx:180
MuonGM::MuonStation::MuonStation
MuonStation(std::string_view stName, double Ssize, double Rsize, double Zsize, double LongSsize, double LongRsize, double LongZsize, int zi, int fi, bool m_descratzneg)
Definition: MuonStation.cxx:26
MdtAsBuiltPar
Container classifier the MDT as-built parameters See parameter description in http://atlas-muon-align...
Definition: MdtAsBuiltPar.h:18
a
TList * a
Definition: liststreamerinfos.cxx:10
MuonGM::MuonStation::clearCache
void clearCache()
Definition: MuonStation.cxx:240
MuonGM::MuonStation::RsizeMdtStation
double RsizeMdtStation() const
Definition: MuonStation.cxx:297
MuonGM::MuonReadoutElement::getRsize
double getRsize() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:197
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
MuonGM::MuonStation::getEtaIndex
int getEtaIndex() const
a la AMDB
Definition: MuonStation.h:163
DeMoScan.first
bool first
Definition: DeMoScan.py:534
re
const boost::regex re(r_e)
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
MuonGM::MuonStation::getMdtAsBuiltParams
const MdtAsBuiltPar * getMdtAsBuiltParams() const
Definition: MuonStation.cxx:371
GeoPrimitivesToStringConverter.h
checkFileSG.fi
fi
Definition: checkFileSG.py:65
MuonGM::MuonStation::m_statEtaIndex
int m_statEtaIndex
Definition: MuonStation.h:141
MuonGM::MuonStation::getBlineFixedPointInAmdbLRS
const Amg::Vector3D & getBlineFixedPointInAmdbLRS() const
Definition: MuonStation.cxx:81
MuonGM::MdtReadoutElement::getNtubesperlayer
int getNtubesperlayer() const
Returns the number of tubes in each tube layer.
MuonStation.h
MuonGM::MuonStation::setDeltaAmdbLRS
void setDeltaAmdbLRS(Amg::Transform3D xf)
set the delta transform in the amdb frame and update the geoModel Delta
Definition: MuonStation.cxx:133
MuonGM::MuonStation::ZsizeMdtStation
double ZsizeMdtStation() const
Definition: MuonStation.cxx:329
MuonGM::MuonStation::setxAmdbCRO
void setxAmdbCRO(double xpos)
Definition: MuonStation.cxx:52
MuonGM::MuonStation::setNominalAmdbLRSToGlobal
void setNominalAmdbLRSToGlobal(Amg::Transform3D xf)
Definition: MuonStation.cxx:60
Trk::DetectorElemType::Mdt
@ Mdt
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
MuonGM::MuonStation::m_rott
double m_rott
Definition: MuonStation.h:150