53 #include "HepPolyhedronProcessor.h"
128 if (
this == &rhs) {
return *
this; }
217 G4cout <<
"WARNING - Invalid call in "
218 <<
"G4IntersectionSolid::SurfaceNormal(p)" <<
G4endl
219 <<
" Point p is outside !" <<
G4endl;
221 G4cerr <<
"WARNING - Invalid call in "
222 <<
"G4IntersectionSolid::SurfaceNormal(p)" << G4endl
223 <<
" Point p is outside !" <<
G4endl;
251 G4cout <<
"WARNING - Invalid call in "
252 <<
"G4IntersectionSolid::SurfaceNormal(p)" <<
G4endl
253 <<
" Point p is out of surface !" <<
G4endl;
255 G4cerr <<
"WARNING - Invalid call in "
256 <<
"G4IntersectionSolid::SurfaceNormal(p)" << G4endl
257 <<
" Point p is out of surface !" <<
G4endl;
277 G4cout <<
"WARNING - Invalid call in "
278 <<
"G4IntersectionSolid::DistanceToIn(p,v)" <<
G4endl
279 <<
" Point p is inside !" <<
G4endl;
282 G4cerr <<
"WARNING - Invalid call in "
283 <<
"G4IntersectionSolid::DistanceToIn(p,v)" << G4endl
284 <<
" Point p is inside !" <<
G4endl;
297 G4bool doA =
true, doB =
true;
342 if( dB1 < dA2 )
return dB1;
352 if( dA1 < dB2 )
return dA1;
376 G4cout <<
"WARNING - Invalid call in "
377 <<
"G4IntersectionSolid::DistanceToIn(p)" <<
G4endl
378 <<
" Point p is inside !" <<
G4endl;
380 G4cerr <<
"WARNING - Invalid call in "
381 <<
"G4IntersectionSolid::DistanceToIn(p)" << G4endl
382 <<
" Point p is inside !" <<
G4endl;
420 G4bool validNormA, validNormB;
434 G4cout <<
"WARNING - Invalid call in "
435 <<
"G4IntersectionSolid::DistanceToOut(p,v)" << G4endl
436 <<
" Point p is outside !" <<
G4endl;
439 G4cerr <<
"WARNING - Invalid call in "
440 <<
"G4IntersectionSolid::DistanceToOut(p,v)" << G4endl
441 <<
" Point p is outside !" <<
G4endl;
455 *validNorm = validNormA;
460 *validNorm = validNormB;
478 G4cout <<
"WARNING - Invalid call in "
479 <<
"G4IntersectionSolid::DistanceToOut(p)" <<
G4endl
480 <<
" Point p is outside !" <<
G4endl;
482 G4cerr <<
"WARNING - Invalid call in "
483 <<
"G4IntersectionSolid::DistanceToOut(p)" << G4endl
484 <<
" Point p is outside !" <<
G4endl;
511 return G4String(
"G4IntersectionSolid");
545 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
EInside Inside(const G4ThreeVector &p) const
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepRotation G4RotationMatrix
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
G4IntersectionSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
virtual void AddSolid(const G4Box &)=0
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
static double normal(HepRandomEngine *eptr)
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
G4GLOB_DLL std::ostream G4cout
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
G4GeometryType GetEntityType() const
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const
G4Polyhedron * CreatePolyhedron() const
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4BooleanSolid & operator=(const G4BooleanSolid &rhs)
void DescribeYourselfTo(G4VGraphicsScene &scene) const
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
G4IntersectionSolid & operator=(const G4IntersectionSolid &rhs)
G4Polyhedron * StackPolyhedron(HepPolyhedronProcessor &, const G4VSolid *) const
G4GLOB_DLL std::ostream G4cerr
virtual ~G4IntersectionSolid()