|
ATLAS Offline Software
|
Go to the documentation of this file.
15 #ifndef GEOMODELUTILITIES_GEOVISITVOLUMES_H
16 #define GEOMODELUTILITIES_GEOVISITVOLUMES_H
21 #include "GeoModelKernel/GeoNodeAction.h"
22 #include "GeoModelKernel/GeoDefinitions.h"
29 class GeoVAlignmentStore;
43 const std::string&
name,
44 const GeoVPhysVol* volume,
62 const std::string&
name,
63 const GeoVPhysVol* volume) = 0;
95 virtual void handleNameTag (
const GeoNameTag *nameTag)
override;
139 template <
class FUNCTION>
147 const std::string&
name,
148 const GeoVPhysVol* volume,
163 template <
class FUNCTION>
171 const std::string&
name,
172 const GeoVPhysVol* volume)
override
184 template <
class FUNCTION>
189 node->exec (&visitor);
198 template <
class FUNCTION>
203 node->exec (&visitor);
218 typedef std::vector<std::pair<const GeoVPhysVol*, GeoTrf::Transform3D> >
235 std::vector<const GeoVPhysVol*>
241 #endif // not GEOMODELUTILITIES_GEOVISITVOLUMES_H
GeoVolumeVec_t geoGetVolumes(const GeoGraphNode *node, int depthLimit=1, int sizeHint=20)
Return the child volumes and associated transforms.
virtual void handleFullPhysVol(const GeoFullPhysVol *vol) override
Handles a physical volume.
void geoVisitVolumesNoXform(FUNCTION f, const GeoGraphNode *node, int depthLimit=1)
Template helper for running the visitor.
GeoVisitVolumesAction(FUNCTION f)
std::vector< std::pair< const GeoVPhysVol *, GeoTrf::Transform3D > > GeoVolumeVec_t
Return the child volumes and associated transforms.
virtual void handleIdentifierTag(const GeoIdentifierTag *idTag) override
Handles an Identifier Tag.
const GeoIdentifierTag * m_idTag
A pointer to an identifier tag. If the volume is identified.
virtual void handleNameTag(const GeoNameTag *nameTag) override
Handles a Name Tag.
std::vector< const GeoVPhysVol * > geoGetVolumesNoXform(const GeoGraphNode *node, int depthLimit=1, int sizeHint=20)
Return the child volumes.
virtual void handleSerialTransformer(const GeoSerialTransformer *sT) override
Handles a Serial Transformer.
void handleVol(const GeoVPhysVol *vol)
virtual void operator()(GeoNodeAction &action, int id, const std::string &name, const GeoVPhysVol *volume, const GeoTrf::Transform3D &transform, const GeoTrf::Transform3D &defTransform)=0
virtual void handleSerialDenominator(const GeoSerialDenominator *sD) override
Handles a Serial Denominator.
std::vector< const GeoTransform * > m_pendingTransformList
List of Pending Transformations.
const GeoSerialDenominator * m_serialDenominator
A pointer to a serial denominator. If one exists.
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
GeoVisitVolumes(IGeoVisitVolumesAction &action, int depthLimit=1)
Initialize to visit volumes keeping track of transformations.
GeoVisitVolumes(const GeoVisitVolumes &right)=delete
virtual void handlePhysVol(const GeoPhysVol *vol) override
Handles a physical volume.
GeoVisitVolumes & operator=(const GeoVisitVolumes &right)=delete
std::variant< IGeoVisitVolumesAction *, IGeoVisitVolumesNoXformAction * > m_action
Callback.
Define a simple callback for each volume found.
const GeoNameTag * m_nameTag
A pointer to a name tag. If the volume is named.
Callback object calling a templated functional.
virtual void operator()(GeoNodeAction &, int id, const std::string &name, const GeoVPhysVol *volume, const GeoTrf::Transform3D &transform, const GeoTrf::Transform3D &defTransform) override
Visitor to process all volumes under a GeoModel node.
virtual void handleSerialIdentifier(const GeoSerialIdentifier *sI) override
Handles an Serial Identifier.
const GeoSerialIdentifier * m_serialIdentifier
virtual void handleTransform(const GeoTransform *xform) override
Handles a Transform.
virtual ~IGeoVisitVolumesAction()=default
void geoVisitVolumes(FUNCTION f, const GeoGraphNode *node, int depthLimit=1)
Template helper for running the visitor.