ATLAS Offline Software
MMReadoutElement.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONREADOUTGEOMETRY_MMREADOUTELEMENT_H
6 #define MUONREADOUTGEOMETRY_MMREADOUTELEMENT_H
7 
11 #include "CxxUtils/ArrayHelper.h"
13 
14 class BLinePar;
16 
17 namespace MuonGM {
24  public:
25  friend class ::MuonReadoutGeomCnvAlg;
27  MMReadoutElement(GeoVFullPhysVol* pv, const std::string& stName, int zi, int fi, int mL,
29 
32 
34  virtual bool containsId(const Identifier& id) const override final;
35 
38  virtual double distanceToReadout(const Amg::Vector2D& pos, const Identifier& id) const override final;
39 
42  virtual int stripNumber(const Amg::Vector2D& pos, const Identifier& id) const override final;
43 
46  virtual bool stripPosition(const Identifier& id, Amg::Vector2D& pos) const override final;
47  bool stripGlobalPosition(const Identifier& id, Amg::Vector3D& gpos) const;
48 
50  double stereoAngle(const Identifier& id) const;
51 
54  double stripLength(const Identifier& id) const;
55  double stripActiveLength(const Identifier& id) const;
56  double stripActiveLengthLeft(const Identifier& id) const;
57  double stripActiveLengthRight(const Identifier& id) const;
58 
61  bool insideActiveBounds(const Identifier& id, const Amg::Vector2D& locpos, double tol1 = 0., double tol2 = 0.) const;
62 
64  virtual int numberOfLayers(bool) const override;
65 
67  virtual int numberOfStrips(const Identifier& layerId) const override final;
68  virtual int numberOfStrips(int, bool measuresPhi) const override final;
69 
71  int numberOfMissingTopStrips(const Identifier& layerId) const;
72  int numberOfMissingBottomStrips(const Identifier& layerId) const;
73 
77  virtual bool spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector2D& pos) const override final;
78 
81  virtual bool spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector3D& pos) const override final;
84  Amg::Vector3D localToGlobalCoords(const Amg::Vector3D& locPos, const Identifier& id) const;
85 
89  bool spacePointPosition(const Identifier& layerId, const Amg::Vector2D& localPos, Amg::Vector3D& pos) const;
90 
92  virtual void fillCache() override final;
93 
95  virtual int surfaceHash(const Identifier& id) const override final;
96 
98  int surfaceHash(int gasGap, int measPhi) const;
99 
101  virtual int layerHash(const Identifier& id) const override final;
103  int layerHash(int gasGap) const;
104 
106  virtual int boundaryHash(const Identifier& id) const override final;
107 
109  virtual bool measuresPhi(const Identifier& id) const override final;
110 
112  void initDesign();
113 
116 
118  void setChamberLayer(int ml) { m_ml = ml; }
119 
122  const Amg::Transform3D& getDelta() const { return m_delta; }
123  void setDelta(const ALinePar& aline);
124 
126  void setBLinePar(const BLinePar& bLine);
127 
129  void posOnDefChamber(Amg::Vector3D& locPosML) const;
130 
131  bool has_ALines() const { return (m_ALinePar != nullptr); }
132  bool has_BLines() const { return (m_BLinePar != nullptr); }
133  const ALinePar* getALinePar() const { return m_ALinePar; }
134  const BLinePar* getBLinePar() const { return m_BLinePar; }
135  void clearALinePar();
136  void clearBLinePar() { m_BLinePar = nullptr; }
137  const std::array<int, 4> & getReadoutSide() const { return m_readoutSide; }
138 
139  // Amdb local (szt) to global coord
140  virtual Amg::Vector3D AmdbLRSToGlobalCoords(const Amg::Vector3D& x) const override final { return AmdbLRSToGlobalTransform()*x; }
142  // Global to Amdb local (szt) coord
143  virtual Amg::Vector3D GlobalToAmdbLRSCoords(const Amg::Vector3D& x) const override final { return GlobalToAmdbLRSTransform()*x; }
144  virtual Amg::Transform3D GlobalToAmdbLRSTransform() const override final { return AmdbLRSToGlobalTransform().inverse(); }
145 
146  private:
147 
148  void initDesignSqLite();
149 
151 
153  static constexpr PCBPassivation s_dummy_passiv{};
154  // MuonChannelDesign m_phiDesign;
155  std::array<MuonChannelDesign, 4> m_etaDesign{};
156 
157  int m_nlayers{0}; // #of gas gaps
158 
160 
161  int m_ml{0}; // multilayer (values: 1,2)
162 
163  // surface dimensions
164  double m_halfX{100.}; // 0.5*radial_size (active area)
165  double m_minHalfY{1900.}; // 0.5*bottom length (active area)
166  double m_maxHalfY{2000.}; // 0.5*top length (active area)
167  double m_offset{0.}; // radial dist. of active area center w.r.t. chamber center
168 
169  double m_sWidthChamber{0.}; // bottom base length (full chamber)
170  double m_lWidthChamber{0.}; // top base length (full chamber)
171  double m_lengthChamber{0.}; // radial size (full chamber)
172  double m_tckChamber{0.}; // thickness (full chamber)
173  Amg::Transform3D m_delta{Amg::Transform3D::Identity()};
174  const ALinePar* m_ALinePar{nullptr};
175  const BLinePar* m_BLinePar{nullptr};
176  std::array<int, 4> m_readoutSide{};
177  // transforms (RE->layer)
178  std::array<Amg::Transform3D, 4> m_Xlg{make_array<Amg::Transform3D,4>(Amg::Transform3D::Identity())};
179  };
180 
181  inline int MMReadoutElement::surfaceHash(const Identifier& id) const { return surfaceHash(m_idHelper.gasGap(id), 0); }
182 
183  inline int MMReadoutElement::surfaceHash(int gasGap, int /*measPhi*/) const { return gasGap - 1; } // measPhi not used
184 
185  inline int MMReadoutElement::layerHash(const Identifier& id) const { return layerHash(m_idHelper.gasGap(id)); }
186 
187  inline int MMReadoutElement::layerHash(int gasGap) const { return gasGap - 1; }
188 
189  inline int MMReadoutElement::boundaryHash(const Identifier& id) const { return layerHash(m_idHelper.gasGap(id)); }
190 
191  inline bool MMReadoutElement::measuresPhi(const Identifier& /*id*/) const { return false; }
192 
194  return &(m_etaDesign[layerHash(id)]);
195  }
196  inline double MMReadoutElement::distanceToReadout(const Amg::Vector2D& pos, const Identifier& id) const {
197  const MuonChannelDesign* design = getDesign(id);
198  if (!design) return -1.;
199  return design->distanceToReadout(pos);
200  }
201 
202  inline int MMReadoutElement::stripNumber(const Amg::Vector2D& pos, const Identifier& id) const {
203  // returns the position of the strip at pos, assuming the nominal geometry (no as-built conditions)
204  const MuonChannelDesign* design = getDesign(id);
205  if (!design) return -1;
206  return design->channelNumber(pos);
207  }
208 
210  const MuonChannelDesign* design = getDesign(id);
211  if (!design) return false;
212  return design->center(m_idHelper.channel(id), pos);
213  }
214 
215  inline double MMReadoutElement::stereoAngle(const Identifier& id) const {
216  const MuonChannelDesign* design = getDesign(id);
217  if (!design) return 0;
218  return design->stereoAngle();
219  }
220 
221  inline double MMReadoutElement::stripLength(const Identifier& id) const {
222  const MuonChannelDesign* design = getDesign(id);
223  if (!design) return -1;
224  return design->channelLength(m_idHelper.channel(id));
225  }
226 
227  inline double MMReadoutElement::stripActiveLength(const Identifier& id) const {
229  }
230 
231  inline double MMReadoutElement::stripActiveLengthLeft(const Identifier& id) const {
232  const MuonChannelDesign* design = getDesign(id);
233  if (!design) return -1;
234 
236  // Let's keep it for the moment as we have to think about proper treatmeant of the non-passivated stuff
237  // if (m_passivData && !passiv.valid) return -1;
238 
239  double l = design->channelHalfLength(m_idHelper.channel(id), true);
240  if (l < 0) return -1;
241  return std::max(0., l - design->passivatedLength(passiv.left, true));
242  }
243 
244  inline double MMReadoutElement::stripActiveLengthRight(const Identifier& id) const {
245  const MuonChannelDesign* design = getDesign(id);
246  if (!design) return -1;
247 
249  // Let's keep it for the moment as we have to think about proper treatmeant of the non-passivated stuff
250  // if (m_passivData && !passiv.valid) return -1;
251 
252  double l = design->channelHalfLength(m_idHelper.channel(id), false);
253  if (l < 0) return -1;
254  return std::max(0., l - design->passivatedLength(passiv.right, false));
255  }
256 
257  inline bool MMReadoutElement::insideActiveBounds(const Identifier& id, const Amg::Vector2D& locpos, double tol1, double tol2) const {
258  const MuonChannelDesign* design = getDesign(id);
259  if(!design) return false;
260  // Get the nearest strip number; not the time yet to check boundaries (in case of tolerance)
261  int stripNo = stripNumber(locpos, id);
262  if (stripNo < 0) stripNo = (locpos.x()<0) ? 1 : design->totalStrips;
264 
265  // ** Horizontal passivation: mask entire strips
266  //==============================================
267  int pcb = (stripNo-1)/1024 + 1; // starts from 1
268  int pcbStrip = stripNo % 1024;// - 1024*(pcb - 1);
270  // if(m_passivData && !pcbPassiv.valid) return false;
271  // the passivated width is constant along the PCB edge (not along y for stereo strips)
272  bool topPcb{pcb == 5 || (std::abs(getStationEta()) == 2 && pcb == 3)};
273  int pcbStripMin = 1 + (int)std::floor((design->passivatedHeight(pcbPassiv.bottom, pcb ==1) + 0.5*design->inputPitch - tol1)/design->inputPitch); // first pcb strip surviving passivation
274  int pcbStripMax = 1024 - (int)std::floor((design->passivatedHeight(pcbPassiv.top, topPcb) + 0.5*design->inputPitch - tol1)/design->inputPitch); // last pcb strip surviving passivation
275  if(pcbStrip < pcbStripMin || pcbStrip > pcbStripMax) return false;
276 
277  // ** Vertical passivation: cut strips from left and right
278  //=======================================
279  return bounds(id).inside(locpos, tol1, tol2 - design->passivatedLength(locpos[1]<0 ? pcbPassiv.left : pcbPassiv.right , locpos[1] < 0));
280  }
281 
282  inline bool MMReadoutElement::stripGlobalPosition(const Identifier& id, Amg::Vector3D& gpos) const {
284  if (!stripPosition(id, lpos)) return false;
285  surface(id).localToGlobal(lpos, Amg::Vector3D::Zero(), gpos);
286  return true;
287  }
288 
289  inline int MMReadoutElement::numberOfLayers(bool) const { return m_nlayers; }
290 
291  inline int MMReadoutElement::numberOfStrips(const Identifier& layerId) const { return m_etaDesign[layerHash(layerId)].totalStrips; }
292 
293  inline int MMReadoutElement::numberOfStrips(int lay, bool /*measPhi*/) const {
294  if (lay > -1 && lay < static_cast<int>(m_etaDesign.size()))
295  return m_etaDesign[lay].totalStrips;
296  else
297  return -1;
298  }
299 
301  const MuonChannelDesign* design = getDesign(id);
302  if (!design) return -1;
303  return design->numberOfMissingTopStrips();
304  }
305 
307  const MuonChannelDesign* design = getDesign(id);
308  if (!design) return -1;
309  return design->numberOfMissingBottomStrips();
310  }
311 
312  inline bool MMReadoutElement::spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector2D& pos) const {
313  if (!stripPosition(etaId, pos)) return false;
314  const MuonChannelDesign* phi_design = getDesign(phiId);
315  const MuonChannelDesign* eta_design = getDesign(etaId);
316  if (!phi_design || !eta_design) return false;
317  pos = phi_design->rotation() * eta_design->rotation().inverse()*pos;
318  return true;
319  }
320 
321  inline bool MMReadoutElement::spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector3D& pos) const {
323  spacePointPosition(phiId, etaId, lpos);
324  surface(phiId).localToGlobal(lpos, pos, pos);
325  return true;
326  }
327 
328 } // namespace MuonGM
329 
330 #endif // MUONREADOUTGEOMETRY_MMREADOUTELEMENT_H
MuonGM::MMReadoutElement::setDelta
void setDelta(const ALinePar &aline)
Definition: MMReadoutElement.cxx:361
MuonGM::MMReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position – local or global If the strip number is outside the range of valid strips,...
Definition: MMReadoutElement.h:209
MuonGM::MMReadoutElement::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: MMReadoutElement.cxx:330
MuonReadoutGeomCnvAlg
The MuonReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the lega...
Definition: MuonReadoutGeomCnvAlg.h:31
MuonGM::MuonChannelDesign::inputPitch
double inputPitch
Definition: MuonChannelDesign.h:35
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
Trk::SurfaceBounds::inside
virtual bool inside(const Amg::Vector2D &locpo, double tol1=0., double tol2=0.) const =0
Each Bounds has a method inside, which checks if a LocalPosition is inside the bounds.
MuonGM::MuonReadoutElement::absTransform
const Amg::Transform3D & absTransform() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:210
max
#define max(a, b)
Definition: cfImp.cxx:41
MuonGM::MMReadoutElement::m_readoutSide
std::array< int, 4 > m_readoutSide
Definition: MMReadoutElement.h:176
MuonGM::MMReadoutElement::GlobalToAmdbLRSCoords
virtual Amg::Vector3D GlobalToAmdbLRSCoords(const Amg::Vector3D &x) const override final
Definition: MMReadoutElement.h:143
MuonGM::MMReadoutElement::insideActiveBounds
bool insideActiveBounds(const Identifier &id, const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const
boundary check Wrapper Trk::PlaneSurface::insideBounds() taking into account the passivated width
Definition: MMReadoutElement.h:257
MuonGM::MMReadoutElement::initDesign
void initDesign()
initialize the design classes for this readout element
Definition: MMReadoutElement.cxx:220
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
MuonGM::MMReadoutElement::AmdbLRSToGlobalTransform
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const override final
Definition: MMReadoutElement.h:141
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
MuonGM::MMReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MMReadoutElement.h:193
MuonGM::MMReadoutElement::initDesignSqLite
void initDesignSqLite()
Definition: MMReadoutElement.cxx:136
MuonGM::MuonChannelDesign::numberOfMissingTopStrips
int numberOfMissingTopStrips() const
Returns the number of missing top strips.
Definition: MuonChannelDesign.h:476
MuonGM::MMReadoutElement::fillCache
virtual void fillCache() override final
function to fill tracking cache
Definition: MMReadoutElement.cxx:295
MuonGM::MuonChannelDesign::distanceToReadout
double distanceToReadout(const Amg::Vector2D &pos) const
distance to readout
Definition: MuonChannelDesign.h:190
MuonGM::MMReadoutElement::GlobalToAmdbLRSTransform
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const override final
Definition: MMReadoutElement.h:144
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
MuonGM::MMReadoutElement::m_Xlg
std::array< Amg::Transform3D, 4 > m_Xlg
Definition: MMReadoutElement.h:178
MuonGM::MMReadoutElement::m_passivData
const NswPassivationDbData * m_passivData
Definition: MMReadoutElement.h:159
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Muon::IMuonIdHelperSvc::mmIdHelper
virtual const MmIdHelper & mmIdHelper() const =0
access to CscIdHelper
NswPassivationDbData::getPassivation
const PCBPassivation & getPassivation(const Identifier &id) const
Definition: NswPassivationDbData.cxx:47
x
#define x
MuonGM::MMReadoutElement::stripActiveLength
double stripActiveLength(const Identifier &id) const
Definition: MMReadoutElement.h:227
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::MMReadoutElement::has_BLines
bool has_BLines() const
Definition: MMReadoutElement.h:132
MuonGM::MMReadoutElement::m_sWidthChamber
double m_sWidthChamber
Definition: MMReadoutElement.h:169
MuonGM::MuonReadoutElement::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:136
MuonGM::MMReadoutElement::m_tckChamber
double m_tckChamber
Definition: MMReadoutElement.h:172
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
MuonGM::MMReadoutElement::stripActiveLengthRight
double stripActiveLengthRight(const Identifier &id) const
Definition: MMReadoutElement.h:244
MuonGM::MMReadoutElement::localToGlobalCoords
Amg::Vector3D localToGlobalCoords(const Amg::Vector3D &locPos, const Identifier &id) const
simHit local (SD) To Global position - to be used by MuonGeoAdaprors only
Definition: MMReadoutElement.cxx:345
MuonGM::MMReadoutElement::m_nlayers
int m_nlayers
Definition: MMReadoutElement.h:157
NswPassivationDbData::PCBPassivation
Helper struct to save the four passivation values of each PCB.
Definition: NswPassivationDbData.h:24
NswPassivationDbData
Definition: NswPassivationDbData.h:20
NswPassivationDbData.h
MuonGM::MMReadoutElement::~MMReadoutElement
~MMReadoutElement()
destructor
MuonGM::MMReadoutElement::has_ALines
bool has_ALines() const
Definition: MMReadoutElement.h:131
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
MuonGM::MMReadoutElement::getBLinePar
const BLinePar * getBLinePar() const
Definition: MMReadoutElement.h:134
MuonGM::MMReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition: MMReadoutElement.h:282
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGM::MMReadoutElement::m_BLinePar
const BLinePar * m_BLinePar
Definition: MMReadoutElement.h:175
ArrayHelper.h
MuonGM::MuonChannelDesign::passivatedLength
double passivatedLength(double passivWidth, bool left) const
top edge -> left edge bottom edge -> right edge a rectangle with height H parallel to the inclined ed...
Definition: MuonChannelDesign.h:507
MuonGM::MMReadoutElement::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: MMReadoutElement.h:181
MuonGM::MMReadoutElement::m_minHalfY
double m_minHalfY
Definition: MMReadoutElement.h:165
NswPassivationDbData::PCBPassivation::bottom
double bottom
Definition: NswPassivationDbData.h:28
MuonGM::MMReadoutElement::clearBLinePar
void clearBLinePar()
Definition: MMReadoutElement.h:136
MuonGM::MMReadoutElement::setBLinePar
void setBLinePar(const BLinePar &bLine)
read B-line (chamber-deformation) parameters
Definition: MMReadoutElement.cxx:385
MuonClusterReadoutElement.h
MuonGM::MMReadoutElement::m_delta
Amg::Transform3D m_delta
Definition: MMReadoutElement.h:173
MuonGM::MMReadoutElement::m_lengthChamber
double m_lengthChamber
Definition: MMReadoutElement.h:171
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
MuonGM::MMReadoutElement::clearALinePar
void clearALinePar()
Definition: MMReadoutElement.cxx:376
BLinePar
Definition: BLinePar.h:14
MuonGM::MMReadoutElement::setChamberLayer
void setChamberLayer(int ml)
set methods only to be used by MuonGeoModel
Definition: MMReadoutElement.h:118
MuonGM::MuonChannelDesign::center
bool center(int channel, Amg::Vector2D &pos) const
STRIPS ONLY: Returns the center on the strip.
Definition: MuonChannelDesign.h:484
MuonGM::MMReadoutElement::boundaryHash
virtual int boundaryHash(const Identifier &id) const override final
returns the hash function to be used to look up the surface boundary for a given identifier
Definition: MMReadoutElement.h:189
MuonGM::MMReadoutElement::getDelta
const Amg::Transform3D & getDelta() const
read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) re...
Definition: MMReadoutElement.h:122
MuonGM::MMReadoutElement::m_etaDesign
std::array< MuonChannelDesign, 4 > m_etaDesign
Definition: MMReadoutElement.h:155
MuonGM::MMReadoutElement::numberOfStrips
virtual int numberOfStrips(const Identifier &layerId) const override final
number of strips per layer
Definition: MMReadoutElement.h:291
NswPassivationDbData::PCBPassivation::top
double top
Definition: NswPassivationDbData.h:27
MuonGM::MMReadoutElement::distanceToReadout
virtual double distanceToReadout(const Amg::Vector2D &pos, const Identifier &id) const override final
distance to readout.
Definition: MMReadoutElement.h:196
MuonGM::MMReadoutElement::m_idHelper
const MmIdHelper & m_idHelper
Definition: MMReadoutElement.h:150
MuonGM::MMReadoutElement::m_ml
int m_ml
Definition: MMReadoutElement.h:161
MuonGM::MuonChannelDesign::totalStrips
int totalStrips
Definition: MuonChannelDesign.h:47
MuonGM::MMReadoutElement::m_maxHalfY
double m_maxHalfY
Definition: MMReadoutElement.h:166
MuonGM::MMReadoutElement::getReadoutSide
const std::array< int, 4 > & getReadoutSide() const
Definition: MMReadoutElement.h:137
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGM::MuonChannelDesign::passivatedHeight
double passivatedHeight(double passivHeight, bool edge) const
Passivation is applied parallel to.
Definition: MuonChannelDesign.h:513
MuonDetectorManager.h
MuonGM::MMReadoutElement::layerHash
virtual int layerHash(const Identifier &id) const override final
returns the hash to be used to look up the normal and center in the MuonClusterReadoutElement trackin...
Definition: MMReadoutElement.h:185
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
MuonGM::MuonChannelDesign::channelLength
double channelLength(int channel) const
STRIPS ONLY: calculate channel length for a given strip number.
Definition: MuonChannelDesign.h:391
MuonChannelDesign.h
MuonGM::MuonChannelDesign::channelHalfLength
double channelHalfLength(int st, bool left) const
STRIPS ONLY: calculate channel length on the given side of the x axis (for MM stereo strips)
Definition: MuonChannelDesign.h:381
MuonGM::MuonClusterReadoutElement
Definition: MuonClusterReadoutElement.h:21
MuonGM::MMReadoutElement::posOnDefChamber
void posOnDefChamber(Amg::Vector3D &locPosML) const
transform a position (in chamber-frame coordinates) to the deformed-chamber geometry
Definition: MMReadoutElement.cxx:390
MuonGM::MuonChannelDesign
Definition: MuonChannelDesign.h:24
MmIdHelper::channel
int channel(const Identifier &id) const override
Definition: MmIdHelper.cxx:800
MmIdHelper
Definition: MmIdHelper.h:54
MmIdHelper::gasGap
int gasGap(const Identifier &id) const override
get the hashes
Definition: MmIdHelper.cxx:798
MuonGM::MMReadoutElement::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: MMReadoutElement.h:312
MuonGM::MMReadoutElement::numberOfMissingBottomStrips
int numberOfMissingBottomStrips(const Identifier &layerId) const
Definition: MMReadoutElement.h:306
MuonGM::MMReadoutElement::stereoAngle
double stereoAngle(const Identifier &id) const
Wrapper to MuonChannelDesign::stereoAngle()
Definition: MMReadoutElement.h:215
NswPassivationDbData::PCBPassivation::right
double right
Definition: NswPassivationDbData.h:26
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:49
MuonGM::MMReadoutElement::stripLength
double stripLength(const Identifier &id) const
strip length Wrappers to MuonChannelDesign::channelLength() taking into account the passivated width
Definition: MMReadoutElement.h:221
MuonGM::MMReadoutElement::stripNumber
virtual int stripNumber(const Amg::Vector2D &pos, const Identifier &id) const override final
strip number corresponding to local position.
Definition: MMReadoutElement.h:202
MuonGM::MuonChannelDesign::stereoAngle
double stereoAngle() const
returns the stereo angle
Definition: MuonChannelDesign.h:73
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
python.changerun.pv
pv
Definition: changerun.py:81
MuonGM::MMReadoutElement
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
Definition: MMReadoutElement.h:23
MuonGM::MMReadoutElement::AmdbLRSToGlobalCoords
virtual Amg::Vector3D AmdbLRSToGlobalCoords(const Amg::Vector3D &x) const override final
Definition: MMReadoutElement.h:140
MuonGM::MMReadoutElement::MMReadoutElement
MMReadoutElement(GeoVFullPhysVol *pv, const std::string &stName, int zi, int fi, int mL, MuonDetectorManager *mgr, const NswPassivationDbData *)
constructor
Definition: MMReadoutElement.cxx:69
checkFileSG.fi
fi
Definition: checkFileSG.py:65
MuonGM::MMReadoutElement::numberOfMissingTopStrips
int numberOfMissingTopStrips(const Identifier &layerId) const
Number of missing bottom and top strips (not read out)
Definition: MMReadoutElement.h:300
MuonGM::MMReadoutElement::measuresPhi
virtual bool measuresPhi(const Identifier &id) const override final
returns whether the current identifier corresponds to a phi measurement
Definition: MMReadoutElement.h:191
MuonGM::MuonChannelDesign::numberOfMissingBottomStrips
int numberOfMissingBottomStrips() const
Returns the number of missing bottom strips.
Definition: MuonChannelDesign.h:477
MuonGM::MMReadoutElement::getALinePar
const ALinePar * getALinePar() const
Definition: MMReadoutElement.h:133
MuonGM::MMReadoutElement::m_ALinePar
const ALinePar * m_ALinePar
Definition: MMReadoutElement.h:174
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::MMReadoutElement::m_halfX
double m_halfX
Definition: MMReadoutElement.h:164
MuonGM::MuonClusterReadoutElement::bounds
virtual const Trk::SurfaceBounds & bounds() const override
Return the boundaries of the element.
Definition: MuonClusterReadoutElement.h:127
MmIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
Definition: MmIdHelper.cxx:736
NswPassivationDbData::PCBPassivation::left
double left
Definition: NswPassivationDbData.h:25
MuonGM::MMReadoutElement::m_offset
double m_offset
Definition: MMReadoutElement.h:167
MuonGM::MMReadoutElement::s_dummy_passiv
static constexpr PCBPassivation s_dummy_passiv
Definition: MMReadoutElement.h:153
MuonGM::MMReadoutElement::numberOfLayers
virtual int numberOfLayers(bool) const override
number of layers in phi/eta projection
Definition: MMReadoutElement.h:289
MuonGM::MMReadoutElement::m_lWidthChamber
double m_lWidthChamber
Definition: MMReadoutElement.h:170
MuonGM::MuonReadoutElement::getStationEta
int getStationEta() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:193
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
MuonGM::MMReadoutElement::stripActiveLengthLeft
double stripActiveLengthLeft(const Identifier &id) const
Definition: MMReadoutElement.h:231