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;
15 namespace MuonGMR4{
16  class ReadoutGeomCnvAlg;
17 }
18 
19 namespace MuonGM {
26  public:
29  MMReadoutElement(GeoVFullPhysVol* pv, const std::string& stName, int zi, int fi, int mL,
31 
34 
36  virtual bool containsId(const Identifier& id) const override final;
37 
40  virtual double distanceToReadout(const Amg::Vector2D& pos, const Identifier& id) const override final;
41 
44  virtual int stripNumber(const Amg::Vector2D& pos, const Identifier& id) const override final;
45 
48  virtual bool stripPosition(const Identifier& id, Amg::Vector2D& pos) const override final;
49  bool stripGlobalPosition(const Identifier& id, Amg::Vector3D& gpos) const;
50 
52  double stereoAngle(const Identifier& id) const;
53 
56  double stripLength(const Identifier& id) const;
57  double stripActiveLength(const Identifier& id) const;
58  double stripActiveLengthLeft(const Identifier& id) const;
59  double stripActiveLengthRight(const Identifier& id) const;
60 
63  bool insideActiveBounds(const Identifier& id, const Amg::Vector2D& locpos, double tol1 = 0., double tol2 = 0.) const;
64 
66  virtual int numberOfLayers(bool) const override;
67 
69  virtual int numberOfStrips(const Identifier& layerId) const override final;
70  virtual int numberOfStrips(int, bool measuresPhi) const override final;
71 
73  int numberOfMissingTopStrips(const Identifier& layerId) const;
74  int numberOfMissingBottomStrips(const Identifier& layerId) const;
75 
79  virtual bool spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector2D& pos) const override final;
80 
83  virtual bool spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector3D& pos) const override final;
86  Amg::Vector3D localToGlobalCoords(const Amg::Vector3D& locPos, const Identifier& id) const;
87 
91  bool spacePointPosition(const Identifier& layerId, const Amg::Vector2D& localPos, Amg::Vector3D& pos) const;
92 
94  virtual void fillCache() override final;
95 
97  virtual int surfaceHash(const Identifier& id) const override final;
98 
100  int surfaceHash(int gasGap, int measPhi) const;
101 
103  virtual int layerHash(const Identifier& id) const override final;
105  int layerHash(int gasGap) const;
106 
108  virtual int boundaryHash(const Identifier& id) const override final;
109 
111  virtual bool measuresPhi(const Identifier& id) const override final;
112 
114  void initDesign();
115 
118 
120  void setChamberLayer(int ml) { m_ml = ml; }
121 
124  const Amg::Transform3D& getDelta() const { return m_delta; }
125  void setDelta(const ALinePar& aline);
126 
128  void setBLinePar(const BLinePar& bLine);
129 
131  void posOnDefChamber(Amg::Vector3D& locPosML) const;
132 
133  bool has_ALines() const { return (m_ALinePar != nullptr); }
134  bool has_BLines() const { return (m_BLinePar != nullptr); }
135  const ALinePar* getALinePar() const { return m_ALinePar; }
136  const BLinePar* getBLinePar() const { return m_BLinePar; }
137  void clearALinePar();
138  void clearBLinePar() { m_BLinePar = nullptr; }
139  const std::array<int, 4> & getReadoutSide() const { return m_readoutSide; }
140 
141  // Amdb local (szt) to global coord
142  virtual Amg::Vector3D AmdbLRSToGlobalCoords(const Amg::Vector3D& x) const override final { return AmdbLRSToGlobalTransform()*x; }
144  // Global to Amdb local (szt) coord
145  virtual Amg::Vector3D GlobalToAmdbLRSCoords(const Amg::Vector3D& x) const override final { return GlobalToAmdbLRSTransform()*x; }
146  virtual Amg::Transform3D GlobalToAmdbLRSTransform() const override final { return AmdbLRSToGlobalTransform().inverse(); }
147 
148  private:
149 
150  void initDesignSqLite();
151 
153 
155  static constexpr PCBPassivation s_dummy_passiv{};
156  // MuonChannelDesign m_phiDesign;
157  std::array<MuonChannelDesign, 4> m_etaDesign{};
158 
159  int m_nlayers{0}; // #of gas gaps
160 
162 
163  int m_ml{0}; // multilayer (values: 1,2)
164 
165  // surface dimensions
166  double m_halfX{100.}; // 0.5*radial_size (active area)
167  double m_minHalfY{1900.}; // 0.5*bottom length (active area)
168  double m_maxHalfY{2000.}; // 0.5*top length (active area)
169  double m_offset{0.}; // radial dist. of active area center w.r.t. chamber center
170 
171  Amg::Transform3D m_delta{Amg::Transform3D::Identity()};
172  const ALinePar* m_ALinePar{nullptr};
173  const BLinePar* m_BLinePar{nullptr};
174  std::array<int, 4> m_readoutSide{};
175  // transforms (RE->layer)
176  std::array<Amg::Transform3D, 4> m_Xlg{make_array<Amg::Transform3D,4>(Amg::Transform3D::Identity())};
177  };
178 
179  inline int MMReadoutElement::surfaceHash(const Identifier& id) const { return surfaceHash(m_idHelper.gasGap(id), 0); }
180 
181  inline int MMReadoutElement::surfaceHash(int gasGap, int /*measPhi*/) const { return gasGap - 1; } // measPhi not used
182 
183  inline int MMReadoutElement::layerHash(const Identifier& id) const { return layerHash(m_idHelper.gasGap(id)); }
184 
185  inline int MMReadoutElement::layerHash(int gasGap) const { return gasGap - 1; }
186 
187  inline int MMReadoutElement::boundaryHash(const Identifier& id) const { return layerHash(m_idHelper.gasGap(id)); }
188 
189  inline bool MMReadoutElement::measuresPhi(const Identifier& /*id*/) const { return false; }
190 
192  return &(m_etaDesign[layerHash(id)]);
193  }
194  inline double MMReadoutElement::distanceToReadout(const Amg::Vector2D& pos, const Identifier& id) const {
195  const MuonChannelDesign* design = getDesign(id);
196  if (!design) return -1.;
197  return design->distanceToReadout(pos);
198  }
199 
200  inline int MMReadoutElement::stripNumber(const Amg::Vector2D& pos, const Identifier& id) const {
201  // returns the position of the strip at pos, assuming the nominal geometry (no as-built conditions)
202  const MuonChannelDesign* design = getDesign(id);
203  if (!design) return -1;
204  return design->channelNumber(pos);
205  }
206 
208  const MuonChannelDesign* design = getDesign(id);
209  if (!design) return false;
210  return design->center(m_idHelper.channel(id), pos);
211  }
212 
213  inline double MMReadoutElement::stereoAngle(const Identifier& id) const {
214  const MuonChannelDesign* design = getDesign(id);
215  if (!design) return 0;
216  return design->stereoAngle();
217  }
218 
219  inline double MMReadoutElement::stripLength(const Identifier& id) const {
220  const MuonChannelDesign* design = getDesign(id);
221  if (!design) return -1;
222  return design->channelLength(m_idHelper.channel(id));
223  }
224 
225  inline double MMReadoutElement::stripActiveLength(const Identifier& id) const {
227  }
228 
229  inline double MMReadoutElement::stripActiveLengthLeft(const Identifier& id) const {
230  const MuonChannelDesign* design = getDesign(id);
231  if (!design) return -1;
232 
234  // Let's keep it for the moment as we have to think about proper treatmeant of the non-passivated stuff
235  // if (m_passivData && !passiv.valid) return -1;
236 
237  double l = design->channelHalfLength(m_idHelper.channel(id), true);
238  if (l < 0) return -1;
239  return std::max(0., l - design->passivatedLength(passiv.left, true));
240  }
241 
242  inline double MMReadoutElement::stripActiveLengthRight(const Identifier& id) const {
243  const MuonChannelDesign* design = getDesign(id);
244  if (!design) return -1;
245 
247  // Let's keep it for the moment as we have to think about proper treatmeant of the non-passivated stuff
248  // if (m_passivData && !passiv.valid) return -1;
249 
250  double l = design->channelHalfLength(m_idHelper.channel(id), false);
251  if (l < 0) return -1;
252  return std::max(0., l - design->passivatedLength(passiv.right, false));
253  }
254 
255  inline bool MMReadoutElement::insideActiveBounds(const Identifier& id, const Amg::Vector2D& locpos, double tol1, double tol2) const {
256  const MuonChannelDesign* design = getDesign(id);
257  if(!design) return false;
258  // Get the nearest strip number; not the time yet to check boundaries (in case of tolerance)
259  int stripNo = stripNumber(locpos, id);
260  if (stripNo < 0) stripNo = (locpos.x()<0) ? 1 : design->totalStrips;
262 
263  // ** Horizontal passivation: mask entire strips
264  //==============================================
265  int pcb = (stripNo-1)/1024 + 1; // starts from 1
266  int pcbStrip = stripNo % 1024;// - 1024*(pcb - 1);
268  // if(m_passivData && !pcbPassiv.valid) return false;
269  // the passivated width is constant along the PCB edge (not along y for stereo strips)
270  bool topPcb{pcb == 5 || (std::abs(getStationEta()) == 2 && pcb == 3)};
271  int pcbStripMin = 1 + (int)std::floor((design->passivatedHeight(pcbPassiv.bottom, pcb ==1) + 0.5*design->inputPitch - tol1)/design->inputPitch); // first pcb strip surviving passivation
272  int pcbStripMax = 1024 - (int)std::floor((design->passivatedHeight(pcbPassiv.top, topPcb) + 0.5*design->inputPitch - tol1)/design->inputPitch); // last pcb strip surviving passivation
273  if(pcbStrip < pcbStripMin || pcbStrip > pcbStripMax) return false;
274 
275  // ** Vertical passivation: cut strips from left and right
276  //=======================================
277  return bounds(id).inside(locpos, tol1, tol2 - design->passivatedLength(locpos[1]<0 ? pcbPassiv.left : pcbPassiv.right , locpos[1] < 0));
278  }
279 
280  inline bool MMReadoutElement::stripGlobalPosition(const Identifier& id, Amg::Vector3D& gpos) const {
282  if (!stripPosition(id, lpos)) return false;
283  surface(id).localToGlobal(lpos, Amg::Vector3D::Zero(), gpos);
284  return true;
285  }
286 
287  inline int MMReadoutElement::numberOfLayers(bool) const { return m_nlayers; }
288 
289  inline int MMReadoutElement::numberOfStrips(const Identifier& layerId) const { return m_etaDesign[layerHash(layerId)].totalStrips; }
290 
291  inline int MMReadoutElement::numberOfStrips(int lay, bool /*measPhi*/) const {
292  if (lay > -1 && lay < static_cast<int>(m_etaDesign.size()))
293  return m_etaDesign[lay].totalStrips;
294  else
295  return -1;
296  }
297 
299  const MuonChannelDesign* design = getDesign(id);
300  if (!design) return -1;
301  return design->numberOfMissingTopStrips();
302  }
303 
305  const MuonChannelDesign* design = getDesign(id);
306  if (!design) return -1;
307  return design->numberOfMissingBottomStrips();
308  }
309 
310  inline bool MMReadoutElement::spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector2D& pos) const {
311  if (!stripPosition(etaId, pos)) return false;
312  const MuonChannelDesign* phi_design = getDesign(phiId);
313  const MuonChannelDesign* eta_design = getDesign(etaId);
314  if (!phi_design || !eta_design) return false;
315  pos = phi_design->rotation() * eta_design->rotation().inverse()*pos;
316  return true;
317  }
318 
319  inline bool MMReadoutElement::spacePointPosition(const Identifier& phiId, const Identifier& etaId, Amg::Vector3D& pos) const {
321  spacePointPosition(phiId, etaId, lpos);
322  surface(phiId).localToGlobal(lpos, pos, pos);
323  return true;
324  }
325 
326 } // namespace MuonGM
327 
328 #endif // MUONREADOUTGEOMETRY_MMREADOUTELEMENT_H
MuonGM::MMReadoutElement::setDelta
void setDelta(const ALinePar &aline)
Definition: MMReadoutElement.cxx:365
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:207
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:334
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
MuonGM::MMReadoutElement::m_readoutSide
std::array< int, 4 > m_readoutSide
Definition: MMReadoutElement.h:174
MuonGM::MMReadoutElement::GlobalToAmdbLRSCoords
virtual Amg::Vector3D GlobalToAmdbLRSCoords(const Amg::Vector3D &x) const override final
Definition: MMReadoutElement.h:145
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:255
MuonGM::MMReadoutElement::initDesign
void initDesign()
initialize the design classes for this readout element
Definition: MMReadoutElement.cxx:221
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
MuonGM::MMReadoutElement::AmdbLRSToGlobalTransform
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const override final
Definition: MMReadoutElement.h:143
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
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
MuonGM::MMReadoutElement::getDesign
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
Definition: MMReadoutElement.h:191
MuonGM::MMReadoutElement::initDesignSqLite
void initDesignSqLite()
Definition: MMReadoutElement.cxx:138
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:299
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:146
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
MuonGM::MMReadoutElement::m_Xlg
std::array< Amg::Transform3D, 4 > m_Xlg
Definition: MMReadoutElement.h:176
MuonGM::MMReadoutElement::m_passivData
const NswPassivationDbData * m_passivData
Definition: MMReadoutElement.h:161
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
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:225
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:134
MuonGM::MuonReadoutElement::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:136
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
MuonGM::MMReadoutElement::stripActiveLengthRight
double stripActiveLengthRight(const Identifier &id) const
Definition: MMReadoutElement.h:242
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:349
MuonGM::MMReadoutElement::m_nlayers
int m_nlayers
Definition: MMReadoutElement.h:159
NswPassivationDbData::PCBPassivation
Helper struct to save the four passivation values of each PCB.
Definition: NswPassivationDbData.h:24
MuonGMR4
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
Definition: MdtCalibInput.h:20
NswPassivationDbData
Definition: NswPassivationDbData.h:20
NswPassivationDbData.h
MuonGM::MMReadoutElement::~MMReadoutElement
~MMReadoutElement()
destructor
MuonGM::MMReadoutElement::has_ALines
bool has_ALines() const
Definition: MMReadoutElement.h:133
MuonGM::MMReadoutElement::getBLinePar
const BLinePar * getBLinePar() const
Definition: MMReadoutElement.h:136
MuonGM::MMReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition: MMReadoutElement.h:280
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGM::MMReadoutElement::m_BLinePar
const BLinePar * m_BLinePar
Definition: MMReadoutElement.h:173
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:179
MuonGM::MMReadoutElement::m_minHalfY
double m_minHalfY
Definition: MMReadoutElement.h:167
NswPassivationDbData::PCBPassivation::bottom
double bottom
Definition: NswPassivationDbData.h:28
MuonGM::MMReadoutElement::clearBLinePar
void clearBLinePar()
Definition: MMReadoutElement.h:138
MuonGM::MMReadoutElement::setBLinePar
void setBLinePar(const BLinePar &bLine)
read B-line (chamber-deformation) parameters
Definition: MMReadoutElement.cxx:389
MuonClusterReadoutElement.h
MuonGM::MMReadoutElement::m_delta
Amg::Transform3D m_delta
Definition: MMReadoutElement.h:171
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
MuonGM::MMReadoutElement::clearALinePar
void clearALinePar()
Definition: MMReadoutElement.cxx:380
BLinePar
Definition: BLinePar.h:14
MuonGM::MMReadoutElement::setChamberLayer
void setChamberLayer(int ml)
set methods only to be used by MuonGeoModel
Definition: MMReadoutElement.h:120
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:187
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:124
MuonGM::MMReadoutElement::m_etaDesign
std::array< MuonChannelDesign, 4 > m_etaDesign
Definition: MMReadoutElement.h:157
MuonGM::MMReadoutElement::numberOfStrips
virtual int numberOfStrips(const Identifier &layerId) const override final
number of strips per layer
Definition: MMReadoutElement.h:289
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:194
MuonGM::MMReadoutElement::m_idHelper
const MmIdHelper & m_idHelper
Definition: MMReadoutElement.h:152
MuonGM::MMReadoutElement::m_ml
int m_ml
Definition: MMReadoutElement.h:163
MuonGM::MuonChannelDesign::totalStrips
int totalStrips
Definition: MuonChannelDesign.h:47
MuonGM::MMReadoutElement::m_maxHalfY
double m_maxHalfY
Definition: MMReadoutElement.h:168
MuonGM::MMReadoutElement::getReadoutSide
const std::array< int, 4 > & getReadoutSide() const
Definition: MMReadoutElement.h:139
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:183
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
MuonGMR4::ReadoutGeomCnvAlg
Definition: ReadoutGeomCnvAlg.h:32
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:394
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:310
MuonGM::MMReadoutElement::numberOfMissingBottomStrips
int numberOfMissingBottomStrips(const Identifier &layerId) const
Definition: MMReadoutElement.h:304
MuonGM::MMReadoutElement::stereoAngle
double stereoAngle(const Identifier &id) const
Wrapper to MuonChannelDesign::stereoAngle()
Definition: MMReadoutElement.h:213
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:50
MuonGM::MMReadoutElement::stripLength
double stripLength(const Identifier &id) const
strip length Wrappers to MuonChannelDesign::channelLength() taking into account the passivated width
Definition: MMReadoutElement.h:219
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:200
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:25
MuonGM::MMReadoutElement::AmdbLRSToGlobalCoords
virtual Amg::Vector3D AmdbLRSToGlobalCoords(const Amg::Vector3D &x) const override final
Definition: MMReadoutElement.h:142
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:298
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:189
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:135
MuonGM::MMReadoutElement::m_ALinePar
const ALinePar * m_ALinePar
Definition: MMReadoutElement.h:172
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:166
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:169
MuonGM::MMReadoutElement::s_dummy_passiv
static constexpr PCBPassivation s_dummy_passiv
Definition: MMReadoutElement.h:155
MuonGM::MMReadoutElement::numberOfLayers
virtual int numberOfLayers(bool) const override
number of layers in phi/eta projection
Definition: MMReadoutElement.h:287
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:229
Identifier
Definition: IdentifierFieldParser.cxx:14