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

#include <G4TwistedTrd.hh>

+ Inheritance diagram for G4TwistedTrd:

Public Member Functions

 G4TwistedTrd (const G4String &pName, G4double pDx1, G4double pDx2, G4double pDy1, G4double pDy2, G4double pDz, G4double pPhiTwist)
 
virtual ~G4TwistedTrd ()
 
G4double GetX1HalfLength () const
 
G4double GetX2HalfLength () const
 
G4double GetY1HalfLength () const
 
G4double GetY2HalfLength () const
 
G4double GetZHalfLength () const
 
G4double GetPhiTwist () const
 
G4GeometryType GetEntityType () const
 
G4double GetCubicVolume ()
 
G4double GetSurfaceArea ()
 
G4VSolidClone () const
 
std::ostream & StreamInfo (std::ostream &os) const
 
 G4TwistedTrd (__void__ &)
 
 G4TwistedTrd (const G4TwistedTrd &rhs)
 
G4TwistedTrdoperator= (const G4TwistedTrd &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)
 
virtual ~G4VTwistedFaceted ()
 
virtual void ComputeDimensions (G4VPVParameterisation *, const G4int, const G4VPhysicalVolume *)
 
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
 
virtual G4double DistanceToIn (const G4ThreeVector &p, const G4ThreeVector &v) const
 
virtual G4double DistanceToIn (const G4ThreeVector &p) const
 
virtual G4double DistanceToOut (const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcnorm=false, G4bool *validnorm=nullptr, G4ThreeVector *n=nullptr) const
 
virtual G4double DistanceToOut (const G4ThreeVector &p) const
 
virtual EInside Inside (const G4ThreeVector &p) const
 
virtual G4ThreeVector SurfaceNormal (const G4ThreeVector &p) const
 
G4ThreeVector GetPointOnSurface () const
 
G4ThreeVector GetPointInSolid (G4double z) const
 
virtual G4double GetCubicVolume ()
 
virtual G4double GetSurfaceArea ()
 
virtual void DescribeYourselfTo (G4VGraphicsScene &scene) const
 
virtual G4PolyhedronCreatePolyhedron () const
 
virtual G4PolyhedronGetPolyhedron () const
 
virtual std::ostream & StreamInfo (std::ostream &os) const
 
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
 
virtual G4VisExtent GetExtent () const
 
virtual G4GeometryType GetEntityType () const
 
 G4VTwistedFaceted (__void__ &)
 
 G4VTwistedFaceted (const G4VTwistedFaceted &rhs)
 
G4VTwistedFacetedoperator= (const G4VTwistedFaceted &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
 
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
 

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

Definition at line 50 of file G4TwistedTrd.hh.

Constructor & Destructor Documentation

◆ G4TwistedTrd() [1/3]

G4TwistedTrd::G4TwistedTrd ( const G4String pName,
G4double  pDx1,
G4double  pDx2,
G4double  pDy1,
G4double  pDy2,
G4double  pDz,
G4double  pPhiTwist 
)

Definition at line 38 of file G4TwistedTrd.cc.

45 : G4VTwistedFaceted( pName, pPhiTwist,pDz,0.,0.,
46 pDy1, pDx1, pDx1, pDy2, pDx2, pDx2,0.)
47{
48}

◆ ~G4TwistedTrd()

G4TwistedTrd::~G4TwistedTrd ( )
virtual

Definition at line 62 of file G4TwistedTrd.cc.

63{
64}

◆ G4TwistedTrd() [2/3]

G4TwistedTrd::G4TwistedTrd ( __void__ &  a)

Definition at line 54 of file G4TwistedTrd.cc.

56{
57}

◆ G4TwistedTrd() [3/3]

G4TwistedTrd::G4TwistedTrd ( const G4TwistedTrd rhs)

Definition at line 69 of file G4TwistedTrd.cc.

71{
73}
G4Polyhedron * fpPolyhedron
virtual G4Polyhedron * GetPolyhedron() const

Member Function Documentation

◆ Clone()

G4VSolid * G4TwistedTrd::Clone ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 127 of file G4TwistedTrd.cc.

128{
129 return new G4TwistedTrd(*this);
130}

◆ GetCubicVolume()

double G4TwistedTrd::GetCubicVolume ( )
virtual

Reimplemented from G4VTwistedFaceted.

Definition at line 135 of file G4TwistedTrd.cc.

136{
137 if (fCubicVolume == 0.)
138 {
143 G4double h = 2.*GetZHalfLength();
144 fCubicVolume = h*((x1 + x2)*(y1 + y2) + (x2 - x1)*(y2 - y1)/3.);
145 }
146 return fCubicVolume;
147}
double G4double
Definition: G4Types.hh:83
G4double GetX2HalfLength() const
Definition: G4TwistedTrd.hh:67
G4double GetY2HalfLength() const
Definition: G4TwistedTrd.hh:69
G4double GetY1HalfLength() const
Definition: G4TwistedTrd.hh:68
G4double GetZHalfLength() const
Definition: G4TwistedTrd.hh:70
G4double GetX1HalfLength() const
Definition: G4TwistedTrd.hh:66

◆ GetEntityType()

G4GeometryType G4TwistedTrd::GetEntityType ( ) const
virtual

Reimplemented from G4VTwistedFaceted.

Definition at line 119 of file G4TwistedTrd.cc.

120{
121 return G4String("G4TwistedTrd");
122}

◆ GetPhiTwist()

G4double G4TwistedTrd::GetPhiTwist ( ) const
inline

◆ GetSurfaceArea()

double G4TwistedTrd::GetSurfaceArea ( )
virtual

Reimplemented from G4VTwistedFaceted.

Definition at line 152 of file G4TwistedTrd.cc.

153{
154 if (fSurfaceArea == 0.)
155 {
156 G4double ang = GetPhiTwist();
161 G4double h = 2.*GetZHalfLength();
162 G4double hh = h*h;
163 G4double delX = x2 - x1;
164 G4double delY = y2 - y1;
165 if (ang == 0.)
166 {
167 G4double hx = std::sqrt(delY*delY + hh);
168 G4double hy = std::sqrt(delX*delX + hh);
169 return fSurfaceArea =
170 2.*(x1 + x2)*hx + 2.*(y1 + y2)*hy + 4.*(x1*y1 + x2*y2);
171 }
172
173 // compute area of x-faces
174 G4double U1, U2, V1, V2;
175 G4double areaX = 0.;
176 U1 = delY + x1*ang;
177 U2 = delY + x2*ang;
178 V1 = delY - x1*ang;
179 V2 = delY - x2*ang;
180 if (std::abs(delX) < kCarTolerance) // case x1 == x2
181 {
182 areaX = (U1*std::sqrt(hh + U1*U1) + hh*std::asinh(U1/h) -
183 V1*std::sqrt(hh + V1*V1) - hh*std::asinh(V1/h))/ang;
184 }
185 else
186 {
187 // U contribution
188 areaX += ((hh + U2*U2)*std::sqrt(hh + U2*U2) -
189 (hh + U1*U1)*std::sqrt(hh + U1*U1))/3.
190 + hh*(U2*std::asinh(U2/h) - U1*std::asinh(U1/h))
191 - hh*(std::sqrt(hh + U2*U2) - std::sqrt(hh + U1*U1));
192 // V contribution
193 areaX += ((hh + V2*V2)*std::sqrt(hh + V2*V2) -
194 (hh + V1*V1)*std::sqrt(hh + V1*V1))/3.
195 + hh*(V2*std::asinh(V2/h) - V1*std::asinh(V1/h))
196 - hh*(std::sqrt(hh + V2*V2) - std::sqrt(hh + V1*V1));
197 areaX /= delX*ang*ang;
198 }
199
200 // compute area of y-faces
201 G4double areaY = 0.;
202 U1 = delX + y1*ang;
203 U2 = delX + y2*ang;
204 V1 = delX - y1*ang;
205 V2 = delX - y2*ang;
206 if (std::abs(delY) < kCarTolerance) // case y1 == y2
207 {
208 areaY = (U1*std::sqrt(hh + U1*U1) + hh*std::asinh(U1/h) -
209 V1*std::sqrt(hh + V1*V1) - hh*std::asinh(V1/h))/ang;
210 }
211 else
212 {
213 // U contribution
214 areaY += ((hh + U2*U2)*std::sqrt(hh + U2*U2) -
215 (hh + U1*U1)*std::sqrt(hh + U1*U1))/3.
216 + hh*(U2*std::asinh(U2/h) - U1*std::asinh(U1/h))
217 - hh*(std::sqrt(hh + U2*U2) - std::sqrt(hh + U1*U1));
218 // V contribution
219 areaY += ((hh + V2*V2)*std::sqrt(hh + V2*V2) -
220 (hh + V1*V1)*std::sqrt(hh + V1*V1))/3.
221 + hh*(V2*std::asinh(V2/h) - V1*std::asinh(V1/h))
222 - hh*(std::sqrt(hh + V2*V2) - std::sqrt(hh + V1*V1));
223 areaY /= delY*ang*ang;
224 }
225 fSurfaceArea = areaX + areaY + 4.*(x1*y1 + x2*y2);
226 }
227 return fSurfaceArea;
228}
G4double GetPhiTwist() const
Definition: G4TwistedTrd.hh:71
G4double kCarTolerance
Definition: G4VSolid.hh:299
#define V1(a, b, c)
#define V2(a, b, c)

◆ GetX1HalfLength()

G4double G4TwistedTrd::GetX1HalfLength ( ) const
inline

◆ GetX2HalfLength()

G4double G4TwistedTrd::GetX2HalfLength ( ) const
inline

◆ GetY1HalfLength()

G4double G4TwistedTrd::GetY1HalfLength ( ) const
inline

◆ GetY2HalfLength()

G4double G4TwistedTrd::GetY2HalfLength ( ) const
inline

◆ GetZHalfLength()

G4double G4TwistedTrd::GetZHalfLength ( ) const
inline

◆ operator=()

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

Definition at line 78 of file G4TwistedTrd.cc.

79{
80 // Check assignment to self
81 //
82 if (this == &rhs) { return *this; }
83
84 // Copy base class data
85 //
88
89 return *this;
90}
G4VTwistedFaceted & operator=(const G4VTwistedFaceted &rhs)

◆ StreamInfo()

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

Reimplemented from G4VTwistedFaceted.

Definition at line 95 of file G4TwistedTrd.cc.

96{
97 //
98 // Stream object contents to an output stream
99 //
100 os << "-----------------------------------------------------------\n"
101 << " *** Dump for solid - " << GetName() << " ***\n"
102 << " ===================================================\n"
103 << " Solid type: G4TwistedTrd\n"
104 << " Parameters: \n"
105 << " pDx1 = " << GetX1HalfLength()/cm << " cm" << G4endl
106 << " pDx2 = " << GetX2HalfLength()/cm << " cm" << G4endl
107 << " pDy1 = " << GetY1HalfLength()/cm << " cm" << G4endl
108 << " pDy2 = " << GetY2HalfLength()/cm << " cm" << G4endl
109 << " pDz = " << GetZHalfLength()/cm << " cm" << G4endl
110 << " pPhiTwist = " << GetPhiTwist()/degree << " deg" << G4endl
111 << "-----------------------------------------------------------\n";
112
113 return os;
114}
#define G4endl
Definition: G4ios.hh:57
G4String GetName() const

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