41 #include "HepPolyhedronProcessor.h"
51 G4VSolid(pName), fAreaRatio(0.), fStatistics(1000000), fCubVolEpsilon(0.001),
52 fAreaAccuracy(-1.), fCubicVolume(0.), fSurfaceArea(0.),
53 fpPolyhedron(0), createdDisplacedSolid(false)
68 G4VSolid(pName), fAreaRatio(0.), fStatistics(1000000), fCubVolEpsilon(0.001),
69 fAreaAccuracy(-1.), fCubicVolume(0.), fSurfaceArea(0.),
70 fpPolyhedron(0), createdDisplacedSolid(true)
84 G4VSolid(pName), fAreaRatio(0.), fStatistics(1000000), fCubVolEpsilon(0.001),
85 fAreaAccuracy(-1.), fCubicVolume(0.), fSurfaceArea(0.),
86 fpPolyhedron(0), createdDisplacedSolid(true)
98 :
G4VSolid(a), fPtrSolidA(0), fPtrSolidB(0), fAreaRatio(0.),
99 fStatistics(1000000), fCubVolEpsilon(0.001),
100 fAreaAccuracy(-1.), fCubicVolume(0.), fSurfaceArea(0.),
101 fpPolyhedron(0), createdDisplacedSolid(false)
123 :
G4VSolid (rhs), fPtrSolidA(rhs.fPtrSolidA), fPtrSolidB(rhs.fPtrSolidB),
124 fAreaRatio(rhs.fAreaRatio),
125 fStatistics(rhs.fStatistics), fCubVolEpsilon(rhs.fCubVolEpsilon),
126 fAreaAccuracy(rhs.fAreaAccuracy), fCubicVolume(rhs.fCubicVolume),
127 fSurfaceArea(rhs.fSurfaceArea), fpPolyhedron(0),
128 createdDisplacedSolid(rhs.createdDisplacedSolid)
140 if (
this == &rhs) {
return *
this; }
174 G4Exception(
"G4BooleanSolid::GetConstituentSolid()",
197 G4Exception(
"G4BooleanSolid::GetConstituentSolid()",
219 os <<
"-----------------------------------------------------------\n"
220 <<
" *** Dump for Boolean solid - " <<
GetName() <<
" ***\n"
221 <<
" ===================================================\n"
223 <<
" Parameters of constituent solids: \n"
224 <<
"===========================================================\n";
227 os <<
"===========================================================\n";
278 HepPolyhedronProcessor::Operation operation;
280 if (type ==
"G4UnionSolid")
281 { operation = HepPolyhedronProcessor::UNION; }
282 else if (type ==
"G4IntersectionSolid")
283 { operation = HepPolyhedronProcessor::INTERSECTION; }
284 else if (type ==
"G4SubtractionSolid")
285 { operation = HepPolyhedronProcessor::SUBTRACTION; }
288 std::ostringstream message;
289 message <<
"Solid - " << solid->
GetName()
290 <<
" - Unrecognised composite solid" <<
G4endl
291 <<
" Returning NULL !";
309 processor.push_back (operation, *operand);
virtual G4Polyhedron * GetPolyhedron() const
virtual G4Polyhedron * GetPolyhedron() const
G4BooleanSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepRotation G4RotationMatrix
virtual G4GeometryType GetEntityType() const
virtual G4GeometryType GetEntityType() const =0
static int operand(pchar begin, pchar end, double &result, pchar &endp, const dic_type &dictionary)
G4bool createdDisplacedSolid
virtual std::ostream & StreamInfo(std::ostream &os) const =0
virtual EInside Inside(const G4ThreeVector &p) const =0
std::ostream & StreamInfo(std::ostream &os) const
G4Polyhedron * fpPolyhedron
virtual G4Polyhedron * CreatePolyhedron() const
virtual ~G4BooleanSolid()
virtual const G4VSolid * GetConstituentSolid(G4int no) const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4double GetAreaRatio() const
virtual G4ThreeVector GetPointOnSurface() const
virtual const G4VSolid * GetConstituentSolid(G4int no) const
G4ThreeVector GetPointOnSurface() const
G4VSolid & operator=(const G4VSolid &rhs)
G4int GetNumberOfRotationStepsAtTimeOfCreation() const
G4BooleanSolid & operator=(const G4BooleanSolid &rhs)
G4Polyhedron * StackPolyhedron(HepPolyhedronProcessor &, const G4VSolid *) const