|
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef MUONREADOUTGEOMETRY_MDTREADOUTELEMENT_H
6 #define MUONREADOUTGEOMETRY_MDTREADOUTELEMENT_H
17 class ReadoutGeomCnvAlg;
203 const double width_narrow,
204 const double width_wide,
206 const double thickness,
228 std::array<double, maxnsteps>
m_tubelength{make_array<double, maxnsteps>(-9999.)};
229 std::array<double, maxnlayers>
m_firstwire_x{make_array<double, maxnlayers>(-9999.)};
230 std::array<double, maxnlayers>
m_firstwire_y{make_array<double, maxnlayers>(-9999.)};
248 std::unique_ptr<GeoInfo>
makeGeoInfo(
const int tubelayer,
const int tube)
const;
249 const GeoInfo&
geoInfo(
const int tubeLayer,
const int tube)
const;
252 std::vector<CxxUtils::CachedUniquePtr<GeoInfo> >
m_tubeGeo{};
258 std::vector<CxxUtils::CachedUniquePtr<Trk::SaggedLineSurface> >
m_tubeSurfaces{};
259 std::vector<CxxUtils::CachedUniquePtr<Trk::CylinderBounds> >
m_tubeBounds{};
277 #endif // MUONREADOUTGEOMETRY_MDTREADOUTELEMENT_H
int stationNameIndex(const std::string &name) const
void wireEndpointsAsBuilt(Amg::Vector3D &locAMDBWireEndP, Amg::Vector3D &locAMDBWireEndN, const int tubelayer, const int tube) const
std::array< double, maxnlayers > m_firstwire_x
int getNLayers() const
Returns the number of tube layers inside the multilayer.
Ensure that the Athena extensions are properly loaded.
virtual const Amg::Vector3D & center() const override final
Return the center of the element.
double tubeLength(const int tubeLayer, const int tube) const
const Amg::Transform3D & localToGlobalTransf(const int tubeLayer, const int tube) const
std::vector< CxxUtils::CachedUniquePtr< Amg::Transform3D > > m_deformTransf
const GeoInfo & geoInfo(const int tubeLayer, const int tube) const
MdtReadoutElement(GeoVFullPhysVol *pv, const std::string &stName, MuonDetectorManager *mgr)
double innerTubeRadius() const
Returns the inner tube radius excluding the aluminium walls.
std::unique_ptr< GeoInfo > makeGeoInfo(const int tubelayer, const int tube) const
Amg::Vector3D localROPos(const Identifier &id) const
int isAtReadoutSide(const Amg::Vector3D &GlobalHitPosition, const Identifier &id) const
Amg::Vector3D tubeFrame_localROPos(const Identifier &id) const
Amg::Vector3D localNominalTubePosWoCutouts(const int tubelayer, const int tube) const
std::atomic< bool > m_haveTubeBounds
double tubePitch() const
Returns the distance between 2 tubes in a tube layer.
Cached pointer with atomic update.
Amg::Transform3D globalTransform(const Amg::Vector3D &tubePos, const Amg::Transform3D &toDeform) const
bool getWireFirstLocalCoordAlongZ(int tubeLayer, double &coord) const
std::atomic< bool > m_haveTubeGeo
double RODistanceFromTubeCentre(const Identifier &id) const
virtual const Trk::SurfaceBounds & bounds() const override final
Return the boundaries of the element.
Amg::Vector3D nodeform_localTubePos(const Identifier &id) const
Amg::Transform3D nodeform_localToGlobalTransf(const Identifier &id) const
const MdtIdHelper & m_idHelper
double getTubeLengthForCaching(const int tubeLayer, const int tube) const
bool barrel() const
Returns whether the chamber is in the barrel (Assement on first later in stationName)
virtual const Amg::Transform3D & transform() const override final
Return local to global transform.
const BLinePar * getBLinePar() const
std::vector< CxxUtils::CachedUniquePtr< Trk::CylinderBounds > > m_tubeBounds
CxxUtils::CachedValue< int > m_zsignRO_tubeFrame
virtual const Amg::Vector3D & normal() const override final
Return the normal of the element.
void setNMdtInStation(unsigned int numMdt)
bool const RAWDATA *ch2 const
~MdtReadoutElement()=default
std::vector< const Trk::Surface * > surfaces() const
returns all the surfaces contained in this detector element
std::array< double, maxnlayers > m_firstwire_y
double distanceFromRO(const Amg::Vector3D &GlobalHitPosition, const Identifier &id) const
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
Amg::Transform3D deformedTransform(const int tubelayer, const int tube) const
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Amg::Transform3D globalToLocalTransf(const int tubeLayer, const int tube) const
double getWireLength(const int tubeLayer, const int tube) const
Amg::Vector3D nodeform_tubePos(const Identifier &id) const
Returns the global position of the tube excluding the B-line & As-built corrections.
void clearCache() override final
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
const Amg::Transform3D & fromIdealToDeformed(const int tubelayer, const int tube) const
std::atomic< bool > m_haveTubeSurfaces
Flag whether any elements have been inserted into the corresponding vectors.
std::atomic< bool > m_haveDeformTransf
Amg::Vector3D localTubePos(const Identifier &id) const
Amg::Transform3D m_transform
unsigned int m_nMDTinStation
std::vector< CxxUtils::CachedUniquePtr< Trk::SaggedLineSurface > > m_tubeSurfaces
double getActiveTubeLength(const int tubeLayer, const int tube) const
Eigen::Affine3d Transform3D
Cached unique_ptr with atomic update.
double outerTubeRadius() const
Returns the tube radius taking the thickness of the tubes into account.
void setNLayers(const int nl)
Sets the number of layers.
CxxUtils::CachedValue< Amg::Vector3D > m_elemNormal
unsigned int nMDTinStation() const
How many MDT chambers are in the station.
constexpr int maxnlayers
An MdtReadoutElement corresponds to a single MDT multilayer; therefore typicaly a MDT chamber consist...
int getMultilayer() const
Returns the multilayer represented by the readout element.
const Amg::Transform3D & localToGlobalTransf(const Identifier &id) const
double signedRODistanceFromTubeCentre(const Identifier &id) const
Amg::Vector3D ROPos(const Identifier &id) const
void fillCache() override final
Ensure that the ATLAS eigen extensions are properly loaded.
Amg::Vector3D posOnDefChamWire(const Amg::Vector3D &locAMDBPos, const double width_narrow, const double width_wide, const double height, const double thickness, const Amg::Vector3D &fixedPoint) const
Definition of ATLAS Math & Geometry primitives (Amg)
const BLinePar * m_BLinePar
Cached value with atomic update.
int getNtubesinastep() const
Returns the number of tubes in the endcap trapezoid sharing the same length.
double getNominalTubeLengthWoCutouts(const int tubeLayer, const int tube) const
Amg::Transform3D globalToLocalTransf(const Identifier &id) const
virtual const MdtIdHelper & mdtIdHelper() const =0
access to MdtIdHelper
std::vector< CxxUtils::CachedUniquePtr< GeoInfo > > m_tubeGeo
void setBLinePar(const BLinePar *bLine)
bool endcap() const
Returns whether the chamber is in the endcap.
double tubeLength(const Identifier &id) const
Eigen::Matrix< double, 3, 1 > Vector3D
Amg::Transform3D tubeToMultilayerTransf(const Identifier &id) const
Amg::Transform3D nodeform_globalToLocalTransf(const Identifier &id) const
CxxUtils::CachedUniquePtr< Trk::SurfaceBounds > m_associatedBounds
Amg::Vector3D ROPos(const int tubelayer, const int tube) const
Amg::Vector3D tubeFrame_localROPos(const int tubelayer, const int tube) const
double m_tubeWallThickness
Amg::Vector3D tubePos(const Identifier &id) const
Returns the global position of the given tube.
bool getWireFirstLocalCoordAlongR(int tubeLayer, double &coord) const
std::array< double, maxnsteps > m_tubelength
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
void setMultilayer(const int ml)
Sets the multilayer number.
GeoInfo(const Amg::Transform3D &transform)
std::vector< CxxUtils::CachedUniquePtr< GeoInfo > > m_backupTubeGeo
virtual const Trk::Surface & surface() const override final
Return surface associated with this detector element.
bool containsId(const Identifier &id) const override
int getNtubesperlayer() const
Returns the number of tubes in each tube layer.
CxxUtils::CachedUniquePtr< Trk::Surface > m_associatedSurface