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;
graphwalker< DDLogicalPart, DDPosData * > WalkerType
graphwalker< DDLogicalPart, DDPosData * > walker() 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
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
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 !)