98 :
G4VSolid(rhs), fPtrSolid(rhs.fPtrSolid), fpPolyhedron(0)
113 if (
this == &rhs) {
return *
this; }
139 return G4String(
"G4ReflectedSolid");
279 y1 = -kInfinity,
y2 = kInfinity,
280 z1 = -kInfinity, z2 = kInfinity;
282 G4bool existsAfterClip = false ;
290 existsAfterClip =
false;
297 G4Transform3D transform3D = pTransform3D*(*fDirectTransform3D);
307 vertices->reserve(8);
310 tmpPoint = transform3D*
G4Point3D(vertex0);
312 vertices->push_back(vertex0);
315 tmpPoint = transform3D*
G4Point3D(vertex1);
317 vertices->push_back(vertex1);
320 tmpPoint = transform3D*
G4Point3D(vertex2);
322 vertices->push_back(vertex2);
325 tmpPoint = transform3D*
G4Point3D(vertex3);
327 vertices->push_back(vertex3);
330 tmpPoint = transform3D*
G4Point3D(vertex4);
332 vertices->push_back(vertex4);
335 tmpPoint = transform3D*
G4Point3D(vertex5);
337 vertices->push_back(vertex5);
340 tmpPoint = transform3D*
G4Point3D(vertex6);
342 vertices->push_back(vertex6);
345 tmpPoint = transform3D*
G4Point3D(vertex7);
347 vertices->push_back(vertex7);
354 "Error in allocation of vertices. Out of memory !");
361 if (pVoxelLimit.
IsLimited(pAxis) ==
false)
363 if ( pMin != kInfinity || pMax != -kInfinity )
365 existsAfterClip = true ;
380 if ( pMin != kInfinity || pMax != -kInfinity )
382 existsAfterClip = true ;
415 existsAfterClip = true ;
421 return existsAfterClip;
451 G4Point3D newN = (*fDirectTransform3D)*
G4Point3D(normal) ;
466 G4Point3D newDirection = (*fDirectTransform3D)*
G4Point3D(v) ;
467 newDirection.
unit() ;
500 G4Point3D newDirection = (*fDirectTransform3D)*
G4Point3D(v);
501 newDirection.
unit() ;
507 calcNorm, validNorm, &solNorm) ;
510 G4Point3D newN = (*fDirectTransform3D)*
G4Point3D(solNorm);
539 G4Exception(
"G4ReflectedSolid::ComputeDimensions()",
541 "Method not applicable in this context!");
573 os <<
"-----------------------------------------------------------\n"
574 <<
" *** Dump for Reflected solid - " <<
GetName() <<
" ***\n"
575 <<
" ===================================================\n"
577 <<
" Parameters of constituent solid: \n"
578 <<
"===========================================================\n";
580 os <<
"===========================================================\n"
581 <<
" Transformations: \n"
582 <<
" Direct transformation - translation : \n"
584 <<
" - rotation : \n"
588 <<
"===========================================================\n";
618 std::ostringstream message;
619 message <<
"Solid - " <<
GetName()
620 <<
" - original solid has no" <<
G4endl
621 <<
"corresponding polyhedron. Returning NULL!";
622 G4Exception(
"G4ReflectedSolid::CreatePolyhedron()",