4 #include "CLHEP/Units/GlobalSystemOfUnits.h"
12 LogDebug(
"DDCompactViewImpl") <<
"Root node data = " << rootnodedata << std::endl;
19 LogDebug(
"DDCompactViewImpl") <<
"In destructor, graph is empty. Root:" <<
root_ << std::endl;
21 LogDebug(
"DDCompactViewImpl") <<
"In destructor, graph is NOT empty. Root:" <<
root_ <<
" graph_.size() = " <<
graph_.
size() << std::endl;
24 for(; erange.first != erange.second; ++(erange.first)) {
31 edm::LogInfo(
"DDCompactViewImpl") << std::endl <<
"DDD transient representation has been destructed." << std::endl << std::endl;
55 double childrenVols=0;
56 double childrenWeights=0;
63 a_vol=
child.solid().volume();
66 <<
"is zero or negative, vol=" << a_vol/m3 <<
"m3" << std::endl;
68 DCOUT_V(
'C',
"DC: weightcalc, currently=" <<
child.ddname().name()
69 <<
" vol=" << a_vol/cm3 <<
"cm3");
70 childrenVols += a_vol;
79 <<
" is negative or zero, rho=" << dens/
g*cm3 <<
"g/cm3" << std::endl;
82 double w = (p_vol - childrenVols)*dens + childrenWeights;
83 if ( (fabs(p_vol) - fabs(childrenVols))/fabs(p_vol) > 1.01 ) {
84 edm::LogError(
"DDCompactViewImpl") <<
"DD-WARNING: parent-volume smaller than children, parent="
85 << part.
ddname() <<
" difference-vol="
86 << (p_vol - childrenVols)/m3 <<
"m3, this is "
87 << (childrenVols - p_vol)/p_vol <<
"% of the parent-vol." << std::endl;
adj_list::size_type size() const
void position(const DDLogicalPart &self, const DDLogicalPart &parent, int copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div)
Relative position of a child-volume inside a parent-volume.
graphwalker< DDLogicalPart, DDPosData * > walker() const
std::pair< edge_iterator, edge_iterator > edge_range
const E & edgeData(index_type i) const
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
double & weight(void)
Weight of the LogicalPart viewed as a component, if cached, else -1.
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
edge_range edges(index_type nodeIndex)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
result_type nextSibling()
#define DCOUT_V(M_v_Y, M_v_S)
double density() const
returns the density
value_type current() const
void swap(DDCompactViewImpl &)
static const char root_[]
void addEdge(const N &from, const N &to, const E &edge)
double weight(const DDLogicalPart &) const
const DDMaterial & material(void) const
Returns a reference object of the material this LogicalPart is made of.
double volume(void) const
Returns the volume of the given solid (does not work with boolean soids !)
void swap(graph< N, E > &)