ATLAS Offline Software
IMuonGeoUtilityTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef MUONGEOMODELR4_IMUONGEOUTILITYTOOL_H
5 #define MUONGEOMODELR4_IMUONGEOUTILITYTOOL_H
6 
7 
10 
11 #include <GeoModelKernel/GeoFullPhysVol.h>
12 #include <GeoModelKernel/GeoPhysVol.h>
13 #include <GeoModelKernel/GeoShape.h>
14 #include <GeoModelKernel/GeoSimplePolygonBrep.h>
15 #include <GeoModelKernel/GeoAlignableTransform.h>
16 #include <GeoModelHelpers/getChildNodesWithTrf.h>
17 #include <GaudiKernel/IAlgTool.h>
18 
19 class GeoShapeUnion;
20 
21 namespace MuonGMR4{
22 
23 class IMuonGeoUtilityTool : virtual public IAlgTool {
24  public:
27 
31  virtual const GeoAlignableTransform* findAlignableTransform(const PVConstLink& physVol) const = 0;
35  virtual const GeoShape* extractShape(const PVConstLink& physVol) const = 0;
39  virtual const GeoShape* extractShape(const GeoShape* inShape) const = 0;
40 
43  using physVolWithTrans = GeoChildNodeWithTrf;
46  virtual std::vector<physVolWithTrans> findAllLeafNodesByName(const PVConstLink& physVol, const std::string& volumeName) const = 0;
48  virtual std::vector<const GeoShape*> getComponents(const GeoShape* booleanShape) const = 0;
49 
51  virtual std::string dumpShape(const GeoShape* inShape) const = 0;
53  virtual std::string dumpVolume(const PVConstLink& physVol) const = 0;
55  virtual std::vector<Amg::Vector2D> polygonEdges(const GeoSimplePolygonBrep& polygon) const = 0;
56 
58  virtual std::vector<Amg::Vector3D> shapeEdges(const GeoShape* shape,
59  const Amg::Transform3D& volTrf) const = 0;
60 
61 
62 };
63 
64 }
65 #endif
MuonGMR4::IMuonGeoUtilityTool::getComponents
virtual std::vector< const GeoShape * > getComponents(const GeoShape *booleanShape) const =0
Splits a boolean shape into its building blocks.
MuonGMR4::IMuonGeoUtilityTool::findAllLeafNodesByName
virtual std::vector< physVolWithTrans > findAllLeafNodesByName(const PVConstLink &physVol, const std::string &volumeName) const =0
Searches through all child volumes and collects the nodes where the logical volumes have the requeste...
MuonGMR4::IMuonGeoUtilityTool::findAlignableTransform
virtual const GeoAlignableTransform * findAlignableTransform(const PVConstLink &physVol) const =0
Returns the first alignable transform in the root subtree upstream the volume the volume must not be ...
MuonGMR4::IMuonGeoUtilityTool::shapeEdges
virtual std::vector< Amg::Vector3D > shapeEdges(const GeoShape *shape, const Amg::Transform3D &volTrf) const =0
Returns the edge points of the polygon like GeoShapes.
MuonGMR4::IMuonGeoUtilityTool::extractShape
virtual const GeoShape * extractShape(const PVConstLink &physVol) const =0
Navigates through the volume shape hiearchy to return the first shape which is neither a shift or in ...
MuonGMR4::IMuonGeoUtilityTool::DeclareInterfaceID
DeclareInterfaceID(IMuonGeoUtilityTool, 1, 0)
Gaudi interface ID.
MuonGMR4::IMuonGeoUtilityTool
Definition: IMuonGeoUtilityTool.h:23
GeoPrimitives.h
MuonGMR4::IMuonGeoUtilityTool::extractShape
virtual const GeoShape * extractShape(const GeoShape *inShape) const =0
Navigates through the shape hiarchy to return the first shape which is neither a shift or in case of ...
MuonGMR4
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
Definition: MdtCalibInput.h:19
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonGMR4::IMuonGeoUtilityTool::physVolWithTrans
GeoChildNodeWithTrf physVolWithTrans
Helper struct to cache a PhysVolume pointer together with the transformation to go from the volume to...
Definition: IMuonGeoUtilityTool.h:43
MuonGMR4::IMuonGeoUtilityTool::dumpVolume
virtual std::string dumpVolume(const PVConstLink &physVol) const =0
MuonGMR4::IMuonGeoUtilityTool::dumpShape
virtual std::string dumpShape(const GeoShape *inShape) const =0
MuonGMR4::IMuonGeoUtilityTool::polygonEdges
virtual std::vector< Amg::Vector2D > polygonEdges(const GeoSimplePolygonBrep &polygon) const =0
Transforms the vertices of the Polygon shape into a std::vector consisting of Amg::Vector2D objects.