Geant4 11.3.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4VSolid Class Referenceabstract

#include <G4VSolid.hh>

+ Inheritance diagram for G4VSolid:

Public Member Functions

 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 BoundingLimits (G4ThreeVector &pMin, G4ThreeVector &pMax) const
 
virtual G4bool CalculateExtent (const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
 
virtual EInside Inside (const G4ThreeVector &p) const =0
 
virtual G4ThreeVector SurfaceNormal (const G4ThreeVector &p) const =0
 
virtual G4double DistanceToIn (const G4ThreeVector &p, const G4ThreeVector &v) const =0
 
virtual G4double DistanceToIn (const G4ThreeVector &p) const =0
 
virtual G4double DistanceToOut (const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=nullptr, G4ThreeVector *n=nullptr) const =0
 
virtual G4double DistanceToOut (const G4ThreeVector &p) const =0
 
virtual void ComputeDimensions (G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
 
virtual G4double GetCubicVolume ()
 
virtual G4double GetSurfaceArea ()
 
virtual G4GeometryType GetEntityType () const =0
 
virtual G4ThreeVector GetPointOnSurface () const
 
virtual G4int GetNumOfConstituents () const
 
virtual G4bool IsFaceted () const
 
virtual G4VSolidClone () const
 
virtual std::ostream & StreamInfo (std::ostream &os) const =0
 
void DumpInfo () const
 
virtual void DescribeYourselfTo (G4VGraphicsScene &scene) const =0
 
virtual G4VisExtent GetExtent () const
 
virtual G4PolyhedronCreatePolyhedron () const
 
virtual G4PolyhedronGetPolyhedron () 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 Member Functions

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
 

Protected Attributes

G4double kCarTolerance
 

Detailed Description

Definition at line 82 of file G4VSolid.hh.

Constructor & Destructor Documentation

◆ G4VSolid() [1/3]

G4VSolid::G4VSolid ( const G4String & name)

Definition at line 57 of file G4VSolid.cc.

58 : fshapeName(name)
59{
61
62 // Register to store
63 //
65}
G4double GetSurfaceTolerance() const
static G4GeometryTolerance * GetInstance()
static void Register(G4VSolid *pSolid)
static G4SolidStore * GetInstance()
G4double kCarTolerance
Definition G4VSolid.hh:306

Referenced by G4MultiUnion::AddNode(), G4MultiUnion::AddNode(), G4ScaledSolid::CleanTransformations(), G4Box::Clone(), G4Cons::Clone(), G4CutTubs::Clone(), G4DisplacedSolid::Clone(), G4Ellipsoid::Clone(), G4EllipticalCone::Clone(), G4EllipticalTube::Clone(), G4ExtrudedSolid::Clone(), G4GenericPolycone::Clone(), G4GenericTrap::Clone(), G4Hype::Clone(), G4IntersectionSolid::Clone(), G4MultiUnion::Clone(), G4Orb::Clone(), G4Para::Clone(), G4Paraboloid::Clone(), G4Polycone::Clone(), G4Polyhedra::Clone(), G4ReflectedSolid::Clone(), G4ScaledSolid::Clone(), G4Sphere::Clone(), G4SubtractionSolid::Clone(), G4TessellatedSolid::Clone(), G4Tet::Clone(), G4Torus::Clone(), G4Trap::Clone(), G4Trd::Clone(), G4Tubs::Clone(), G4TwistedBox::Clone(), G4TwistedTrap::Clone(), G4TwistedTrd::Clone(), G4TwistedTubs::Clone(), G4UnionSolid::Clone(), Clone(), G4MultiUnion::CreatePolyhedron(), DescribeYourselfTo(), G4MultiUnion::DistanceToIn(), G4MultiUnion::DistanceToInNoVoxels(), G4MultiUnion::DistanceToOut(), G4MultiUnion::DistanceToOutNoVoxels(), G4MultiUnion::DistanceToOutVoxels(), G4MultiUnion::DistanceToOutVoxelsCore(), G4MultiUnion::Extent(), G4BooleanSolid::G4BooleanSolid(), G4BooleanSolid::G4BooleanSolid(), G4BooleanSolid::G4BooleanSolid(), G4BooleanSolid::G4BooleanSolid(), G4BooleanSolid::G4BooleanSolid(), G4CSGSolid::G4CSGSolid(), G4CSGSolid::G4CSGSolid(), G4CSGSolid::G4CSGSolid(), G4DisplacedSolid::G4DisplacedSolid(), G4DisplacedSolid::G4DisplacedSolid(), G4DisplacedSolid::G4DisplacedSolid(), G4DisplacedSolid::G4DisplacedSolid(), G4DisplacedSolid::G4DisplacedSolid(), G4Ellipsoid::G4Ellipsoid(), G4Ellipsoid::G4Ellipsoid(), G4Ellipsoid::G4Ellipsoid(), G4EllipticalCone::G4EllipticalCone(), G4EllipticalCone::G4EllipticalCone(), G4EllipticalCone::G4EllipticalCone(), G4EllipticalTube::G4EllipticalTube(), G4EllipticalTube::G4EllipticalTube(), G4EllipticalTube::G4EllipticalTube(), G4GenericTrap::G4GenericTrap(), G4GenericTrap::G4GenericTrap(), G4GenericTrap::G4GenericTrap(), G4Hype::G4Hype(), G4Hype::G4Hype(), G4Hype::G4Hype(), G4IntersectionSolid::G4IntersectionSolid(), G4IntersectionSolid::G4IntersectionSolid(), G4IntersectionSolid::G4IntersectionSolid(), G4MultiUnion::G4MultiUnion(), G4MultiUnion::G4MultiUnion(), G4MultiUnion::G4MultiUnion(), G4MultiUnion::G4MultiUnion(), G4Paraboloid::G4Paraboloid(), G4Paraboloid::G4Paraboloid(), G4Paraboloid::G4Paraboloid(), G4ReflectedSolid::G4ReflectedSolid(), G4ReflectedSolid::G4ReflectedSolid(), G4ScaledSolid::G4ScaledSolid(), G4ScaledSolid::G4ScaledSolid(), G4ScaledSolid::G4ScaledSolid(), G4SubtractionSolid::G4SubtractionSolid(), G4SubtractionSolid::G4SubtractionSolid(), G4SubtractionSolid::G4SubtractionSolid(), G4TessellatedSolid::G4TessellatedSolid(), G4TessellatedSolid::G4TessellatedSolid(), G4TessellatedSolid::G4TessellatedSolid(), G4TessellatedSolid::G4TessellatedSolid(), G4Tet::G4Tet(), G4Tet::G4Tet(), G4Tet::G4Tet(), G4TwistedTubs::G4TwistedTubs(), G4TwistedTubs::G4TwistedTubs(), G4TwistedTubs::G4TwistedTubs(), G4TwistedTubs::G4TwistedTubs(), G4TwistedTubs::G4TwistedTubs(), G4TwistedTubs::G4TwistedTubs(), G4UnionSolid::G4UnionSolid(), G4UnionSolid::G4UnionSolid(), G4UnionSolid::G4UnionSolid(), G4VCSGfaceted::G4VCSGfaceted(), G4VCSGfaceted::G4VCSGfaceted(), G4VCSGfaceted::G4VCSGfaceted(), G4VSolid(), G4VTwistedFaceted::G4VTwistedFaceted(), G4VTwistedFaceted::G4VTwistedFaceted(), G4VTwistedFaceted::G4VTwistedFaceted(), G4Trap::GetAlpha2(), G4DisplacedSolid::GetConstituentMovedSolid(), G4ReflectedSolid::GetConstituentMovedSolid(), G4BooleanSolid::GetConstituentSolid(), G4BooleanSolid::GetConstituentSolid(), GetConstituentSolid(), GetConstituentSolid(), GetEntityType(), G4BooleanSolid::GetListOfPrimitives(), G4MultiUnion::GetPointOnSurface(), G4MultiUnion::GetSolid(), G4Box::GetSurfaceArea(), G4Cons::GetSurfaceArea(), G4Orb::GetSurfaceArea(), G4Torus::GetSurfaceArea(), G4Tubs::GetSurfaceArea(), G4ScaledSolid::GetUnscaledSolid(), G4ExtrudedSolid::GetZSections(), G4MultiUnion::InsideNoVoxels(), operator=(), operator==(), G4BooleanSolid::SetAreaAccuracy(), G4BooleanSolid::SetCubVolEpsilon(), G4BooleanSolid::SetCubVolStatistics(), G4CutTubs::SetDeltaPhiAngle(), G4Sphere::SetDeltaThetaAngle(), G4Hype::SetOuterStereo(), G4Paraboloid::SetRadiusPlusZ(), G4Para::SetThetaAndPhi(), G4GenericTrap::SetVisSubdivisions(), G4EllipticalCone::SetZCut(), G4Ellipsoid::SetZCuts(), G4Trd::SetZHalfLength(), G4BooleanSolid::StackPolyhedron(), G4MultiUnion::StreamInfo(), G4MultiUnion::SurfaceNormal(), G4IntersectionSolid::~G4IntersectionSolid(), G4MultiUnion::~G4MultiUnion(), G4SubtractionSolid::~G4SubtractionSolid(), and G4UnionSolid::~G4UnionSolid().

◆ ~G4VSolid()

G4VSolid::~G4VSolid ( )
virtual

Definition at line 98 of file G4VSolid.cc.

99{
101}
static void DeRegister(G4VSolid *pSolid)

◆ G4VSolid() [2/3]

G4VSolid::G4VSolid ( __void__ & )

Definition at line 85 of file G4VSolid.cc.

86 : fshapeName("")
87{
88 // Register to store
89 //
91}

◆ G4VSolid() [3/3]

G4VSolid::G4VSolid ( const G4VSolid & rhs)

Definition at line 72 of file G4VSolid.cc.

73 : kCarTolerance(rhs.kCarTolerance), fshapeName(rhs.fshapeName)
74{
75 // Register to store
76 //
78}

Member Function Documentation

◆ BoundingLimits()

void G4VSolid::BoundingLimits ( G4ThreeVector & pMin,
G4ThreeVector & pMax ) const
virtual

Reimplemented in G4Box, G4Cons, G4CutTubs, G4DisplacedSolid, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4ExtrudedSolid, G4GenericPolycone, G4GenericTrap, G4Hype, G4IntersectionSolid, G4MultiUnion, G4Orb, G4Para, G4Paraboloid, G4Polycone, G4Polyhedra, G4ReflectedSolid, G4ScaledSolid, G4Sphere, G4SubtractionSolid, G4TessellatedSolid, G4Tet, G4Torus, G4Trap, G4Trd, G4Tubs, G4TwistedTubs, G4UnionSolid, and G4VTwistedFaceted.

Definition at line 680 of file G4VSolid.cc.

681{
682 std::ostringstream message;
683 message << "Not implemented for solid: "
684 << GetEntityType() << " !"
685 << "\nReturning infinite boundinx box.";
686 G4Exception("G4VSolid::BoundingLimits()", "GeomMgt1001",
687 JustWarning, message);
688
689 pMin.set(-kInfinity,-kInfinity,-kInfinity);
690 pMax.set( kInfinity, kInfinity, kInfinity);
691}
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
void set(double x, double y, double z)
virtual G4GeometryType GetEntityType() const =0

Referenced by G4PVPlacement::CheckOverlaps(), EstimateSurfaceArea(), G4MultiUnion::Extent(), and G4VChannelingFastSimCrystalData::SetBendingAngle().

◆ CalculateClippedPolygonExtent()

void G4VSolid::CalculateClippedPolygonExtent ( G4ThreeVectorList & pPolygon,
const G4VoxelLimits & pVoxelLimit,
const EAxis pAxis,
G4double & pMin,
G4double & pMax ) const
protected

Definition at line 504 of file G4VSolid.cc.

509{
510 G4int noLeft,i;
511 G4double component;
512
513 ClipPolygon(pPolygon,pVoxelLimit,pAxis);
514 noLeft = (G4int)pPolygon.size();
515
516 if ( noLeft != 0 )
517 {
518 for (i=0; i<noLeft; ++i)
519 {
520 component = pPolygon[i].operator()(pAxis);
521
522 if (component < pMin)
523 {
524 pMin = component;
525 }
526 if (component > pMax)
527 {
528 pMax = component;
529 }
530 }
531 }
532}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
void ClipPolygon(G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis) const
Definition G4VSolid.cc:554

Referenced by ClipBetweenSections(), and ClipCrossSection().

◆ CalculateExtent()

◆ ClipBetweenSections()

void G4VSolid::ClipBetweenSections ( G4ThreeVectorList * pVertices,
const G4int pSectionIndex,
const G4VoxelLimits & pVoxelLimit,
const EAxis pAxis,
G4double & pMin,
G4double & pMax ) const
protected

Definition at line 459 of file G4VSolid.cc.

464{
465 G4ThreeVectorList polygon;
466 polygon.reserve(4);
467 polygon.push_back((*pVertices)[pSectionIndex]);
468 polygon.push_back((*pVertices)[pSectionIndex+4]);
469 polygon.push_back((*pVertices)[pSectionIndex+5]);
470 polygon.push_back((*pVertices)[pSectionIndex+1]);
471 CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
472 polygon.clear();
473
474 polygon.push_back((*pVertices)[pSectionIndex+1]);
475 polygon.push_back((*pVertices)[pSectionIndex+5]);
476 polygon.push_back((*pVertices)[pSectionIndex+6]);
477 polygon.push_back((*pVertices)[pSectionIndex+2]);
478 CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
479 polygon.clear();
480
481 polygon.push_back((*pVertices)[pSectionIndex+2]);
482 polygon.push_back((*pVertices)[pSectionIndex+6]);
483 polygon.push_back((*pVertices)[pSectionIndex+7]);
484 polygon.push_back((*pVertices)[pSectionIndex+3]);
485 CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
486 polygon.clear();
487
488 polygon.push_back((*pVertices)[pSectionIndex+3]);
489 polygon.push_back((*pVertices)[pSectionIndex+7]);
490 polygon.push_back((*pVertices)[pSectionIndex+4]);
491 polygon.push_back((*pVertices)[pSectionIndex]);
492 CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
493 return;
494}
std::vector< G4ThreeVector > G4ThreeVectorList
Definition G4VSolid.hh:79
void CalculateClippedPolygonExtent(G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
Definition G4VSolid.cc:504

◆ ClipCrossSection()

void G4VSolid::ClipCrossSection ( G4ThreeVectorList * pVertices,
const G4int pSectionIndex,
const G4VoxelLimits & pVoxelLimit,
const EAxis pAxis,
G4double & pMin,
G4double & pMax ) const
protected

Definition at line 429 of file G4VSolid.cc.

434{
435
436 G4ThreeVectorList polygon;
437 polygon.reserve(4);
438 polygon.push_back((*pVertices)[pSectionIndex]);
439 polygon.push_back((*pVertices)[pSectionIndex+1]);
440 polygon.push_back((*pVertices)[pSectionIndex+2]);
441 polygon.push_back((*pVertices)[pSectionIndex+3]);
442 CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
443 return;
444}

◆ ClipPolygon()

void G4VSolid::ClipPolygon ( G4ThreeVectorList & pPolygon,
const G4VoxelLimits & pVoxelLimit,
const EAxis pAxis ) const
protected

Definition at line 554 of file G4VSolid.cc.

557{
558 G4ThreeVectorList outputPolygon;
559
560 if ( pVoxelLimit.IsLimited() )
561 {
562 if (pVoxelLimit.IsXLimited() ) // && pAxis != kXAxis)
563 {
564 G4VoxelLimits simpleLimit1;
565 simpleLimit1.AddLimit(kXAxis,pVoxelLimit.GetMinXExtent(),kInfinity);
566 ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
567
568 pPolygon.clear();
569
570 if ( outputPolygon.empty() ) return;
571
572 G4VoxelLimits simpleLimit2;
573 simpleLimit2.AddLimit(kXAxis,-kInfinity,pVoxelLimit.GetMaxXExtent());
574 ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
575
576 if ( pPolygon.empty() ) return;
577 else outputPolygon.clear();
578 }
579 if ( pVoxelLimit.IsYLimited() ) // && pAxis != kYAxis)
580 {
581 G4VoxelLimits simpleLimit1;
582 simpleLimit1.AddLimit(kYAxis,pVoxelLimit.GetMinYExtent(),kInfinity);
583 ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
584
585 // Must always clear pPolygon - for clip to simpleLimit2 and in case of
586 // early exit
587
588 pPolygon.clear();
589
590 if ( outputPolygon.empty() ) return;
591
592 G4VoxelLimits simpleLimit2;
593 simpleLimit2.AddLimit(kYAxis,-kInfinity,pVoxelLimit.GetMaxYExtent());
594 ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
595
596 if ( pPolygon.empty() ) return;
597 else outputPolygon.clear();
598 }
599 if ( pVoxelLimit.IsZLimited() ) // && pAxis != kZAxis)
600 {
601 G4VoxelLimits simpleLimit1;
602 simpleLimit1.AddLimit(kZAxis,pVoxelLimit.GetMinZExtent(),kInfinity);
603 ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
604
605 // Must always clear pPolygon - for clip to simpleLimit2 and in case of
606 // early exit
607
608 pPolygon.clear();
609
610 if ( outputPolygon.empty() ) return;
611
612 G4VoxelLimits simpleLimit2;
613 simpleLimit2.AddLimit(kZAxis,-kInfinity,pVoxelLimit.GetMaxZExtent());
614 ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
615
616 // Return after final clip - no cleanup
617 }
618 }
619}
G4bool IsYLimited() const
G4double GetMinZExtent() const
void AddLimit(const EAxis pAxis, const G4double pMin, const G4double pMax)
G4bool IsXLimited() const
G4double GetMaxYExtent() const
G4double GetMaxZExtent() const
G4double GetMinYExtent() const
G4double GetMinXExtent() const
G4bool IsZLimited() const
G4bool IsLimited() const
G4double GetMaxXExtent() const
@ kYAxis
Definition geomdefs.hh:56
@ kXAxis
Definition geomdefs.hh:55
@ kZAxis
Definition geomdefs.hh:57

Referenced by CalculateClippedPolygonExtent().

◆ Clone()

G4VSolid * G4VSolid::Clone ( ) const
virtual

Reimplemented in G4Box, G4Cons, G4CutTubs, G4DisplacedSolid, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4ExtrudedSolid, G4GenericPolycone, G4GenericTrap, G4Hype, G4IntersectionSolid, G4MultiUnion, G4Orb, G4Para, G4Paraboloid, G4Polycone, G4Polyhedra, G4ReflectedSolid, G4ScaledSolid, G4Sphere, G4SubtractionSolid, G4TessellatedSolid, G4Tet, G4Torus, G4Trap, G4Trd, G4Tubs, G4TwistedBox, G4TwistedTrap, G4TwistedTrd, G4TwistedTubs, and G4UnionSolid.

Definition at line 406 of file G4VSolid.cc.

407{
408 std::ostringstream message;
409 message << "Clone() method not implemented for type: "
410 << GetEntityType() << "!" << G4endl
411 << "Returning NULL pointer!";
412 G4Exception("G4VSolid::Clone()", "GeomMgt1001", JustWarning, message);
413 return nullptr;
414}
#define G4endl
Definition G4ios.hh:67

Referenced by G4GeometryWorkspace::CloneReplicaSolid().

◆ ComputeDimensions()

void G4VSolid::ComputeDimensions ( G4VPVParameterisation * p,
const G4int n,
const G4VPhysicalVolume * pRep )
virtual

◆ CreatePolyhedron()

◆ DescribeYourselfTo()

◆ DistanceToIn() [1/2]

◆ DistanceToIn() [2/2]

virtual G4double G4VSolid::DistanceToIn ( const G4ThreeVector & p,
const G4ThreeVector & v ) const
pure virtual

◆ DistanceToOut() [1/2]

◆ DistanceToOut() [2/2]

virtual G4double G4VSolid::DistanceToOut ( const G4ThreeVector & p,
const G4ThreeVector & v,
const G4bool calcNorm = false,
G4bool * validNorm = nullptr,
G4ThreeVector * n = nullptr ) const
pure virtual

Implemented in G4Box, G4Cons, G4CutTubs, G4DisplacedSolid, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4ExtrudedSolid, G4GenericTrap, G4Hype, G4IntersectionSolid, G4MultiUnion, G4Orb, G4Para, G4Paraboloid, G4ReflectedSolid, G4ScaledSolid, G4Sphere, G4SubtractionSolid, G4TessellatedSolid, G4Tet, G4Torus, G4Trap, G4Trd, G4Tubs, G4TwistedTubs, G4UnionSolid, G4VCSGfaceted, and G4VTwistedFaceted.

Referenced by G4NavigationLogger::AlongComputeStepLog(), G4NavigationLogger::CheckDaughterEntryPoint(), G4PVPlacement::CheckOverlaps(), G4NormalNavigation::ComputeSafety(), G4ParameterisedNavigation::ComputeSafety(), G4ReplicaNavigation::ComputeSafety(), G4VoxelNavigation::ComputeSafety(), G4VoxelSafety::ComputeSafety(), G4NormalNavigation::ComputeStep(), G4ParameterisedNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4VoxelNavigation::ComputeStep(), G4RegularNavigation::ComputeStepSkippingEqualMaterials(), G4MultiUnion::DistanceToOut(), G4MultiUnion::DistanceToOutNoVoxels(), G4MultiUnion::DistanceToOutVoxels(), EstimateSurfaceArea(), G4ITNavigator1::GetLocalExitNormal(), G4ITNavigator2::GetLocalExitNormal(), G4Navigator::GetLocalExitNormal(), G4BOptnForceCommonTruncatedExp::Initialize(), G4FastTrack::OnTheBoundaryButExiting(), G4ElNeutrinoNucleusProcess::PostStepDoIt(), G4MuNeutrinoNucleusProcess::PostStepDoIt(), G4NeutrinoElectronProcess::PostStepDoIt(), G4TauNeutrinoNucleusProcess::PostStepDoIt(), G4ITNavigator2::RecheckDistanceToCurrentBoundary(), G4NavigationLogger::ReportOutsideMother(), G4NavigationLogger::ReportVolumeAndIntersection(), and G4MultiUnion::SurfaceNormal().

◆ DumpInfo()

void G4VSolid::DumpInfo ( ) const
inline

Referenced by G4CutTubs::ApproxSurfaceNormal(), G4Tubs::ApproxSurfaceNormal(), G4Box::BoundingLimits(), G4Cons::BoundingLimits(), G4CutTubs::BoundingLimits(), G4DisplacedSolid::BoundingLimits(), G4EllipticalCone::BoundingLimits(), G4ExtrudedSolid::BoundingLimits(), G4GenericPolycone::BoundingLimits(), G4Hype::BoundingLimits(), G4IntersectionSolid::BoundingLimits(), G4Orb::BoundingLimits(), G4Para::BoundingLimits(), G4Paraboloid::BoundingLimits(), G4Polycone::BoundingLimits(), G4Polyhedra::BoundingLimits(), G4ReflectedSolid::BoundingLimits(), G4ScaledSolid::BoundingLimits(), G4Sphere::BoundingLimits(), G4SubtractionSolid::BoundingLimits(), G4TessellatedSolid::BoundingLimits(), G4Torus::BoundingLimits(), G4Trap::BoundingLimits(), G4Trd::BoundingLimits(), G4Tubs::BoundingLimits(), G4TwistedTubs::BoundingLimits(), G4UnionSolid::BoundingLimits(), G4DisplacedSolid::ComputeDimensions(), G4ParameterisationBoxX::ComputeDimensions(), G4ParameterisationBoxY::ComputeDimensions(), G4ParameterisationBoxZ::ComputeDimensions(), G4ParameterisationConsPhi::ComputeDimensions(), G4ParameterisationConsRho::ComputeDimensions(), G4ParameterisationConsZ::ComputeDimensions(), G4ParameterisationParaX::ComputeDimensions(), G4ParameterisationParaY::ComputeDimensions(), G4ParameterisationParaZ::ComputeDimensions(), G4ParameterisationPolyconePhi::ComputeDimensions(), G4ParameterisationPolyconeRho::ComputeDimensions(), G4ParameterisationPolyconeZ::ComputeDimensions(), G4ParameterisationPolyhedraPhi::ComputeDimensions(), G4ParameterisationPolyhedraRho::ComputeDimensions(), G4ParameterisationPolyhedraZ::ComputeDimensions(), G4ParameterisationTrdX::ComputeDimensions(), G4ParameterisationTrdX::ComputeDimensions(), G4ParameterisationTrdY::ComputeDimensions(), G4ParameterisationTrdY::ComputeDimensions(), G4ParameterisationTrdZ::ComputeDimensions(), G4ParameterisationTubsPhi::ComputeDimensions(), G4ParameterisationTubsRho::ComputeDimensions(), G4ParameterisationTubsZ::ComputeDimensions(), G4ReflectedSolid::ComputeDimensions(), G4ScaledSolid::ComputeDimensions(), G4ParameterisedNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4DisplacedSolid::CreatePolyhedron(), G4ScaledSolid::CreatePolyhedron(), G4SubtractionSolid::DistanceToIn(), G4Box::DistanceToOut(), G4Cons::DistanceToOut(), G4Cons::DistanceToOut(), G4CutTubs::DistanceToOut(), G4Ellipsoid::DistanceToOut(), G4EllipticalCone::DistanceToOut(), G4EllipticalCone::DistanceToOut(), G4EllipticalTube::DistanceToOut(), G4EllipticalTube::DistanceToOut(), G4Orb::DistanceToOut(), G4Para::DistanceToOut(), G4Paraboloid::DistanceToOut(), G4Sphere::DistanceToOut(), G4Sphere::DistanceToOut(), G4Torus::DistanceToOut(), G4Torus::DistanceToOut(), G4Trap::DistanceToOut(), G4Trd::DistanceToOut(), G4Tubs::DistanceToOut(), G4Tubs::DistanceToOut(), G4VTwistedFaceted::DistanceToOut(), G4Polycone::G4Polycone(), G4Polyhedra::G4Polyhedra(), G4BooleanSolid::GetConstituentSolid(), G4BooleanSolid::GetConstituentSolid(), G4NavigationLogger::PostComputeStepLog(), G4Box::SurfaceNormal(), G4Ellipsoid::SurfaceNormal(), G4EllipticalCone::SurfaceNormal(), G4EllipticalTube::SurfaceNormal(), G4ExtrudedSolid::SurfaceNormal(), G4Para::SurfaceNormal(), G4Tet::SurfaceNormal(), G4Trap::SurfaceNormal(), and G4Trd::SurfaceNormal().

◆ EstimateCubicVolume()

G4double G4VSolid::EstimateCubicVolume ( G4int nStat,
G4double epsilon ) const

Definition at line 218 of file G4VSolid.cc.

219{
220 G4int iInside=0;
221 G4double px,py,pz,minX,maxX,minY,maxY,minZ,maxZ,volume,halfepsilon;
223 EInside in;
224
225 // values needed for CalculateExtent signature
226
227 G4VoxelLimits limit; // Unlimited
228 G4AffineTransform origin;
229
230 // min max extents of pSolid along X,Y,Z
231
232 CalculateExtent(kXAxis,limit,origin,minX,maxX);
233 CalculateExtent(kYAxis,limit,origin,minY,maxY);
234 CalculateExtent(kZAxis,limit,origin,minZ,maxZ);
235
236 // limits
237
238 if(nStat < 100) nStat = 100;
239 if(epsilon > 0.01) epsilon = 0.01;
240 halfepsilon = 0.5*epsilon;
241
242 for(auto i = 0; i < nStat; ++i )
243 {
244 px = minX-halfepsilon+(maxX-minX+epsilon)*G4QuickRand();
245 py = minY-halfepsilon+(maxY-minY+epsilon)*G4QuickRand();
246 pz = minZ-halfepsilon+(maxZ-minZ+epsilon)*G4QuickRand();
247 p = G4ThreeVector(px,py,pz);
248 in = Inside(p);
249 if(in != kOutside) ++iInside;
250 }
251 volume = (maxX-minX+epsilon)*(maxY-minY+epsilon)
252 * (maxZ-minZ+epsilon)*iInside/nStat;
253 return volume;
254}
G4double epsilon(G4double density, G4double temperature)
G4double G4QuickRand()
CLHEP::Hep3Vector G4ThreeVector
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
virtual EInside Inside(const G4ThreeVector &p) const =0
EInside
Definition geomdefs.hh:67
@ kOutside
Definition geomdefs.hh:68

Referenced by G4BooleanSolid::GetCubicVolume(), G4MultiUnion::GetCubicVolume(), G4VCSGfaceted::GetCubicVolume(), and GetCubicVolume().

◆ EstimateSurfaceArea()

G4double G4VSolid::EstimateSurfaceArea ( G4int nStat,
G4double ell ) const

Definition at line 280 of file G4VSolid.cc.

281{
282 static const G4double s2 = 1./std::sqrt(2.);
283 static const G4double s3 = 1./std::sqrt(3.);
284 static const G4ThreeVector directions[64] =
285 {
286 G4ThreeVector( 0, 0, 0), G4ThreeVector( -1, 0, 0), // ( , , ) ( -, , )
287 G4ThreeVector( 1, 0, 0), G4ThreeVector( -1, 0, 0), // ( +, , ) (-+, , )
288 G4ThreeVector( 0, -1, 0), G4ThreeVector(-s2,-s2, 0), // ( , -, ) ( -, -, )
289 G4ThreeVector( s2, -s2, 0), G4ThreeVector( 0, -1, 0), // ( +, -, ) (-+, -, )
290
291 G4ThreeVector( 0, 1, 0), G4ThreeVector( -s2, s2, 0), // ( , +, ) ( -, +, )
292 G4ThreeVector( s2, s2, 0), G4ThreeVector( 0, 1, 0), // ( +, +, ) (-+, +, )
293 G4ThreeVector( 0, -1, 0), G4ThreeVector( -1, 0, 0), // ( ,-+, ) ( -,-+, )
294 G4ThreeVector( 1, 0, 0), G4ThreeVector( -1, 0, 0), // ( +,-+, ) (-+,-+, )
295
296 G4ThreeVector( 0, 0, -1), G4ThreeVector(-s2, 0,-s2), // ( , , -) ( -, , -)
297 G4ThreeVector( s2, 0,-s2), G4ThreeVector( 0, 0, -1), // ( +, , -) (-+, , -)
298 G4ThreeVector( 0,-s2,-s2), G4ThreeVector(-s3,-s3,-s3), // ( , -, -) ( -, -, -)
299 G4ThreeVector( s3,-s3,-s3), G4ThreeVector( 0,-s2,-s2), // ( +, -, -) (-+, -, -)
300
301 G4ThreeVector( 0, s2,-s2), G4ThreeVector(-s3, s3,-s3), // ( , +, -) ( -, +, -)
302 G4ThreeVector( s3, s3,-s3), G4ThreeVector( 0, s2,-s2), // ( +, +, -) (-+, +, -)
303 G4ThreeVector( 0, 0, -1), G4ThreeVector(-s2, 0,-s2), // ( ,-+, -) ( -,-+, -)
304 G4ThreeVector( s2, 0,-s2), G4ThreeVector( 0, 0, -1), // ( +,-+, -) (-+,-+, -)
305
306 G4ThreeVector( 0, 0, 1), G4ThreeVector(-s2, 0, s2), // ( , , +) ( -, , +)
307 G4ThreeVector( s2, 0, s2), G4ThreeVector( 0, 0, 1), // ( +, , +) (-+, , +)
308 G4ThreeVector( 0,-s2, s2), G4ThreeVector(-s3,-s3, s3), // ( , -, +) ( -, -, +)
309 G4ThreeVector( s3,-s3, s3), G4ThreeVector( 0,-s2, s2), // ( +, -, +) (-+, -, +)
310
311 G4ThreeVector( 0, s2, s2), G4ThreeVector(-s3, s3, s3), // ( , +, +) ( -, +, +)
312 G4ThreeVector( s3, s3, s3), G4ThreeVector( 0, s2, s2), // ( +, +, +) (-+, +, +)
313 G4ThreeVector( 0, 0, 1), G4ThreeVector(-s2, 0, s2), // ( ,-+, +) ( -,-+, +)
314 G4ThreeVector( s2, 0, s2), G4ThreeVector( 0, 0, 1), // ( +,-+, +) (-+,-+, +)
315
316 G4ThreeVector( 0, 0, -1), G4ThreeVector( -1, 0, 0), // ( , ,-+) ( -, ,-+)
317 G4ThreeVector( 1, 0, 0), G4ThreeVector( -1, 0, 0), // ( +, ,-+) (-+, ,-+)
318 G4ThreeVector( 0, -1, 0), G4ThreeVector(-s2,-s2, 0), // ( , -,-+) ( -, -,-+)
319 G4ThreeVector( s2, -s2, 0), G4ThreeVector( 0, -1, 0), // ( +, -,-+) (-+, -,-+)
320
321 G4ThreeVector( 0, 1, 0), G4ThreeVector( -s2, s2, 0), // ( , +,-+) ( -, +,-+)
322 G4ThreeVector( s2, s2, 0), G4ThreeVector( 0, 1, 0), // ( +, +,-+) (-+, +,-+)
323 G4ThreeVector( 0, -1, 0), G4ThreeVector( -1, 0, 0), // ( ,-+,-+) ( -,-+,-+)
324 G4ThreeVector( 1, 0, 0), G4ThreeVector( -1, 0, 0), // ( +,-+,-+) (-+,-+,-+)
325 };
326
327 G4ThreeVector bmin, bmax;
328 BoundingLimits(bmin, bmax);
329
330 G4double dX = bmax.x() - bmin.x();
331 G4double dY = bmax.y() - bmin.y();
332 G4double dZ = bmax.z() - bmin.z();
333
334 // Define statistics and shell thickness
335 //
336 G4int npoints = (nstat < 1000) ? 1000 : nstat;
337 G4double coeff = 0.5 / std::cbrt(G4double(npoints));
338 G4double eps = (ell > 0) ? ell : coeff * std::min(std::min(dX, dY), dZ);
339 G4double del = 1.8 * eps; // shold be more than sqrt(3.)
340
341 G4double minX = bmin.x() - eps;
342 G4double minY = bmin.y() - eps;
343 G4double minZ = bmin.z() - eps;
344
345 G4double dd = 2. * eps;
346 dX += dd;
347 dY += dd;
348 dZ += dd;
349
350 // Calculate surface area
351 //
352 G4int icount = 0;
353 for(auto i = 0; i < npoints; ++i)
354 {
355 G4double px = minX + dX*G4QuickRand();
356 G4double py = minY + dY*G4QuickRand();
357 G4double pz = minZ + dZ*G4QuickRand();
358 G4ThreeVector p = G4ThreeVector(px, py, pz);
359 EInside in = Inside(p);
360 G4double dist = 0;
361 if (in == kInside)
362 {
363 if (DistanceToOut(p) >= eps) continue;
364 G4int icase = 0;
365 if (Inside(G4ThreeVector(px-del, py, pz)) != kInside) icase += 1;
366 if (Inside(G4ThreeVector(px+del, py, pz)) != kInside) icase += 2;
367 if (Inside(G4ThreeVector(px, py-del, pz)) != kInside) icase += 4;
368 if (Inside(G4ThreeVector(px, py+del, pz)) != kInside) icase += 8;
369 if (Inside(G4ThreeVector(px, py, pz-del)) != kInside) icase += 16;
370 if (Inside(G4ThreeVector(px, py, pz+del)) != kInside) icase += 32;
371 if (icase == 0) continue;
372 G4ThreeVector v = directions[icase];
373 dist = DistanceToOut(p, v);
374 G4ThreeVector n = SurfaceNormal(p + v*dist);
375 dist *= v.dot(n);
376 }
377 else if (in == kOutside)
378 {
379 if (DistanceToIn(p) >= eps) continue;
380 G4int icase = 0;
381 if (Inside(G4ThreeVector(px-del, py, pz)) != kOutside) icase += 1;
382 if (Inside(G4ThreeVector(px+del, py, pz)) != kOutside) icase += 2;
383 if (Inside(G4ThreeVector(px, py-del, pz)) != kOutside) icase += 4;
384 if (Inside(G4ThreeVector(px, py+del, pz)) != kOutside) icase += 8;
385 if (Inside(G4ThreeVector(px, py, pz-del)) != kOutside) icase += 16;
386 if (Inside(G4ThreeVector(px, py, pz+del)) != kOutside) icase += 32;
387 if (icase == 0) continue;
388 G4ThreeVector v = directions[icase];
389 dist = DistanceToIn(p, v);
390 if (dist == kInfinity) continue;
391 G4ThreeVector n = SurfaceNormal(p + v*dist);
392 dist *= -(v.dot(n));
393 }
394 if (dist < eps) ++icount;
395 }
396 return dX*dY*dZ*icount/npoints/dd;
397}
double z() const
double x() const
double y() const
double dot(const Hep3Vector &) const
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=nullptr, G4ThreeVector *n=nullptr) const =0
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
virtual void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const
Definition G4VSolid.cc:680
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
@ kInside
Definition geomdefs.hh:70
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

Referenced by G4MultiUnion::GetSurfaceArea(), G4VCSGfaceted::GetSurfaceArea(), and GetSurfaceArea().

◆ GetConstituentSolid() [1/2]

G4VSolid * G4VSolid::GetConstituentSolid ( G4int no)
virtual

Reimplemented in G4BooleanSolid.

Definition at line 185 of file G4VSolid.cc.

186{ return nullptr; }

◆ GetConstituentSolid() [2/2]

const G4VSolid * G4VSolid::GetConstituentSolid ( G4int no) const
virtual

Reimplemented in G4BooleanSolid.

Definition at line 182 of file G4VSolid.cc.

183{ return nullptr; }

Referenced by G4BooleanSolid::StackPolyhedron().

◆ GetCubicVolume()

◆ GetDisplacedSolidPtr() [1/2]

G4DisplacedSolid * G4VSolid::GetDisplacedSolidPtr ( )
virtual

Reimplemented in G4DisplacedSolid.

Definition at line 191 of file G4VSolid.cc.

192{ return nullptr; }

◆ GetDisplacedSolidPtr() [2/2]

const G4DisplacedSolid * G4VSolid::GetDisplacedSolidPtr ( ) const
virtual

Reimplemented in G4DisplacedSolid.

Definition at line 188 of file G4VSolid.cc.

189{ return nullptr; }

◆ GetEntityType()

virtual G4GeometryType G4VSolid::GetEntityType ( ) const
pure virtual

Implemented in G4BooleanSolid, G4Box, G4Cons, G4CutTubs, G4DisplacedSolid, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4ExtrudedSolid, G4GenericPolycone, G4GenericTrap, G4Hype, G4IntersectionSolid, G4MultiUnion, G4Orb, G4Para, G4Paraboloid, G4Polycone, G4Polyhedra, G4ReflectedSolid, G4ScaledSolid, G4Sphere, G4SubtractionSolid, G4TessellatedSolid, G4Tet, G4Torus, G4Trap, G4Trd, G4Tubs, G4TwistedBox, G4TwistedTrap, G4TwistedTrd, G4TwistedTubs, G4UnionSolid, G4VCSGfaceted, and G4VTwistedFaceted.

Referenced by G4GMocrenFileSceneHandler::AddPrimitive(), G4GDMLWriteSolids::AddSolid(), BoundingLimits(), G4tgbVolume::BuildSolidForDivision(), G4PVPlacement::CheckOverlaps(), Clone(), G4GeometryWorkspace::CloneReplicaSolid(), G4VoxelNavigation::ComputeSafety(), G4NavigationLogger::ComputeSafetyLog(), G4VDivisionParameterisation::ComputeSolid(), G4PhysicalVolumeModel::CreateCurrentAttValues(), G4tgbGeometryDumper::DumpPVParameterised(), G4tgbGeometryDumper::DumpSolid(), G4tgbVolume::FindOrConstructG4Solid(), G4DisplacedSolid::G4DisplacedSolid(), G4DisplacedSolid::G4DisplacedSolid(), G4DisplacedSolid::G4DisplacedSolid(), G4VParameterisationBox::G4VParameterisationBox(), G4VParameterisationCons::G4VParameterisationCons(), G4VParameterisationPara::G4VParameterisationPara(), G4VParameterisationPolycone::G4VParameterisationPolycone(), G4VParameterisationPolyhedra::G4VParameterisationPolyhedra(), G4VParameterisationTrd::G4VParameterisationTrd(), G4VParameterisationTubs::G4VParameterisationTubs(), G4Navigator::GetGlobalExitNormal(), G4BooleanSolid::GetListOfPrimitives(), G4ITNavigator1::GetLocalExitNormal(), G4ITNavigator2::GetLocalExitNormal(), G4Navigator::GetLocalExitNormal(), GetPointOnSurface(), G4tgbGeometryDumper::GetSolidParams(), G4NavigationLogger::PostComputeStepLog(), G4NavigationLogger::PreComputeStepLog(), G4NavigationLogger::PrintDaughterLog(), G4NavigationLogger::ReportOutsideMother(), G4ASCIITreeSceneHandler::RequestPrimitives(), G4VoxelSafety::SafetyForVoxelHeader(), G4BooleanSolid::SetCubVolEpsilon(), G4BooleanSolid::SetCubVolStatistics(), G4BooleanSolid::StackPolyhedron(), G4CSGSolid::StreamInfo(), G4GeomTestVolume::TestOverlapInTree(), and G4PhysicalVolumeModel::VisitGeometryAndGetVisReps().

◆ GetExtent()

G4VisExtent G4VSolid::GetExtent ( ) const
virtual

Reimplemented in G4Box, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4GenericTrap, G4Hype, G4Orb, G4Sphere, G4TessellatedSolid, G4Tet, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

Definition at line 697 of file G4VSolid.cc.

698{
699 G4VisExtent extent;
700 G4VoxelLimits voxelLimits; // Defaults to "infinite" limits.
701 G4AffineTransform affineTransform;
702 G4double vmin, vmax;
703 CalculateExtent(kXAxis,voxelLimits,affineTransform,vmin,vmax);
704 extent.SetXmin (vmin);
705 extent.SetXmax (vmax);
706 CalculateExtent(kYAxis,voxelLimits,affineTransform,vmin,vmax);
707 extent.SetYmin (vmin);
708 extent.SetYmax (vmax);
709 CalculateExtent(kZAxis,voxelLimits,affineTransform,vmin,vmax);
710 extent.SetZmin (vmin);
711 extent.SetZmax (vmax);
712 return extent;
713}
void SetYmin(G4double ymin)
void SetYmax(G4double ymax)
void SetXmax(G4double xmax)
void SetXmin(G4double xmin)
void SetZmax(G4double zmax)
void SetZmin(G4double zmin)

Referenced by G4tgbVolume::BuildSolidForDivision(), G4PhysicalVolumeModel::CreateCurrentAttValues(), and G4VisCommandsTouchable::SetNewValue().

◆ GetName()

G4String G4VSolid::GetName ( ) const
inline

Referenced by G4GMocrenFileSceneHandler::AddPrimitive(), G4GDMLWriteSolids::AddSolid(), G4GMocrenFileSceneHandler::AddSolid(), G4GMocrenFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4VtkSceneHandler::AddSolid(), G4NavigationLogger::AlongComputeStepLog(), G4GDMLWriteSolids::BooleanWrite(), G4Box::BoundingLimits(), G4Cons::BoundingLimits(), G4CutTubs::BoundingLimits(), G4DisplacedSolid::BoundingLimits(), G4EllipticalCone::BoundingLimits(), G4ExtrudedSolid::BoundingLimits(), G4GenericPolycone::BoundingLimits(), G4Hype::BoundingLimits(), G4IntersectionSolid::BoundingLimits(), G4Orb::BoundingLimits(), G4Para::BoundingLimits(), G4Paraboloid::BoundingLimits(), G4Polycone::BoundingLimits(), G4Polyhedra::BoundingLimits(), G4ReflectedSolid::BoundingLimits(), G4ScaledSolid::BoundingLimits(), G4Sphere::BoundingLimits(), G4SubtractionSolid::BoundingLimits(), G4TessellatedSolid::BoundingLimits(), G4Torus::BoundingLimits(), G4Trap::BoundingLimits(), G4Trd::BoundingLimits(), G4Tubs::BoundingLimits(), G4TwistedTubs::BoundingLimits(), G4UnionSolid::BoundingLimits(), G4GDMLWriteSolids::BoxWrite(), G4ExtrudedSolid::CalculateExtent(), G4GenericPolycone::CalculateExtent(), G4Polycone::CalculateExtent(), G4Polyhedra::CalculateExtent(), G4NavigationLogger::CheckDaughterEntryPoint(), G4VoxelNavigation::ComputeSafety(), G4VoxelSafety::ComputeSafety(), G4NavigationLogger::ComputeSafetyLog(), G4ParameterisedNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4GDMLWriteSolids::ConeWrite(), G4GenericPolycone::Create(), G4Polycone::Create(), G4Polyhedra::Create(), G4PhysicalVolumeModel::CreateCurrentAttValues(), G4ReflectedSolid::CreatePolyhedron(), G4GDMLWriteSolids::CutTubeWrite(), G4SolidStore::DeRegister(), G4Paraboloid::DistanceToIn(), G4TessellatedSolid::DistanceToIn(), G4Box::DistanceToOut(), G4Ellipsoid::DistanceToOut(), G4EllipticalCone::DistanceToOut(), G4EllipticalTube::DistanceToOut(), G4EllipticalTube::DistanceToOut(), G4Orb::DistanceToOut(), G4Para::DistanceToOut(), G4TessellatedSolid::DistanceToOut(), G4Trap::DistanceToOut(), G4Trd::DistanceToOut(), G4tgbGeometryDumper::DumpMultiUnionVolume(), G4tgbGeometryDumper::DumpScaledVolume(), G4tgbGeometryDumper::DumpSolid(), G4GDMLWriteSolids::ElconeWrite(), G4GDMLWriteSolids::EllipsoidWrite(), G4GDMLWriteSolids::EltubeWrite(), G4Box::G4Box(), G4Cons::G4Cons(), G4CutTubs::G4CutTubs(), G4EllipticalCone::G4EllipticalCone(), G4Hype::G4Hype(), G4Para::G4Para(), G4Paraboloid::G4Paraboloid(), G4Polycone::G4Polycone(), G4Polyhedra::G4Polyhedra(), G4Polyhedra::G4Polyhedra(), G4Sphere::G4Sphere(), G4Tet::G4Tet(), G4Trap::G4Trap(), G4Tubs::G4Tubs(), G4VTwistedFaceted::G4VTwistedFaceted(), G4GDMLWriteSolids::GenericPolyconeWrite(), G4GDMLWriteSolids::GenTrapWrite(), G4Navigator::GetGlobalExitNormal(), G4ITNavigator1::GetLocalExitNormal(), G4ITNavigator2::GetLocalExitNormal(), G4Navigator::GetLocalExitNormal(), G4BooleanSolid::GetPointOnSurface(), G4GDMLWriteSolids::HypeWrite(), G4ITNavigator1::LocateGlobalPointAndSetup(), G4ITNavigator2::LocateGlobalPointAndSetup(), G4Navigator::LocateGlobalPointAndSetup(), G4Trap::MakePlanes(), G4GDMLWriteSolids::MultiUnionWrite(), G4GDMLWriteSolids::OrbWrite(), G4GDMLWriteSolids::ParaboloidWrite(), G4GDMLWriteParamvol::ParametersWrite(), G4GDMLWriteSolids::ParaWrite(), G4GDMLWriteSolids::PolyconeWrite(), G4GDMLWriteSolids::PolyhedraWrite(), G4NavigationLogger::PostComputeStepLog(), G4NavigationLogger::PreComputeStepLog(), G4NavigationLogger::PrintDaughterLog(), G4PseudoScene::ProcessVolume(), G4SolidStore::Register(), G4tgbVolumeMgr::RegisterMe(), G4NavigationLogger::ReportOutsideMother(), G4ASCIITreeSceneHandler::RequestPrimitives(), G4VSceneHandler::RequestPrimitives(), G4GenericPolycone::Reset(), G4Polyhedra::Reset(), G4VoxelSafety::SafetyForVoxelNode(), G4GDMLWriteSolids::ScaledWrite(), G4Torus::SetAllParameters(), G4Tet::SetBoundingLimits(), G4Polycone::SetOriginalParameters(), G4Polyhedra::SetOriginalParameters(), G4TessellatedSolid::SetSolidClosed(), G4Tet::SetVertices(), G4Box::SetXHalfLength(), G4Box::SetYHalfLength(), G4Box::SetZHalfLength(), G4GDMLWriteSolids::SphereWrite(), G4BooleanSolid::StackPolyhedron(), G4BooleanSolid::StreamInfo(), G4Box::StreamInfo(), G4Cons::StreamInfo(), G4CSGSolid::StreamInfo(), G4CutTubs::StreamInfo(), G4DisplacedSolid::StreamInfo(), G4Ellipsoid::StreamInfo(), G4EllipticalCone::StreamInfo(), G4EllipticalTube::StreamInfo(), G4ExtrudedSolid::StreamInfo(), G4GenericPolycone::StreamInfo(), G4GenericTrap::StreamInfo(), G4Hype::StreamInfo(), G4MultiUnion::StreamInfo(), G4Orb::StreamInfo(), G4Para::StreamInfo(), G4Paraboloid::StreamInfo(), G4Polycone::StreamInfo(), G4Polyhedra::StreamInfo(), G4ReflectedSolid::StreamInfo(), G4ScaledSolid::StreamInfo(), G4Sphere::StreamInfo(), G4TessellatedSolid::StreamInfo(), G4Tet::StreamInfo(), G4Torus::StreamInfo(), G4Trap::StreamInfo(), G4Trd::StreamInfo(), G4Tubs::StreamInfo(), G4TwistedBox::StreamInfo(), G4TwistedTrap::StreamInfo(), G4TwistedTrd::StreamInfo(), G4TwistedTubs::StreamInfo(), G4VCSGfaceted::StreamInfo(), G4VTwistedFaceted::StreamInfo(), G4GDMLRead::StripNames(), SubstractSolids(), G4Box::SurfaceNormal(), G4Ellipsoid::SurfaceNormal(), G4EllipticalCone::SurfaceNormal(), G4EllipticalTube::SurfaceNormal(), G4ExtrudedSolid::SurfaceNormal(), G4Para::SurfaceNormal(), G4Tet::SurfaceNormal(), G4Trap::SurfaceNormal(), G4Trd::SurfaceNormal(), G4UnionSolid::SurfaceNormal(), G4GDMLWriteSolids::TessellatedWrite(), G4GDMLWriteSolids::TetWrite(), G4GDMLWriteSolids::TorusWrite(), G4GDMLWriteSolids::TrapWrite(), G4GDMLWriteStructure::TraverseVolumeTree(), G4GDMLWriteSolids::TrdWrite(), G4GDMLWriteSolids::TubeWrite(), G4GDMLWriteSolids::TwistedboxWrite(), G4GDMLWriteSolids::TwistedtrapWrite(), G4GDMLWriteSolids::TwistedtrdWrite(), G4GDMLWriteSolids::TwistedtubsWrite(), G4PhysicalVolumeModel::VisitGeometryAndGetVisReps(), and G4GDMLWriteSolids::XtruWrite().

◆ GetNumOfConstituents()

G4int G4VSolid::GetNumOfConstituents ( ) const
virtual

Reimplemented in G4BooleanSolid, G4DisplacedSolid, G4MultiUnion, G4ReflectedSolid, and G4ScaledSolid.

Definition at line 168 of file G4VSolid.cc.

169{ return 1; }

Referenced by G4MultiUnion::GetNumOfConstituents().

◆ GetPointOnSurface()

G4ThreeVector G4VSolid::GetPointOnSurface ( ) const
virtual

Reimplemented in G4BooleanSolid, G4Box, G4Cons, G4CutTubs, G4DisplacedSolid, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4GenericPolycone, G4GenericTrap, G4Hype, G4MultiUnion, G4Orb, G4Para, G4Paraboloid, G4Polycone, G4Polyhedra, G4ReflectedSolid, G4ScaledSolid, G4Sphere, G4TessellatedSolid, G4Tet, G4Torus, G4Trap, G4Trd, G4Tubs, G4TwistedTubs, and G4VTwistedFaceted.

Definition at line 152 of file G4VSolid.cc.

153{
154 std::ostringstream message;
155 message << "Not implemented for solid: "
156 << GetEntityType() << " !" << G4endl
157 << "Returning origin.";
158 G4Exception("G4VSolid::GetPointOnSurface()", "GeomMgt1001",
159 JustWarning, message);
160 return {0,0,0};
161}

Referenced by G4PVParameterised::CheckOverlaps(), G4PVPlacement::CheckOverlaps(), G4LogicalVolumeModel::DescribeYourselfTo(), G4MultiUnion::GetPointOnSurface(), and G4VSceneHandler::RequestPrimitives().

◆ GetPolyhedron()

◆ GetSurfaceArea()

◆ GetTolerance()

◆ Inside()

virtual EInside G4VSolid::Inside ( const G4ThreeVector & p) const
pure virtual

Implemented in G4Box, G4Cons, G4CutTubs, G4DisplacedSolid, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4ExtrudedSolid, G4GenericPolycone, G4GenericTrap, G4Hype, G4IntersectionSolid, G4MultiUnion, G4Orb, G4Para, G4Paraboloid, G4Polycone, G4Polyhedra, G4ReflectedSolid, G4ScaledSolid, G4Sphere, G4SubtractionSolid, G4TessellatedSolid, G4Tet, G4Torus, G4Trap, G4Trd, G4Tubs, G4TwistedTubs, G4UnionSolid, G4VCSGfaceted, and G4VTwistedFaceted.

Referenced by G4NavigationLogger::AlongComputeStepLog(), G4ReplicaNavigation::BackLocate(), G4NavigationLogger::CheckDaughterEntryPoint(), G4PVParameterised::CheckOverlaps(), G4PVPlacement::CheckOverlaps(), G4VoxelNavigation::ComputeSafety(), G4VoxelSafety::ComputeSafety(), G4ParameterisedNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4RegularNavigation::ComputeStepSkippingEqualMaterials(), G4TheRayTracer::CreateBitMap(), G4DNAMolecularDissociation::DecayIt(), G4LogicalVolumeModel::DescribeYourselfTo(), G4VFieldModel::DescribeYourselfTo(), G4PolyPhiFace::Diagnose(), G4MultiUnion::DistanceToOut(), G4MultiUnion::DistanceToOutNoVoxels(), G4MultiUnion::DistanceToOutVoxels(), EstimateCubicVolume(), EstimateSurfaceArea(), G4ITNavigator1::GetLocalExitNormal(), G4ITNavigator2::GetLocalExitNormal(), G4Navigator::GetLocalExitNormal(), G4XrayReflection::GetMeanFreePath(), G4BooleanSolid::GetPointOnSurface(), G4ITNavigator2::GetRandomInCurrentVolume(), G4VExternalNavigation::Inside(), G4ITNavigator2::InsideCurrentVolume(), G4MultiUnion::InsideNoVoxels(), G4ITNavigator1::LocateGlobalPointAndSetup(), G4ITNavigator2::LocateGlobalPointAndSetup(), G4Navigator::LocateGlobalPointAndSetup(), G4VIntersectionLocator::LocateGlobalPointWithinVolumeAndCheck(), G4NavigationLogger::PreComputeStepLog(), G4ITNavigator2::RecheckDistanceToCurrentBoundary(), G4NavigationLogger::ReportOutsideMother(), G4NavigationLogger::ReportVolumeAndIntersection(), and G4MultiUnion::SurfaceNormal().

◆ IsFaceted()

G4bool G4VSolid::IsFaceted ( ) const
virtual

◆ operator=()

◆ operator==()

G4bool G4VSolid::operator== ( const G4VSolid & s) const
inline

◆ SetName()

void G4VSolid::SetName ( const G4String & name)

Definition at line 127 of file G4VSolid.cc.

128{
129 fshapeName = name;
131}
void SetMapValid(G4bool val)
const char * name(G4int ptype)

Referenced by G4MultiUnion::G4MultiUnion(), and G4GDMLRead::StripNames().

◆ StreamInfo()

◆ SurfaceNormal()

Member Data Documentation

◆ kCarTolerance

G4double G4VSolid::kCarTolerance
protected

Definition at line 306 of file G4VSolid.hh.

Referenced by G4TessellatedSolid::AddFacet(), G4Polycone::CalculateExtent(), G4Polyhedra::CalculateExtent(), G4Tet::CheckDegeneracy(), G4GenericPolycone::Create(), G4Polycone::Create(), G4Polyhedra::Create(), G4CutTubs::CreatePolyhedron(), G4VCSGfaceted::DistanceTo(), G4Ellipsoid::DistanceToIn(), G4Hype::DistanceToIn(), G4Hype::DistanceToIn(), G4Paraboloid::DistanceToIn(), G4Sphere::DistanceToIn(), G4VCSGfaceted::DistanceToIn(), G4Cons::DistanceToOut(), G4CutTubs::DistanceToOut(), G4Hype::DistanceToOut(), G4Hype::DistanceToOut(), G4Paraboloid::DistanceToOut(), G4Paraboloid::DistanceToOut(), G4Sphere::DistanceToOut(), G4Torus::DistanceToOut(), G4Tubs::DistanceToOut(), G4VCSGfaceted::DistanceToOut(), G4Box::G4Box(), G4Cons::G4Cons(), G4CutTubs::G4CutTubs(), G4EllipticalCone::G4EllipticalCone(), G4ExtrudedSolid::G4ExtrudedSolid(), G4ExtrudedSolid::G4ExtrudedSolid(), G4GenericTrap::G4GenericTrap(), G4Hype::G4Hype(), G4Para::G4Para(), G4Para::G4Para(), G4Para::G4Para(), G4Sphere::G4Sphere(), G4Tet::G4Tet(), G4Trap::G4Trap(), G4Trap::G4Trap(), G4Trap::G4Trap(), G4Trap::G4Trap(), G4Trap::G4Trap(), G4Trap::G4Trap(), G4Trap::G4Trap(), G4Trd::G4Trd(), G4Trd::G4Trd(), G4Tubs::G4Tubs(), G4UnionSolid::G4UnionSolid(), G4VSolid(), G4VSolid(), G4VTwistedFaceted::G4VTwistedFaceted(), G4GenericPolycone::GetPointOnSurface(), G4Polycone::GetPointOnSurface(), G4Hype::GetSurfaceArea(), G4TwistedTrd::GetSurfaceArea(), G4Orb::Initialize(), G4Hype::Inside(), G4Paraboloid::Inside(), G4SubtractionSolid::Inside(), G4VCSGfaceted::Inside(), G4VTwistedFaceted::Inside(), G4CutTubs::IsCrossingCutPlanes(), G4Trap::MakePlane(), operator=(), G4TessellatedSolid::SafetyFromInside(), G4TessellatedSolid::SafetyFromOutside(), G4Torus::SetAllParameters(), G4Polycone::SetOriginalParameters(), G4Polyhedra::SetOriginalParameters(), G4Box::SetXHalfLength(), G4Box::SetYHalfLength(), G4Box::SetZHalfLength(), G4Paraboloid::SurfaceNormal(), and G4Torus::SurfaceNormal().


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