130 if (
this == &rhs) {
return *
this; }
154 pTransform, pMin, pMax );
201 G4cout <<
"WARNING - Invalid call [1] in "
202 <<
"G4SubtractionSolid::SurfaceNormal(p)" <<
G4endl
203 <<
" Point p is inside !" <<
G4endl;
205 G4cerr <<
"WARNING - Invalid call [1] in "
206 <<
"G4SubtractionSolid::SurfaceNormal(p)" <<
G4endl
207 <<
" Point p is inside !" <<
G4endl;
236 G4cout <<
"WARNING - Invalid call [2] in "
237 <<
"G4SubtractionSolid::SurfaceNormal(p)" <<
G4endl
238 <<
" Point p is inside !" <<
G4endl;
240 G4cerr <<
"WARNING - Invalid call [2] in "
241 <<
"G4SubtractionSolid::SurfaceNormal(p)" <<
G4endl
242 <<
" Point p is inside !" <<
G4endl;
264 G4cout <<
"WARNING - Invalid call in "
265 <<
"G4SubtractionSolid::DistanceToIn(p,v)" <<
G4endl
266 <<
" Point p is inside !" <<
G4endl;
269 G4cerr <<
"WARNING - Invalid call in "
270 <<
"G4SubtractionSolid::DistanceToIn(p,v)" <<
G4endl
271 <<
" Point p is inside !" <<
G4endl;
289 if(disTmp == kInfinity)
306 ->GetConstituentMovedSolid()->GetName();
308 std::ostringstream message;
309 message <<
"Illegal condition caused by solids: "
311 message.precision(16);
312 message <<
"Looping detected in point " << p+dist*v
313 <<
", from original point " << p
314 <<
" and direction " << v <<
G4endl
315 <<
"Computed candidate distance: " << dist <<
"*mm.";
316 message.precision(6);
318 G4Exception(
"G4SubtractionSolid::DistanceToIn(p,v)",
320 "Returning candidate distance.");
332 if( dist == kInfinity )
348 if(disTmp == kInfinity)
360 ->GetConstituentMovedSolid()->GetName();
362 std::ostringstream message;
363 message <<
"Illegal condition caused by solids: "
365 message.precision(16);
366 message <<
"Looping detected in point " << p+dist*v
367 <<
", from original point " << p
368 <<
" and direction " << v <<
G4endl
369 <<
"Computed candidate distance: " << dist <<
"*mm.";
370 message.precision(6);
372 G4Exception(
"G4SubtractionSolid::DistanceToIn(p,v)",
399 G4cout <<
"WARNING - Invalid call in "
400 <<
"G4SubtractionSolid::DistanceToIn(p)" <<
G4endl
401 <<
" Point p is inside !" <<
G4endl;
403 G4cerr <<
"WARNING - Invalid call in "
404 <<
"G4SubtractionSolid::DistanceToIn(p)" <<
G4endl
405 <<
" Point p is inside !" <<
G4endl;
445 G4cout <<
"WARNING - Invalid call in "
446 <<
"G4SubtractionSolid::DistanceToOut(p,v)" <<
G4endl
447 <<
" Point p is outside !" <<
G4endl;
450 G4cerr <<
"WARNING - Invalid call in "
451 <<
"G4SubtractionSolid::DistanceToOut(p,v)" <<
G4endl
452 <<
" Point p is outside !" <<
G4endl;
489 G4cout <<
"WARNING - Invalid call in "
490 <<
"G4SubtractionSolid::DistanceToOut(p)" <<
G4endl
491 <<
" Point p is outside" <<
G4endl;
493 G4cerr <<
"WARNING - Invalid call in "
494 <<
"G4SubtractionSolid::DistanceToOut(p)" <<
G4endl
495 <<
" Point p is outside" <<
G4endl;
513 return G4String(
"G4SubtractionSolid");
558 if (
processor.execute(*result)) {
return result; }
G4DLLIMPORT std::ostream G4cerr
G4DLLIMPORT std::ostream G4cout
G4BooleanSolid & operator=(const G4BooleanSolid &rhs)
G4Polyhedron * StackPolyhedron(HepPolyhedronProcessor &, const G4VSolid *) const
G4double GetRadialTolerance() const
static G4GeometryTolerance * GetInstance()
virtual ~G4SubtractionSolid()
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
G4SubtractionSolid & operator=(const G4SubtractionSolid &rhs)
void DescribeYourselfTo(G4VGraphicsScene &scene) const
G4NURBS * CreateNURBS() const
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
G4Polyhedron * CreatePolyhedron() const
G4GeometryType GetEntityType() const
G4SubtractionSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
EInside Inside(const G4ThreeVector &p) const
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const
virtual void AddSolid(const G4Box &)=0
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
virtual G4GeometryType GetEntityType() const =0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)