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->empty() && !git2->empty() ) {
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: " 169 << ddcurLP2.
name().
fullname() <<
":" <<
p2->copyno() << std::endl;
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() ) {
256 <<
" even though their names match " << std::endl;
261 <<
" even though their names and shape type match." << std::endl;
281 std::cout <<
"Unreflected volumes of DDReflections do not match. Reflections are " 300 std::ios_base::fmtflags originalFlags =
std::cout.flags();
301 int originalPrecision =
std::cout.precision();
302 if( lhs.size() != rhs.size())
305 std::cout <<
"Size of vectors do not match." << std::endl;
309 for(
size_t i = 0;
i < lhs.size() ; ++
i )
311 if( std::fabs( lhs[
i] - rhs[
i] ) >
tol_ )
314 std::cout <<
"Vector content at index " << i <<
" does not match " ;
315 std::cout << std::setw(12) <<
std::fixed << std::setprecision(4) << lhs[
i] <<
" != " << rhs[
i] << std::endl;
322 std::cout.precision( originalPrecision );
333 std::cout <<
"BooleanSolid names do not match ";
336 std::cout <<
"BooleanSolid shape types do not match ";
339 std::cout <<
"BooleanSolid parameters do not match ";
342 std::cout <<
"BooleanSolid SolidA solids do not match ";
345 std::cout <<
"BooleanSolid SolidB solids do not match ";
348 std::cout <<
"BooleanSolid Translations do not match ";
351 std::cout <<
"BooleanSolid Rotations do not match ";
367 if ( std::fabs(lhs.x() - rhs.x()) >
tol_ 368 || std::fabs(lhs.y() - rhs.y()) >
tol_ 369 || std::fabs(lhs.z() - rhs.z()) >
tol_ ) {
383 std::cout <<
"DDRotation names do not match " 388 std::cout <<
"DDRotationMatrix values do not match " 406 double dist = Distance(lhs,rhs);
407 if ( std::fabs(dist) >
tol_ ) {
408 std::cout <<
"Rotation matrices do not match." << std::endl;
412 lhs.GetComponents(x,y,z);
421 std::cout <<
"," << std::setw(12) <<
std::fixed << std::setprecision(4) << z.Z() << std::endl;
423 rhs.GetComponents(x,y,z);
432 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.
std::vector< double >::size_type index_type
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.
DDTranslation translation(void) const
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
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.
const N & nodeData(const edge_type &) const
const E & edgeData(index_type i) const
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 ...
LogicalParts have solids which could be BooleanSolids.
adj_list::const_iterator const_adj_iterator
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.