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) {
43  m_statEtaIndex = eta;
44  m_statPhiIndex = 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  if (!m_firstRequestBlineFixedP) return;
85  // Before correction m_BlineFixedPointInAmdbLRS has a z set at the edge of
86  // lowest-z tube of the first layer of one of the two multilayers.
87  // For endcap A, endcap C, and barrel A, this is correct, given the tube staggering
88  // For barrel side C, given the tube staggering, the z should be at the
89  // edge at the second layer, i.e. the z should be corrected by a half tube
90  // pitch. Correction is thus computed only for barrel side C.
91  if (barrel() && (getEtaIndex() < 0)) {
92  for (auto&[jobId, alignPair] :m_REwithAlTransfInStation) {
93  const MuonReadoutElement* muonRE = alignPair.first;
94 
95  if (muonRE->detectorType() !=Trk::DetectorElemType::Mdt) {
96  continue;
97  }
98  const MdtReadoutElement* mdtRE = dynamic_cast<const MdtReadoutElement*>(muonRE);
99  // Correct for tube staggering on barrel side C
100  double shiftInZ = -0.5 * mdtRE->tubePitch();
101  // in addition, correct for 35microm glue width incorrectly applied
102  double multilayerRealSize{0};
103  for (int ilayer = 1; ilayer <= 2; ++ilayer) {
104  double val{0.};
105  bool wellDefined = mdtRE->getWireFirstLocalCoordAlongZ(ilayer, val);
106  if (!wellDefined) {
107  ATH_MSG_WARNING("getUpdatedBlineFixedPointInAmdbLRS: stationName/Jff/Jzz " << getStationType()
108  << " " << getPhiIndex() << " " << getEtaIndex()
109  << " cannot get wire coordinates for second tube layer");
110  val = 0.;
111  }
112  if ((ilayer == 1) || (val > multilayerRealSize)) multilayerRealSize = val;
113  }
114  multilayerRealSize += (mdtRE->getNtubesperlayer() - 1) * mdtRE->tubePitch();
115  multilayerRealSize += mdtRE->outerTubeRadius(); // last tube: no glue width
116  shiftInZ += mdtRE->getZsize() - multilayerRealSize;
117 
119  ATH_MSG_DEBUG("getUpdatedBlineFixedPointInAmdbLRS: stationName/Jff/Jzz " << getStationType() << " "
120  << getPhiIndex() << " " << getEtaIndex() << " shiftInZ = " << shiftInZ << " re-set B-line fixed point "
122  break;
123  }
124  }
126  }
127 
129  m_delta_amdb_frame = std::move(xf);
130  ATH_MSG_DEBUG("Station " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
131  << " adding Aline " << std::endl
132  << " native_to_amdbl computed from A-line " << Amg::toString(m_native_to_amdbl) << std::endl
133  << "Station amdbl_to_global " << endmsg << Amg::toString(m_amdbl_to_global));
135  }
136 
137  void MuonStation::setDelta_fromAline(double tras, double traz, double trat, double rots, double rotz, double rott) {
138  // store here the angles of A-line
139  m_rots = rots;
140  m_rotz = rotz;
141  m_rott = rott;
142 
143  Amg::Transform3D delta_amdb{Amg::Transform3D::Identity()};
144  if (std::abs(tras) + std::abs(traz) + std::abs(trat) + (std::abs(rots) + std::abs(rotz) + std::abs(rott)) * 1000. > 0.01) {
145  // compute the delta transform in the local AMDB frame
146  delta_amdb = Amg::Translation3D{tras, traz, trat} *
148  m_hasALines = true;
149  }
150 
151  // store the delta transform in the local AMDB frame
152  setDeltaAmdbLRS(delta_amdb);
153 
154  ATH_MSG_DEBUG("Station " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
155  << " adding Aline " << setiosflags(std::ios::fixed) << std::setprecision(6) << std::setw(12)
156  << tras << " " << traz << " " << trat << " " << rots << " " << rotz << " " << rott << std::endl
157  << " delta_amdb computed from A-line " << Amg::toString(delta_amdb));
158  }
159 
160  const MuonReadoutElement* MuonStation::getMuonReadoutElement(int jobIndex) const {
161  std::map<int, pairRE_AlignTransf>::const_iterator itr = m_REwithAlTransfInStation.find(jobIndex);
162  return itr !=m_REwithAlTransfInStation.end() ? itr->second.first : nullptr;
163  }
164 
166  std::map<int, pairRE_AlignTransf>::const_iterator itr = m_REwithAlTransfInStation.find(jobIndex);
167  return itr !=m_REwithAlTransfInStation.end() ? itr->second.first : nullptr;
168  }
169 
170  GeoAlignableTransform* MuonStation::getComponentAlTransf(int jobIndex) const {
171  std::map<int, pairRE_AlignTransf>::const_iterator itr = m_REwithAlTransfInStation.find(jobIndex);
172  return itr != m_REwithAlTransfInStation.end() ? itr->second.second : nullptr;
173  }
174 
175  void MuonStation::addMuonReadoutElementWithAlTransf(MuonReadoutElement* a, GeoAlignableTransform* ptrsf, int jobIndex) {
176  ATH_MSG_DEBUG("addMuonReadoutElementWithAlTransf for station " << getStationName() << " at zi/fi = " << getEtaIndex()
177  << "/" << getPhiIndex() << " adding new component with Alignable transf... " << a->getStationName()
178  << " job ondex = " << jobIndex );
179  m_REwithAlTransfInStation[jobIndex] = std::make_pair(a, ptrsf);
180 
181  ATH_MSG_DEBUG("addMuonReadoutElementWithAlTransf for station " << getStationName() << " at zi/fi = " << getEtaIndex()
182  << "/" << getPhiIndex() << " added new component - now size of map is " << m_REwithAlTransfInStation.size());
183  }
184 
185  void MuonStation::setDelta_fromAline_forComp(int jobindex, double tras, double traz, double trat, double rots, double rotz,
186  double rott) {
187  GeoAlignableTransform* parentToChild = getComponentAlTransf(jobindex);
188  if (!parentToChild) {
189  ATH_MSG_WARNING( "setDelta_fromAline_forComp: WARNING: component for index " << jobindex
190  << " not found in MuonStation named " << getStationName() << " at zi/fi = " << getEtaIndex() << "/" << getPhiIndex());
191  return;
192  }
193  if (std::abs(tras) + std::abs(traz) + std::abs(trat) + (std::abs(rots) + std::abs(rotz) + std::abs(rott)) * 1000. < 0.01) {
194  ATH_MSG_DEBUG("setDelta_fromAline_forComp: A-line ignored --- too small (translations < 10microns & rotations <10microrad)");
195  return;
196  }
197 
200 
201  Amg::Transform3D parentToChildT = parentToChild->getTransform();
202  Amg::Transform3D delta_amdb = Amg::Translation3D{tras, traz, trat} *
204  // The station to component transform is static and must be computed in terms of "nominal geometry parameters"; fixing here bug
205  const Amg::Vector3D thisREnominalCenter{getMuonReadoutElement(jobindex)->defTransform().translation()};
206  double Rcomp = thisREnominalCenter.perp() - (getMuonReadoutElement(jobindex)->getRsize()) / 2.;
207  double DZcomp = std::abs(thisREnominalCenter.z()) - std::abs((m_amdbl_to_global.translation()).z()) -
208  std::abs((getMuonReadoutElement(jobindex)->getZsize()) / 2.);
209 
210  Amg::Transform3D childToLocAmdbStation = m_native_to_amdbl * parentToChildT;
211  Amg::Transform3D locAmdbStatToLocAmdbComp{Amg::Transform3D::Identity()};
212  // the following line is needed to go for scenario B in last slide of
213  // http://www.fisica.unisalento.it/~spagnolo/allow_listing/TGC_Alines/TGC-ALines_2011_03_01.pdf COMMENT next line to go
214  // for scenario A in last slide of http://www.fisica.unisalento.it/~spagnolo/allow_listing/TGC_Alines/TGC-ALines_2011_03_01.pdf
215  if (getStationType()[0] == 'T') locAmdbStatToLocAmdbComp = Amg::Translation3D{0,-Rcomp, -DZcomp};
216  Amg::Transform3D childToLocAmdbComponent = locAmdbStatToLocAmdbComp * childToLocAmdbStation;
217 
218  ATH_MSG_DEBUG("setDelta_fromAline_forComp: stationName/Jff/Jzz " << getStationType() << " " << getPhiIndex() << " "
219  << getEtaIndex() << " Job " << jobindex << " Origin of component/station AmdbLocalFrame= "
220  <<Amg::toString(m_amdbl_to_global * locAmdbStatToLocAmdbComp.inverse().translation()) << " / "
221  << Amg::toString(m_amdbl_to_global.translation()));
222 
223  parentToChild->setDelta(childToLocAmdbComponent.inverse() * delta_amdb * childToLocAmdbComponent);
224  ATH_MSG_DEBUG("setDelta_fromAline_forComp2:stationName/Jff/Jzz " << getStationType() << " " << getPhiIndex() << " "
225  << getEtaIndex() << " Job " << jobindex << " Origin of component/station AmdbLocalFrame= "
226  << Amg::toString(m_amdbl_to_global * locAmdbStatToLocAmdbComp.inverse().translation()) << " / "
227  << Amg::toString(m_amdbl_to_global.translation()));
228 
229  ATH_MSG_DEBUG("Station " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
230  << " adding Aline " << tras << " " << traz << " " << trat << " " << rots << " " << rotz << " " << rott
231  << " for component with index =" << jobindex << std::endl
232  << " delta_amdb computed from A-line " <<Amg::toString(delta_amdb));
233  }
234 
235  void MuonStation::clearCache() {
236  ATH_MSG_DEBUG("n. of RE in this station is " << m_REwithAlTransfInStation.size());
237  for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
238  ATH_MSG_DEBUG("Clearing cache .... for RE ... iteration n. " << jobId);
239  MuonReadoutElement* re = readAlignPair.first;
240  if (!re) {
241  ATH_MSG_WARNING(" in MuonStation:clearCache " << getStationType() << " at zi/fi " << getEtaIndex() << "/"
242  << getPhiIndex() << " trying to get a not existing RE (iteration n. ) " << jobId << " RE is null, skipping" );
243  continue;
244  }
245  re->clearCache();
246  ATH_MSG_DEBUG("cache cleared ");
247  }
248  }
249 
250  void MuonStation::fillCache() {
251  for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
252  ATH_MSG_DEBUG("fillCache cache .... for RE ... iteration n. " << jobId);
253  MuonReadoutElement* re = readAlignPair.first;
254  if (!re) {
255  ATH_MSG_WARNING(" in MuonStation:fillCache " << getStationType() << " at zi/fi " << getEtaIndex() << "/"
256  << getPhiIndex() << " trying to get a not existing RE (iteration n. ) " << jobId << " RE is null, skipping" );
257  continue;
258  }
259  re->fillCache();
260  }
261  }
262 
264  clearCache();
265  fillCache();
266  }
267 
268  void MuonStation::setBline(const BLinePar* bline) {
269  if (!bline) return;
270  m_hasBLines = true;
271  for (auto& [jobId, readAlignPair] : m_REwithAlTransfInStation) {
272  ATH_MSG_DEBUG("fillCache cache .... for RE ... iteration n. " << jobId);
273  MuonReadoutElement* re = readAlignPair.first;
274  if (re->detectorType() !=Trk::DetectorElemType::Mdt) {
275  continue;
276  }
277  MdtReadoutElement* mdt = dynamic_cast<MdtReadoutElement*>(re);
278  mdt->setBLinePar(bline);
279  }
280  }
281 
282 
283 #if defined(FLATTEN)
284  // We compile this package with optimization, even in debug builds; otherwise,
285  // the heavy use of Eigen makes it too slow. However, from here we may call
286  // to out-of-line Eigen code that is linked from other DSOs; in that case,
287  // it would not be optimized. Avoid this by forcing all Eigen code
288  // to be inlined here if possible.
290 #endif
291  double
293  if (getStationName()[0] == 'T' || getStationName()[0] == 'C') return 0.; // TGC and CSC stations
294  double Rsize = 0.;
295 
297  bool first = true;
298  int nmdt = 0;
299  ATH_MSG_DEBUG("RsizeMdtStation for " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
300  << " nRE = " << nMuonReadoutElements());
301 
302  for (int j = 1; j < 30; ++j) {
303  const MuonReadoutElement* activeComponent = getMuonReadoutElement(j);
304  if (!activeComponent) continue;
305  if (activeComponent->detectorType() !=Trk::DetectorElemType::Mdt) {
306  continue;
307  }
308  ++nmdt;
309  Rsize += activeComponent->getRsize() / 2.;
310  Rpos = activeComponent->toParentStation().translation();
311  if (first) {
312  RposFirst = Rpos;
313  first = false;
314  } else {
315  if (barrel())
316  Rsize += std::abs(Rpos.x() - RposFirst.x());
317  else
318  Rsize += std::abs(Rpos.y() - RposFirst.y());
319  }
320  }
321  if (nmdt == 1) Rsize = 2. * Rsize;
322  return Rsize;
323  }
324  double MuonStation::ZsizeMdtStation() const {
325  if (getStationName()[0] == 'T' || getStationName()[0] == 'C') return 0.; // TGC and CSC stations
326  double Zsize = 0.;
327 
329  bool first = true;
330  int nmdt = 0;
331 
332 
333  ATH_MSG_DEBUG("ZsizeMdtStation for " << getStationType() << " at zi/fi " << getEtaIndex() << "/" << getPhiIndex()
334  << " nRE = " << nMuonReadoutElements());
335 
336  for (int j = 1; j < 30; ++j) {
337  const MuonReadoutElement* activeComponent = getMuonReadoutElement(j);
338  if (!activeComponent) continue;
339  if (activeComponent->detectorType() !=Trk::DetectorElemType::Mdt) {
340  continue;
341  }
342  ++nmdt;
343 
344  Zsize += activeComponent->getZsize() / 2.;
345  Zpos = activeComponent->toParentStation() * Amg::Vector3D(0., 0., 0.);
346  if (first) {
347  ZposFirst = Zpos;
348  first = false;
349  } else {
350  if (barrel())
351  Zsize += std::abs(Zpos.z() - ZposFirst.z());
352  else
353  Zsize += std::abs(Zpos.x() - ZposFirst.x());
354  }
355  }
356  if (nmdt == 1) Zsize = 2. * Zsize;
357 
358  return Zsize;
359  }
360 
361  bool MuonStation::barrel() const {
362  return getStationName()[0] == 'B';
363  }
364  bool MuonStation::endcap() const { return !barrel(); }
365 
367  if (!m_XTomoData) {
368  ATH_MSG_WARNING("No Mdt AsBuilt parameters for chamber " << getStationName());
369  }
370  return m_XTomoData;
371  }
372 
373  void MuonStation::setMdtAsBuiltParams(const MdtAsBuiltPar* xtomo) {
374  m_XTomoData = xtomo;
375  refreshCache();
376  }
377  void MuonStation::setPhysVol(const PVLink& vol) { m_physVol = vol; }
378  PVConstLink MuonStation::getPhysVol() const {return m_physVol; }
379  PVLink MuonStation::getPhysVol() { return m_physVol; }
380 } // 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:188
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
MuonGM::MuonStation::fillCache
void fillCache()
Definition: MuonStation.cxx:253
MuonGM::MuonStation::getPhysVol
PVConstLink getPhysVol() const
Definition: MuonStation.cxx:381
MuonGM::MuonStation::m_hasBLines
bool m_hasBLines
Definition: MuonStation.h:152
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:81
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:376
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:86
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:367
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::getComponentAlTransf
GeoAlignableTransform * getComponentAlTransf(int jobIndex) const
Definition: MuonStation.cxx:173
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:163
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:51
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:266
MuonGM::MuonStation::barrel
bool barrel() const
Definition: MuonStation.cxx:364
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:271
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:140
MuonGM::MdtReadoutElement::setBLinePar
void setBLinePar(const BLinePar *bLine)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MdtReadoutElement.cxx:958
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:380
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:178
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:238
MuonGM::MuonStation::RsizeMdtStation
double RsizeMdtStation() const
Definition: MuonStation.cxx:295
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:536
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:369
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:131
MuonGM::MuonStation::ZsizeMdtStation
double ZsizeMdtStation() const
Definition: MuonStation.cxx:327
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