51 #include "HepPolyhedronProcessor.h"
128 if (
this == &rhs) {
return *
this; }
152 pTransform, pMin, pMax );
201 G4cout <<
"WARNING - Invalid call [1] in "
202 <<
"G4SubtractionSolid::SurfaceNormal(p)" <<
G4endl
203 <<
" Point p is outside !" <<
G4endl;
205 G4cerr <<
"WARNING - Invalid call [1] in "
206 <<
"G4SubtractionSolid::SurfaceNormal(p)" << G4endl
207 <<
" Point p is outside !" <<
G4endl;
239 G4cout <<
"WARNING - Invalid call [2] in "
240 <<
"G4SubtractionSolid::SurfaceNormal(p)" <<
G4endl
241 <<
" Point p is inside !" <<
G4endl;
243 G4cerr <<
"WARNING - Invalid call [2] in "
244 <<
"G4SubtractionSolid::SurfaceNormal(p)" << G4endl
245 <<
" Point p is inside !" <<
G4endl;
267 G4cout <<
"WARNING - Invalid call in "
268 <<
"G4SubtractionSolid::DistanceToIn(p,v)" <<
G4endl
269 <<
" Point p is inside !" <<
G4endl;
272 G4cerr <<
"WARNING - Invalid call in "
273 <<
"G4SubtractionSolid::DistanceToIn(p,v)" << G4endl
274 <<
" Point p is inside !" <<
G4endl;
309 ->GetConstituentMovedSolid()->GetName();
311 std::ostringstream message;
312 message <<
"Illegal condition caused by solids: "
314 message.precision(16);
315 message <<
"Looping detected in point " << p+dist*v
316 <<
", from original point " << p
317 <<
" and direction " << v << G4endl
318 <<
"Computed candidate distance: " << dist <<
"*mm. ";
319 message.precision(6);
321 G4Exception(
"G4SubtractionSolid::DistanceToIn(p,v)",
323 "Returning candidate distance.");
363 ->GetConstituentMovedSolid()->GetName();
365 std::ostringstream message;
366 message <<
"Illegal condition caused by solids: "
368 message.precision(16);
369 message <<
"Looping detected in point " << p+dist*v
370 <<
", from original point " << p
371 <<
" and direction " << v << G4endl
372 <<
"Computed candidate distance: " << dist <<
"*mm. ";
373 message.precision(6);
375 G4Exception(
"G4SubtractionSolid::DistanceToIn(p,v)",
377 "Returning candidate distance.");
402 G4cout <<
"WARNING - Invalid call in "
403 <<
"G4SubtractionSolid::DistanceToIn(p)" <<
G4endl
404 <<
" Point p is inside !" <<
G4endl;
406 G4cerr <<
"WARNING - Invalid call in "
407 <<
"G4SubtractionSolid::DistanceToIn(p)" << G4endl
408 <<
" Point p is inside !" <<
G4endl;
448 G4cout <<
"WARNING - Invalid call in "
449 <<
"G4SubtractionSolid::DistanceToOut(p,v)" << G4endl
450 <<
" Point p is outside !" <<
G4endl;
453 G4cerr <<
"WARNING - Invalid call in "
454 <<
"G4SubtractionSolid::DistanceToOut(p,v)" << G4endl
455 <<
" Point p is outside !" <<
G4endl;
492 G4cout <<
"WARNING - Invalid call in "
493 <<
"G4SubtractionSolid::DistanceToOut(p)" <<
G4endl
494 <<
" Point p is outside" <<
G4endl;
496 G4cerr <<
"WARNING - Invalid call in "
497 <<
"G4SubtractionSolid::DistanceToOut(p)" << G4endl
498 <<
" Point p is outside" <<
G4endl;
516 return G4String(
"G4SubtractionSolid");
561 if (processor.execute(*result)) {
return result; }
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
static const G4double kInfinity
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepRotation G4RotationMatrix
virtual ~G4SubtractionSolid()
virtual G4GeometryType GetEntityType() const =0
virtual void AddSolid(const G4Box &)=0
G4Polyhedron * CreatePolyhedron() const
static double normal(HepRandomEngine *eptr)
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
G4GLOB_DLL std::ostream G4cout
virtual EInside Inside(const G4ThreeVector &p) const =0
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
G4double GetRadialTolerance() const
G4SubtractionSolid & operator=(const G4SubtractionSolid &rhs)
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
EInside Inside(const G4ThreeVector &p) const
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
G4SubtractionSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void DescribeYourselfTo(G4VGraphicsScene &scene) const
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4GeometryType GetEntityType() const
G4BooleanSolid & operator=(const G4BooleanSolid &rhs)
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
G4Polyhedron * StackPolyhedron(HepPolyhedronProcessor &, const G4VSolid *) const
static G4GeometryTolerance * GetInstance()
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const
G4GLOB_DLL std::ostream G4cerr