15 #include "Math/GenVector/Rotation3D.h" 65 std::cout <<
"*********FIRST BY firstChild, firstChild, nextSibling, nextSibling*********" << std::endl;
91 std::cout <<
"*********THEN BY next, next, next, next*********" << std::endl;
128 adjl_iterator git1 = g1.
begin();
129 adjl_iterator gend1 = g1.
end();
130 adjl_iterator git2 = g2.
begin();
131 adjl_iterator gend2 = g2.
end();
137 while ( git1 != gend1 && git2 != gend2 && ret ) {
144 }
else if (git1->size() && git2->size() ) {
145 DDCompactView::graph_type::edge_list::const_iterator cit1 = git1->begin();
146 DDCompactView::graph_type::edge_list::const_iterator cend1 = git1->end();
147 DDCompactView::graph_type::edge_list::const_iterator cit2 = git2->begin();
148 DDCompactView::graph_type::edge_list::const_iterator cend2 = git2->end();
150 while ( cit1 != cend1 && cit2 != cend2 ) {
165 if (
p1->copyno_ !=
p2->copyno_ ||
167 std::cout <<
"Failed to match node (fullname:copy_no): 1: " 173 std::cout <<
"Failed to match translation " << std::endl;
183 std::cout <<
"Failed to match rotation " << std::endl;
190 }
else if ( git1->size() != git2->size() ) {
192 std::cout <<
"DDCompactViews are different because number of children do not match" << std::endl;
193 std::cout <<
"graph1 size of edge_list: " << git1->size() <<
" and graph2 size of edge_list: " << git2->size() << std::endl;
227 switch ( lhs.
shape() ) {
255 <<
" even though their names match " << std::endl;
260 <<
" even though their names and shape type match." << std::endl;
280 std::cout <<
"Unreflected volumes of DDReflections do not match. Reflections are " 299 std::ios_base::fmtflags originalFlags =
std::cout.flags();
300 int originalPrecision =
std::cout.precision();
301 if( lhs.size() != rhs.size())
304 std::cout <<
"Size of vectors do not match." << std::endl;
308 for(
size_t i = 0;
i < lhs.size() ; ++
i )
310 if( std::fabs( lhs[
i] - rhs[
i] ) >
tol_ )
313 std::cout <<
"Vector content at index " << i <<
" does not match " ;
314 std::cout << std::setw(12) <<
std::fixed << std::setprecision(4) << lhs[
i] <<
" != " << rhs[
i] << std::endl;
321 std::cout.precision( originalPrecision );
332 std::cout <<
"BooleanSolid names do not match ";
335 std::cout <<
"BooleanSolid shape types do not match ";
338 std::cout <<
"BooleanSolid parameters do not match ";
341 std::cout <<
"BooleanSolid SolidA solids do not match ";
344 std::cout <<
"BooleanSolid SolidB solids do not match ";
347 std::cout <<
"BooleanSolid Translations do not match ";
350 std::cout <<
"BooleanSolid Rotations do not match ";
366 if ( std::fabs(lhs.x() - rhs.x()) >
tol_ 367 || std::fabs(lhs.y() - rhs.y()) >
tol_ 368 || std::fabs(lhs.z() - rhs.z()) >
tol_ ) {
382 std::cout <<
"DDRotation names do not match " 387 std::cout <<
"DDRotationMatrix values do not match " 405 double dist = Distance(lhs,rhs);
406 if ( std::fabs(dist) >
tol_ ) {
407 std::cout <<
"Rotation matrices do not match." << std::endl;
411 lhs.GetComponents(x,y,z);
420 std::cout <<
"," << std::setw(12) <<
std::fixed << std::setprecision(4) << z.Z() << std::endl;
422 rhs.GetComponents(x,y,z);
431 std::cout <<
"," << std::setw(12) <<
std::fixed << std::setprecision(4) << z.Z() << std::endl;
bool next()
set current node to the next node in the expanded tree
const DDRotationMatrix * rotation() const
Returns the read-only rotation-matrix.
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
bool parent()
set the current node to the parent node ...
Relative position of a child-volume inside a parent-volume.
bool operator()(const DDCompactView &lhs, const DDCompactView &rhs) const
const graph_type & graph() const
Provides read-only access to the data structure of the compact-view.
Needs to know about rotmat because of BooleanSolid.
const N & nodeData(const edge_type &) const
const E & edgeData(index_type i) const
DDTranslation translation(void) const
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
std::vector< double >::size_type index_type
type of data representation of DDCompactView
Needs to know because of Rotation Matrix of Boolean Relationship.
A DDSolid represents the shape of a part.
DDSolid solidB(void) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
bool operator()(const DDTranslation &lhs, const DDTranslation &rhs) const
Represents a uniquely identifyable rotation matrix.
DDSolid unreflected(void) const
DDRotation rotation(void) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
bool operator()(const DDLogicalPart &lhs, const DDLogicalPart &rhs) const
int depth() const
depth of the scope. 0 means unrestricted depth.
const std::string fullname() const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
DDSolidShape shape(void) const
The type of the solid.
bool operator()(const std::vector< double > &lhs, const std::vector< double > &rhs) const
bool operator()(DDExpandedView &lhs, DDExpandedView &rhs) const
bool operator()(const DDSolid &lhs, const DDSolid &rhs) const
bool operator()(const DDBooleanSolid &lhs, const DDBooleanSolid &rhs) const
DDSolid solidA(void) const
DDComparators need to know if names of DDRotation matter.
bool operator()(const DDRotationMatrix &lhs, const DDRotationMatrix &rhs) const
int copyno() const
Copy number associated with the current node.
bool firstChild()
set the current node to the first child ...
Allows to compare name or not. If not, compares only values of the rotation matrix.
bool nextSibling()
set the current node to the next sibling ...
adj_list::const_iterator const_adj_iterator
LogicalParts have solids which could be BooleanSolids.
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the expanded-view.
Provides an exploded view of the detector (tree-view)
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
bool operator()(const DDRotation &lhs, const DDRotation &rhs) const
const std::string & name() const
Returns the name.