![]() |
ATLAS Offline Software
|
Assembly tool to produce the Acts envolpe volumes around the muon stations & also to construct the spectrometer envelope volumes. More...
#include <ChamberAssembleTool.h>
Public Types | |
| using | VolBounds_t = Acts::VolumeBounds |
| Abrivation of the volume bounds. | |
| using | VolBoundPtr_t = std::shared_ptr<VolBounds_t> |
| Abrivation of the Volume bound ptr. | |
| using | SurfBoundPtr_t = std::shared_ptr<const Acts::PlanarBounds> |
| Abrivation of the surface bounds. | |
| using | TrfWithBounds = std::tuple<Amg::Transform3D, VolBoundPtr_t, SurfBoundPtr_t> |
| Abrivation of the volume transform together with a set of volume & surface bounds. | |
Public Member Functions | |
| virtual StatusCode | buildReadOutElements (MuonDetectorManager &mgr) override final |
Private Types | |
| using | ChamberPtr = SpectrometerSector::ChamberPtr |
Private Member Functions | |
| template<typename ReObjType> requires (Acts::PointerConcept<ReObjType>) | |
| TrfWithBounds | boundingBox (const ActsTrk::GeometryContext &gctx, const std::vector< ReObjType > &constituents, const Amg::Transform3D &globToLoc, Acts::VolumeBoundFactory &volBoundSet, Acts::SurfaceBoundFactory &surfBoundSet, const double margin) const |
| builds the bounding box trapezoidal volume bounds from the set of readout elements Returns a pair of the volume bounds & the transformation to center the volume | |
Static Private Member Functions | |
| static VolBoundPtr_t | boundingBox (const MuonReadoutElement *reEle, Acts::VolumeBoundFactory &boundSet) |
| Builds the trapezoidal bounding box enclosing a single readout element. | |
| static VolBoundPtr_t | boundingBox (const ChamberPtr &chamber, Acts::VolumeBoundFactory &boundSet) |
| static std::array< Amg::Vector3D, 4 > | cornerPointsPlane (const Amg::Transform3D &localToGlob, const VolBounds_t &bounds) |
| Returns the 4 corners of the trapezoid in the x-y plane. | |
| static std::array< Amg::Vector3D, 8 > | cornerPoints (const Amg::Transform3D &localToGlob, const VolBounds_t &bounds) |
| Returns the 8 corners marking the trapezoid. | |
| static Amg::Transform3D | centerTrapezoid (const std::array< Amg::Vector3D, 8 > &cornerPoints) |
| Returns the translation transform centering the 8 corner points of the trapezoid. | |
| static double | trapezoidEdgeDist (const Amg::Vector3D &linePos, const Amg::Vector3D &lineDir, const Amg::Vector3D &testMe, bool leftEdge) |
| Returns the signed distances of an external point to the trapezoidal edge. | |
| static VolBoundPtr_t | enlargeBounds (const VolBounds_t &enlargeMe, const double margin, Acts::VolumeBoundFactory &volBoundSet) |
| Enlarge the parsed volume bounds by an extra margin attached to all 3 dimensions. | |
| static SurfBoundPtr_t | surfaceBounds (const VolBounds_t &volBounds, Acts::SurfaceBoundFactory &surfBoundSet) |
| Construct surface bounds which measure equal sizes in halfXlow/halfXhigh & halfY as the parsed volume bounds. | |
Private Attributes | |
| ServiceHandle< Muon::IMuonIdHelperSvc > | m_idHelperSvc {this, "IdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"} |
| Gaudi::Property< bool > | m_isRun4 {this, "run4Layout", false} |
| Toggling whether the layout is a R3 or R4 layout. | |
Assembly tool to produce the Acts envolpe volumes around the muon stations & also to construct the spectrometer envelope volumes.
Definition at line 29 of file ChamberAssembleTool.h.
Definition at line 68 of file ChamberAssembleTool.h.
| using MuonGMR4::ChamberAssembleTool::SurfBoundPtr_t = std::shared_ptr<const Acts::PlanarBounds> |
Abrivation of the surface bounds.
Definition at line 41 of file ChamberAssembleTool.h.
| using MuonGMR4::ChamberAssembleTool::TrfWithBounds = std::tuple<Amg::Transform3D, VolBoundPtr_t, SurfBoundPtr_t> |
Abrivation of the volume transform together with a set of volume & surface bounds.
Definition at line 43 of file ChamberAssembleTool.h.
| using MuonGMR4::ChamberAssembleTool::VolBoundPtr_t = std::shared_ptr<VolBounds_t> |
Abrivation of the Volume bound ptr.
Definition at line 39 of file ChamberAssembleTool.h.
| using MuonGMR4::ChamberAssembleTool::VolBounds_t = Acts::VolumeBounds |
Abrivation of the volume bounds.
Definition at line 37 of file ChamberAssembleTool.h.
|
private |
builds the bounding box trapezoidal volume bounds from the set of readout elements Returns a pair of the volume bounds & the transformation to center the volume
| gctx | Geometry context holding the alignment & global transformations |
| constituents | List of readout elements around which the bounding box shall be built |
| globToLoc | Transformation to go from the global -> local chamber's frame |
| volBoundSet | Factory to create the volume bounds & share them across equivalent volumes |
| surfBoundSet | Factory to create the surface bounds representing the material surfaces & share them across mutliple surfaces |
| margin | Extra margin by which the returned volume bounds are enlarged |
Hack to cope with the RPCs which may be rotated by 180 degrees around the x or z-axis in cases, they're upside down.
Check whether the bounds are already embedded in the trapezoid
Everything is contained in the volume
Fetch the edges of the best known trapezoid to extend the dimensions
Reserve space for the new envelope trapezoid
The first 4 indices in the trpezoidal array are the bottom corners
Check the angles of the bounding trapzeoids
On the left edge the trapezoid opening angle needs to be larger while on the right side it's smaller
Calculate the distance to the trapezoidal edge. If it's less than 0, it's not embedded by the trapezoid and the smaller the number the farer it's from the trapezoid
Choose as reference point the one which is farest away from the edge
Extend the trapezoid in the x-y plane
Edge points of the best-known trapezoid
Finally re-center the trapezoid
Definition at line 182 of file ChamberAssembleTool.cxx.
|
staticprivate |
Definition at line 117 of file ChamberAssembleTool.cxx.
|
staticprivate |
Builds the trapezoidal bounding box enclosing a single readout element.
| reEle | Pointer to the readout element to fetch the bounds from |
| boundSet | Cache of create bounds to share the same bounds across multiple volumes |
Definition at line 81 of file ChamberAssembleTool.cxx.
|
finaloverridevirtual |
TGC T4E chambers & Mdt EIL chambers are glued together
Group chambers by sectors && station layer.
Check that the two readout elements are on the same side. Exception BOG eta 0 -> attributes to positive sectors
The two readout elements shall be located in the same sector
into a single chamber
If no chamber has been found, then create a new one
Find the chamber middle and create the geometry from that
Define the spectrometer sector
Define the chamber envelopes
Sort the readout elements by common parent volume
The BIS 7/8 chamber needs to be comparted into 4 subvolumes, each containing a single readout element to minimize the impact from the overlap between BIS78 & EIL-4 (TGC)
We need to ensure that the EIL 4/5 are split into a separate volume w.r.t. the New Small Wheel
now, build simplified 2D representations of the sorted chambers we collected.
Now construct the sector volume from the chamber envelopes
Definition at line 313 of file ChamberAssembleTool.cxx.
|
staticprivate |
Returns the translation transform centering the 8 corner points of the trapezoid.
The centre is defined as the centre point of the surrounding box
| cornerPoints | Array to all 8 corner points of the trapezoid |
Definition at line 142 of file ChamberAssembleTool.cxx.
|
staticprivate |
Returns the 8 corners marking the trapezoid.
| localToGlob | Transform from the trapezoid restframe -> chambers frame |
| bounds | Reference to the trapezoidal bounds defining the volume |
Definition at line 130 of file ChamberAssembleTool.cxx.
|
staticprivate |
Returns the 4 corners of the trapezoid in the x-y plane.
| localToGlob | Transform from the trapezoid restframe -> chambers frame |
| bounds | Reference to the trapezoidal bounds defining the volume |
Definition at line 122 of file ChamberAssembleTool.cxx.
|
staticprivate |
Enlarge the parsed volume bounds by an extra margin attached to all 3 dimensions.
| enlargeMe | Bounds which are intended to be enlarged |
| margin | Amount by which the total length of the bounds should grow |
| volBoundsSet | Bound factory to assign equivalent bounds to multiple volumes |
Definition at line 155 of file ChamberAssembleTool.cxx.
|
staticprivate |
Construct surface bounds which measure equal sizes in halfXlow/halfXhigh & halfY as the parsed volume bounds.
| volBounds | Bounds which are mapped to surface bounds |
| surfBoundSet | Bound factory to assign equivalent bounds to multiple surfaces |
Definition at line 171 of file ChamberAssembleTool.cxx.
|
staticprivate |
Returns the signed distances of an external point to the trapezoidal edge.
Distances > 0 indicate that the point is inside the boundaries and outside otherwise
| linePos | Arbitrary point on the trapezoidal edge |
| lineDir | Direction of the trapezoidal edge |
| testMe | External point to measure the distance |
| leftEdge | Switch indicating whether the edge is on the left & right side |
Construct the normal pointing inwards
Definition at line 70 of file ChamberAssembleTool.cxx.
|
private |
Definition at line 112 of file ChamberAssembleTool.h.
|
private |
Toggling whether the layout is a R3 or R4 layout.
If true, the BIS eta: -7 chambers are split into the individual readout elements.
Definition at line 115 of file ChamberAssembleTool.h.