ATLAS Offline Software
MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONREADOUTGEOMETRY_STGCREADOUTELEMENT_H
6 #define MUONREADOUTGEOMETRY_STGCREADOUTELEMENT_H
7 
8 #include <string>
9 #include <utility>
10 
18 
19 
21 
22 namespace MuonGM {
29  public:
30  friend class ::MuonReadoutGeomCnvAlg;
31 
33  sTgcReadoutElement(GeoVFullPhysVol* pv,
34  const std::string& stName,
35  int zi, int fi, int mL, MuonDetectorManager* mgr);
36 
39 
41  virtual bool containsId(const Identifier& id) const override final;
42 
45  virtual double distanceToReadout(const Amg::Vector2D& pos, const Identifier& id) const override final;
46 
49  virtual int stripNumber(const Amg::Vector2D& pos, const Identifier& id) const override final;
50 
53  double channelPitch(const Identifier& id) const;
54 
57  virtual bool stripPosition(const Identifier& id, Amg::Vector2D& pos) const override final;
58 
59  bool stripGlobalPosition(const Identifier& id, Amg::Vector3D& gpos) const;
60 
62  int padNumber(const Amg::Vector2D& pos, const Identifier& id) const;
63 
65  int wireNumber(const Amg::Vector2D& pos, const Identifier& id) const;
66 
70  double wirePitch(int gas_gap = 1) const;
71 
73  double positionFirstWire(const Identifier& id) const;
74 
76  int numberOfWires(const Identifier& id) const;
77 
79  bool padPosition(const Identifier& id, Amg::Vector2D& pos) const;
80 
82  bool padGlobalPosition(const Identifier& id, Amg::Vector3D& gpos) const;
83 
85  bool padCorners(const Identifier& id, std::array<Amg::Vector2D,4>& corners) const;
86 
88  bool padGlobalCorners(const Identifier& id, std::array<Amg::Vector3D, 4>& gcorners) const;
89 
93  bool isEtaZero(const Identifier& id, const Amg::Vector2D& localPosition) const;
94 
96  virtual int numberOfLayers(bool) const override final;
97 
99  virtual int numberOfStrips(const Identifier& layerId) const override final;
100  virtual int numberOfStrips(int, bool measuresPhi) const override final;
101 
103  int numberOfPads(const Identifier& layerId) const;
104 
107  int maxPadNumber(const Identifier& layerId) const;
108 
113  virtual bool spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector2D& pos) const override final;
114 
118  virtual bool spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector3D& pos) const override final;
119 
123  void spacePointPosition(const Amg::Vector2D& phiPos, const Amg::Vector2D& etaPos, Amg::Vector2D& pos) const;
124 
131  void spacePointPosition(const Identifier& layerId, double locXpos, double locYpos, Amg::Vector3D& pos) const;
132 
135 
137  virtual void fillCache() override final;
138 
140  virtual int surfaceHash(const Identifier& id) const override final;
141 
143  int surfaceHash(int gasGap, int channelType) const;
144 
146  virtual int layerHash(const Identifier& id) const override;
147 
149  // int layerHash( int gasGap) const; // does not fit in the scheme ( layer hash needs to follow surface hash )
150 
152  virtual int boundaryHash(const Identifier& id) const override final;
153 
155  virtual bool measuresPhi(const Identifier& id) const override final;
156 
158  void initDesign(double thickness);
159 
162 
164  const MuonChannelDesign* getDesign(int gasGap, int channelType) const;
165 
169 
172 
174  void setChamberLayer(int ml) { m_ml = ml; }
175 
176  // double getSectorOpeningAngle(bool isLargeSector);
177 
180  const Amg::Transform3D& getDelta() const { return m_delta; }
181  void setDelta(const ALinePar& aline);
182 
184  void setBLinePar(const BLinePar& bLine);
185 
187  void posOnDefChamber(Amg::Vector3D& locPosML) const;
188 
189  bool has_ALines() const { return (m_ALinePar != nullptr); }
190  bool has_BLines() const { return (m_BLinePar != nullptr); }
191  const ALinePar* getALinePar() const { return m_ALinePar; }
192  const BLinePar* getBLinePar() const { return m_BLinePar; }
193  void clearALinePar();
194  void clearBLinePar() { m_BLinePar = nullptr; }
195 
196  // Amdb local (szt) to global coord
197  virtual Amg::Vector3D AmdbLRSToGlobalCoords(const Amg::Vector3D& x) const override final { return AmdbLRSToGlobalTransform()*x; }
199  // Global to Amdb local (szt) coord
200  virtual Amg::Vector3D GlobalToAmdbLRSCoords(const Amg::Vector3D& x) const override final { return GlobalToAmdbLRSTransform()*x; }
201  virtual Amg::Transform3D GlobalToAmdbLRSTransform() const override final { return AmdbLRSToGlobalTransform().inverse(); }
202 
203  static double triggerBandIdToRadius(bool isLarge, int triggerBand);
204 
205  private:
206 
207  void initDesignFromSQLite(double thickness);
208 
209  void initDesignFromAGDD(double thickness);
210 
212  std::array<MuonChannelDesign,4> m_phiDesign{};
213  std::array<MuonChannelDesign,4> m_etaDesign{};
214  std::array<MuonPadDesign,4> m_padDesign{};
215 
216  static constexpr int m_nlayers{4};
217  int m_ml{0};
218  double m_offset{0.};
219 
220  double m_sWidthChamber{0.}; // bottom base length (full chamber)
221  double m_lWidthChamber{0.}; // top base length (full chamber)
222  double m_lengthChamber{0.}; // radial size (full chamber)
223  double m_tckChamber{0.}; // thickness (full chamber)
224  bool m_diamondShape{false};
225  const ALinePar* m_ALinePar{nullptr};
226  const BLinePar* m_BLinePar{nullptr};
227  Amg::Transform3D m_delta{Amg::Transform3D::Identity()};
228 
229  // transforms (RE->layer)
230  std::array<Amg::Transform3D, 4> m_Xlg{make_array<Amg::Transform3D, 4>(Amg::Transform3D::Identity())};
231 
232 
233  // The radial positions of the trigger bands cannot be derived from the readout geometry, therefore hard-coding them for now
234  //Position of Band IDs for Large sectors
235  static constexpr std::array<double, 94> LBANDIDSP = {
236  10, 10, 10, 10, 10, 10, 1156.72, 1187.98, 1231.87, 1271.34, 1312.87, 1354.56, 1396.38, 1438.07,
237  1479.73, 1521.44, 1563.11, 1604.8, 1646.48, 1688.02, 1729.84, 1771.51, 1813.2, 1854.89, 1896.57, 1938.26, 1979.93, 2021.61,
238  2063.14, 2104.98, 2146.55, 2181.64, 2209.01, 2251.65, 2282.54, 2313.27, 2356.24, 2396.73, 2438.29, 2480.09, 2521.75, 2563.46,
239  2605.11, 2646.85, 2688.48, 2730.19, 2771.86, 2813.41, 2855.21, 2896.93, 2938.61, 2980.26, 3021.95, 3063.63, 3105.31, 3146.98,
240  3188.85, 3230.37, 3272.05, 3313.77, 3353.77, 3376.19, 3426.09, 3464.49, 3506.78, 3563.91, 3589.03, 3626.17, 3667.84, 3709.56,
241  3751.33, 3792.92, 3834.58, 3876.27, 3917.9, 3959.62, 4001.29, 4043.03, 4084.66, 4126.39, 4168.05, 4209.74, 4251.38, 4293.16,
242  4334.72, 4376.47, 4417.54, 4459.75, 4496.31, 4543.27, 4584.77, 4626.47, 4668.25, 4701.14
243  };
244 
245  //Position of Band IDs for Small Sector
246  static constexpr std::array<double, 92> SBANDIDSP = {
247  10.0, 10.0, 958.077, 998.248, 1037.405, 1076.535, 1115.69, 1154.82, 1193.97, 1233.135, 1272.265, 1311.395,
248  1350.59, 1389.705, 1428.865, 1468.01, 1507.175, 1546.305, 1585.435, 1624.58, 1663.71, 1702.895, 1742.055,
249  1781.165, 1820.315, 1859.44, 1898.575, 1937.75, 1976.885, 2016.04, 2055.15, 2094.345, 2136.125, 2172.61,
250  2217.68, 2255.125, 2316.115, 2348.91, 2388.06, 2427.245, 2466.385, 2505.515, 2544.69, 2583.8, 2622.99,
251  2662.115, 2701.31, 2740.395, 2779.55, 2818.715, 2857.905, 2897.0, 2936.185, 2975.315, 3014.47, 3053.615,
252  3092.775, 3131.895, 3171.075, 3210.225, 3249.375, 3288.485, 3317.74, 3347.075, 3396.65, 3440.175, 3475.575,
253  3540.81, 3581.97, 3621.13, 3660.285, 3699.41, 3738.535, 3777.73, 3816.89, 3856.055, 3895.105, 3934.3, 3974.34,
254  4012.565, 4051.71, 4090.865, 4130.04, 4169.145, 4208.285, 4247.55, 4286.65, 4320.075, 4364.84, 4404.12, 4443.14, 4482.29
255  };
256 
257  };
258 
259  inline int sTgcReadoutElement::surfaceHash(const Identifier& id) const {
261  }
262 
263  inline int sTgcReadoutElement::surfaceHash(int gasGap, int channelType) const {
264  return (gasGap - 1) * 3 + (2 - channelType); // assumes channelType=2 (wires), 1(strips), 0(pads)
265  }
266 
267  inline int sTgcReadoutElement::layerHash(const Identifier& id) const {
268  return surfaceHash(id); // don't have a choice here : rewrite MuonClusterReadoutElement first
269  }
270 
271  inline int sTgcReadoutElement::boundaryHash(const Identifier& id) const {
272  int iphi = m_idHelper.channelType(id) != sTgcIdHelper::sTgcChannelTypes::Strip; // wires and pads have locX oriented along phi
273  if (std::abs(getStationEta()) < 3) iphi += 2 * (m_idHelper.gasGap(id) - 1);
274  return iphi;
275  }
276 
277  inline bool sTgcReadoutElement::measuresPhi(const Identifier& id) const {
278  return (m_idHelper.channelType(id) != sTgcIdHelper::sTgcChannelTypes::Strip);
279  }
280 
282  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Strip) return &(m_etaDesign[m_idHelper.gasGap(id) - 1]);
283  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) return &(m_phiDesign[m_idHelper.gasGap(id) - 1]);
284  return nullptr;
285  }
286 
288  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) return &(m_padDesign[m_idHelper.gasGap(id) - 1]);
289  return nullptr;
290  }
291 
293  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) return &(m_padDesign[m_idHelper.gasGap(id) - 1]);
294  return nullptr;
295  }
296 
297  inline const MuonChannelDesign* sTgcReadoutElement::getDesign(int gasGap, int channelType) const {
298  if (channelType == 1) return &(m_etaDesign[gasGap - 1]);
299  if (channelType == 2) return &(m_phiDesign[gasGap - 1]);
300  return 0;
301  }
302 
303  inline const MuonPadDesign* sTgcReadoutElement::getPadDesign(int gasGap) const { return &(m_padDesign[gasGap - 1]); }
304 
305  inline double sTgcReadoutElement::distanceToReadout(const Amg::Vector2D& pos, const Identifier& id) const {
306  const MuonChannelDesign* design = getDesign(id);
307  if (!design) return -10000.;
308  return design->distanceToReadout(pos);
309  }
310 
311  inline int sTgcReadoutElement::stripNumber(const Amg::Vector2D& pos, const Identifier& id) const {
312  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) return padNumber(pos, id);
313 
314  const MuonChannelDesign* design = getDesign(id);
315  if (!design) {
316  ATH_MSG_WARNING("Cannot associate the strip number for "<<Amg::toString(pos)<<" in layer "
317  <<idHelperSvc()->toStringGasGap(id));
318  return -1;
319  }
320  return design->channelNumber(pos);
321  }
322 
324  if (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Pad) return padPosition(id, pos);
325 
326  const MuonChannelDesign* design = getDesign(id);
327  if (!design) {
328  ATH_MSG_WARNING("Cannot determine the strip postion for "<<idHelperSvc()->toString(id));
329  return false;
330  }
331  return design->center(m_idHelper.channel(id), pos);
332  }
333 
336  if (!stripPosition(id, lpos)) return false;
337  surface(id).localToGlobal(lpos, Amg::Vector3D::Zero(), gpos);
338  return true;
339  }
340 
342  const MuonPadDesign* design = getPadDesign(id);
343  if (!design){
344  ATH_MSG_WARNING("Cannot determine the pad position for "<<idHelperSvc()->toString(id));
345  return false;
346  }
347  int padEta = m_idHelper.padEta(id);
348  int padPhi = m_idHelper.padPhi(id);
349 
350  return design->channelPosition(std::make_pair(padEta, padPhi), pos);
351  }
352 
353  inline bool sTgcReadoutElement::padGlobalPosition(const Identifier& id, Amg::Vector3D& gpos) const {
355  if (!padPosition(id, lpos)) return false;
356  surface(id).localToGlobal(lpos, Amg::Vector3D::Zero(), gpos);
357  return true;
358  }
359 
360  inline bool sTgcReadoutElement::padCorners(const Identifier& id, std::array<Amg::Vector2D, 4>& corners) const {
361  const MuonPadDesign* design = getPadDesign(id);
362  if (!design) {
363  ATH_MSG_WARNING("Cannot find the pad corners for "<<idHelperSvc()->toString(id));
364  return false;
365  }
366  int padEta = m_idHelper.padEta(id);
367  int padPhi = m_idHelper.padPhi(id);
368 
369  return design->channelCorners(std::make_pair(padEta, padPhi), corners);
370  }
371 
372  inline bool sTgcReadoutElement::padGlobalCorners(const Identifier& id, std::array<Amg::Vector3D, 4>& gcorners) const {
373  std::array<Amg::Vector2D,4> lcorners{make_array<Amg::Vector2D, 4>(Amg::Vector2D::Zero())};
374  if (!padCorners(id, lcorners)) {
375  return false;
376  }
377  for (size_t c = 0; c < lcorners.size() ; ++c) {
378  surface(id).localToGlobal(lcorners[c], Amg::Vector3D::Zero(), gcorners[c]);
379  }
380  return true;
381  }
382 
383  // This function returns true if we are in the eta 0 region of QL1/QS1
384  inline bool sTgcReadoutElement::isEtaZero(const Identifier& id, const Amg::Vector2D& localPosition) const {
385  // False if not a QL1 or QS1 quadruplet
386  if (std::abs(m_idHelper.stationEta(id)) != 1) return false;
387  const MuonChannelDesign* wireDesign = (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) ?
388  getDesign(id) :
391  m_idHelper.gasGap(id),
392  sTgcIdHelper::sTgcChannelTypes::Wire,
393  1));
394  if (!wireDesign) {
395  ATH_MSG_WARNING("Cannot determine whether the pos "<<Amg::toString(localPosition)<<" is etaZero() for "
396  <<idHelperSvc()->toString(id));
397  return false;
398  }
399 
400  // Require the x coordinate for strips, and the y coordinate for wires and pads
401  double lpos = (m_idHelper.channelType(id) == sTgcIdHelper::sTgcChannelTypes::Strip) ?
402  localPosition.x() : localPosition.y();
403  if (lpos < 0.5 * wireDesign->xSize() - wireDesign->wireCutout) return true;
404 
405  return false;
406  }
407 
408  inline int sTgcReadoutElement::numberOfLayers(bool) const { return m_nlayers; }
409 
410  inline int sTgcReadoutElement::numberOfStrips(const Identifier& layerId) const {
411  return numberOfStrips(m_idHelper.gasGap(layerId) - 1,
412  m_idHelper.channelType(layerId) == sTgcIdHelper::sTgcChannelTypes::Wire);
413  }
414 
415  inline int sTgcReadoutElement::numberOfStrips(int lay, bool measPhi) const {
416  if (lay > -1 && lay < m_nlayers) { return !measPhi ? m_etaDesign[lay].nch : m_phiDesign[lay].nGroups; }
417  return -1;
418  }
419 
420  inline int sTgcReadoutElement::numberOfPads(const Identifier& layerId) const {
421  const MuonPadDesign* design = getPadDesign(layerId);
422  if (!design) {
423  ATH_MSG_WARNING("no pad design found when trying to get the number of pads "<<idHelperSvc()->toString(layerId));
424  return 0;
425  }
426  return design->nPadColumns * design->nPadH;
427  }
428 
429  inline int sTgcReadoutElement::maxPadNumber(const Identifier& layerId) const {
430  const MuonPadDesign* design = getPadDesign(layerId);
431  if (!design) {
432  ATH_MSG_WARNING("no pad design found when trying to get the largest pad number "<<idHelperSvc()->toString(layerId));
433  return 0;
434  }
435  return (design->nPadColumns - 1) * m_idHelper.padEtaMax() + design->nPadH;
436  }
437 
438  inline bool sTgcReadoutElement::spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector2D& pos) const {
440  if (!stripPosition(phiId, phiPos) || !stripPosition(etaId, etaPos)) return false;
441  spacePointPosition(phiPos, etaPos, pos);
442  return true;
443  }
444 
445  inline bool sTgcReadoutElement::spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector3D& pos) const {
447  spacePointPosition(phiId, etaId, lpos);
448  surface(phiId).localToGlobal(lpos, pos, pos);
449  return true;
450  }
451 
452  inline void sTgcReadoutElement::spacePointPosition(const Amg::Vector2D& phiPos, const Amg::Vector2D& etaPos, Amg::Vector2D& pos) const {
453  pos[0] = phiPos.x();
454  pos[1] = etaPos.x();
455  }
456 
457 
458  inline double sTgcReadoutElement::triggerBandIdToRadius(bool isLarge, int triggerBand) {
459  if(isLarge){
460  return LBANDIDSP[triggerBand];
461  } else {
462  return SBANDIDSP[triggerBand];
463  }
464  };
465 
466 } // namespace MuonGM
467 
468 #endif // MUONREADOUTGEOMETRY_STGCREADOUTELEMENT_H
MuonGM::sTgcReadoutElement::padCorners
bool padCorners(const Identifier &id, std::array< Amg::Vector2D, 4 > &corners) const
pad corners
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:360
MuonGM::sTgcReadoutElement::initDesignFromAGDD
void initDesignFromAGDD(double thickness)
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:274
sTgcIdHelper::multilayer
int multilayer(const Identifier &id) const
Definition: sTgcIdHelper.cxx:1017
MuonReadoutGeomCnvAlg
The MuonReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the lega...
Definition: MuonReadoutGeomCnvAlg.h:31
MuonGM::MuonPadDesign
Parameters defining the design of the readout sTGC pads.
Definition: MuonPadDesign.h:40
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
Muon::IMuonIdHelperSvc::stgcIdHelper
virtual const sTgcIdHelper & stgcIdHelper() const =0
access to TgcIdHelper
MuonGM::MuonReadoutElement::absTransform
const Amg::Transform3D & absTransform() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:210
MuonGM::MuonPadDesign::channelPosition
bool channelPosition(const std::pair< int, int > &pad, Amg::Vector2D &pos) const
calculate local channel position for a given channel number
Definition: MuonPadDesign.cxx:112
sTgcIdHelper.h
MuonGM::sTgcReadoutElement::m_ALinePar
const ALinePar * m_ALinePar
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:225
MuonGM::sTgcReadoutElement::sTgcReadoutElement
sTgcReadoutElement(GeoVFullPhysVol *pv, const std::string &stName, int zi, int fi, int mL, MuonDetectorManager *mgr)
constructor
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:58
MuonGM::sTgcReadoutElement::numberOfStrips
virtual int numberOfStrips(const Identifier &layerId) const override final
number of strips per layer
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:410
MuonGM::sTgcReadoutElement::wireNumber
int wireNumber(const Amg::Vector2D &pos, const Identifier &id) const
wire number corresponding to local position
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:646
MuonGM::sTgcReadoutElement::getDelta
const Amg::Transform3D & getDelta() const
read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) re...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:180
ALinePar
Definition: ALinePar.h:15
MuonGM::MuonChannelDesign::channelNumber
int channelNumber(const Amg::Vector2D &pos) const
calculate local channel number, range 1=nstrips like identifiers. Returns -1 if out of range
Definition: MuonChannelDesign.h:198
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
sTgcIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channelType, int channel) const
Definition: sTgcIdHelper.cxx:886
MuonGM::sTgcReadoutElement::m_BLinePar
const BLinePar * m_BLinePar
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:226
MuonGM::sTgcReadoutElement::measuresPhi
virtual bool measuresPhi(const Identifier &id) const override final
returns whether the current identifier corresponds to a phi measurement
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:277
MuonGM::sTgcReadoutElement::m_sWidthChamber
double m_sWidthChamber
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:220
MuonGM::sTgcReadoutElement::m_delta
Amg::Transform3D m_delta
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:227
MuonGM::sTgcReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:281
MuonGM::sTgcReadoutElement::AmdbLRSToGlobalCoords
virtual Amg::Vector3D AmdbLRSToGlobalCoords(const Amg::Vector3D &x) const override final
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:197
MuonGM::sTgcReadoutElement::initDesign
void initDesign(double thickness)
initialize the design classes for this readout element
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:425
MuonGM::MuonChannelDesign::wireCutout
double wireCutout
Definition: MuonChannelDesign.h:41
MuonGM::MuonChannelDesign::distanceToReadout
double distanceToReadout(const Amg::Vector2D &pos) const
distance to readout
Definition: MuonChannelDesign.h:190
MuonGM::sTgcReadoutElement::isEtaZero
bool isEtaZero(const Identifier &id, const Amg::Vector2D &localPosition) const
is eta=0 of QL1 or QS1? Support for Strip and Pad cathodes is valid when the Strip,...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:384
MuonGM::sTgcReadoutElement::has_ALines
bool has_ALines() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:189
MuonGM::sTgcReadoutElement::maxPadNumber
int maxPadNumber(const Identifier &layerId) const
Get largest pad number, which is different to the number of pads in a gas volume due to the pad numbe...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:429
MuonGM::sTgcReadoutElement::numberOfWires
int numberOfWires(const Identifier &id) const
Get the total number of wires (single wires) of a chamber.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:684
MuonGM::sTgcReadoutElement::numberOfPads
int numberOfPads(const Identifier &layerId) const
Get the number of pad per layer.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:420
MuonGM::sTgcReadoutElement::spacePointPosition
virtual bool spacePointPosition(const Identifier &phiId, const Identifier &etaId, Amg::Vector2D &pos) const override final
space point position for a given pair of phi and eta identifiers The LocalPosition is expressed in th...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:438
MuonGM::sTgcReadoutElement::m_offset
double m_offset
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:218
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
MuonGM::sTgcReadoutElement::getBLinePar
const BLinePar * getBLinePar() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:192
MuonGM::sTgcReadoutElement::m_padDesign
std::array< MuonPadDesign, 4 > m_padDesign
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:214
x
#define x
MuonGM::sTgcReadoutElement::initDesignFromSQLite
void initDesignFromSQLite(double thickness)
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:77
MuonGM::sTgcReadoutElement::triggerBandIdToRadius
static double triggerBandIdToRadius(bool isLarge, int triggerBand)
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:458
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::sTgcReadoutElement::fillCache
virtual void fillCache() override final
function to fill tracking cache
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:459
MuonGM::sTgcReadoutElement::padGlobalCorners
bool padGlobalCorners(const Identifier &id, std::array< Amg::Vector3D, 4 > &gcorners) const
pad global corners
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:372
MuonGM::sTgcReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position - should be renamed to channel position If the strip number is outside the range of va...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:323
MuonGM::sTgcReadoutElement::padNumber
int padNumber(const Amg::Vector2D &pos, const Identifier &id) const
pad number corresponding to local position
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:604
MuonGM::MuonPadDesign::nPadH
int nPadH
Definition: MuonPadDesign.h:68
MuonGM::MuonReadoutElement::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:136
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
MuonGM::sTgcReadoutElement::has_BLines
bool has_BLines() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:190
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
sTgcIdHelper::channel
int channel(const Identifier &id) const override
Definition: sTgcIdHelper.cxx:1027
MuonGM::sTgcReadoutElement::GlobalToAmdbLRSTransform
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const override final
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:201
MuonGM::sTgcReadoutElement::padGlobalPosition
bool padGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
pad global position
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:353
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
MuonGM::sTgcReadoutElement::surfaceHash
virtual int surfaceHash(const Identifier &id) const override final
returns the hash to be used to look up the surface and transform in the MuonClusterReadoutElement tra...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:259
MuonGM::sTgcReadoutElement::LBANDIDSP
static constexpr std::array< double, 94 > LBANDIDSP
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:235
MuonGM::sTgcReadoutElement::m_lWidthChamber
double m_lWidthChamber
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:221
MuonGM::sTgcReadoutElement::m_diamondShape
bool m_diamondShape
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:224
MuonGM::sTgcReadoutElement::posOnDefChamber
void posOnDefChamber(Amg::Vector3D &locPosML) const
transform a position (in chamber-frame coordinates) to the deformed-chamber geometry
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:751
MuonGM::sTgcReadoutElement
An sTgcReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station c...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:28
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
sTgcIdHelper::gasGap
int gasGap(const Identifier &id) const override
get the hashes
Definition: sTgcIdHelper.cxx:1020
MuonGM::sTgcReadoutElement::padPosition
bool padPosition(const Identifier &id, Amg::Vector2D &pos) const
pad position
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:341
MuonGM::sTgcReadoutElement::setDelta
void setDelta(const ALinePar &aline)
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:720
MuonClusterReadoutElement.h
BLinePar
Definition: BLinePar.h:14
MuonGM::sTgcReadoutElement::setChamberLayer
void setChamberLayer(int ml)
set methods only to be used by MuonGeoModel
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:174
MuonGM::sTgcReadoutElement::channelPitch
double channelPitch(const Identifier &id) const
Channel pitch.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:582
MuonGM::sTgcReadoutElement::clearALinePar
void clearALinePar()
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:736
MuonGM::sTgcReadoutElement::m_Xlg
std::array< Amg::Transform3D, 4 > m_Xlg
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:230
MuonGM::MuonChannelDesign::center
bool center(int channel, Amg::Vector2D &pos) const
STRIPS ONLY: Returns the center on the strip.
Definition: MuonChannelDesign.h:484
MuonGM::sTgcReadoutElement::containsId
virtual bool containsId(const Identifier &id) const override final
function to be used to check whether a given Identifier is contained in the readout element
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:560
sTgcIdHelper::padEtaMax
static int padEtaMax()
Definition: sTgcIdHelper.cxx:1056
MuonGM::sTgcReadoutElement::SBANDIDSP
static constexpr std::array< double, 92 > SBANDIDSP
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:246
MuonPadDesign.h
MuonGM::sTgcReadoutElement::numberOfLayers
virtual int numberOfLayers(bool) const override final
number of layers in phi/eta projection
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:408
MuonGM::sTgcReadoutElement::AmdbLRSToGlobalTransform
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const override final
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:198
MuonGM::sTgcReadoutElement::m_nlayers
static constexpr int m_nlayers
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:216
MuonGM::sTgcReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:334
MuonGM::sTgcReadoutElement::m_idHelper
const sTgcIdHelper & m_idHelper
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:211
sTgcIdHelper
Definition: sTgcIdHelper.h:55
MuonIdHelper::stationEta
int stationEta(const Identifier &id) const
Definition: MuonIdHelper.cxx:809
MuonGM::sTgcReadoutElement::m_tckChamber
double m_tckChamber
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:223
MuonGM::MuonPadDesign::nPadColumns
int nPadColumns
Definition: MuonPadDesign.h:69
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonDetectorManager.h
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
MuonChannelDesign.h
MuonGM::MuonClusterReadoutElement
Definition: MuonClusterReadoutElement.h:21
MuonGM::MuonChannelDesign
Definition: MuonChannelDesign.h:24
MuonGM::sTgcReadoutElement::stripNumber
virtual int stripNumber(const Amg::Vector2D &pos, const Identifier &id) const override final
strip number corresponding to local position.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:311
sTgcIdHelper::padPhi
int padPhi(const Identifier &id) const
Definition: sTgcIdHelper.cxx:679
MuonGM::sTgcReadoutElement::m_phiDesign
std::array< MuonChannelDesign, 4 > m_phiDesign
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:212
MuonGM::sTgcReadoutElement::getALinePar
const ALinePar * getALinePar() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:191
MuonGM::MuonPadDesign::channelCorners
bool channelCorners(const std::pair< int, int > &pad, CornerArray &corners) const
Definition: MuonPadDesign.cxx:157
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:49
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonGM::sTgcReadoutElement::boundaryHash
virtual int boundaryHash(const Identifier &id) const override final
returns the hash to be used to look up the normal and center in the MuonClusterReadoutElement trackin...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:271
MuonGM::sTgcReadoutElement::setBLinePar
void setBLinePar(const BLinePar &bLine)
read B-line (chamber-deformation) parameters
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:745
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
MuonGM::sTgcReadoutElement::positionFirstWire
double positionFirstWire(const Identifier &id) const
Get the local position of the first wire of the chamber corresponding to the identifier.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:667
python.changerun.pv
pv
Definition: changerun.py:81
GeoPrimitivesToStringConverter.h
checkFileSG.fi
fi
Definition: checkFileSG.py:65
MuonGM::sTgcReadoutElement::m_ml
int m_ml
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:217
sTgcIdHelper::padEta
int padEta(const Identifier &id) const
Definition: sTgcIdHelper.cxx:669
MuonGM::sTgcReadoutElement::GlobalToAmdbLRSCoords
virtual Amg::Vector3D GlobalToAmdbLRSCoords(const Amg::Vector3D &x) const override final
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:200
MuonGM::sTgcReadoutElement::m_etaDesign
std::array< MuonChannelDesign, 4 > m_etaDesign
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:213
MuonGM::sTgcReadoutElement::getPadDesign
const MuonPadDesign * getPadDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:287
MuonGM::sTgcReadoutElement::wirePitch
double wirePitch(int gas_gap=1) const
single wire pitch.
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:657
MuonGM::sTgcReadoutElement::localToGlobalCoords
Amg::Vector3D localToGlobalCoords(const Amg::Vector3D &locPos, Identifier id) const
simHit local (SD) To Global position - to be used by MuonGeoAdaprors only
Definition: MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx:701
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
MuonGM::sTgcReadoutElement::clearBLinePar
void clearBLinePar()
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:194
MuonGM::sTgcReadoutElement::~sTgcReadoutElement
~sTgcReadoutElement()
destructor
MuonGM::sTgcReadoutElement::distanceToReadout
virtual double distanceToReadout(const Amg::Vector2D &pos, const Identifier &id) const override final
distance to readout.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:305
MuonGM::sTgcReadoutElement::layerHash
virtual int layerHash(const Identifier &id) const override
returns the hash to be used to look up the normal and center in the MuonClusterReadoutElement trackin...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:267
sTgcIdHelper::channelType
int channelType(const Identifier &id) const
Definition: sTgcIdHelper.cxx:1022
python.compressB64.c
def c
Definition: compressB64.py:93
IGeoDbTagSvc.h
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
MuonGM::sTgcReadoutElement::m_lengthChamber
double m_lengthChamber
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:222