 |
ATLAS Offline Software
|
Go to the documentation of this file.
4 #ifndef MUONREADOUTGEOMETRYR4_SPECTROMETERSECTOR_H
5 #define MUONREADOUTGEOMETRYR4_SPECTROMETERSECTOR_H
13 #include <Acts/Geometry/TrapezoidVolumeBounds.hpp>
20 class SpectrometerSector;
50 using enum Acts::TrapezoidVolumeBounds::BoundValues;
51 using BoundPtr_t = std::shared_ptr<const Acts::TrapezoidVolumeBounds>;
86 double width(
const double y0)
const {
87 const double tanPhiHalf = 0.5*(
m_bounds->get(eHalfLengthXposY) -
m_bounds->get(eHalfLengthXnegY))
89 return m_bounds->get(eHalfLengthXnegY) + tanPhiHalf * (y0 -
minY());
110 std::shared_ptr<Acts::TrapezoidVolumeBounds>
bounds{};
112 std::shared_ptr<const Acts::PlaneSurface>
surface{};
147 const Acts::PlaneSurface&
surface()
const;
155 double halfY()
const;
157 double halfZ()
const;
164 std::shared_ptr<Acts::TrapezoidVolumeBounds>
bounds()
const;
176 std::unordered_map<const MuonReadoutElement*, std::vector<unsigned int>>
fillDetLayIdCache()
const;
189 const SpectrometerSector&
chamber);
const BoundPtr_t & bounds() const
Returns the pointer to the associate bounds.
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
std::shared_ptr< Acts::Volume > boundingVolume(const ActsGeometryContext &gctx) const
Returns the Acts::Volume representation of the sector.
int sector() const
Returns the sector of the MS-sector.
std::shared_ptr< const Acts::TrapezoidVolumeBounds > BoundPtr_t
int8_t side() const
Returns the side of the MS-sector 1 -> A side ; -1 -> C side.
const MuonReadoutElement * readoutEle() const
Returns the poter to the associate readout element
Chamber
Define chamber types and locations.
A spectrometer sector forms the envelope of all chambers that are placed in the same MS sector & laye...
int stationPhi() const
: Returns the station phi of the sector
Amg::Vector3D m_origin
Origin vector of the readout element inside the spectrometer frame.
Identifier computeDetLayerId(const MuonReadoutElement *rele) const
Helper function calculating the logic layer Id and the physical layer id.
const MuonReadoutElement * m_reEle
Associated readout element.
const ChamberSet & chambers() const
Returns the associated chambers with this sector.
std::unordered_map< const MuonReadoutElement *, std::vector< unsigned int > > fillDetLayIdCache() const
Function filling the map mapping the readout elements to layer numbers.
Chamber::ReadoutSet readoutEles() const
Returns the list of all associated readout elements.
const Amg::Vector3D & location() const
Returns the location.
The MuonReadoutElement is an abstract class representing the geometry representing the muon detector.
double halfXShort() const
Short extend of the chamber in the x-direction at negative Y.
chamberLocation(chamberLocation &&other)=default
Move constructor.
SpectrometerSector(const SpectrometerSector &other)=delete
Delete the copy constructor and copy assignment.
double minY() const
Returns the minimum y covered by the chamber location.
double halfZ() const
Thickness of the chamber in the z-direction.
std::string identString() const
Returns a string encoding the chamber index & the sector of the MS sector.
double halfY() const
Extend of the chamber in the y-direction.
const std::unordered_map< const MuonReadoutElement *, std::vector< unsigned int > > m_detLayIdCache
Map mapping each Readout Element to the layer numbering in the sector frame.
chamberLocation(const Amg::Vector3D &origin, const MuonReadoutElement *reEle, BoundPtr_t bounds)
Standard constructor taking the position of the readout element inside the sector frame,...
Muon::MuonStationIndex::ChIndex chamberIndex() const
Returns the chamber index scheme.
double halfXLong() const
Long-extend of the chamber in the x-direction at positive Y.
chamberLocation(const chamberLocation &other)=default
Copy constructor.
double maxY() const
Returns the maximum u covered by the chamber location.
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
const std::vector< unsigned int > & logicalLayerIdx(const MuonReadoutElement *reEle) const
Returns the logic layer numbering of a given Readout Element.
const std::vector< chamberLocation > & chamberLocations() const
returns the list of all MDT chambers in the sector for fast navigation
bool barrel() const
Returns whether the sector is placed in the barrel.
Amg::Transform3D globalToLocalTrans(const ActsGeometryContext &gctx) const
Returns the global -> local transformation from the ATLAS global.
unsigned int nLayerPerReadout(const MuonReadoutElement *rele) const
Helper function giving the number of measurement layers in a given readout ele.
Eigen::Affine3d Transform3D
std::vector< const MuonReadoutElement * > ReadoutSet
Define the list of read out elements of the chamber.
Class to provide easy MsgStream access and capabilities.
chamberLocation & operator=(chamberLocation &&other)=default
Move assignment.
const Acts::PlaneSurface & surface() const
Returns the associated surface.
Include the GeoPrimitives which need to be put first.
SpectrometerSector(defineArgs &&args)
Standard constructor taking the defining parameters.
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns the IdHelpeSvc.
std::shared_ptr< const Acts::PlaneSurface > surface
Surface in the centre of the chamber plane.
double width(const double y0) const
Calculate the strip / tube length at a given position in the y-z plane.
std::shared_ptr< Acts::TrapezoidVolumeBounds > bounds
Surrouding box chamber bounds.
chamberLocation & operator=(const chamberLocation &other)=default
Copy assignment.
ChamberSet chambers
List of readout elements in the chamber.
std::shared_ptr< Acts::TrapezoidVolumeBounds > bounds() const
Returns the volume bounds.
Eigen::Matrix< double, 3, 1 > Vector3D
const defineArgs & parameters() const
Returns the reference to the defining parameters of the sector.
std::vector< ChamberPtr > ChamberSet
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &gctx) const
Returns the local -> global tarnsformation from the sector.
Interface for Helper service that creates muon Identifiers and can be used to print Identifiers.
bool insideYZ(const Amg::Vector3D &pos) const
Returns whether the external position is inside the boundaries in the y-z plane.
std::vector< chamberLocation > detectorLocs
double maxZ() const
Returns the maximum u covered by the chamber location.
ChIndex
enum to classify the different chamber layers in the muon spectrometer
~SpectrometerSector()=default
: Helper struct for fast approximate navigation.
std::ostream & operator<<(std::ostream &ostr, const Chamber::defineArgs &args)
BoundPtr_t m_bounds
Pointer to the associated bounds.
SpectrometerSector & operator=(const SpectrometerSector &other)=delete
RpcReadoutElement::defineArgs defineArgs
bool operator<(const SpectrometerSector &other) const
double minZ() const
Returns the minimum y covered by the chamber location.