GeoModel - GeoModelCore
GeoTraversalState.cxx
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "GeoModelKernel/GeoTraversalState.h"
6 
7 GeoTraversalState::GeoTraversalState ()
8  : m_absTransform(GeoTrf::Transform3D::Identity())
9  , m_defAbsTransform(GeoTrf::Transform3D::Identity())
10  , m_transform(GeoTrf::Transform3D::Identity())
11  , m_defTransform(GeoTrf::Transform3D::Identity())
12 {
13 }
14 
15 GeoTraversalState::~GeoTraversalState()
16 {
17 }
18 
19 const GeoTrf::Transform3D & GeoTraversalState::getTransform () const
20 {
21  return m_transform;
22 }
23 
24 const std::string & GeoTraversalState::getName () const
25 {
26  return m_name;
27 }
28 
29 const GeoTrf::Transform3D & GeoTraversalState::getDefTransform () const
30 {
31  return m_defTransform;
32 }
33 
34 const std::string & GeoTraversalState::getAbsoluteName () const
35 {
36  return m_absName;
37 }
38 
39 const GeoTrf::Transform3D & GeoTraversalState::getDefAbsoluteTransform () const
40 {
41  return m_defAbsTransform;
42 }
43 
44 const GeoTrf::Transform3D & GeoTraversalState::getAbsoluteTransform () const
45 {
46  return m_absTransform;
47 }
48 
49 void GeoTraversalState::setTransform (const GeoTrf::Transform3D &transform)
50 {
51  m_transform = transform;
52  m_absTransform = m_absTransformList.top () * transform;
53 }
54 
55 void GeoTraversalState::setName (const std::string &name)
56 {
57  m_name = name;
58  m_absName = m_absNameList.top () + "/" + name;
59 }
60 
61 void GeoTraversalState::setDefTransform (const GeoTrf::Transform3D &transform)
62 {
63  m_defTransform = transform;
64  m_defAbsTransform = m_defAbsTransformList.top () * transform;
65 }
66 
67 void GeoTraversalState::nextLevel (const GeoVPhysVol* pv)
68 {
69  m_absNameList.push (m_absName);
70  m_absTransformList.push (m_absTransform);
71  m_defAbsTransformList.push (m_defAbsTransform);
72 
73  m_path.push(pv);
74  //
75  // Reinitialize to identity.
76  //
77 
78  m_absTransform = m_defAbsTransform = m_transform = m_defTransform =
79  GeoTrf::Transform3D::Identity();
80 }
81 
82 void GeoTraversalState::previousLevel ()
83 {
84  m_absTransform = m_absTransformList.top ();
85  m_defAbsTransform = m_defAbsTransformList.top ();
86  m_absTransformList.pop ();
87  m_defAbsTransformList.pop ();
88  m_absNameList.pop ();
89  m_path.pop();
90  m_transform = m_defTransform = GeoTrf::Transform3D::Identity();
91 }
92 
93 const GeoNodePath * GeoTraversalState::getPath () const
94 {
95  return &m_path;
96 }
97 
98 void GeoTraversalState::setId (const Query<int> &id)
99 {
100  m_id=id;
101 }
102 
103 const Query<int> GeoTraversalState::getId () const
104 {
105  return m_id;
106 }