GeoModel - GeoModelCore
GeoAccessVolAndSTAction.h
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GEOMODELKERNEL_GEOACCESSVOLANDSTACTION_H
6 #define GEOMODELKERNEL_GEOACCESSVOLANDSTACTION_H
7 
17 #include "GeoModelKernel/GeoNodeAction.h"
18 #include "GeoModelKernel/GeoDefinitions.h"
19 #include <vector>
20 
21 class GeoVPhysVol;
22 class GeoTransform;
23 
25 {
26  public:
27  GeoAccessVolAndSTAction(unsigned int index);
28  virtual ~GeoAccessVolAndSTAction() override;
29 
30  virtual void handleTransform(const GeoTransform* xform) override;
31  virtual void handlePhysVol(const GeoPhysVol* vol) override;
32  virtual void handleFullPhysVol(const GeoFullPhysVol* vol) override;
33 
34  PVConstLink getVolume() const;
35  const GeoTrf::Transform3D & getTransform() const;
36  const GeoTrf::Transform3D & getDefTransform() const;
37  const std::string & getName() const;
38 
39  virtual void handleNameTag(const GeoNameTag *nameTag) override final;
40  virtual void handleSerialDenominator(const GeoSerialDenominator* sD) override final;
41 
42  virtual void handleSerialTransformer(const GeoSerialTransformer* sT) override final;
43  const GeoSerialTransformer* getSerialTransformer() const;
44 
45  virtual void handleIdentifierTag(const GeoIdentifierTag* idTag) override final;
46 
47  Query<unsigned int> getId() const;
48 
49  private:
51  const GeoAccessVolAndSTAction & operator=(const GeoAccessVolAndSTAction &right);
52 
55 
58 
60  GeoTrf::Transform3D m_transform;
61  GeoTrf::Transform3D m_defTransform;
62 
63  unsigned int m_index;
64  unsigned int m_counter;
65 
67  mutable std::string m_name;
68 
71 
74  const GeoSerialDenominator *m_serialDenominator;
75  const GeoIdentifierTag *m_idTag;
76 
77  std::vector<const GeoTransform *> m_pendingTransformList;
78  unsigned int m_serialDenomPosition;
79 };
80 
81 #endif
82 
83 
std::string m_name
The name of the volume. From a nametag or a serial denominator.
This class generates a name for all physical volumes following it. The name is a prefix string follow...
const GeoNameTag * m_nameTag
A pointer to a name tag. If the volume is named.
Accesses volumes and serial transformers, returning the ith volume and also its transformation relati...
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
This class gives an integral identifer to the following physical volume.
GeoTrf::Transform3D m_transform
The transformation and default transformation to the ith volume.
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
PVConstLink m_volume
A pointer to the ith physical volume under this one.
const GeoSerialTransformer * m_serialTransformer
A pointer to the Serial Transformer.
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
Query< unsigned int > m_id
The identifier of the volume. From an identifier tag.