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

#include <G4DisplacedSolid.hh>

+ Inheritance diagram for G4DisplacedSolid:

Public Member Functions

 G4DisplacedSolid (const G4String &pName, G4VSolid *pSolid, G4RotationMatrix *rotMatrix, const G4ThreeVector &transVector)
 
 G4DisplacedSolid (const G4String &pName, G4VSolid *pSolid, const G4Transform3D &transform)
 
 G4DisplacedSolid (const G4String &pName, G4VSolid *pSolid, const G4AffineTransform directTransform)
 
 ~G4DisplacedSolid () override
 
EInside Inside (const G4ThreeVector &p) const 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
 
G4ThreeVector SurfaceNormal (const G4ThreeVector &p) 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
 
void ComputeDimensions (G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep) override
 
void CleanTransformations ()
 
G4double GetCubicVolume () override
 
G4double GetSurfaceArea () override
 
G4ThreeVector GetPointOnSurface () const override
 
G4GeometryType GetEntityType () const override
 
G4VSolidClone () const override
 
const G4DisplacedSolidGetDisplacedSolidPtr () const override
 
G4DisplacedSolidGetDisplacedSolidPtr () override
 
G4VSolidGetConstituentMovedSolid () const
 
G4AffineTransform GetTransform () const
 
void SetTransform (G4AffineTransform &)
 
G4AffineTransform GetDirectTransform () const
 
void SetDirectTransform (G4AffineTransform &)
 
G4RotationMatrix GetFrameRotation () const
 
void SetFrameRotation (const G4RotationMatrix &)
 
G4ThreeVector GetFrameTranslation () const
 
void SetFrameTranslation (const G4ThreeVector &)
 
G4RotationMatrix GetObjectRotation () const
 
void SetObjectRotation (const G4RotationMatrix &)
 
G4ThreeVector GetObjectTranslation () const
 
void SetObjectTranslation (const G4ThreeVector &)
 
std::ostream & StreamInfo (std::ostream &os) const override
 
 G4DisplacedSolid (__void__ &)
 
 G4DisplacedSolid (const G4DisplacedSolid &rhs)
 
G4DisplacedSolidoperator= (const G4DisplacedSolid &rhs)
 
void DescribeYourselfTo (G4VGraphicsScene &scene) const override
 
G4PolyhedronCreatePolyhedron () const override
 
G4PolyhedronGetPolyhedron () const override
 
- 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
 
void DumpInfo () const
 
virtual G4VisExtent GetExtent () const
 
virtual const G4VSolidGetConstituentSolid (G4int no) const
 
virtual G4VSolidGetConstituentSolid (G4int no)
 
 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

G4VSolidfPtrSolid = nullptr
 
G4AffineTransformfPtrTransform = nullptr
 
G4AffineTransformfDirectTransform = nullptr
 
G4bool fRebuildPolyhedron = false
 
G4PolyhedronfpPolyhedron = nullptr
 
- Protected Attributes inherited from G4VSolid
G4double kCarTolerance
 

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 45 of file G4DisplacedSolid.hh.

Constructor & Destructor Documentation

◆ G4DisplacedSolid() [1/5]

G4DisplacedSolid::G4DisplacedSolid ( const G4String & pName,
G4VSolid * pSolid,
G4RotationMatrix * rotMatrix,
const G4ThreeVector & transVector )

Definition at line 47 of file G4DisplacedSolid.cc.

51 : G4VSolid(pName)
52{
53 if (pSolid->GetEntityType() == "G4DisplacedSolid")
54 {
55 fPtrSolid = ((G4DisplacedSolid*)pSolid)->GetConstituentMovedSolid();
56 G4AffineTransform t1 = ((G4DisplacedSolid*)pSolid)->GetDirectTransform();
57 G4AffineTransform t2 = G4AffineTransform(rotMatrix,transVector);
59 }
60 else
61 {
62 fPtrSolid = pSolid;
63 fDirectTransform = new G4AffineTransform(rotMatrix,transVector);
64 }
66}
G4AffineTransform Inverse() const
G4AffineTransform * fPtrTransform
G4AffineTransform * fDirectTransform
G4VSolid(const G4String &name)
Definition G4VSolid.cc:57
virtual G4GeometryType GetEntityType() const =0

Referenced by Clone().

◆ G4DisplacedSolid() [2/5]

G4DisplacedSolid::G4DisplacedSolid ( const G4String & pName,
G4VSolid * pSolid,
const G4Transform3D & transform )

Definition at line 72 of file G4DisplacedSolid.cc.

75 : G4VSolid(pName)
76{
77 if (pSolid->GetEntityType() == "G4DisplacedSolid")
78 {
79 fPtrSolid = ((G4DisplacedSolid*)pSolid)->GetConstituentMovedSolid();
80 G4AffineTransform t1 = ((G4DisplacedSolid*)pSolid)->GetDirectTransform();
82 transform.getTranslation());
84 }
85 else
86 {
87 fPtrSolid = pSolid;
89 transform.getTranslation()) ;
90 }
92}
HepRotation inverse() const
CLHEP::HepRotation getRotation() const
CLHEP::Hep3Vector getTranslation() const

◆ G4DisplacedSolid() [3/5]

G4DisplacedSolid::G4DisplacedSolid ( const G4String & pName,
G4VSolid * pSolid,
const G4AffineTransform directTransform )

Definition at line 99 of file G4DisplacedSolid.cc.

102 : G4VSolid(pName)
103{
104 if (pSolid->GetEntityType() == "G4DisplacedSolid")
105 {
106 fPtrSolid = ((G4DisplacedSolid*)pSolid)->GetConstituentMovedSolid();
107 G4AffineTransform t1 = ((G4DisplacedSolid*)pSolid)->GetDirectTransform();
108 auto t2 = G4AffineTransform(directTransform);
110 }
111 else
112 {
113 fPtrSolid = pSolid;
114 fDirectTransform = new G4AffineTransform(directTransform);
115 }
117}

◆ ~G4DisplacedSolid()

G4DisplacedSolid::~G4DisplacedSolid ( )
override

Definition at line 133 of file G4DisplacedSolid.cc.

134{
136 delete fpPolyhedron; fpPolyhedron = nullptr;
137}
G4Polyhedron * fpPolyhedron

◆ G4DisplacedSolid() [4/5]

G4DisplacedSolid::G4DisplacedSolid ( __void__ & a)

Definition at line 124 of file G4DisplacedSolid.cc.

125 : G4VSolid(a)
126{
127}

◆ G4DisplacedSolid() [5/5]

G4DisplacedSolid::G4DisplacedSolid ( const G4DisplacedSolid & rhs)

Definition at line 143 of file G4DisplacedSolid.cc.

Member Function Documentation

◆ BoundingLimits()

void G4DisplacedSolid::BoundingLimits ( G4ThreeVector & pMin,
G4ThreeVector & pMax ) const
overridevirtual

Reimplemented from G4VSolid.

Definition at line 286 of file G4DisplacedSolid.cc.

288{
290 {
291 // Special case of pure translation
292 //
293 fPtrSolid->BoundingLimits(pMin,pMax);
295 pMin += offset;
296 pMax += offset;
297 }
298 else
299 {
300 // General case, use CalculateExtent() to find bounding box
301 //
302 G4VoxelLimits unLimit;
303 G4double xmin,xmax,ymin,ymax,zmin,zmax;
307 pMin.set(xmin,ymin,zmin);
308 pMax.set(xmax,ymax,zmax);
309 }
310
311 // Check correctness of the bounding box
312 //
313 if (pMin.x() >= pMax.x() || pMin.y() >= pMax.y() || pMin.z() >= pMax.z())
314 {
315 std::ostringstream message;
316 message << "Bad bounding box (min >= max) for solid: "
317 << GetName() << " !"
318 << "\npMin = " << pMin
319 << "\npMax = " << pMax;
320 G4Exception("G4DisplacedSolid::BoundingLimits()", "GeomMgt0001",
321 JustWarning, message);
322 DumpInfo();
323 }
324}
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
double G4double
Definition G4Types.hh:83
double z() const
double x() const
double y() const
void set(double x, double y, double z)
G4bool IsRotated() const
G4ThreeVector NetTranslation() const
G4String GetName() const
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
void DumpInfo() const
virtual void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const
Definition G4VSolid.cc:665
@ kYAxis
Definition geomdefs.hh:56
@ kXAxis
Definition geomdefs.hh:55
@ kZAxis
Definition geomdefs.hh:57

◆ CalculateExtent()

G4bool G4DisplacedSolid::CalculateExtent ( const EAxis pAxis,
const G4VoxelLimits & pVoxelLimit,
const G4AffineTransform & pTransform,
G4double & pMin,
G4double & pMax ) const
overridevirtual

Implements G4VSolid.

Definition at line 331 of file G4DisplacedSolid.cc.

336{
337 G4AffineTransform sumTransform ;
338 sumTransform.Product(*fDirectTransform,pTransform) ;
339 return fPtrSolid->CalculateExtent(pAxis,pVoxelLimit,sumTransform,pMin,pMax) ;
340}
G4AffineTransform & Product(const G4AffineTransform &tf1, const G4AffineTransform &tf2)

◆ CleanTransformations()

void G4DisplacedSolid::CleanTransformations ( )

Definition at line 176 of file G4DisplacedSolid.cc.

177{
178 if(fPtrTransform != nullptr)
179 {
180 delete fPtrTransform; fPtrTransform = nullptr;
181 delete fDirectTransform; fDirectTransform = nullptr;
182 }
183}

Referenced by ~G4DisplacedSolid().

◆ Clone()

G4VSolid * G4DisplacedSolid::Clone ( ) const
overridevirtual

Reimplemented from G4VSolid.

Definition at line 481 of file G4DisplacedSolid.cc.

482{
483 return new G4DisplacedSolid(*this);
484}
G4DisplacedSolid(const G4String &pName, G4VSolid *pSolid, G4RotationMatrix *rotMatrix, const G4ThreeVector &transVector)

◆ ComputeDimensions()

void G4DisplacedSolid::ComputeDimensions ( G4VPVParameterisation * p,
const G4int n,
const G4VPhysicalVolume * pRep )
overridevirtual

Reimplemented from G4VSolid.

Definition at line 428 of file G4DisplacedSolid.cc.

431{
432 DumpInfo();
433 G4Exception("G4DisplacedSolid::ComputeDimensions()",
434 "GeomSolids0001", FatalException,
435 "Method not applicable in this context!");
436}
@ FatalException

◆ CreatePolyhedron()

G4Polyhedron * G4DisplacedSolid::CreatePolyhedron ( ) const
overridevirtual

Reimplemented from G4VSolid.

Definition at line 527 of file G4DisplacedSolid.cc.

528{
529 G4Polyhedron* polyhedron = fPtrSolid->CreatePolyhedron();
530 if (polyhedron != nullptr)
531 {
532 polyhedron
534 }
535 else
536 {
537 DumpInfo();
538 G4Exception("G4DisplacedSolid::CreatePolyhedron()",
539 "GeomSolids2002", JustWarning,
540 "No G4Polyhedron for displaced solid");
541 }
542 return polyhedron;
543}
HepGeom::Transform3D G4Transform3D
G4RotationMatrix GetObjectRotation() const
G4ThreeVector GetObjectTranslation() const
virtual G4Polyhedron * CreatePolyhedron() const
Definition G4VSolid.cc:700
HepPolyhedron & Transform(const G4Transform3D &t)

Referenced by GetPolyhedron().

◆ DescribeYourselfTo()

void G4DisplacedSolid::DescribeYourselfTo ( G4VGraphicsScene & scene) const
overridevirtual

Implements G4VSolid.

Definition at line 517 of file G4DisplacedSolid.cc.

518{
519 scene.AddSolid (*this);
520}
virtual void AddSolid(const G4Box &)=0

◆ DistanceToIn() [1/2]

G4double G4DisplacedSolid::DistanceToIn ( const G4ThreeVector & p) const
overridevirtual

Implements G4VSolid.

Definition at line 383 of file G4DisplacedSolid.cc.

384{
386 return fPtrSolid->DistanceToIn(newPoint) ;
387}
G4ThreeVector TransformPoint(const G4ThreeVector &vec) const
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0

◆ DistanceToIn() [2/2]

G4double G4DisplacedSolid::DistanceToIn ( const G4ThreeVector & p,
const G4ThreeVector & v ) const
overridevirtual

Implements G4VSolid.

Definition at line 369 of file G4DisplacedSolid.cc.

371{
373 G4ThreeVector newDirection = fPtrTransform->TransformAxis(v) ;
374 return fPtrSolid->DistanceToIn(newPoint,newDirection) ;
375}
G4ThreeVector TransformAxis(const G4ThreeVector &axis) const

◆ DistanceToOut() [1/2]

G4double G4DisplacedSolid::DistanceToOut ( const G4ThreeVector & p) const
overridevirtual

Implements G4VSolid.

Definition at line 417 of file G4DisplacedSolid.cc.

418{
420 return fPtrSolid->DistanceToOut(newPoint) ;
421}
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=nullptr, G4ThreeVector *n=nullptr) const =0

◆ DistanceToOut() [2/2]

G4double G4DisplacedSolid::DistanceToOut ( const G4ThreeVector & p,
const G4ThreeVector & v,
const G4bool calcNorm = false,
G4bool * validNorm = nullptr,
G4ThreeVector * n = nullptr ) const
overridevirtual

Implements G4VSolid.

Definition at line 394 of file G4DisplacedSolid.cc.

399{
400 G4ThreeVector solNorm ;
402 G4ThreeVector newDirection = fPtrTransform->TransformAxis(v) ;
403 G4double dist = fPtrSolid->DistanceToOut(newPoint,newDirection,
404 calcNorm,validNorm,&solNorm) ;
405 if(calcNorm)
406 {
407 *n = fDirectTransform->TransformAxis(solNorm) ;
408 }
409 return dist ;
410}

◆ GetConstituentMovedSolid()

G4VSolid * G4DisplacedSolid::GetConstituentMovedSolid ( ) const

Definition at line 195 of file G4DisplacedSolid.cc.

196{
197 return fPtrSolid;
198}

Referenced by G4tgbGeometryDumper::DumpBooleanVolume(), and G4BooleanSolid::GetListOfPrimitives().

◆ GetCubicVolume()

G4double G4DisplacedSolid::GetCubicVolume ( )
overridevirtual

Reimplemented from G4VSolid.

Definition at line 442 of file G4DisplacedSolid.cc.

443{
444 return fPtrSolid->GetCubicVolume();
445}
virtual G4double GetCubicVolume()
Definition G4VSolid.cc:188

◆ GetDirectTransform()

G4AffineTransform G4DisplacedSolid::GetDirectTransform ( ) const

Definition at line 216 of file G4DisplacedSolid.cc.

217{
219 return aTransform;
220}

◆ GetDisplacedSolidPtr() [1/2]

const G4DisplacedSolid * G4DisplacedSolid::GetDisplacedSolidPtr ( ) const
overridevirtual

Reimplemented from G4VSolid.

Definition at line 185 of file G4DisplacedSolid.cc.

186{
187 return this;
188}

◆ GetDisplacedSolidPtr() [2/2]

G4DisplacedSolid * G4DisplacedSolid::GetDisplacedSolidPtr ( )
overridevirtual

Reimplemented from G4VSolid.

Definition at line 190 of file G4DisplacedSolid.cc.

191{
192 return this;
193}

◆ GetEntityType()

G4GeometryType G4DisplacedSolid::GetEntityType ( ) const
overridevirtual

Implements G4VSolid.

Definition at line 472 of file G4DisplacedSolid.cc.

473{
474 return {"G4DisplacedSolid"};
475}

Referenced by StreamInfo().

◆ GetFrameRotation()

G4RotationMatrix G4DisplacedSolid::GetFrameRotation ( ) const

Definition at line 230 of file G4DisplacedSolid.cc.

231{
233 return InvRotation;
234}
G4RotationMatrix NetRotation() const

◆ GetFrameTranslation()

G4ThreeVector G4DisplacedSolid::GetFrameTranslation ( ) const

Definition at line 244 of file G4DisplacedSolid.cc.

245{
247}

◆ GetObjectRotation()

G4RotationMatrix G4DisplacedSolid::GetObjectRotation ( ) const

Definition at line 257 of file G4DisplacedSolid.cc.

258{
260 return Rotation;
261}

Referenced by CreatePolyhedron().

◆ GetObjectTranslation()

G4ThreeVector G4DisplacedSolid::GetObjectTranslation ( ) const

Definition at line 271 of file G4DisplacedSolid.cc.

272{
274}

Referenced by CreatePolyhedron(), and G4tgbGeometryDumper::DumpBooleanVolume().

◆ GetPointOnSurface()

G4ThreeVector G4DisplacedSolid::GetPointOnSurface ( ) const
overridevirtual

Reimplemented from G4VSolid.

Definition at line 462 of file G4DisplacedSolid.cc.

463{
466}
virtual G4ThreeVector GetPointOnSurface() const
Definition G4VSolid.cc:152

◆ GetPolyhedron()

G4Polyhedron * G4DisplacedSolid::GetPolyhedron ( ) const
overridevirtual

Reimplemented from G4VSolid.

Definition at line 549 of file G4DisplacedSolid.cc.

550{
551 if (fpPolyhedron == nullptr ||
555 {
557 fRebuildPolyhedron = false;
558 }
559 return fpPolyhedron;
560}
G4Polyhedron * CreatePolyhedron() const override
G4int GetNumberOfRotationStepsAtTimeOfCreation() const
static G4int GetNumberOfRotationSteps()

Referenced by G4MultiUnion::CreatePolyhedron().

◆ GetSurfaceArea()

G4double G4DisplacedSolid::GetSurfaceArea ( )
overridevirtual

Reimplemented from G4VSolid.

Definition at line 451 of file G4DisplacedSolid.cc.

452{
453 return fPtrSolid->GetSurfaceArea();
454}
virtual G4double GetSurfaceArea()
Definition G4VSolid.cc:250

◆ GetTransform()

G4AffineTransform G4DisplacedSolid::GetTransform ( ) const

Definition at line 202 of file G4DisplacedSolid.cc.

203{
204 G4AffineTransform aTransform = *fPtrTransform;
205 return aTransform;
206}

Referenced by G4tgbGeometryDumper::DumpBooleanVolume().

◆ Inside()

EInside G4DisplacedSolid::Inside ( const G4ThreeVector & p) const
overridevirtual

Implements G4VSolid.

Definition at line 346 of file G4DisplacedSolid.cc.

347{
349 return fPtrSolid->Inside(newPoint) ;
350}
virtual EInside Inside(const G4ThreeVector &p) const =0

◆ operator=()

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

Definition at line 154 of file G4DisplacedSolid.cc.

155{
156 // Check assignment to self
157 //
158 if (this == &rhs) { return *this; }
159
160 // Copy base class data
161 //
163
164 // Copy data
165 //
166 fPtrSolid = rhs.fPtrSolid;
167 delete fPtrTransform; delete fDirectTransform;
170 fRebuildPolyhedron = false;
171 delete fpPolyhedron; fpPolyhedron = nullptr;
172
173 return *this;
174}
G4VSolid & operator=(const G4VSolid &rhs)
Definition G4VSolid.cc:107

◆ SetDirectTransform()

void G4DisplacedSolid::SetDirectTransform ( G4AffineTransform & transform)

Definition at line 222 of file G4DisplacedSolid.cc.

223{
224 fDirectTransform = &transform ;
225 fRebuildPolyhedron = true;
226}

◆ SetFrameRotation()

void G4DisplacedSolid::SetFrameRotation ( const G4RotationMatrix & matrix)

Definition at line 236 of file G4DisplacedSolid.cc.

237{
239 fRebuildPolyhedron = true;
240}
void SetNetRotation(const G4RotationMatrix &rot)

◆ SetFrameTranslation()

void G4DisplacedSolid::SetFrameTranslation ( const G4ThreeVector & vector)

Definition at line 249 of file G4DisplacedSolid.cc.

250{
252 fRebuildPolyhedron = true;
253}
void SetNetTranslation(const G4ThreeVector &tlate)

◆ SetObjectRotation()

void G4DisplacedSolid::SetObjectRotation ( const G4RotationMatrix & matrix)

Definition at line 263 of file G4DisplacedSolid.cc.

264{
266 fRebuildPolyhedron = true;
267}

◆ SetObjectTranslation()

void G4DisplacedSolid::SetObjectTranslation ( const G4ThreeVector & vector)

Definition at line 276 of file G4DisplacedSolid.cc.

277{
279 fRebuildPolyhedron = true;
280}

◆ SetTransform()

void G4DisplacedSolid::SetTransform ( G4AffineTransform & transform)

Definition at line 208 of file G4DisplacedSolid.cc.

209{
210 fPtrTransform = &transform ;
211 fRebuildPolyhedron = true;
212}

◆ StreamInfo()

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

Implements G4VSolid.

Definition at line 490 of file G4DisplacedSolid.cc.

491{
492 os << "-----------------------------------------------------------\n"
493 << " *** Dump for Displaced solid - " << GetName() << " ***\n"
494 << " ===================================================\n"
495 << " Solid type: " << GetEntityType() << "\n"
496 << " Parameters of constituent solid: \n"
497 << "===========================================================\n";
499 os << "===========================================================\n"
500 << " Transformations: \n"
501 << " Direct transformation - translation : \n"
502 << " " << fDirectTransform->NetTranslation() << "\n"
503 << " - rotation : \n"
504 << " ";
506 os << "\n"
507 << "===========================================================\n";
508
509 return os;
510}
std::ostream & print(std::ostream &os) const
Definition RotationIO.cc:17
G4GeometryType GetEntityType() const override
virtual std::ostream & StreamInfo(std::ostream &os) const =0

◆ SurfaceNormal()

G4ThreeVector G4DisplacedSolid::SurfaceNormal ( const G4ThreeVector & p) const
overridevirtual

Implements G4VSolid.

Definition at line 357 of file G4DisplacedSolid.cc.

358{
360 G4ThreeVector normal = fPtrSolid->SurfaceNormal(newPoint) ;
361 return fDirectTransform->TransformAxis(normal) ;
362}
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0

Member Data Documentation

◆ fDirectTransform

◆ fpPolyhedron

G4Polyhedron* G4DisplacedSolid::fpPolyhedron = nullptr
mutableprotected

Definition at line 154 of file G4DisplacedSolid.hh.

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

◆ fPtrSolid

◆ fPtrTransform

◆ fRebuildPolyhedron

G4bool G4DisplacedSolid::fRebuildPolyhedron = false
mutableprotected

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