Geant4  10.01
VUSolid Class Referenceabstract

#include <VUSolid.hh>

+ Inheritance diagram for VUSolid:
+ Collaboration diagram for VUSolid:

Public Types

enum  EnumInside { eInside =0, eSurface =1, eOutside =2 }
 
enum  EAxisType { eXaxis =0, eYaxis =1, eZaxis =2 }
 

Public Member Functions

 VUSolid ()
 
 VUSolid (const std::string &name)
 
virtual ~VUSolid ()
 
double GetCarTolerance () const
 
double GetRadTolerance () const
 
double GetAngTolerance () const
 
void SetCarTolerance (double eps)
 
void SetRadTolerance (double eps)
 
void SetAngTolerance (double eps)
 
virtual EnumInside Inside (const UVector3 &aPoint) const =0
 
virtual double SafetyFromInside (const UVector3 &aPoint, bool aAccurate=false) const =0
 
virtual double SafetyFromOutside (const UVector3 &aPoint, bool aAccurate=false) const =0
 
virtual double DistanceToIn (const UVector3 &aPoint, const UVector3 &aDirection, double aPstep=UUtils::kInfinity) const =0
 
virtual double DistanceToOut (const UVector3 &aPoint, const UVector3 &aDirection, UVector3 &aNormalVector, bool &aConvex, double aPstep=UUtils::kInfinity) const =0
 
virtual bool Normal (const UVector3 &aPoint, UVector3 &aNormal) const =0
 
virtual void ExtentAxis (EAxisType aAxis, double &aMin, double &aMax) const
 
virtual void Extent (UVector3 &aMin, UVector3 &aMax) const =0
 
virtual UGeometryType GetEntityType () const =0
 
const std::string & GetName () const
 
void SetName (const std::string &aName)
 
virtual double Capacity ()=0
 
virtual double SurfaceArea ()=0
 
virtual void SamplePointsInside (int, UVector3 *) const
 
virtual void SamplePointsOnSurface (int, UVector3 *) const
 
virtual void SamplePointsOnEdge (int, UVector3 *) const
 
virtual void GetParametersList (int aNumber, double *aArray) const =0
 
virtual VUSolidClone () const =0
 
virtual std::ostream & StreamInfo (std::ostream &os) const =0
 
virtual UVector3 GetPointOnSurface () const =0
 
double EstimateCubicVolume (int nStat, double epsilon) const
 
double EstimateSurfaceArea (int nStat, double ell) const
 

Static Public Member Functions

static double Tolerance ()
 

Protected Member Functions

virtual void ComputeBBox (UBBox *aBox, bool aStore=false)=0
 

Static Protected Attributes

static double fgTolerance = 1.0E-9
 
static double frTolerance = 1.0E-9
 
static double faTolerance = 1.0E-9
 

Private Attributes

std::string fName
 

Detailed Description

Definition at line 19 of file VUSolid.hh.

Member Enumeration Documentation

Enumerator
eXaxis 
eYaxis 
eZaxis 

Definition at line 27 of file VUSolid.hh.

Enumerator
eInside 
eSurface 
eOutside 

Definition at line 23 of file VUSolid.hh.

Constructor & Destructor Documentation

VUSolid::VUSolid ( )

Definition at line 18 of file VUSolid.cc.

VUSolid::VUSolid ( const std::string &  name)

Definition at line 24 of file VUSolid.cc.

References SetName().

+ Here is the call graph for this function:

VUSolid::~VUSolid ( )
virtual

Definition at line 32 of file VUSolid.cc.

Member Function Documentation

double VUSolid::Capacity ( )
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolycone, UGenericTrap, UMultiUnion, USphere, UTrd, UVCSGfaceted, UCons, UBox, UTubs, UTet, and UOrb.

Definition at line 199 of file VUSolid.cc.

References EstimateCubicVolume().

Referenced by UGenericTrap::Capacity(), UPolycone::Capacity(), and G4USolid::GetCubicVolume().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

virtual VUSolid* VUSolid::Clone ( ) const
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolycone, UPolyhedra, UCons, USphere, UExtrudedSolid, UGenericTrap, UMultiUnion, UTubs, UTrd, UBox, UGenericPolycone, UTet, and UOrb.

Referenced by G4USolid::G4USolid(), and G4USolid::operator=().

+ Here is the caller graph for this function:

virtual void VUSolid::ComputeBBox ( UBBox aBox,
bool  aStore = false 
)
protectedpure virtual
virtual double VUSolid::DistanceToIn ( const UVector3 aPoint,
const UVector3 aDirection,
double  aPstep = UUtils::kInfinity 
) const
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolyhedra, UPolycone, USphere, UCons, UGenericTrap, UTubs, UBox, UMultiUnion, UTrd, UGenericPolycone, UVCSGfaceted, UTet, and UOrb.

Referenced by G4USolid::DistanceToIn(), UPolycone::DistanceToIn(), UMultiUnion::DistanceToInCandidates(), and UMultiUnion::DistanceToInNoVoxels().

+ Here is the caller graph for this function:

virtual double VUSolid::DistanceToOut ( const UVector3 aPoint,
const UVector3 aDirection,
UVector3 aNormalVector,
bool &  aConvex,
double  aPstep = UUtils::kInfinity 
) const
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolycone, USphere, UCons, UExtrudedSolid, UGenericTrap, UTubs, UBox, UMultiUnion, UTrd, UVCSGfaceted, UTet, and UOrb.

Referenced by G4USolid::DistanceToOut(), UPolycone::DistanceToOut(), UMultiUnion::DistanceToOutNoVoxels(), and UMultiUnion::DistanceToOutVoxels().

+ Here is the caller graph for this function:

double VUSolid::EstimateCubicVolume ( int  nStat,
double  epsilon 
) const

Definition at line 214 of file VUSolid.cc.

References eOutside, Extent(), Inside(), G4INCL::Math::max(), G4INCL::Math::min(), UUtils::Random(), UVector3::x, UVector3::y, and UVector3::z.

Referenced by UVCSGfaceted::Capacity(), and Capacity().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double VUSolid::EstimateSurfaceArea ( int  nStat,
double  ell 
) const

Definition at line 268 of file VUSolid.cc.

References eOutside, Extent(), Inside(), G4INCL::Math::max(), G4INCL::Math::min(), UUtils::Random(), SafetyFromInside(), SafetyFromOutside(), UVector3::x, UVector3::y, and UVector3::z.

Referenced by UVCSGfaceted::SurfaceArea(), UMultiUnion::SurfaceArea(), and SurfaceArea().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

virtual void VUSolid::Extent ( UVector3 aMin,
UVector3 aMax 
) const
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolyhedra, UPolycone, UGenericPolycone, USphere, UCons, UTubs, UGenericTrap, UMultiUnion, UTrd, UBox, UTet, and UOrb.

Referenced by EstimateCubicVolume(), EstimateSurfaceArea(), and UMultiUnion::Extent().

+ Here is the caller graph for this function:

void VUSolid::ExtentAxis ( EAxisType  aAxis,
double &  aMin,
double &  aMax 
) const
virtual

Definition at line 318 of file VUSolid.cc.

References G4INCL::Math::max(), and G4INCL::Math::min().

Referenced by G4USolid::CalculateExtent(), and G4USolid::CreateRotatedVertices().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double VUSolid::GetAngTolerance ( ) const
inline

Definition at line 153 of file VUSolid.hh.

References faTolerance.

double VUSolid::GetCarTolerance ( ) const
inline

Definition at line 151 of file VUSolid.hh.

References fgTolerance.

virtual UGeometryType VUSolid::GetEntityType ( ) const
pure virtual

Implemented in UTrap, UPolycone, UTessellatedSolid, UPolyhedra, UCons, USphere, UGenericTrap, UMultiUnion, UExtrudedSolid, UTubs, UTrd, UBox, UVCSGfaceted, UGenericPolycone, UTet, and UOrb.

Referenced by G4USolid::CreatePolyhedron(), and G4USolid::GetEntityType().

+ Here is the caller graph for this function:

const std::string& VUSolid::GetName ( void  ) const
inline
virtual void VUSolid::GetParametersList ( int  aNumber,
double *  aArray 
) const
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolycone, USphere, UCons, UGenericPolycone, UMultiUnion, UTubs, UGenericTrap, UPolyhedra, UTrd, UBox, UTet, and UOrb.

Referenced by G4USolid::CreatePolyhedron().

+ Here is the caller graph for this function:

virtual UVector3 VUSolid::GetPointOnSurface ( ) const
pure virtual

Implemented in UTrap, UPolycone, UTessellatedSolid, UMultiUnion, UPolyhedra, UGenericTrap, UCons, USphere, UTrd, UTubs, UBox, UOrb, UTet, and UGenericPolycone.

Referenced by UMultiUnion::GetPointOnSurface(), and G4USolid::GetPointOnSurface().

+ Here is the caller graph for this function:

double VUSolid::GetRadTolerance ( ) const
inline

Definition at line 152 of file VUSolid.hh.

References frTolerance.

virtual bool VUSolid::Normal ( const UVector3 aPoint,
UVector3 aNormal 
) const
pure virtual

Implemented in UTrap, UPolycone, UTessellatedSolid, UMultiUnion, USphere, UCons, UGenericTrap, UTubs, UBox, UTrd, UOrb, UVCSGfaceted, and UTet.

Referenced by UMultiUnion::InsideWithExclusion(), UMultiUnion::Normal(), UPolycone::Normal(), UPolycone::NormalSection(), and G4USolid::SurfaceNormal().

+ Here is the caller graph for this function:

virtual double VUSolid::SafetyFromInside ( const UVector3 aPoint,
bool  aAccurate = false 
) const
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolycone, UCons, USphere, UExtrudedSolid, UTubs, UGenericTrap, UVCSGfaceted, UBox, UMultiUnion, UTrd, UTet, and UOrb.

Referenced by G4USolid::DistanceToOut(), EstimateSurfaceArea(), UMultiUnion::Normal(), and UMultiUnion::SafetyFromInside().

+ Here is the caller graph for this function:

virtual double VUSolid::SafetyFromOutside ( const UVector3 aPoint,
bool  aAccurate = false 
) const
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolycone, UPolyhedra, USphere, UCons, UTubs, UGenericTrap, UBox, UTrd, UMultiUnion, UVCSGfaceted, UTet, and UOrb.

Referenced by G4USolid::DistanceToIn(), EstimateSurfaceArea(), UMultiUnion::Normal(), UMultiUnion::SafetyFromOutside(), UMultiUnion::SafetyFromOutsideNumberNode(), and UPolycone::SafetyFromOutsideSection().

+ Here is the caller graph for this function:

virtual void VUSolid::SamplePointsInside ( int  ,
UVector3  
) const
inlinevirtual

Definition at line 112 of file VUSolid.hh.

virtual void VUSolid::SamplePointsOnEdge ( int  ,
UVector3  
) const
inlinevirtual

Definition at line 114 of file VUSolid.hh.

virtual void VUSolid::SamplePointsOnSurface ( int  ,
UVector3  
) const
inlinevirtual

Definition at line 113 of file VUSolid.hh.

void VUSolid::SetAngTolerance ( double  eps)

Definition at line 342 of file VUSolid.cc.

References eps, and faTolerance.

void VUSolid::SetCarTolerance ( double  eps)

Definition at line 334 of file VUSolid.cc.

References eps, and fgTolerance.

void VUSolid::SetName ( const std::string &  aName)
inline

Definition at line 104 of file VUSolid.hh.

References fName.

Referenced by G4UExtrudedSolid::G4UExtrudedSolid(), G4UGenericTrap::G4UGenericTrap(), and VUSolid().

+ Here is the caller graph for this function:

void VUSolid::SetRadTolerance ( double  eps)

Definition at line 338 of file VUSolid.cc.

References eps, and frTolerance.

virtual std::ostream& VUSolid::StreamInfo ( std::ostream &  os) const
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolyhedra, UMultiUnion, UCons, USphere, UGenericTrap, UPolycone, UExtrudedSolid, UTubs, UBox, UTrd, UOrb, UVCSGfaceted, UGenericPolycone, and UTet.

Referenced by UMultiUnion::StreamInfo(), and G4USolid::StreamInfo().

+ Here is the caller graph for this function:

double VUSolid::SurfaceArea ( )
pure virtual

Implemented in UTrap, UTessellatedSolid, UPolycone, UGenericTrap, UMultiUnion, UVCSGfaceted, USphere, UTrd, UCons, UBox, UTubs, UTet, and UOrb.

Definition at line 255 of file VUSolid.cc.

References EstimateSurfaceArea().

Referenced by G4USolid::GetSurfaceArea(), and UGenericTrap::SurfaceArea().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

double VUSolid::faTolerance = 1.0E-9
staticprotected
double VUSolid::fgTolerance = 1.0E-9
staticprotected

Definition at line 30 of file VUSolid.hh.

Referenced by UTessellatedSolid::AddFacet(), UTrd::CheckAndSetAllParameters(), UGenericTrap::ComputeIsTwisted(), UTessellatedSolid::CreateVertexList(), UVCSGfaceted::DistanceTo(), UVCSGfaceted::DistanceToIn(), UTrd::DistanceToIn(), UBox::DistanceToIn(), UGenericTrap::DistanceToIn(), UPolycone::DistanceToIn(), UVCSGfaceted::DistanceToInNoVoxels(), UVCSGfaceted::DistanceToOut(), UTrd::DistanceToOut(), UBox::DistanceToOut(), UGenericTrap::DistanceToOut(), UPolycone::DistanceToOut(), UTessellatedSolid::DistanceToOutCandidates(), UVCSGfaceted::DistanceToOutNoVoxels(), UTessellatedSolid::DistanceToOutNoVoxels(), UGenericTrap::DistToPlane(), UGenericTrap::DistToTriangle(), UVCSGfaceted::FindCandidates(), GetCarTolerance(), UPolycone::Init(), UExtrudedSolid::Initialise(), UGenericTrap::Initialise(), UVCSGfaceted::Inside(), UTrd::Inside(), UBox::Inside(), UGenericTrap::Inside(), UExtrudedSolid::Inside(), UPolycone::Inside(), UVCSGfaceted::InsideNoVoxels(), UTessellatedSolid::InsideNoVoxels(), UGenericTrap::InsidePolygone(), UPolycone::InsideSection(), UTessellatedSolid::InsideVoxels(), UExtrudedSolid::IsSameLine(), UGenericTrap::IsSameLine(), UExtrudedSolid::IsSameLineSegment(), UGenericTrap::IsSameLineSegment(), UGenericTrap::IsSegCrossingZ(), UVCSGfaceted::Normal(), UTrd::Normal(), UBox::Normal(), UGenericTrap::Normal(), UPolycone::Normal(), UGenericTrap::NormalToPlane(), UVCSGfaceted::SafetyFromInside(), UTessellatedSolid::SafetyFromInside(), UTessellatedSolid::SafetyFromOutside(), SetCarTolerance(), UBox::SetXHalfLength(), UBox::SetYHalfLength(), UBox::SetZHalfLength(), Tolerance(), UBox::UBox(), UOrb::UOrb(), and UTessellatedSolid::Voxelize().

std::string VUSolid::fName
private

Definition at line 148 of file VUSolid.hh.

Referenced by GetName(), and SetName().


The documentation for this class was generated from the following files: