59 :
G4VSolid(pName), fRebuildPolyhedron(false), fpPolyhedron(0)
78 :
G4VSolid(rhs), fPtrSolid(rhs.fPtrSolid),
79 fRebuildPolyhedron(false), fpPolyhedron(0)
91 if (
this == &rhs) {
return *
this; }
113 return G4String(
"G4ReflectedSolid");
165 if (std::abs(xx) == 1 && std::abs(yy) == 1 && std::abs(zz) == 1)
200 if (pMin.
x() >= pMax.
x() || pMin.
y() >= pMax.
y() || pMin.
z() >= pMax.
z())
203 message <<
"Bad bounding box (min >= max) for solid: "
205 <<
"\npMin = " << pMin
206 <<
"\npMax = " << pMax;
207 G4Exception(
"G4ReflectedSolid::BoundingLimits()",
"GeomMgt0001",
323 calcNorm, validNorm, &solNorm);
326 *n = (*fDirectTransform3D)*
G4Vector3D(solNorm);
352 G4Exception(
"G4ReflectedSolid::ComputeDimensions()",
354 "Method not applicable in this context!");
384 os <<
"-----------------------------------------------------------\n"
385 <<
" *** Dump for Reflected solid - " <<
GetName() <<
" ***\n"
386 <<
" ===================================================\n"
388 <<
" Parameters of constituent solid: \n"
389 <<
"===========================================================\n";
391 os <<
"===========================================================\n"
392 <<
" Transformations: \n"
393 <<
" Direct transformation - translation : \n"
395 <<
" - rotation : \n"
399 <<
"===========================================================\n";
430 message <<
"Solid - " <<
GetName()
431 <<
" - original solid has no" <<
G4endl
432 <<
"corresponding polyhedron. Returning NULL!";
433 G4Exception(
"G4ReflectedSolid::CreatePolyhedron()",
void set(double x, double y, double z)
void SetDirectTransform3D(G4Transform3D &)
G4ThreeVector GetPointOnSurface() const
virtual const G4ReflectedSolid * GetReflectedSolidPtr() const
G4double GetMinZExtent() 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
std::ostream & print(std::ostream &os) const
std::ostream & StreamInfo(std::ostream &os) const
void DescribeYourselfTo(G4VGraphicsScene &scene) const
virtual void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const
G4double GetMinYExtent() const
void message(RunManager *runmanager)
G4Transform3D * fDirectTransform3D
virtual G4ThreeVector GetPointOnSurface() const
static double normal(HepRandomEngine *eptr)
G4VSolid * GetConstituentMovedSolid() const
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
G4Polyhedron * CreatePolyhedron() const
virtual EInside Inside(const G4ThreeVector &p) const =0
G4VSolid & operator=(const G4VSolid &rhs)
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
G4double GetMaxYExtent() const
HepPolyhedron & Transform(const G4Transform3D &t)
G4double GetMaxZExtent() const
void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const
G4double GetMaxXExtent() const
virtual std::ostream & StreamInfo(std::ostream &os) const =0
G4bool fRebuildPolyhedron
HepGeom::Vector3D< G4double > G4Vector3D
static G4int GetNumberOfRotationSteps()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
virtual ~G4ReflectedSolid()
G4int GetNumberOfRotationStepsAtTimeOfCreation() const
G4ReflectedSolid & operator=(const G4ReflectedSolid &rhs)
EInside Inside(const G4ThreeVector &p) const
G4Polyhedron * GetPolyhedron() const
G4Transform3D GetTransform3D() const
virtual G4GeometryType GetEntityType() const
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
void AddLimit(const EAxis pAxis, const G4double pMin, const G4double pMax)
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
virtual G4Polyhedron * CreatePolyhedron() const
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const
G4Polyhedron * fpPolyhedron
G4ReflectedSolid(const G4String &pName, G4VSolid *pSolid, const G4Transform3D &transform)
G4double GetMinXExtent() const
HepGeom::Point3D< G4double > G4Point3D
HepRotation inverse() const
G4Transform3D GetDirectTransform3D() const