Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4CSGSolid Class Reference

#include <G4CSGSolid.hh>

+ Inheritance diagram for G4CSGSolid:

Public Member Functions

 G4CSGSolid (const G4String &pName)
 
virtual ~G4CSGSolid ()
 
std::ostream & StreamInfo (std::ostream &os) const override
 
G4PolyhedronGetPolyhedron () const override
 
 G4CSGSolid (__void__ &)
 
 G4CSGSolid (const G4CSGSolid &rhs)
 
G4CSGSolidoperator= (const G4CSGSolid &rhs)
 
- 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 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 G4VSolidClone () const
 
void DumpInfo () const
 
virtual void DescribeYourselfTo (G4VGraphicsScene &scene) const =0
 
virtual G4VisExtent GetExtent () const
 
virtual G4PolyhedronCreatePolyhedron () 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

G4double GetRadiusInRing (G4double rmin, G4double rmax) const
 
- 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
 

Protected Attributes

G4double fCubicVolume = 0.0
 
G4double fSurfaceArea = 0.0
 
G4bool fRebuildPolyhedron = false
 
G4PolyhedronfpPolyhedron = nullptr
 
- Protected Attributes inherited from G4VSolid
G4double kCarTolerance
 

Detailed Description

Definition at line 41 of file G4CSGSolid.hh.

Constructor & Destructor Documentation

◆ G4CSGSolid() [1/3]

G4CSGSolid::G4CSGSolid ( const G4String & pName)

Definition at line 49 of file G4CSGSolid.cc.

49 :
50 G4VSolid(name)
51{
52}
G4VSolid(const G4String &name)
Definition G4VSolid.cc:57

◆ ~G4CSGSolid()

G4CSGSolid::~G4CSGSolid ( )
virtual

Definition at line 69 of file G4CSGSolid.cc.

70{
71 delete fpPolyhedron; fpPolyhedron = nullptr;
72}
G4Polyhedron * fpPolyhedron
Definition G4CSGSolid.hh:71

◆ G4CSGSolid() [2/3]

G4CSGSolid::G4CSGSolid ( __void__ & a)

Definition at line 59 of file G4CSGSolid.cc.

60 : G4VSolid(a)
61{
62}

◆ G4CSGSolid() [3/3]

G4CSGSolid::G4CSGSolid ( const G4CSGSolid & rhs)

Definition at line 79 of file G4CSGSolid.cc.

82{
83}
G4double fSurfaceArea
Definition G4CSGSolid.hh:69
G4double fCubicVolume
Definition G4CSGSolid.hh:68

Member Function Documentation

◆ GetPolyhedron()

G4Polyhedron * G4CSGSolid::GetPolyhedron ( ) const
overridevirtual

Reimplemented from G4VSolid.

Definition at line 129 of file G4CSGSolid.cc.

130{
131 if (fpPolyhedron == nullptr ||
135 {
136 G4AutoLock l(&polyhedronMutex);
137 delete fpPolyhedron;
139 fRebuildPolyhedron = false;
140 l.unlock();
141 }
142 return fpPolyhedron;
143}
G4bool fRebuildPolyhedron
Definition G4CSGSolid.hh:70
G4int GetNumberOfRotationStepsAtTimeOfCreation() const
virtual G4Polyhedron * CreatePolyhedron() const
Definition G4VSolid.cc:700
static G4int GetNumberOfRotationSteps()

Referenced by G4ScoringBox::Draw(), G4ScoringCylinder::Draw(), and G4ScoringBox::DrawColumn().

◆ GetRadiusInRing()

G4double G4CSGSolid::GetRadiusInRing ( G4double rmin,
G4double rmax ) const
protected

Definition at line 109 of file G4CSGSolid.cc.

110{
111 G4double k = G4QuickRand();
112 return (rmin <= 0) ? rmax*std::sqrt(k)
113 : std::sqrt(k*rmax*rmax + (1. - k)*rmin*rmin);
114}
G4double G4QuickRand()
double G4double
Definition G4Types.hh:83

Referenced by G4Cons::GetPointOnSurface(), and G4Torus::GetPointOnSurface().

◆ operator=()

G4CSGSolid & G4CSGSolid::operator= ( const G4CSGSolid & rhs)

Definition at line 89 of file G4CSGSolid.cc.

90{
91 // Check assignment to self
92 //
93 if (this == &rhs) { return *this; }
94
95 // Copy base class data
96 //
98
99 // Copy data
100 //
103 fRebuildPolyhedron = false;
104 delete fpPolyhedron; fpPolyhedron = nullptr;
105
106 return *this;
107}
G4VSolid & operator=(const G4VSolid &rhs)
Definition G4VSolid.cc:107

Referenced by G4Box::operator=(), G4Cons::operator=(), G4CutTubs::operator=(), G4Orb::operator=(), G4Para::operator=(), G4Sphere::operator=(), G4Torus::operator=(), G4Trap::operator=(), G4Trd::operator=(), and G4Tubs::operator=().

◆ StreamInfo()

std::ostream & G4CSGSolid::StreamInfo ( std::ostream & os) const
overridevirtual

Implements G4VSolid.

Reimplemented in G4CutTubs, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, and G4Tubs.

Definition at line 116 of file G4CSGSolid.cc.

117{
118 os << "-----------------------------------------------------------\n"
119 << " *** Dump for solid - " << GetName() << " ***\n"
120 << " ===================================================\n"
121 << " Solid type: " << GetEntityType() << "\n"
122 << " Parameters: \n"
123 << " NOT available !\n"
124 << "-----------------------------------------------------------\n";
125
126 return os;
127}
G4String GetName() const
virtual G4GeometryType GetEntityType() const =0

Member Data Documentation

◆ fCubicVolume

◆ fpPolyhedron

G4Polyhedron* G4CSGSolid::fpPolyhedron = nullptr
mutableprotected

Definition at line 71 of file G4CSGSolid.hh.

Referenced by GetPolyhedron(), operator=(), and ~G4CSGSolid().

◆ fRebuildPolyhedron

◆ fSurfaceArea


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