GeoModel - GeoModelCore
GeoAccessVolumeAction.h
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GeoAccessVolumeAction_h
6 #define GeoAccessVolumeAction_h 1
7 
8 #include "GeoModelKernel/GeoNodeAction.h"
9 #include "GeoModelKernel/GeoDefinitions.h"
10 #include <vector>
11 
12 class GeoVPhysVol;
13 class GeoTransform;
14 class GeoVAlignmentStore;
15 
23 {
24  public:
25 
26  GeoAccessVolumeAction (unsigned int Index, const GeoVAlignmentStore* store);
27  virtual ~GeoAccessVolumeAction() override;
28 
30  virtual void handleTransform (const GeoTransform *xform) override;
31 
33  virtual void handlePhysVol (const GeoPhysVol *vol) override;
34 
36  virtual void handleFullPhysVol (const GeoFullPhysVol *vol) override;
37 
39  PVConstLink getVolume () const;
40 
42  const GeoTrf::Transform3D & getTransform () const;
43 
45  const GeoTrf::Transform3D & getDefTransform () const;
46 
48  const std::string & getName () const;
49 
51  virtual void handleNameTag (const GeoNameTag *nameTag) override;
52 
54  virtual void handleSerialDenominator (const GeoSerialDenominator *sD) override;
55 
57  virtual void handleSerialTransformer (const GeoSerialTransformer *sT) override;
58 
60  virtual void handleIdentifierTag (const GeoIdentifierTag *idTag) override;
61 
63  Query<int> getId () const;
64 
66  virtual void handleSerialIdentifier(const GeoSerialIdentifier *sI) override;
67 
68  private:
69 
71  GeoAccessVolumeAction & operator=(const GeoAccessVolumeAction &right);
72 
75 
77  GeoTrf::Transform3D m_transform;
78 
80  GeoTrf::Transform3D m_defTransform;
81 
83  unsigned int m_index;
84 
86  unsigned int m_counter;
87 
89  mutable std::string m_name;
90 
92  mutable Query<int> m_id;
93 
96 
99 
102 
104  std::vector<const GeoTransform *> m_pendingTransformList;
105 
107  unsigned int m_serialDenomPosition;
108 
109  const GeoSerialIdentifier *m_serialIdentifier;
110  unsigned int m_serialIdentPosition;
111  const GeoVAlignmentStore* m_alignStore;
112 };
113 
114 #endif
const GeoNameTag * m_nameTag
A pointer to a name tag. If the volume is named.
Like a GeoSerialDenominator. Identifies volumes, including virtual volumes.
This class generates a name for all physical volumes following it. The name is a prefix string follow...
PVConstLink m_volume
Returns a pointer to the ith physical volume under this one.
virtual void handleFullPhysVol(const GeoFullPhysVol *vol) override
Handles a physical volume.
virtual void handleSerialDenominator(const GeoSerialDenominator *sD) override
Handles a Serial Denominator.
unsigned int m_counter
The volume which we are interested in seeking.
virtual void handleSerialTransformer(const GeoSerialTransformer *sT) override
Handles a Serial Transformer.
const GeoSerialDenominator * m_serialDenominator
A pointer to a serial denominator. If one exists.
std::string m_name
The name of the volume. From a nametag or a serial denominator.
virtual void handleIdentifierTag(const GeoIdentifierTag *idTag) override
Handles an Identifier Tag.
Abstract base class for GeoModel alignment stores The interface allows to store/retrieve transformati...
PVConstLink getVolume() const
Returns the selected physical volume or nullptr if not found.
This class represent a physical volume whose absolute default and aligned positions are known and hel...
This class gives a name to the next physical volume.
Definition: GeoNameTag.h:17
virtual void handleSerialIdentifier(const GeoSerialIdentifier *sI) override
Handles an Serial Identifier.
const GeoIdentifierTag * m_idTag
A pointer to an identifier tag. If the volume is identified.
unsigned int m_index
The volume which we are interested in seeking.
const std::string & getName() const
Returns the name of the volume. From nametag or serial denominator.
Query< int > getId() const
Returns the id of the volume. From the identifier.
This class gives an integral identifer to the following physical volume.
Query< int > m_id
The identifier of the volume. From an identifier tag.
virtual void handleNameTag(const GeoNameTag *nameTag) override
Handles a Name Tag.
const GeoTrf::Transform3D & getDefTransform() const
Returns the default ransformation to the volume.
virtual void handleTransform(const GeoTransform *xform) override
Handles a Transform.
This class takes a physical volume and places it according to a transformation field, N times.
This type of action sees the geometry graph in full detail, including each transformation and propert...
Definition: GeoNodeAction.h:30
unsigned int m_serialDenomPosition
Position of the serial denominator. Used to assign a numeric suffix to the name, eg BaseName+99...
GeoTrf::Transform3D m_transform
The transformation to the ith volume.
const GeoTrf::Transform3D & getTransform() const
Returns the transformation to the volume.
Accesses volumes, returning the ith volume and also its transformation relative to the parent...
GeoTrf::Transform3D m_defTransform
The default transformation to the ith volume.
virtual void handlePhysVol(const GeoPhysVol *vol) override
Handles a physical volume.
A basic geometrical (Euclidean) transform. Can return a GeoTrf::Transform3D. Reference counted...
Definition: GeoTransform.h:22
A GeoPhysVol is a physical volume for normal recursive access only. This means, normally, that it represents a piece of detector that nobody cares about except for tracing engines like GEANT. More specifically:
Definition: GeoPhysVol.h:31
std::vector< const GeoTransform * > m_pendingTransformList
List of Pending Transformations.