GeoModel - GeoModelCore
GeoFullPhysVol.h
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GEOMODELKERNEL_GEOFULLPHYSVOL_H
6 #define GEOMODELKERNEL_GEOFULLPHYSVOL_H
7 
8 #include "GeoModelKernel/GeoVFullPhysVol.h"
9 #include <vector>
10 #include <string>
11 
12 class GeoLogVol;
13 class GeoVAlignmentStore;
14 
30 class GeoFullPhysVol final : public GeoVFullPhysVol
31 {
32  public:
33  GeoFullPhysVol (const GeoLogVol* LogVol);
34 
36  void add(GeoGraphNode* graphNode);
37 
39  virtual unsigned int getNChildVols() const override;
40 
42  virtual PVConstLink getChildVol(unsigned int index) const override;
43 
45  virtual GeoTrf::Transform3D getXToChildVol(unsigned int index, const GeoVAlignmentStore* store=nullptr) const override;
46 
48  virtual GeoTrf::Transform3D getDefXToChildVol(unsigned int index, const GeoVAlignmentStore* store=nullptr) const override;
49 
51  virtual void exec(GeoNodeAction *action) const override;
52 
54  virtual std::string getNameOfChildVol(unsigned int i) const override;
55 
57  virtual Query<int> getIdOfChildVol(unsigned int i) const override;
58 
60  virtual unsigned int getNChildVolAndST() const override;
61 
62  GeoFullPhysVol* clone(bool attached = true);
63  const GeoFullPhysVol* cloneOrigin() const;
67  void clear(); // drop subtree
68  virtual GeoTrf::Transform3D getX (const GeoVAlignmentStore* store=nullptr) const override;
69  virtual GeoTrf::Transform3D getDefX (const GeoVAlignmentStore* store=nullptr) const override;
70  virtual unsigned int getNChildNodes() const override;
71  virtual const GeoGraphNode * const *getChildNode (unsigned int i) const override;
72  virtual const GeoGraphNode * const *findChildNode(const GeoGraphNode *n) const override;
73 
74  protected:
75  virtual ~GeoFullPhysVol() override;
76 
77  private:
78  GeoFullPhysVol(const GeoFullPhysVol &right);
79  GeoFullPhysVol & operator=(const GeoFullPhysVol &right);
80 
82  std::vector<const GeoGraphNode *> m_daughters;
83 
84  const GeoFullPhysVol* m_cloneOrigin;
85 };
86 
87 #endif
virtual GeoTrf::Transform3D getXToChildVol(unsigned int index, const GeoVAlignmentStore *store=nullptr) const override
Returns the transform to the ith volume.
GeoFullPhysVol * clone(bool attached=true)
virtual PVConstLink getChildVol(unsigned int index) const override
Returns the ith child volume.
virtual unsigned int getNChildVols() const override
Returns the number of child physical volumes.
A Logical Volume, or agglomeration of shape and material. The logical volume increases the reference ...
Definition: GeoLogVol.h:20
Abstract base class for GeoModel alignment stores The interface allows to store/retrieve transformati...
This class represent a physical volume whose absolute default and aligned positions are known and hel...
virtual std::string getNameOfChildVol(unsigned int i) const override
Returns the name of the child.
std::vector< const GeoGraphNode * > m_daughters
Hold the list of children.
virtual unsigned int getNChildVolAndST() const override
Returns the number of child physical volumes and Serial Transformers.
virtual GeoTrf::Transform3D getDefXToChildVol(unsigned int index, const GeoVAlignmentStore *store=nullptr) const override
Returns the default transform to the ith volume.
virtual Query< int > getIdOfChildVol(unsigned int i) const override
Returns the id of the child.
This type of action sees the geometry graph in full detail, including each transformation and propert...
Definition: GeoNodeAction.h:30
virtual void exec(GeoNodeAction *action) const override
Executes a GeoNodeAction.
Represents Nodes that can be assembled together to make a graph. Subclasses (for now): ...
Definition: GeoGraphNode.h:28
void add(GeoGraphNode *graphNode)
Adds a Graph Node to the Geometry Graph.