GeoModel - GeoModelCore
GeoPhysVol.h
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GEOMODELKERNEL_GEOPHYSVOL_H
6 #define GEOMODELKERNEL_GEOPHYSVOL_H
7 
8 #include "GeoModelKernel/GeoVPhysVol.h"
9 
28 #include <mutex>
29 
30 
31 class GeoPhysVol : public GeoVPhysVol
32 {
33  public:
34  GeoPhysVol(const GeoLogVol* LogVol);
35 
36  GeoPhysVol(const GeoPhysVol &right) = delete;
37  GeoPhysVol & operator=(const GeoPhysVol &right) = delete;
38 
39  void add(GeoGraphNode* graphNode);
40 
42  virtual unsigned int getNChildVols() const override final;
43 
45  virtual PVConstLink getChildVol(unsigned int index) const override final;
46 
48  virtual GeoTrf::Transform3D getXToChildVol(unsigned int index
49  ,const GeoVAlignmentStore* store=nullptr) const override final;
50 
52  virtual GeoTrf::Transform3D getDefXToChildVol(unsigned int index
53  ,const GeoVAlignmentStore* store=nullptr) const override final;
54 
56  virtual void exec(GeoNodeAction *action) const override final;
57 
59  virtual std::string getNameOfChildVol(unsigned int i) const override final;
60 
62  virtual Query<int> getIdOfChildVol(unsigned int i) const override final;
63 
65  virtual unsigned int getNChildVolAndST() const override final;
66 
67  virtual GeoTrf::Transform3D getX (const GeoVAlignmentStore* store=nullptr) const override final;
68  virtual GeoTrf::Transform3D getDefX (const GeoVAlignmentStore* store=nullptr) const override final;
69  virtual unsigned int getNChildNodes() const override final;
70  virtual const GeoGraphNode * const *getChildNode (unsigned int i) const override final;
71  virtual const GeoGraphNode * const *findChildNode(const GeoGraphNode *n) const override final;
72 
73  protected:
74  virtual ~GeoPhysVol() override;
75 
76  private:
77  std::vector<const GeoGraphNode*> m_daughters;
78  mutable std::mutex m_muxVec;
79 };
80 
81 #endif
virtual void exec(GeoNodeAction *action) const override final
Executes a GeoNodeAction.
Definition: GeoPhysVol.cxx:64
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...
virtual GeoTrf::Transform3D getDefXToChildVol(unsigned int index, const GeoVAlignmentStore *store=nullptr) const override final
Returns the default transform to the ith volume.
Definition: GeoPhysVol.cxx:56
virtual PVConstLink getChildVol(unsigned int index) const override final
Returns the ith child volume.
Definition: GeoPhysVol.cxx:41
virtual unsigned int getNChildVolAndST() const override final
Returns the number of child physical volumes and Serial Transformers.
Definition: GeoPhysVol.cxx:121
virtual unsigned int getNChildVols() const override final
Returns the number of child physical volumes.
Definition: GeoPhysVol.cxx:34
virtual std::string getNameOfChildVol(unsigned int i) const override final
Returns the name of the child.
Definition: GeoPhysVol.cxx:107
virtual Query< int > getIdOfChildVol(unsigned int i) const override final
Returns the id of the child.
Definition: GeoPhysVol.cxx:114
This type of action sees the geometry graph in full detail, including each transformation and propert...
Definition: GeoNodeAction.h:30
Represents Nodes that can be assembled together to make a graph. Subclasses (for now): ...
Definition: GeoGraphNode.h:28
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
virtual GeoTrf::Transform3D getXToChildVol(unsigned int index, const GeoVAlignmentStore *store=nullptr) const override final
Returns the transform to the ith volume.
Definition: GeoPhysVol.cxx:48