34#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
47G4UEllipsoid::G4UEllipsoid(
const G4String& pName,
53 : Base_t(pName, dx, dy, dz, bcut, tcut)
60G4UEllipsoid::G4UEllipsoid(
const G4UEllipsoid& rhs)
68G4UEllipsoid& G4UEllipsoid::operator = (
const G4UEllipsoid& rhs)
72 if (
this == &rhs) {
return *
this; }
76 Base_t::operator=(rhs);
87 return Base_t::GetDx();
92 return Base_t::GetDy();
97 return Base_t::GetDz();
102 return (i==0) ? GetDx()
107G4double G4UEllipsoid::GetZBottomCut()
const
109 return Base_t::GetZBottomCut();
112G4double G4UEllipsoid::GetZTopCut()
const
114 return Base_t::GetZTopCut();
123 Base_t::SetSemiAxes(x, y, z);
128 Base_t::SetZCuts(newzBottomCut, newzTopCut);
135G4VSolid* G4UEllipsoid::Clone()
const
137 return new G4UEllipsoid(*
this);
150 G4double zmin = std::max(-dz,GetZBottomCut());
151 G4double zmax = std::min( dz,GetZTopCut());
152 pMin.
set(-dx,-dy,zmin);
153 pMax.
set( dx, dy,zmax);
157 if (pMin.
x() >= pMax.
x() || pMin.
y() >= pMax.
y() || pMin.
z() >= pMax.
z())
159 std::ostringstream message;
160 message <<
"Bad bounding box (min >= max) for solid: "
162 <<
"\npMin = " << pMin
163 <<
"\npMax = " << pMax;
164 G4Exception(
"G4UEllipsoid::BoundingLimits()",
"GeomMgt0001",
175G4UEllipsoid::CalculateExtent(
const EAxis pAxis,
183 BoundingLimits(bmin,bmax);
187 return bbox.CalculateExtent(pAxis,pVoxelLimit,pTransform,pMin,pMax);
197 GetZBottomCut(), GetZTopCut());
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
void set(double x, double y, double z)
G4BoundingEnvelope is a helper class to facilitate calculation of the extent of a solid within the li...
G4VSolid is an abstract base class for solids, physical shapes that can be tracked through....
G4VoxelLimits represents limitation/restrictions of space, where restrictions are only made perpendic...