|
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
const MuonChannelDesign * getDesign(const Identifier &id) const
returns the MuonChannelDesign class for the given identifier
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
Eigen::Translation< double, 3 > Translation3D
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