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

G4TwistedBox is a twisted cuboid of given half lengths and twist angle. The box is centred on the origin with sides parallel to the Cartesian axes. More...

#include <G4TwistedBox.hh>

Inheritance diagram for G4TwistedBox:

Public Member Functions

 G4TwistedBox (const G4String &pName, G4double pPhiTwist, G4double pDx, G4double pDy, G4double pDz)
 ~G4TwistedBox () override=default
G4double GetXHalfLength () const
G4double GetYHalfLength () const
G4double GetZHalfLength () const
G4double GetPhiTwist () const
G4GeometryType GetEntityType () const override
G4double GetCubicVolume () override
G4double GetSurfaceArea () override
G4VSolidClone () const override
std::ostream & StreamInfo (std::ostream &os) const override
 G4TwistedBox (__void__ &)
 G4TwistedBox (const G4TwistedBox &rhs)
G4TwistedBoxoperator= (const G4TwistedBox &rhs)
Public Member Functions inherited from G4VTwistedFaceted
 G4VTwistedFaceted (const G4String &pname, G4double PhiTwist, G4double pDz, G4double pTheta, G4double pPhi, G4double pDy1, G4double pDx1, G4double pDx2, G4double pDy2, G4double pDx3, G4double pDx4, G4double pAlph)
 ~G4VTwistedFaceted () override
void ComputeDimensions (G4VPVParameterisation *, const G4int, const G4VPhysicalVolume *) override
void BoundingLimits (G4ThreeVector &pMin, G4ThreeVector &pMax) const override
G4bool CalculateExtent (const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const override
G4double DistanceToIn (const G4ThreeVector &p, const G4ThreeVector &v) const override
G4double DistanceToIn (const G4ThreeVector &p) const override
G4double DistanceToOut (const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcnorm=false, G4bool *validnorm=nullptr, G4ThreeVector *n=nullptr) const override
G4double DistanceToOut (const G4ThreeVector &p) const override
EInside Inside (const G4ThreeVector &p) const override
G4ThreeVector SurfaceNormal (const G4ThreeVector &p) const override
G4ThreeVector GetPointOnSurface () const override
G4double GetCubicVolume () override
G4double GetSurfaceArea () override
void DescribeYourselfTo (G4VGraphicsScene &scene) const override
G4PolyhedronCreatePolyhedron () const override
G4PolyhedronGetPolyhedron () const override
G4VisExtent GetExtent () const override
std::ostream & StreamInfo (std::ostream &os) const override
G4double GetTwistAngle () const
G4double GetDx1 () const
G4double GetDx2 () const
G4double GetDx3 () const
G4double GetDx4 () const
G4double GetDy1 () const
G4double GetDy2 () const
G4double GetDz () const
G4double GetPhi () const
G4double GetTheta () const
G4double GetAlpha () const
G4double Xcoef (G4double u, G4double phi, G4double ftg) const
G4double GetValueA (G4double phi) const
G4double GetValueB (G4double phi) const
G4double GetValueD (G4double phi) const
G4GeometryType GetEntityType () const override
 G4VTwistedFaceted (__void__ &)
 G4VTwistedFaceted (const G4VTwistedFaceted &rhs)
G4VTwistedFacetedoperator= (const G4VTwistedFaceted &rhs)
Public Member Functions inherited from G4VSolid
 G4VSolid (const G4String &name)
virtual ~G4VSolid ()
 G4VSolid (const G4VSolid &rhs)
G4VSolidoperator= (const G4VSolid &rhs)
G4bool operator== (const G4VSolid &s) const
G4String GetName () const
void SetName (const G4String &name)
G4double GetTolerance () const
virtual G4int GetNumOfConstituents () const
virtual G4bool IsFaceted () const
void DumpInfo () const
virtual const G4VSolidGetConstituentSolid (G4int no) const
virtual G4VSolidGetConstituentSolid (G4int no)
virtual const G4DisplacedSolidGetDisplacedSolidPtr () const
virtual G4DisplacedSolidGetDisplacedSolidPtr ()
 G4VSolid (__void__ &)
G4double EstimateCubicVolume (G4int nStat, G4double epsilon) const
G4double EstimateSurfaceArea (G4int nStat, G4double epsilon) const

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
Protected Attributes inherited from G4VTwistedFaceted
G4bool fRebuildPolyhedron = false
G4PolyhedronfpPolyhedron = nullptr
G4double fCubicVolume = 0.0
G4double fSurfaceArea = 0.0
Protected Attributes inherited from G4VSolid
G4double kCarTolerance

Detailed Description

G4TwistedBox is a twisted cuboid of given half lengths and twist angle. The box is centred on the origin with sides parallel to the Cartesian axes.

Definition at line 54 of file G4TwistedBox.hh.

Constructor & Destructor Documentation

◆ G4TwistedBox() [1/3]

G4TwistedBox::G4TwistedBox ( const G4String & pName,
G4double pPhiTwist,
G4double pDx,
G4double pDy,
G4double pDz )

Constructs a twisted box, given its parameters.

Parameters
[in]pNameThe solid name.
[in]pPhiTwistTwist angle.
[in]pDxHalf-length along X axis.
[in]pDyHalf-length along Y axis.
[in]pDzHalf-length along Z axis.

Definition at line 44 of file G4TwistedBox.cc.

49 : G4VTwistedFaceted( pName, pPhiTwist,pDz,0.,0.,
50 pDy, pDx, pDx, pDy, pDx, pDx,0. )
51{
52}
G4VTwistedFaceted(const G4String &pname, G4double PhiTwist, G4double pDz, G4double pTheta, G4double pPhi, G4double pDy1, G4double pDx1, G4double pDx2, G4double pDy2, G4double pDx3, G4double pDx4, G4double pAlph)

Referenced by Clone(), G4TwistedBox(), and operator=().

◆ ~G4TwistedBox()

G4TwistedBox::~G4TwistedBox ( )
overridedefault

Default destructor.

◆ G4TwistedBox() [2/3]

G4TwistedBox::G4TwistedBox ( __void__ & a)

Fake default constructor for usage restricted to direct object persistency for clients requiring preallocation of memory for persistifiable objects.

Definition at line 58 of file G4TwistedBox.cc.

60{
61}

◆ G4TwistedBox() [3/3]

G4TwistedBox::G4TwistedBox ( const G4TwistedBox & rhs)

Copy constructor and assignment operator.

Definition at line 66 of file G4TwistedBox.cc.

68{
70}
G4Polyhedron * GetPolyhedron() const override
G4Polyhedron * fpPolyhedron

Member Function Documentation

◆ Clone()

G4VSolid * G4TwistedBox::Clone ( ) const
overridevirtual

Makes a clone of the object for use in multi-treading.

Returns
A pointer to the new cloned allocated solid.

Reimplemented from G4VSolid.

Definition at line 122 of file G4TwistedBox.cc.

123{
124 return new G4TwistedBox(*this);
125}
G4TwistedBox(const G4String &pName, G4double pPhiTwist, G4double pDx, G4double pDy, G4double pDz)

◆ GetCubicVolume()

double G4TwistedBox::GetCubicVolume ( )
overridevirtual

Returning an estimation of the solid volume (capacity) and surface area, in internal units.

Reimplemented from G4VSolid.

Definition at line 130 of file G4TwistedBox.cc.

131{
132 if (fCubicVolume == 0)
133 {
134 G4AutoLock l(&twboxMutex);
136 l.unlock();
137 }
138 return fCubicVolume;
139}
G4TemplateAutoLock< G4Mutex > G4AutoLock
G4double GetXHalfLength() const
G4double GetZHalfLength() const
G4double GetYHalfLength() const

◆ GetEntityType()

G4GeometryType G4TwistedBox::GetEntityType ( ) const
overridevirtual

Returns the type ID, "G4TwistedBox" of the solid.

Implements G4VSolid.

Definition at line 114 of file G4TwistedBox.cc.

115{
116 return {"G4TwistedBox"};
117}

◆ GetPhiTwist()

G4double G4TwistedBox::GetPhiTwist ( ) const
inline

◆ GetSurfaceArea()

double G4TwistedBox::GetSurfaceArea ( )
overridevirtual

Returns an estimation of the solid surface area in internal units. This method may be overloaded by derived classes to compute the exact geometrical quantity for solids where this is possible, or anyway to cache the computed value. Note: the computed value is NOT cached.

Reimplemented from G4VSolid.

Definition at line 144 of file G4TwistedBox.cc.

145{
146 if (fSurfaceArea == 0)
147 {
148 G4AutoLock l(&twboxMutex);
149 G4double ang = GetPhiTwist();
153 if (ang == 0.)
154 {
155 fSurfaceArea = 8.*(dx*dy + dx*dz + dy*dz);
156 }
157 else
158 {
159 G4double h = 2.*dz;
160 G4double hh = h*h;
161 G4double dxang = dx*ang;
162 G4double dyang = dy*ang;
163 fSurfaceArea = 8.*dx*dy +
164 2.*(dx*std::sqrt(hh + dxang*dxang) + hh*std::asinh(dxang/h)/ang) +
165 2.*(dy*std::sqrt(hh + dyang*dyang) + hh*std::asinh(dyang/h)/ang);
166 }
167 l.unlock();
168 }
169 return fSurfaceArea;
170}
double G4double
Definition G4Types.hh:83
G4double GetPhiTwist() const

◆ GetXHalfLength()

G4double G4TwistedBox::GetXHalfLength ( ) const
inline

◆ GetYHalfLength()

G4double G4TwistedBox::GetYHalfLength ( ) const
inline

◆ GetZHalfLength()

G4double G4TwistedBox::GetZHalfLength ( ) const
inline

◆ operator=()

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

Definition at line 75 of file G4TwistedBox.cc.

76{
77 // Check assignment to self
78 //
79 if (this == &rhs) { return *this; }
80
81 // Copy base class data
82 //
85
86 return *this;
87}
G4VTwistedFaceted & operator=(const G4VTwistedFaceted &rhs)

◆ StreamInfo()

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

Streams the object contents to an output stream.

Implements G4VSolid.

Definition at line 92 of file G4TwistedBox.cc.

93{
94 //
95 // Stream object contents to an output stream
96 //
97 os << "-----------------------------------------------------------\n"
98 << " *** Dump for solid - " << GetName() << " ***\n"
99 << " ===================================================\n"
100 << " Solid type: G4TwistedBox\n"
101 << " Parameters: \n"
102 << " pDx = " << GetXHalfLength()/cm << " cm" << G4endl
103 << " pDy = " << GetYHalfLength()/cm << " cm" << G4endl
104 << " pDz = " << GetZHalfLength()/cm << " cm" << G4endl
105 << " pPhiTwist = " << GetPhiTwist()/degree << " deg" << G4endl
106 << "-----------------------------------------------------------\n";
107
108 return os;
109}
#define G4endl
Definition G4ios.hh:67
G4String GetName() const

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