CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DDCompactView.cc
Go to the documentation of this file.
10 
15 
16 #include <iostream>
17 
34 //
36  : rep_( new DDCompactViewImpl( rootnodedata )),
37  worldpos_( new DDPosData( DDTranslation(), DDRotation(), 0 ))
38 {
39  // 2010-01-27 I am leaving this here so that we are sure the global stores
40  // are open when a new DDCompactView is being made. Eventually I want to
41  // get rid of the need for this somehow? think about it...
42  DDMaterial::StoreT::instance().setReadOnly(false);
43  DDSolid::StoreT::instance().setReadOnly(false);
44  DDLogicalPart::StoreT::instance().setReadOnly(false);
45  DDSpecifics::StoreT::instance().setReadOnly(false);
46  DDRotation::StoreT::instance().setReadOnly(false);
47 }
48 
50 {}
51 
58 {
59  return rep_->graph();
60 }
61 
63 {
64  return const_cast<graph_type&>(rep_->graph());
65 }
66 
68 {
69  return rep_->root();
70 }
71 
73 {
74  return worldpos_.get();
75 }
76 
78 {
79  return rep_->walker();
80 }
81 
82 
101 double DDCompactView::weight(const DDLogicalPart & p) const
102 {
103  return rep_->weight(p);
104 }
105 
107  const DDLogicalPart & parent,
108  std::string copyno,
109  const DDTranslation & trans,
110  const DDRotation & rot,
111  const DDDivision * div)
112 {
113  int cpno = atoi(copyno.c_str());
114  position(self,parent,cpno,trans,rot, div);
115 }
116 
118  const DDLogicalPart & parent,
119  int copyno,
120  const DDTranslation & trans,
121  const DDRotation & rot,
122  const DDDivision * div)
123 {
124  rep_->position( self, parent, copyno, trans, rot, div );
125 }
126 
127 
128 // >>---==========================<()>==========================---<<
129 
130 // UNSTABLE STUFF below ...
132 {
133  rep_->setRoot(root);
134 }
135 
136 void DDCompactView::swap( DDCompactView& repToSwap ) {
137  rep_->swap ( *(repToSwap.rep_) );
138 }
139 
141  : rep_(new DDCompactViewImpl),
142  worldpos_( new DDPosData( DDTranslation(), DDRotation(), 0 ))
143 { }
144 
146  // at this point we should have a valid store of DDObjects and we will move these
147  // to the local storage area using swaps with the existing Singleton<Store...>'s
148  // 2010-01-27 memory patch
154 
155  // 2010-01-27 memory patch
156  // not sure this will stay, but for now we want to explicitely lock the global stores.
157  // lock the global stores.
158  DDMaterial::StoreT::instance().setReadOnly(false);
159  DDSolid::StoreT::instance().setReadOnly(false);
160  DDLogicalPart::StoreT::instance().setReadOnly(false);
161  DDSpecifics::StoreT::instance().setReadOnly(false);
162  DDRotation::StoreT::instance().setReadOnly(false);
163 
164 }
165 
Relative position of a child-volume inside a parent-volume.
Definition: DDPosData.h:13
DDCompactView()
Creates a compact-view.
double weight(const DDLogicalPart &p) const
Prototype version of calculating the weight of a detector component.
const graph_type & graph() const
Provides read-only access to the data structure of the compact-view.
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
graph_type & writeableGraph()
type of data representation of DDCompactView
Definition: DDCompactView.h:77
void setRoot(const DDLogicalPart &root)
don&#39;t use : interface not stable ....
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:66
static value_type & instance()
DDI::Store< DDName, DDI::Specific * > specStore_
void swap(DDCompactView &)
std::unique_ptr< DDPosData > worldpos_
DDI::Store< DDName, DDI::Solid * > solidStore_
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:88
std::unique_ptr< DDCompactViewImpl > rep_
const DDPosData * worldPosition() const
The absolute position of the world.
DDI::Store< DDName, DDRotationMatrix * > rotStore_
walker_type walker() const
dont&#39;t use ! Proper implementation missing ...
const DDLogicalPart & root() const
returns the DDLogicalPart representing the root of the geometrical hierarchy
DDI::Store< DDName, DDI::LogicalPart * > lpStore_
DDI::Store< DDName, DDI::Material * > matStore_