Geant4  10.03
G4TessellatedSolid Class Reference

#include <G4TessellatedSolid.hh>

+ Inheritance diagram for G4TessellatedSolid:
+ Collaboration diagram for G4TessellatedSolid:

Public Member Functions

 G4TessellatedSolid ()
 
virtual ~G4TessellatedSolid ()
 
 G4TessellatedSolid (const G4String &name)
 
 G4TessellatedSolid (__void__ &)
 
 G4TessellatedSolid (const G4TessellatedSolid &ts)
 
G4TessellatedSolidoperator= (const G4TessellatedSolid &right)
 
G4TessellatedSolidoperator+= (const G4TessellatedSolid &right)
 
G4bool AddFacet (G4VFacet *aFacet)
 
G4VFacetGetFacet (G4int i) const
 
G4int GetNumberOfFacets () const
 
virtual EInside Inside (const G4ThreeVector &p) const
 
virtual G4ThreeVector SurfaceNormal (const G4ThreeVector &p) const
 
virtual G4double DistanceToIn (const G4ThreeVector &p, const G4ThreeVector &v) const
 
virtual G4double DistanceToIn (const G4ThreeVector &p) const
 
virtual G4double DistanceToOut (const G4ThreeVector &p) const
 
virtual G4double DistanceToOut (const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm, G4bool *validNorm, G4ThreeVector *norm) const
 
virtual G4bool Normal (const G4ThreeVector &p, G4ThreeVector &n) const
 
virtual G4double SafetyFromOutside (const G4ThreeVector &p, G4bool aAccurate=false) const
 
virtual G4double SafetyFromInside (const G4ThreeVector &p, G4bool aAccurate=false) const
 
virtual G4GeometryType GetEntityType () const
 
virtual std::ostream & StreamInfo (std::ostream &os) const
 
virtual G4VSolidClone () const
 
virtual G4ThreeVector GetPointOnSurface () const
 
virtual G4double GetSurfaceArea ()
 
virtual G4double GetCubicVolume ()
 
void SetSolidClosed (const G4bool t)
 
G4bool GetSolidClosed () const
 
void SetMaxVoxels (G4int max)
 
G4SurfaceVoxelizerGetVoxels ()
 
virtual G4bool CalculateExtent (const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
 
void Extent (G4ThreeVector &pMin, G4ThreeVector &pMax) const
 
G4double GetMinXExtent () const
 
G4double GetMaxXExtent () const
 
G4double GetMinYExtent () const
 
G4double GetMaxYExtent () const
 
G4double GetMinZExtent () const
 
G4double GetMaxZExtent () const
 
virtual G4PolyhedronCreatePolyhedron () const
 
virtual G4PolyhedronGetPolyhedron () const
 
virtual void DescribeYourselfTo (G4VGraphicsScene &scene) const
 
virtual G4VisExtent GetExtent () const
 
G4int AllocatedMemoryWithoutVoxels ()
 
G4int AllocatedMemory ()
 
void DisplayAllocatedMemory ()
 
- Public Member Functions inherited from G4VSolid
 G4VSolid (const G4String &name)
 
virtual ~G4VSolid ()
 
G4bool operator== (const G4VSolid &s) const
 
G4String GetName () const
 
void SetName (const G4String &name)
 
G4double GetTolerance () const
 
virtual void ComputeDimensions (G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
 
void DumpInfo () const
 
virtual const G4VSolidGetConstituentSolid (G4int no) const
 
virtual G4VSolidGetConstituentSolid (G4int no)
 
virtual const G4DisplacedSolidGetDisplacedSolidPtr () const
 
virtual G4DisplacedSolidGetDisplacedSolidPtr ()
 
 G4VSolid (__void__ &)
 
 G4VSolid (const G4VSolid &rhs)
 
G4VSolidoperator= (const G4VSolid &rhs)
 
G4double EstimateCubicVolume (G4int nStat, G4double epsilon) const
 
G4double EstimateSurfaceArea (G4int nStat, G4double ell) const
 

Protected Attributes

G4double kCarToleranceHalf
 
- Protected Attributes inherited from G4VSolid
G4double kCarTolerance
 

Private Member Functions

void Initialize ()
 
G4double DistanceToOutNoVoxels (const G4ThreeVector &p, const G4ThreeVector &v, G4ThreeVector &aNormalVector, G4bool &aConvex, G4double aPstep=kInfinity) const
 
G4double DistanceToInCandidates (const std::vector< G4int > &candidates, const G4ThreeVector &aPoint, const G4ThreeVector &aDirection) const
 
void DistanceToOutCandidates (const std::vector< G4int > &candidates, const G4ThreeVector &aPoint, const G4ThreeVector &direction, G4double &minDist, G4ThreeVector &minNormal, G4int &minCandidate) const
 
G4double DistanceToInNoVoxels (const G4ThreeVector &p, const G4ThreeVector &v, G4double aPstep=kInfinity) const
 
void SetExtremeFacets ()
 
EInside InsideNoVoxels (const G4ThreeVector &p) const
 
EInside InsideVoxels (const G4ThreeVector &aPoint) const
 
void Voxelize ()
 
void CreateVertexList ()
 
void PrecalculateInsides ()
 
void SetRandomVectors ()
 
G4double DistanceToInCore (const G4ThreeVector &p, const G4ThreeVector &v, G4double aPstep=kInfinity) const
 
G4double DistanceToOutCore (const G4ThreeVector &p, const G4ThreeVector &v, G4ThreeVector &aNormalVector, G4bool &aConvex, G4double aPstep=kInfinity) const
 
G4int SetAllUsingStack (const std::vector< G4int > &voxel, const std::vector< G4int > &max, G4bool status, G4SurfBits &checked)
 
void DeleteObjects ()
 
void CopyObjects (const G4TessellatedSolid &s)
 
G4double MinDistanceFacet (const G4ThreeVector &p, G4bool simple, G4VFacet *&facet) const
 
G4bool OutsideOfExtent (const G4ThreeVector &p, G4double tolerance=0) const
 

Static Private Member Functions

static G4bool CompareSortedVoxel (const std::pair< G4int, G4double > &l, const std::pair< G4int, G4double > &r)
 

Private Attributes

G4bool fRebuildPolyhedron
 
G4PolyhedronfpPolyhedron
 
std::vector< G4VFacet * > fFacets
 
std::set< G4VFacet * > fExtremeFacets
 
G4GeometryType fGeometryType
 
G4double fCubicVolume
 
G4double fSurfaceArea
 
std::vector< G4ThreeVectorfVertexList
 
std::set< G4VertexInfo,
G4VertexComparator
fFacetList
 
G4ThreeVector fMinExtent
 
G4ThreeVector fMaxExtent
 
G4bool fSolidClosed
 
std::vector< G4ThreeVectorfRandir
 
G4int fMaxTries
 
G4SurfaceVoxelizer fVoxels
 
G4SurfBits fInsides
 

Additional Inherited Members

- Protected Member Functions inherited from G4VSolid
void CalculateClippedPolygonExtent (G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipCrossSection (G4ThreeVectorList *pVertices, const G4int pSectionIndex, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipBetweenSections (G4ThreeVectorList *pVertices, const G4int pSectionIndex, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipPolygon (G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis) const
 

Detailed Description

Definition at line 128 of file G4TessellatedSolid.hh.

Constructor & Destructor Documentation

G4TessellatedSolid::G4TessellatedSolid ( )

Definition at line 112 of file G4TessellatedSolid.cc.

References Initialize().

Referenced by Clone().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4TessellatedSolid::~G4TessellatedSolid ( )
virtual

Definition at line 142 of file G4TessellatedSolid.cc.

References DeleteObjects().

+ Here is the call graph for this function:

G4TessellatedSolid::G4TessellatedSolid ( const G4String name)

Definition at line 122 of file G4TessellatedSolid.cc.

References Initialize().

+ Here is the call graph for this function:

G4TessellatedSolid::G4TessellatedSolid ( __void__ &  a)

Definition at line 133 of file G4TessellatedSolid.cc.

References fMaxExtent, fMinExtent, and Initialize().

+ Here is the call graph for this function:

G4TessellatedSolid::G4TessellatedSolid ( const G4TessellatedSolid ts)

Definition at line 151 of file G4TessellatedSolid.cc.

References CopyObjects(), and Initialize().

+ Here is the call graph for this function:

Member Function Documentation

G4bool G4TessellatedSolid::AddFacet ( G4VFacet aFacet)

Definition at line 233 of file G4TessellatedSolid.cc.

References fFacetList, fFacets, fSolidClosed, G4cout, G4Exception(), G4VFacet::GetCircumcentre(), G4VertexInfo::id, G4VFacet::IsDefined(), JustWarning, G4VSolid::kCarTolerance, G4VertexInfo::mag2, OutsideOfExtent(), pos, and G4VFacet::StreamInfo().

Referenced by G4ExtrudedSolid::AddGeneralPolygonFacets(), CopyObjects(), G4GenericTrap::CreateTessellatedSolid(), G4tgbVolume::FindOrConstructG4Solid(), G4ExtrudedSolid::MakeFacets(), operator+=(), and G4GDMLReadSolids::TessellatedRead().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4int G4TessellatedSolid::AllocatedMemory ( )

Definition at line 2091 of file G4TessellatedSolid.cc.

References G4SurfaceVoxelizer::AllocatedMemory(), AllocatedMemoryWithoutVoxels(), fInsides, fVoxels, and G4SurfBits::GetNbytes().

Referenced by DisplayAllocatedMemory().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4int G4TessellatedSolid::AllocatedMemoryWithoutVoxels ( )

Definition at line 2065 of file G4TessellatedSolid.cc.

References G4VFacet::AllocatedMemory(), fExtremeFacets, fFacets, fRandir, and fVertexList.

Referenced by AllocatedMemory(), and DisplayAllocatedMemory().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4bool G4TessellatedSolid::CalculateExtent ( const EAxis  pAxis,
const G4VoxelLimits pVoxelLimit,
const G4AffineTransform pTransform,
G4double pMin,
G4double pMax 
) const
virtual

Implements G4VSolid.

Reimplemented in G4ExtrudedSolid.

Definition at line 1853 of file G4TessellatedSolid.cc.

References G4BoundingEnvelope::BoundingBoxVsVoxelLimits(), G4BoundingEnvelope::CalculateExtent(), emax, Extent(), GetFacet(), G4VoxelLimits::GetMaxExtent(), G4VoxelLimits::GetMinExtent(), GetNumberOfFacets(), G4VFacet::GetNumberOfVertices(), G4VFacet::GetSurfaceNormal(), G4VFacet::GetVertex(), kCarToleranceHalf, and kInfinity.

+ Here is the call graph for this function:

G4VSolid * G4TessellatedSolid::Clone ( ) const
virtual

Reimplemented from G4VSolid.

Reimplemented in G4ExtrudedSolid.

Definition at line 1627 of file G4TessellatedSolid.cc.

References G4TessellatedSolid().

+ Here is the call graph for this function:

G4bool G4TessellatedSolid::CompareSortedVoxel ( const std::pair< G4int, G4double > &  l,
const std::pair< G4int, G4double > &  r 
)
staticprivate

Definition at line 1430 of file G4TessellatedSolid.cc.

Referenced by MinDistanceFacet().

+ Here is the caller graph for this function:

void G4TessellatedSolid::CopyObjects ( const G4TessellatedSolid s)
private

Definition at line 210 of file G4TessellatedSolid.cc.

References AddFacet(), fVoxels, GetFacet(), G4SurfaceVoxelizer::GetMaxVoxels(), GetNumberOfFacets(), GetSolidClosed(), n, G4SurfaceVoxelizer::SetMaxVoxels(), and SetSolidClosed().

Referenced by G4TessellatedSolid(), and operator=().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4Polyhedron * G4TessellatedSolid::CreatePolyhedron ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 1772 of file G4TessellatedSolid.cc.

References G4PolyhedronArbitrary::AddFacet(), G4PolyhedronArbitrary::AddVertex(), fFacets, fVertexList, G4VFacet::GetNumberOfVertices(), G4VFacet::GetVertexIndex(), n, and G4PolyhedronArbitrary::SetReferences().

Referenced by G4GenericTrap::CreatePolyhedron(), and GetPolyhedron().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4TessellatedSolid::CreateVertexList ( )
private

Definition at line 448 of file G4TessellatedSolid.cc.

References fFacets, fMaxExtent, fMinExtent, fVertexList, G4cout, G4endl, G4VFacet::GetNumberOfVertices(), G4VFacet::GetVertex(), G4VertexInfo::id, G4VSolid::kCarTolerance, G4VertexInfo::mag2, G4INCL::Math::max(), OutsideOfExtent(), pos, G4VFacet::SetVertexIndex(), and G4VFacet::SetVertices().

Referenced by SetSolidClosed().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4TessellatedSolid::DeleteObjects ( )
private

Definition at line 200 of file G4TessellatedSolid.cc.

References fFacets, and fpPolyhedron.

Referenced by operator=(), and ~G4TessellatedSolid().

+ Here is the caller graph for this function:

void G4TessellatedSolid::DescribeYourselfTo ( G4VGraphicsScene scene) const
virtual

Implements G4VSolid.

Definition at line 1765 of file G4TessellatedSolid.cc.

References G4VGraphicsScene::AddSolid().

Referenced by G4GenericTrap::DescribeYourselfTo().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4TessellatedSolid::DisplayAllocatedMemory ( )

Definition at line 583 of file G4TessellatedSolid.cc.

References AllocatedMemory(), AllocatedMemoryWithoutVoxels(), G4cout, and G4endl.

Referenced by SetSolidClosed().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::DistanceToIn ( const G4ThreeVector p,
const G4ThreeVector v 
) const
virtual

Implements G4VSolid.

Definition at line 1680 of file G4TessellatedSolid.cc.

References DistanceToInCore(), G4endl, G4Exception(), G4VSolid::GetName(), Inside(), JustWarning, kInfinity, and kSurface.

Referenced by G4GenericTrap::DistanceToIn(), DistanceToOutNoVoxels(), and SafetyFromInside().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::DistanceToIn ( const G4ThreeVector p) const
virtual

Implements G4VSolid.

Definition at line 1673 of file G4TessellatedSolid.cc.

References SafetyFromOutside().

+ Here is the call graph for this function:

G4double G4TessellatedSolid::DistanceToInCandidates ( const std::vector< G4int > &  candidates,
const G4ThreeVector aPoint,
const G4ThreeVector aDirection 
) const
private

Definition at line 1328 of file G4TessellatedSolid.cc.

References fFacets, G4VFacet::Intersect(), kCarToleranceHalf, kInfinity, and CLHEP::normal().

Referenced by DistanceToInCore().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::DistanceToInCore ( const G4ThreeVector p,
const G4ThreeVector v,
G4double  aPstep = kInfinity 
) const
private

Definition at line 1376 of file G4TessellatedSolid.cc.

References G4SurfaceVoxelizer::DistanceToFirst(), DistanceToInCandidates(), DistanceToInNoVoxels(), G4SurfaceVoxelizer::DistanceToNext(), fVoxels, G4SurfaceVoxelizer::GetCandidates(), G4SurfaceVoxelizer::GetCountOfVoxels(), G4SurfaceVoxelizer::GetVoxel(), G4VSolid::kCarTolerance, kInfinity, and G4SurfaceVoxelizer::UpdateCurrentVoxel().

Referenced by DistanceToIn().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::DistanceToInNoVoxels ( const G4ThreeVector p,
const G4ThreeVector v,
G4double  aPstep = kInfinity 
) const
private

Definition at line 1078 of file G4TessellatedSolid.cc.

References DistanceToOut(), fFacets, G4endl, G4Exception(), Inside(), G4VFacet::Intersect(), JustWarning, kCarToleranceHalf, kInfinity, kInside, mm, and CLHEP::normal().

Referenced by DistanceToInCore().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::DistanceToOut ( const G4ThreeVector p) const
virtual

Implements G4VSolid.

Reimplemented in G4ExtrudedSolid.

Definition at line 1708 of file G4TessellatedSolid.cc.

References SafetyFromInside().

Referenced by DistanceToInNoVoxels(), G4GenericTrap::DistanceToOut(), G4ExtrudedSolid::DistanceToOut(), and SafetyFromOutside().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::DistanceToOut ( const G4ThreeVector p,
const G4ThreeVector v,
const G4bool  calcNorm,
G4bool validNorm,
G4ThreeVector norm 
) const
virtual

Implements G4VSolid.

Reimplemented in G4ExtrudedSolid.

Definition at line 1731 of file G4TessellatedSolid.cc.

References DistanceToOutCore(), G4endl, G4Exception(), G4VSolid::GetName(), Inside(), JustWarning, kInfinity, kSurface, and n.

+ Here is the call graph for this function:

void G4TessellatedSolid::DistanceToOutCandidates ( const std::vector< G4int > &  candidates,
const G4ThreeVector aPoint,
const G4ThreeVector direction,
G4double minDist,
G4ThreeVector minNormal,
G4int minCandidate 
) const
private

Definition at line 1215 of file G4TessellatedSolid.cc.

References G4VFacet::Distance(), fFacets, G4VFacet::Intersect(), G4VSolid::kCarTolerance, kCarToleranceHalf, and CLHEP::normal().

Referenced by DistanceToOutCore().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::DistanceToOutCore ( const G4ThreeVector p,
const G4ThreeVector v,
G4ThreeVector aNormalVector,
G4bool aConvex,
G4double  aPstep = kInfinity 
) const
private

Definition at line 1255 of file G4TessellatedSolid.cc.

References G4SurfaceVoxelizer::Contains(), G4SurfaceVoxelizer::DistanceToNext(), DistanceToOutCandidates(), DistanceToOutNoVoxels(), fExtremeFacets, fFacets, fVoxels, G4SurfaceVoxelizer::GetCandidates(), G4SurfaceVoxelizer::GetCountOfVoxels(), G4SurfaceVoxelizer::GetVoxel(), G4VSolid::kCarTolerance, kInfinity, Normal(), and G4SurfaceVoxelizer::UpdateCurrentVoxel().

Referenced by DistanceToOut().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::DistanceToOutNoVoxels ( const G4ThreeVector p,
const G4ThreeVector v,
G4ThreeVector aNormalVector,
G4bool aConvex,
G4double  aPstep = kInfinity 
) const
private

Definition at line 1144 of file G4TessellatedSolid.cc.

References G4VFacet::Distance(), DistanceToIn(), fExtremeFacets, fFacets, G4endl, G4Exception(), Inside(), G4VFacet::Intersect(), JustWarning, G4VSolid::kCarTolerance, kCarToleranceHalf, kInfinity, kOutside, mm, CLHEP::normal(), and Normal().

Referenced by DistanceToOutCore().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4TessellatedSolid::Extent ( G4ThreeVector pMin,
G4ThreeVector pMax 
) const
virtual

Reimplemented from G4VSolid.

Definition at line 1828 of file G4TessellatedSolid.cc.

References G4VSolid::DumpInfo(), fMaxExtent, fMinExtent, G4Exception(), G4VSolid::GetName(), and JustWarning.

Referenced by CalculateExtent().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::GetCubicVolume ( )
virtual

Reimplemented from G4VSolid.

Definition at line 1962 of file G4TessellatedSolid.cc.

References fCubicVolume, fFacets, G4VFacet::GetArea(), G4VFacet::GetSurfaceNormal(), and G4VFacet::GetVertex().

+ Here is the call graph for this function:

G4GeometryType G4TessellatedSolid::GetEntityType ( ) const
virtual

Implements G4VSolid.

Reimplemented in G4ExtrudedSolid.

Definition at line 1598 of file G4TessellatedSolid.cc.

References fGeometryType.

G4VisExtent G4TessellatedSolid::GetExtent ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 1953 of file G4TessellatedSolid.cc.

References fMaxExtent, and fMinExtent.

Referenced by G4GenericTrap::GetExtent().

+ Here is the caller graph for this function:

G4VFacet * G4TessellatedSolid::GetFacet ( G4int  i) const
inline

Definition at line 303 of file G4TessellatedSolid.hh.

References fFacets.

Referenced by CalculateExtent(), CopyObjects(), operator+=(), and G4GDMLWriteSolids::TessellatedWrite().

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::GetMaxXExtent ( ) const

Definition at line 1918 of file G4TessellatedSolid.cc.

References fMaxExtent.

Referenced by G4ExtrudedSolid::Inside().

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::GetMaxYExtent ( ) const

Definition at line 1932 of file G4TessellatedSolid.cc.

References fMaxExtent.

Referenced by G4ExtrudedSolid::Inside().

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::GetMaxZExtent ( ) const

Definition at line 1946 of file G4TessellatedSolid.cc.

References fMaxExtent.

Referenced by G4ExtrudedSolid::Inside().

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::GetMinXExtent ( ) const

Definition at line 1911 of file G4TessellatedSolid.cc.

References fMinExtent.

Referenced by G4ExtrudedSolid::Inside().

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::GetMinYExtent ( ) const

Definition at line 1925 of file G4TessellatedSolid.cc.

References fMinExtent.

Referenced by G4ExtrudedSolid::Inside().

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::GetMinZExtent ( ) const

Definition at line 1939 of file G4TessellatedSolid.cc.

References fMinExtent.

Referenced by G4ExtrudedSolid::Inside().

+ Here is the caller graph for this function:

G4int G4TessellatedSolid::GetNumberOfFacets ( ) const

Definition at line 655 of file G4TessellatedSolid.cc.

References fFacets.

Referenced by CalculateExtent(), CopyObjects(), operator+=(), and G4GDMLWriteSolids::TessellatedWrite().

+ Here is the caller graph for this function:

G4ThreeVector G4TessellatedSolid::GetPointOnSurface ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 1999 of file G4TessellatedSolid.cc.

References fFacets, and G4INCL::DeJongSpin::shoot().

Referenced by G4GenericTrap::GetPointOnSurface().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4Polyhedron * G4TessellatedSolid::GetPolyhedron ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 1808 of file G4TessellatedSolid.cc.

References CreatePolyhedron(), fpPolyhedron, fRebuildPolyhedron, G4Polyhedron::GetNumberOfRotationStepsAtTimeOfCreation(), and G4TemplateAutoLock< M, L, U >::unlock().

Referenced by G4GenericTrap::GetPolyhedron().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4bool G4TessellatedSolid::GetSolidClosed ( ) const

Definition at line 627 of file G4TessellatedSolid.cc.

References fSolidClosed.

Referenced by CopyObjects().

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::GetSurfaceArea ( )
virtual

Reimplemented from G4VSolid.

Definition at line 1984 of file G4TessellatedSolid.cc.

References fFacets, fSurfaceArea, and G4VFacet::GetArea().

+ Here is the call graph for this function:

G4SurfaceVoxelizer & G4TessellatedSolid::GetVoxels ( )
inline

Definition at line 313 of file G4TessellatedSolid.hh.

References fVoxels.

void G4TessellatedSolid::Initialize ( )
private

Definition at line 182 of file G4TessellatedSolid.cc.

References fCubicVolume, fGeometryType, fMaxExtent, fMinExtent, fpPolyhedron, fRebuildPolyhedron, fSolidClosed, fSurfaceArea, G4VSolid::kCarTolerance, kCarToleranceHalf, kInfinity, and SetRandomVectors().

Referenced by G4TessellatedSolid(), and operator=().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

EInside G4TessellatedSolid::Inside ( const G4ThreeVector p) const
virtual

Implements G4VSolid.

Reimplemented in G4ExtrudedSolid.

Definition at line 1642 of file G4TessellatedSolid.cc.

References fVoxels, G4SurfaceVoxelizer::GetCountOfVoxels(), InsideNoVoxels(), and InsideVoxels().

Referenced by DistanceToIn(), DistanceToInNoVoxels(), DistanceToOut(), DistanceToOutNoVoxels(), G4GenericTrap::Inside(), SafetyFromInside(), and SafetyFromOutside().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

EInside G4TessellatedSolid::InsideNoVoxels ( const G4ThreeVector p) const
private

Definition at line 853 of file G4TessellatedSolid.cc.

References G4VFacet::Distance(), fFacets, fGeometryType, fMaxTries, fRandir, G4endl, G4Exception(), G4VSolid::GetName(), JustWarning, G4VSolid::kCarTolerance, kCarToleranceHalf, kInfinity, kInside, kOutside, kSurface, mm, OutsideOfExtent(), and G4InuclParticleNames::sm.

Referenced by Inside(), and PrecalculateInsides().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

EInside G4TessellatedSolid::InsideVoxels ( const G4ThreeVector aPoint) const
private

Definition at line 662 of file G4TessellatedSolid.cc.

References G4VFacet::Distance(), G4SurfaceVoxelizer::DistanceToNext(), fFacets, fGeometryType, fInsides, fMaxTries, fRandir, fVoxels, G4endl, G4Exception(), G4SurfaceVoxelizer::GetCandidates(), G4VSolid::GetName(), G4SurfBits::GetNbits(), G4SurfaceVoxelizer::GetPointIndex(), G4SurfaceVoxelizer::GetVoxel(), G4SurfaceVoxelizer::GetVoxelsIndex(), G4VFacet::Intersect(), JustWarning, G4VSolid::kCarTolerance, kCarToleranceHalf, kInfinity, kInside, kOutside, kSurface, mm, OutsideOfExtent(), G4InuclParticleNames::sm, and G4SurfaceVoxelizer::UpdateCurrentVoxel().

Referenced by Inside().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::MinDistanceFacet ( const G4ThreeVector p,
G4bool  simple,
G4VFacet *&  facet 
) const
private

Definition at line 1439 of file G4TessellatedSolid.cc.

References CompareSortedVoxel(), G4VFacet::Distance(), fFacets, fVoxels, G4SurfaceVoxelizer::GetVoxelBox(), G4SurfaceVoxelizer::GetVoxelBoxCandidates(), G4SurfaceVoxelizer::GetVoxelBoxesSize(), G4VoxelBox::hlen, kInfinity, G4SurfaceVoxelizer::MinDistanceToBox(), and G4VoxelBox::pos.

Referenced by Normal(), SafetyFromInside(), and SafetyFromOutside().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4bool G4TessellatedSolid::Normal ( const G4ThreeVector p,
G4ThreeVector n 
) const
virtual

Definition at line 999 of file G4TessellatedSolid.cc.

References G4VFacet::Distance(), fFacets, fVoxels, G4endl, G4Exception(), G4SurfaceVoxelizer::GetCandidates(), G4SurfaceVoxelizer::GetCountOfVoxels(), G4VFacet::GetSurfaceNormal(), G4SurfaceVoxelizer::GetVoxel(), JustWarning, kCarToleranceHalf, kInfinity, and MinDistanceFacet().

Referenced by DistanceToOutCore(), DistanceToOutNoVoxels(), and SurfaceNormal().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4TessellatedSolid & G4TessellatedSolid::operator+= ( const G4TessellatedSolid right)

Definition at line 642 of file G4TessellatedSolid.cc.

References AddFacet(), G4VFacet::GetClone(), GetFacet(), and GetNumberOfFacets().

+ Here is the call graph for this function:

G4TessellatedSolid & G4TessellatedSolid::operator= ( const G4TessellatedSolid right)

Definition at line 164 of file G4TessellatedSolid.cc.

References CopyObjects(), DeleteObjects(), Initialize(), and G4VSolid::operator=().

Referenced by G4ExtrudedSolid::operator=().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4bool G4TessellatedSolid::OutsideOfExtent ( const G4ThreeVector p,
G4double  tolerance = 0 
) const
inlineprivate

Definition at line 318 of file G4TessellatedSolid.hh.

References fMaxExtent, and fMinExtent.

Referenced by AddFacet(), CreateVertexList(), InsideNoVoxels(), InsideVoxels(), SafetyFromInside(), and SafetyFromOutside().

+ Here is the caller graph for this function:

void G4TessellatedSolid::PrecalculateInsides ( )
private

Definition at line 362 of file G4TessellatedSolid.cc.

References G4SurfBits::Clear(), fInsides, fVoxels, G4SurfaceVoxelizer::GetBoundary(), G4SurfaceVoxelizer::GetVoxelsIndex(), InsideNoVoxels(), G4SurfaceVoxelizer::IsEmpty(), kInside, G4SurfBits::ResetBitNumber(), SetAllUsingStack(), and G4SurfBits::SetBitNumber().

Referenced by Voxelize().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::SafetyFromInside ( const G4ThreeVector p,
G4bool  aAccurate = false 
) const
virtual

Definition at line 1549 of file G4TessellatedSolid.cc.

References G4VFacet::Distance(), DistanceToIn(), fFacets, fVoxels, G4endl, G4Exception(), G4SurfaceVoxelizer::GetCountOfVoxels(), Inside(), JustWarning, G4VSolid::kCarTolerance, kInfinity, kOutside, MinDistanceFacet(), mm, and OutsideOfExtent().

Referenced by DistanceToOut().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4TessellatedSolid::SafetyFromOutside ( const G4ThreeVector p,
G4bool  aAccurate = false 
) const
virtual

Definition at line 1490 of file G4TessellatedSolid.cc.

References G4VFacet::Distance(), G4SurfaceVoxelizer::DistanceToBoundingBox(), DistanceToOut(), fFacets, fInsides, fVoxels, G4endl, G4Exception(), G4SurfaceVoxelizer::GetCandidates(), G4SurfaceVoxelizer::GetCountOfVoxels(), G4SurfBits::GetNbits(), G4SurfaceVoxelizer::GetPointIndex(), G4SurfaceVoxelizer::GetVoxel(), Inside(), JustWarning, G4VSolid::kCarTolerance, kInfinity, kInside, MinDistanceFacet(), mm, and OutsideOfExtent().

Referenced by DistanceToIn().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4int G4TessellatedSolid::SetAllUsingStack ( const std::vector< G4int > &  voxel,
const std::vector< G4int > &  max,
G4bool  status,
G4SurfBits checked 
)
private

Definition at line 306 of file G4TessellatedSolid.cc.

References fInsides, fVoxels, G4SurfaceVoxelizer::GetVoxelsIndex(), G4SurfaceVoxelizer::IsEmpty(), pos, and G4SurfBits::SetBitNumber().

Referenced by PrecalculateInsides().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4TessellatedSolid::SetExtremeFacets ( )
private

Definition at line 425 of file G4TessellatedSolid.cc.

References fExtremeFacets, fFacets, fVertexList, and G4VFacet::IsInside().

Referenced by SetSolidClosed().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4TessellatedSolid::SetMaxVoxels ( G4int  max)
inline

Definition at line 308 of file G4TessellatedSolid.hh.

References fVoxels, and G4SurfaceVoxelizer::SetMaxVoxels().

+ Here is the call graph for this function:

void G4TessellatedSolid::SetRandomVectors ( )
private

Definition at line 2016 of file G4TessellatedSolid.cc.

References fMaxTries, and fRandir.

Referenced by Initialize().

+ Here is the caller graph for this function:

void G4TessellatedSolid::SetSolidClosed ( const G4bool  t)

Definition at line 594 of file G4TessellatedSolid.cc.

References CreateVertexList(), DisplayAllocatedMemory(), fSolidClosed, G4cout, G4endl, SetExtremeFacets(), and Voxelize().

Referenced by CopyObjects(), G4GenericTrap::CreateTessellatedSolid(), G4ExtrudedSolid::MakeFacets(), and G4GDMLReadSolids::TessellatedRead().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::ostream & G4TessellatedSolid::StreamInfo ( std::ostream &  os) const
virtual

Implements G4VSolid.

Reimplemented in G4ExtrudedSolid.

Definition at line 1605 of file G4TessellatedSolid.cc.

References fFacets, fGeometryType, G4endl, and G4VFacet::StreamInfo().

+ Here is the call graph for this function:

G4ThreeVector G4TessellatedSolid::SurfaceNormal ( const G4ThreeVector p) const
virtual

Implements G4VSolid.

Definition at line 1659 of file G4TessellatedSolid.cc.

References n, and Normal().

Referenced by G4GenericTrap::NormalToPlane(), and G4GenericTrap::SurfaceNormal().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4TessellatedSolid::Voxelize ( )
private

Definition at line 397 of file G4TessellatedSolid.cc.

References G4SurfaceVoxelizer::Empty(), fFacets, fVoxels, G4cout, G4endl, G4SurfBits::GetNbits(), PrecalculateInsides(), and G4SurfaceVoxelizer::Voxelize().

Referenced by SetSolidClosed().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

G4double G4TessellatedSolid::fCubicVolume
private

Definition at line 279 of file G4TessellatedSolid.hh.

Referenced by GetCubicVolume(), and Initialize().

std::set<G4VFacet *> G4TessellatedSolid::fExtremeFacets
private
std::set<G4VertexInfo,G4VertexComparator> G4TessellatedSolid::fFacetList
private

Definition at line 284 of file G4TessellatedSolid.hh.

Referenced by AddFacet().

G4GeometryType G4TessellatedSolid::fGeometryType
private
G4SurfBits G4TessellatedSolid::fInsides
private
G4int G4TessellatedSolid::fMaxTries
private

Definition at line 292 of file G4TessellatedSolid.hh.

Referenced by InsideNoVoxels(), InsideVoxels(), and SetRandomVectors().

G4Polyhedron* G4TessellatedSolid::fpPolyhedron
mutableprivate

Definition at line 272 of file G4TessellatedSolid.hh.

Referenced by DeleteObjects(), GetPolyhedron(), and Initialize().

std::vector<G4ThreeVector> G4TessellatedSolid::fRandir
private
G4bool G4TessellatedSolid::fRebuildPolyhedron
mutableprivate

Definition at line 271 of file G4TessellatedSolid.hh.

Referenced by GetPolyhedron(), and Initialize().

G4bool G4TessellatedSolid::fSolidClosed
private

Definition at line 288 of file G4TessellatedSolid.hh.

Referenced by AddFacet(), GetSolidClosed(), Initialize(), and SetSolidClosed().

G4double G4TessellatedSolid::fSurfaceArea
private

Definition at line 280 of file G4TessellatedSolid.hh.

Referenced by GetSurfaceArea(), and Initialize().

std::vector<G4ThreeVector> G4TessellatedSolid::fVertexList
private

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