Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef MUONREADOUTGEOMETRY_MMREADOUTELEMENT_H
6 #define MUONREADOUTGEOMETRY_MMREADOUTELEMENT_H
16 class ReadoutGeomCnvAlg;
176 std::array<Amg::Transform3D, 4>
m_Xlg{make_array<Amg::Transform3D,4>(Amg::Transform3D::Identity())};
196 if (!design)
return -1.;
203 if (!design)
return -1;
209 if (!design)
return false;
215 if (!design)
return 0;
221 if (!design)
return -1;
231 if (!design)
return -1;
238 if (
l < 0)
return -1;
244 if (!design)
return -1;
251 if (
l < 0)
return -1;
257 if(!design)
return false;
260 if (stripNo < 0) stripNo = (locpos.x()<0) ? 1 : design->
totalStrips;
265 int pcb = (stripNo-1)/1024 + 1;
266 int pcbStrip = stripNo % 1024;
270 bool topPcb{pcb == 5 || (std::abs(
getStationEta()) == 2 && pcb == 3)};
273 if(pcbStrip < pcbStripMin || pcbStrip > pcbStripMax)
return false;
292 if (lay > -1 && lay <
static_cast<int>(
m_etaDesign.size()))
300 if (!design)
return -1;
306 if (!design)
return -1;
314 if (!phi_design || !eta_design)
return false;
315 pos = phi_design->rotation() * eta_design->rotation().inverse()*
pos;
328 #endif // MUONREADOUTGEOMETRY_MMREADOUTELEMENT_H
void setDelta(const ALinePar &aline)
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,...
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
Ensure that the Athena extensions are properly loaded.
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.
const Amg::Transform3D & absTransform() const
std::array< int, 4 > m_readoutSide
virtual Amg::Vector3D GlobalToAmdbLRSCoords(const Amg::Vector3D &x) const override final
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
void initDesign()
initialize the design classes for this readout element
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const override final
int channelNumber(const Amg::Vector2D &pos) const
calculate local channel number, range 1=nstrips like identifiers. Returns -1 if out of range
Eigen::Matrix< double, 2, 1 > Vector2D
Amg::Transform3D getTranslateZ3D(const double Z)
: Returns a shift transformation along the z-axis
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
const std::string & stName(StIndex index)
convert StIndex into a string
int numberOfMissingTopStrips() const
Returns the number of missing top strips.
virtual void fillCache() override final
function to fill tracking cache
double distanceToReadout(const Amg::Vector2D &pos) const
distance to readout
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const override final
std::array< Amg::Transform3D, 4 > m_Xlg
const NswPassivationDbData * m_passivData
bool const RAWDATA *ch2 const
virtual const MmIdHelper & mmIdHelper() const =0
access to CscIdHelper
const PCBPassivation & getPassivation(const Identifier &id) const
double stripActiveLength(const Identifier &id) const
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
const Muon::IMuonIdHelperSvc * idHelperSvc() const
double stripActiveLengthRight(const Identifier &id) const
Amg::Vector3D localToGlobalCoords(const Amg::Vector3D &locPos, const Identifier &id) const
simHit local (SD) To Global position - to be used by MuonGeoAdaprors only
Helper struct to save the four passivation values of each PCB.
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
~MMReadoutElement()
destructor
const BLinePar * getBLinePar() const
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Eigen::Affine3d Transform3D
const BLinePar * m_BLinePar
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...
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...
void setBLinePar(const BLinePar &bLine)
read B-line (chamber-deformation) parameters
void setChamberLayer(int ml)
set methods only to be used by MuonGeoModel
bool center(int channel, Amg::Vector2D &pos) const
STRIPS ONLY: Returns the center on the strip.
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
const Amg::Transform3D & getDelta() const
read A-line parameters and include the chamber rotation/translation in the local-to-global (ATLAS) re...
std::array< MuonChannelDesign, 4 > m_etaDesign
virtual int numberOfStrips(const Identifier &layerId) const override final
number of strips per layer
virtual double distanceToReadout(const Amg::Vector2D &pos, const Identifier &id) const override final
distance to readout.
const MmIdHelper & m_idHelper
const std::array< int, 4 > & getReadoutSide() const
Eigen::Matrix< double, 3, 1 > Vector3D
double passivatedHeight(double passivHeight, bool edge) const
Passivation is applied parallel to.
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...
double channelLength(int channel) const
STRIPS ONLY: calculate channel length for a given strip number.
double channelHalfLength(int st, bool left) const
STRIPS ONLY: calculate channel length on the given side of the x axis (for MM stereo strips)
void posOnDefChamber(Amg::Vector3D &locPosML) const
transform a position (in chamber-frame coordinates) to the deformed-chamber geometry
int channel(const Identifier &id) const override
int gasGap(const Identifier &id) const override
get the hashes
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...
int numberOfMissingBottomStrips(const Identifier &layerId) const
double stereoAngle(const Identifier &id) const
Wrapper to MuonChannelDesign::stereoAngle()
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
double stripLength(const Identifier &id) const
strip length Wrappers to MuonChannelDesign::channelLength() taking into account the passivated width
virtual int stripNumber(const Amg::Vector2D &pos, const Identifier &id) const override final
strip number corresponding to local position.
double stereoAngle() const
returns the stereo angle
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
virtual Amg::Vector3D AmdbLRSToGlobalCoords(const Amg::Vector3D &x) const override final
MMReadoutElement(GeoVFullPhysVol *pv, const std::string &stName, int zi, int fi, int mL, MuonDetectorManager *mgr, const NswPassivationDbData *)
constructor
int numberOfMissingTopStrips(const Identifier &layerId) const
Number of missing bottom and top strips (not read out)
virtual bool measuresPhi(const Identifier &id) const override final
returns whether the current identifier corresponds to a phi measurement
int numberOfMissingBottomStrips() const
Returns the number of missing bottom strips.
const ALinePar * getALinePar() const
const ALinePar * m_ALinePar
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.
virtual const Trk::SurfaceBounds & bounds() const override
Return the boundaries of the element.
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
static constexpr PCBPassivation s_dummy_passiv
virtual int numberOfLayers(bool) const override
number of layers in phi/eta projection
int getStationEta() const
double stripActiveLengthLeft(const Identifier &id) const