Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | Friends
G4VSolid Class Referenceabstract

#include <G4VSolid.hh>

Inheritance diagram for G4VSolid:
G4BooleanSolid G4CSGSolid G4DisplacedSolid G4Ellipsoid G4EllipticalCone G4EllipticalTube G4GenericTrap G4Hype G4Paraboloid G4ReflectedSolid G4TessellatedSolid G4Tet G4TwistedTubs G4USolid G4VCSGfaceted G4VTwistedFaceted

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 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=0, G4ThreeVector *n=0) 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)
 

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
 
G4double EstimateCubicVolume (G4int nStat, G4double epsilon) const
 
G4double EstimateSurfaceArea (G4int nStat, G4double ell) const
 

Protected Attributes

G4double kCarTolerance
 

Friends

std::ostream & operator<< (std::ostream &os, const G4VSolid &e)
 

Detailed Description

Definition at line 87 of file G4VSolid.hh.

Constructor & Destructor Documentation

G4VSolid::G4VSolid ( const G4String name)

Definition at line 60 of file G4VSolid.cc.

References G4GeometryTolerance::GetInstance(), G4SolidStore::GetInstance(), G4GeometryTolerance::GetSurfaceTolerance(), kCarTolerance, and G4SolidStore::Register().

61  : fshapeName(name)
62 {
64 
65  // Register to store
66  //
68 }
static void Register(G4VSolid *pSolid)
G4double GetSurfaceTolerance() const
static G4SolidStore * GetInstance()
G4double kCarTolerance
Definition: G4VSolid.hh:305
static G4GeometryTolerance * GetInstance()
G4VSolid::~G4VSolid ( )
virtual

Definition at line 101 of file G4VSolid.cc.

References G4SolidStore::DeRegister(), and G4SolidStore::GetInstance().

102 {
104 }
static void DeRegister(G4VSolid *pSolid)
static G4SolidStore * GetInstance()
G4VSolid::G4VSolid ( __void__ &  )

Definition at line 88 of file G4VSolid.cc.

References G4SolidStore::GetInstance(), and G4SolidStore::Register().

89  : fshapeName("")
90 {
91  // Register to store
92  //
94 }
static void Register(G4VSolid *pSolid)
static G4SolidStore * GetInstance()
G4VSolid::G4VSolid ( const G4VSolid rhs)

Definition at line 75 of file G4VSolid.cc.

References G4SolidStore::GetInstance(), and G4SolidStore::Register().

76  : kCarTolerance(rhs.kCarTolerance), fshapeName(rhs.fshapeName)
77 {
78  // Register to store
79  //
81 }
static void Register(G4VSolid *pSolid)
static G4SolidStore * GetInstance()
G4double kCarTolerance
Definition: G4VSolid.hh:305

Member Function Documentation

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

Definition at line 427 of file G4VSolid.cc.

References ClipPolygon().

Referenced by G4Ellipsoid::CalculateExtent(), G4Sphere::CalculateExtent(), ClipBetweenSections(), and ClipCrossSection().

432 {
433  G4int noLeft,i;
434  G4double component;
435  /*
436  G4cout<<G4endl;
437  for(i = 0 ; i < pPolygon.size() ; i++ )
438  {
439  G4cout << i << "\t"
440  << "p.x = " << pPolygon[i].operator()(pAxis) << "\t"
441  // << "p.y = " << pPolygon[i].y() << "\t"
442  // << "p.z = " << pPolygon[i].z() << "\t"
443  << G4endl;
444  }
445  G4cout<<G4endl;
446  */
447  ClipPolygon(pPolygon,pVoxelLimit,pAxis);
448  noLeft = pPolygon.size();
449 
450  if ( noLeft )
451  {
452  // G4cout<<G4endl;
453  for (i=0;i<noLeft;i++)
454  {
455  component = pPolygon[i].operator()(pAxis);
456  // G4cout <<i<<"\t"<<component<<G4endl;
457 
458  if (component < pMin)
459  {
460  // G4cout <<i<<"\t"<<"Pmin = "<<component<<G4endl;
461  pMin = component;
462  }
463  if (component > pMax)
464  {
465  // G4cout <<i<<"\t"<<"PMax = "<<component<<G4endl;
466  pMax = component;
467  }
468  }
469  // G4cout<<G4endl;
470  }
471  // G4cout<<"pMin = "<<pMin<<"\t"<<"pMax = "<<pMax<<G4endl;
472 }
int G4int
Definition: G4Types.hh:78
double G4double
Definition: G4Types.hh:76
void ClipPolygon(G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis) const
Definition: G4VSolid.cc:494
virtual G4bool G4VSolid::CalculateExtent ( const EAxis  pAxis,
const G4VoxelLimits pVoxelLimit,
const G4AffineTransform pTransform,
G4double pMin,
G4double pMax 
) const
pure virtual
void G4VSolid::ClipBetweenSections ( G4ThreeVectorList pVertices,
const G4int  pSectionIndex,
const G4VoxelLimits pVoxelLimit,
const EAxis  pAxis,
G4double pMin,
G4double pMax 
) const
protected

Definition at line 378 of file G4VSolid.cc.

References CalculateClippedPolygonExtent().

Referenced by G4USolid::CalculateExtent(), G4ReflectedSolid::CalculateExtent(), G4Box::CalculateExtent(), G4CutTubs::CalculateExtent(), G4VTwistedFaceted::CalculateExtent(), G4OTubs::CalculateExtent(), G4Trd::CalculateExtent(), G4GenericTrap::CalculateExtent(), G4Para::CalculateExtent(), G4Tubs::CalculateExtent(), G4Cons::CalculateExtent(), and G4Torus::CalculateExtent().

383 {
384  G4ThreeVectorList polygon;
385  polygon.reserve(4);
386  polygon.push_back((*pVertices)[pSectionIndex]);
387  polygon.push_back((*pVertices)[pSectionIndex+4]);
388  polygon.push_back((*pVertices)[pSectionIndex+5]);
389  polygon.push_back((*pVertices)[pSectionIndex+1]);
390  // G4cout<<"ClipBetweenSections: 0-4-5-1"<<G4endl;
391  CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
392  polygon.clear();
393 
394  polygon.push_back((*pVertices)[pSectionIndex+1]);
395  polygon.push_back((*pVertices)[pSectionIndex+5]);
396  polygon.push_back((*pVertices)[pSectionIndex+6]);
397  polygon.push_back((*pVertices)[pSectionIndex+2]);
398  // G4cout<<"ClipBetweenSections: 1-5-6-2"<<G4endl;
399  CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
400  polygon.clear();
401 
402  polygon.push_back((*pVertices)[pSectionIndex+2]);
403  polygon.push_back((*pVertices)[pSectionIndex+6]);
404  polygon.push_back((*pVertices)[pSectionIndex+7]);
405  polygon.push_back((*pVertices)[pSectionIndex+3]);
406  // G4cout<<"ClipBetweenSections: 2-6-7-3"<<G4endl;
407  CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
408  polygon.clear();
409 
410  polygon.push_back((*pVertices)[pSectionIndex+3]);
411  polygon.push_back((*pVertices)[pSectionIndex+7]);
412  polygon.push_back((*pVertices)[pSectionIndex+4]);
413  polygon.push_back((*pVertices)[pSectionIndex]);
414  // G4cout<<"ClipBetweenSections: 3-7-4-0"<<G4endl;
415  CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
416  return;
417 }
void CalculateClippedPolygonExtent(G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
Definition: G4VSolid.cc:427
std::vector< G4ThreeVector > G4ThreeVectorList
Definition: G4VSolid.hh:79
void G4VSolid::ClipCrossSection ( G4ThreeVectorList pVertices,
const G4int  pSectionIndex,
const G4VoxelLimits pVoxelLimit,
const EAxis  pAxis,
G4double pMin,
G4double pMax 
) const
protected

Definition at line 347 of file G4VSolid.cc.

References CalculateClippedPolygonExtent().

Referenced by G4USolid::CalculateExtent(), G4ReflectedSolid::CalculateExtent(), G4Box::CalculateExtent(), G4CutTubs::CalculateExtent(), G4VTwistedFaceted::CalculateExtent(), G4OTubs::CalculateExtent(), G4Trd::CalculateExtent(), G4GenericTrap::CalculateExtent(), G4Para::CalculateExtent(), G4Tubs::CalculateExtent(), G4Cons::CalculateExtent(), and G4Torus::CalculateExtent().

352 {
353 
354  G4ThreeVectorList polygon;
355  polygon.reserve(4);
356  polygon.push_back((*pVertices)[pSectionIndex]);
357  polygon.push_back((*pVertices)[pSectionIndex+1]);
358  polygon.push_back((*pVertices)[pSectionIndex+2]);
359  polygon.push_back((*pVertices)[pSectionIndex+3]);
360  // G4cout<<"ClipCrossSection: 0-1-2-3"<<G4endl;
361  CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
362  return;
363 }
void CalculateClippedPolygonExtent(G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
Definition: G4VSolid.cc:427
std::vector< G4ThreeVector > G4ThreeVectorList
Definition: G4VSolid.hh:79
void G4VSolid::ClipPolygon ( G4ThreeVectorList pPolygon,
const G4VoxelLimits pVoxelLimit,
const EAxis  pAxis 
) const
protected

Definition at line 494 of file G4VSolid.cc.

References G4VoxelLimits::AddLimit(), G4VoxelLimits::GetMaxXExtent(), G4VoxelLimits::GetMaxYExtent(), G4VoxelLimits::GetMaxZExtent(), G4VoxelLimits::GetMinXExtent(), G4VoxelLimits::GetMinYExtent(), G4VoxelLimits::GetMinZExtent(), G4VoxelLimits::IsLimited(), G4VoxelLimits::IsXLimited(), G4VoxelLimits::IsYLimited(), G4VoxelLimits::IsZLimited(), kXAxis, kYAxis, and kZAxis.

Referenced by CalculateClippedPolygonExtent().

497 {
498  G4ThreeVectorList outputPolygon;
499 
500  if ( pVoxelLimit.IsLimited() )
501  {
502  if (pVoxelLimit.IsXLimited() ) // && pAxis != kXAxis)
503  {
504  G4VoxelLimits simpleLimit1;
505  simpleLimit1.AddLimit(kXAxis,pVoxelLimit.GetMinXExtent(),kInfinity);
506  // G4cout<<"MinXExtent()"<<G4endl;
507  ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
508 
509  pPolygon.clear();
510 
511  if ( !outputPolygon.size() ) return;
512 
513  G4VoxelLimits simpleLimit2;
514  // G4cout<<"MaxXExtent()"<<G4endl;
515  simpleLimit2.AddLimit(kXAxis,-kInfinity,pVoxelLimit.GetMaxXExtent());
516  ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
517 
518  if ( !pPolygon.size() ) return;
519  else outputPolygon.clear();
520  }
521  if ( pVoxelLimit.IsYLimited() ) // && pAxis != kYAxis)
522  {
523  G4VoxelLimits simpleLimit1;
524  simpleLimit1.AddLimit(kYAxis,pVoxelLimit.GetMinYExtent(),kInfinity);
525  ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
526 
527  // Must always clear pPolygon - for clip to simpleLimit2 and in case of
528  // early exit
529 
530  pPolygon.clear();
531 
532  if ( !outputPolygon.size() ) return;
533 
534  G4VoxelLimits simpleLimit2;
535  simpleLimit2.AddLimit(kYAxis,-kInfinity,pVoxelLimit.GetMaxYExtent());
536  ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
537 
538  if ( !pPolygon.size() ) return;
539  else outputPolygon.clear();
540  }
541  if ( pVoxelLimit.IsZLimited() ) // && pAxis != kZAxis)
542  {
543  G4VoxelLimits simpleLimit1;
544  simpleLimit1.AddLimit(kZAxis,pVoxelLimit.GetMinZExtent(),kInfinity);
545  ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
546 
547  // Must always clear pPolygon - for clip to simpleLimit2 and in case of
548  // early exit
549 
550  pPolygon.clear();
551 
552  if ( !outputPolygon.size() ) return;
553 
554  G4VoxelLimits simpleLimit2;
555  simpleLimit2.AddLimit(kZAxis,-kInfinity,pVoxelLimit.GetMaxZExtent());
556  ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
557 
558  // Return after final clip - no cleanup
559  }
560  }
561 }
G4double GetMinYExtent() const
G4bool IsYLimited() const
G4bool IsXLimited() const
G4double GetMaxXExtent() const
void AddLimit(const EAxis pAxis, const G4double pMin, const G4double pMax)
G4double GetMinZExtent() const
G4bool IsLimited() const
std::vector< G4ThreeVector > G4ThreeVectorList
Definition: G4VSolid.hh:79
G4double GetMinXExtent() const
G4double GetMaxZExtent() const
G4double GetMaxYExtent() const
G4bool IsZLimited() const
G4VSolid * G4VSolid::Clone ( ) const
virtual

Reimplemented in G4Trap, G4TessellatedSolid, G4TwistedTubs, G4Sphere, G4Cons, G4Torus, G4Tubs, G4Trd, G4Para, G4USolid, G4EllipticalCone, G4ExtrudedSolid, G4GenericTrap, G4Polycone, G4Polyhedra, G4TwistedTrap, G4Paraboloid, G4Hype, G4DisplacedSolid, G4Orb, G4Box, G4Tet, G4OTubs, G4Ellipsoid, G4CutTubs, G4ReflectedSolid, G4GenericPolycone, G4EllipticalTube, G4TwistedTrd, G4UPolyhedra, G4TwistedBox, G4UPolycone, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4UTubs, G4UCons, G4USphere, G4UTrd, G4UBox, and G4UOrb.

Definition at line 324 of file G4VSolid.cc.

References G4endl, G4Exception(), GetEntityType(), and JustWarning.

Referenced by G4GeometryWorkspace::CloneParameterisedSolids(), and G4GeometryWorkspace::CloneReplicaSolid().

325 {
326  std::ostringstream message;
327  message << "Clone() method not implemented for type: "
328  << GetEntityType() << "!" << G4endl
329  << "Returning NULL pointer!";
330  G4Exception("G4VSolid::Clone()", "GeomMgt1001", JustWarning, message);
331  return 0;
332 }
virtual G4GeometryType GetEntityType() const =0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
void G4VSolid::ComputeDimensions ( G4VPVParameterisation p,
const G4int  n,
const G4VPhysicalVolume pRep 
)
virtual

Reimplemented in G4Trap, G4Torus, G4Sphere, G4Cons, G4Tubs, G4Para, G4USolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4Polycone, G4Polyhedra, G4Trd, G4TwistedTubs, G4DisplacedSolid, G4ReflectedSolid, G4Ellipsoid, G4Orb, G4Hype, G4Tet, G4VTwistedFaceted, G4UPolyhedra, G4Box, G4UPolycone, G4UTubs, G4UCons, G4USphere, G4UTrd, G4UBox, and G4UOrb.

Definition at line 137 of file G4VSolid.cc.

References FatalException, G4endl, and G4Exception().

Referenced by G4SmartVoxelHeader::BuildNodes(), G4PVParameterised::CheckOverlaps(), G4PSDoseDeposit::ComputeVolume(), G4PSPassageCellFlux::ComputeVolume(), G4PSCellFlux::ComputeVolume(), G4LogicalVolume::GetMass(), G4Navigator::GetMotherToDaughterTransform(), G4ITNavigator::GetMotherToDaughterTransform(), G4Navigator::LocateGlobalPointAndSetup(), G4ITNavigator::LocateGlobalPointAndSetup(), G4PSSphereSurfaceCurrent::ProcessHits(), G4PSCylinderSurfaceFlux::ProcessHits(), G4PSSphereSurfaceFlux::ProcessHits(), G4PSCylinderSurfaceCurrent::ProcessHits(), G4PSFlatSurfaceCurrent::ProcessHits(), G4PSFlatSurfaceFlux::ProcessHits(), G4Navigator::SetupHierarchy(), and G4ITNavigator::SetupHierarchy().

140 {
141  std::ostringstream message;
142  message << "Illegal call to G4VSolid::ComputeDimensions()" << G4endl
143  << "Method not overloaded by derived class !";
144  G4Exception("G4VSolid::ComputeDimensions()", "GeomMgt0003",
145  FatalException, message);
146 }
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
G4Polyhedron * G4VSolid::CreatePolyhedron ( ) const
virtual
virtual void G4VSolid::DescribeYourselfTo ( G4VGraphicsScene scene) const
pure virtual
virtual G4double G4VSolid::DistanceToIn ( const G4ThreeVector p,
const G4ThreeVector v 
) const
pure virtual
virtual G4double G4VSolid::DistanceToIn ( const G4ThreeVector p) const
pure virtual
virtual G4double G4VSolid::DistanceToOut ( const G4ThreeVector p,
const G4ThreeVector v,
const G4bool  calcNorm = false,
G4bool validNorm = 0,
G4ThreeVector n = 0 
) const
pure virtual
virtual G4double G4VSolid::DistanceToOut ( const G4ThreeVector p) const
pure virtual
void G4VSolid::DumpInfo ( ) const
inline

Referenced by G4CutTubs::ApproxSurfaceNormal(), G4OTubs::ApproxSurfaceNormal(), G4Tubs::ApproxSurfaceNormal(), G4ReflectedSolid::CalculateExtent(), G4ParameterisationTubsRho::ComputeDimensions(), G4ParameterisationBoxX::ComputeDimensions(), G4ReflectedSolid::ComputeDimensions(), G4ParameterisationParaX::ComputeDimensions(), G4ParameterisationConsRho::ComputeDimensions(), G4ParameterisationPolyconeRho::ComputeDimensions(), G4ParameterisationTrdX::ComputeDimensions(), G4DisplacedSolid::ComputeDimensions(), G4ParameterisationPolyhedraRho::ComputeDimensions(), G4ParameterisationTubsPhi::ComputeDimensions(), G4ParameterisationBoxY::ComputeDimensions(), G4ParameterisationConsPhi::ComputeDimensions(), G4ParameterisationParaY::ComputeDimensions(), G4ParameterisationPolyconePhi::ComputeDimensions(), G4ParameterisationTrdY::ComputeDimensions(), G4ParameterisationPolyhedraPhi::ComputeDimensions(), G4ParameterisationTubsZ::ComputeDimensions(), G4ParameterisationBoxZ::ComputeDimensions(), G4ParameterisationConsZ::ComputeDimensions(), G4ParameterisationParaZ::ComputeDimensions(), G4ParameterisationPolyconeZ::ComputeDimensions(), G4ParameterisationTrdZ::ComputeDimensions(), G4ParameterisationPolyhedraZ::ComputeDimensions(), G4ParameterisedNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4CutTubs::CreateRotatedVertices(), G4Ellipsoid::CreateRotatedVertices(), G4Box::CreateRotatedVertices(), G4OTubs::CreateRotatedVertices(), G4Tet::CreateRotatedVertices(), G4VTwistedFaceted::CreateRotatedVertices(), G4Para::CreateRotatedVertices(), G4Trd::CreateRotatedVertices(), G4Tubs::CreateRotatedVertices(), G4Trap::CreateRotatedVertices(), G4SubtractionSolid::DistanceToIn(), G4EllipticalTube::DistanceToOut(), G4CutTubs::DistanceToOut(), G4Ellipsoid::DistanceToOut(), G4OTubs::DistanceToOut(), G4Tet::DistanceToOut(), G4Orb::DistanceToOut(), G4VTwistedFaceted::DistanceToOut(), G4Box::DistanceToOut(), G4GenericTrap::DistanceToOut(), G4Paraboloid::DistanceToOut(), G4EllipticalCone::DistanceToOut(), G4Trd::DistanceToOut(), G4Para::DistanceToOut(), G4Tubs::DistanceToOut(), G4Cons::DistanceToOut(), G4Torus::DistanceToOut(), G4Sphere::DistanceToOut(), G4Trap::DistanceToOut(), export_G4VSolid(), G4Polycone::G4Polycone(), G4Polyhedra::G4Polyhedra(), G4Trap::G4Trap(), G4BooleanSolid::GetConstituentSolid(), G4NavigationLogger::PostComputeStepLog(), G4NavigationLogger::PreComputeStepLog(), and G4Orb::SurfaceNormal().

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

Definition at line 203 of file G4VSolid.cc.

References CalculateExtent(), G4UniformRand, Inside(), kOutside, kXAxis, kYAxis, and kZAxis.

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

204 {
205  G4int iInside=0;
206  G4double px,py,pz,minX,maxX,minY,maxY,minZ,maxZ,volume,halfepsilon;
208  EInside in;
209 
210  // values needed for CalculateExtent signature
211 
212  G4VoxelLimits limit; // Unlimited
213  G4AffineTransform origin;
214 
215  // min max extents of pSolid along X,Y,Z
216 
217  this->CalculateExtent(kXAxis,limit,origin,minX,maxX);
218  this->CalculateExtent(kYAxis,limit,origin,minY,maxY);
219  this->CalculateExtent(kZAxis,limit,origin,minZ,maxZ);
220 
221  // limits
222 
223  if(nStat < 100) nStat = 100;
224  if(epsilon > 0.01) epsilon = 0.01;
225  halfepsilon = 0.5*epsilon;
226 
227  for(G4int i = 0; i < nStat; i++ )
228  {
229  px = minX-halfepsilon+(maxX-minX+epsilon)*G4UniformRand();
230  py = minY-halfepsilon+(maxY-minY+epsilon)*G4UniformRand();
231  pz = minZ-halfepsilon+(maxZ-minZ+epsilon)*G4UniformRand();
232  p = G4ThreeVector(px,py,pz);
233  in = this->Inside(p);
234  if(in != kOutside) iInside++;
235  }
236  volume = (maxX-minX+epsilon)*(maxY-minY+epsilon)
237  * (maxZ-minZ+epsilon)*iInside/nStat;
238  return volume;
239 }
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
CLHEP::Hep3Vector G4ThreeVector
const char * p
Definition: xmltok.h:285
int G4int
Definition: G4Types.hh:78
#define G4UniformRand()
Definition: Randomize.hh:87
virtual EInside Inside(const G4ThreeVector &p) const =0
EInside
Definition: geomdefs.hh:58
double G4double
Definition: G4Types.hh:76
G4double G4VSolid::EstimateSurfaceArea ( G4int  nStat,
G4double  ell 
) const
protected

Definition at line 263 of file G4VSolid.cc.

References CalculateExtent(), DistanceToIn(), DistanceToOut(), G4UniformRand, Inside(), kOutside, kXAxis, kYAxis, and kZAxis.

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

264 {
265  G4int inside=0;
266  G4double px,py,pz,minX,maxX,minY,maxY,minZ,maxZ,surf;
268  EInside in;
269 
270  // values needed for CalculateExtent signature
271 
272  G4VoxelLimits limit; // Unlimited
273  G4AffineTransform origin;
274 
275  // min max extents of pSolid along X,Y,Z
276 
277  this->CalculateExtent(kXAxis,limit,origin,minX,maxX);
278  this->CalculateExtent(kYAxis,limit,origin,minY,maxY);
279  this->CalculateExtent(kZAxis,limit,origin,minZ,maxZ);
280 
281  // limits
282 
283  if(nStat < 100) { nStat = 100; }
284 
285  G4double dX=maxX-minX;
286  G4double dY=maxY-minY;
287  G4double dZ=maxZ-minZ;
288  if(ell<=0.) // Automatic definition of skin thickness
289  {
290  G4double minval=dX;
291  if(dY<dX) { minval=dY; }
292  if(dZ<minval) { minval=dZ; }
293  ell=.01*minval;
294  }
295 
296  G4double dd=2*ell;
297  minX-=ell; minY-=ell; minZ-=ell; dX+=dd; dY+=dd; dZ+=dd;
298 
299  for(G4int i = 0; i < nStat; i++ )
300  {
301  px = minX+dX*G4UniformRand();
302  py = minY+dY*G4UniformRand();
303  pz = minZ+dZ*G4UniformRand();
304  p = G4ThreeVector(px,py,pz);
305  in = this->Inside(p);
306  if(in != kOutside)
307  {
308  if (DistanceToOut(p)<ell) { inside++; }
309  }
310  else if(DistanceToIn(p)<ell) { inside++; }
311  }
312  // @@ The conformal correction can be upgraded
313  surf = dX*dY*dZ*inside/dd/nStat;
314  return surf;
315 }
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
CLHEP::Hep3Vector G4ThreeVector
const char * p
Definition: xmltok.h:285
int G4int
Definition: G4Types.hh:78
#define G4UniformRand()
Definition: Randomize.hh:87
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
EInside
Definition: geomdefs.hh:58
double G4double
Definition: G4Types.hh:76
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
const G4VSolid * G4VSolid::GetConstituentSolid ( G4int  no) const
virtual

Reimplemented in G4BooleanSolid.

Definition at line 167 of file G4VSolid.cc.

Referenced by G4BooleanSolid::StackPolyhedron().

168 { return 0; }
G4VSolid * G4VSolid::GetConstituentSolid ( G4int  no)
virtual

Reimplemented in G4BooleanSolid.

Definition at line 170 of file G4VSolid.cc.

171 { return 0; }
G4double G4VSolid::GetCubicVolume ( )
virtual

Reimplemented in G4Trap, G4TessellatedSolid, G4TwistedTubs, G4GenericTrap, G4Torus, G4Sphere, G4Cons, G4Tubs, G4USolid, G4Hype, G4Para, G4VTwistedFaceted, G4EllipticalCone, G4Trd, G4Tet, G4VCSGfaceted, G4Box, G4EllipticalTube, G4OTubs, G4Paraboloid, G4BooleanSolid, G4Ellipsoid, G4Orb, and G4CutTubs.

Definition at line 188 of file G4VSolid.cc.

References EstimateCubicVolume().

Referenced by G4PSDoseDeposit::ComputeVolume(), G4PSPassageCellFlux::ComputeVolume(), G4PSCellFlux::ComputeVolume(), G4MIRDLiver::Construct(), G4MIRDLeftAdrenal::Construct(), G4MIRDLeftClavicle::Construct(), G4MIRDLeftScapula::Construct(), G4MIRDRightLegBone::Construct(), G4MIRDRightScapula::Construct(), G4MIRDLeftOvary::Construct(), G4MIRDSkull::Construct(), G4MIRDLeftTeste::Construct(), G4MIRDSmallIntestine::Construct(), G4MIRDLowerLargeIntestine::Construct(), G4MIRDMaleGenitalia::Construct(), G4MIRDThyroid::Construct(), G4MIRDUpperLargeIntestine::Construct(), G4MIRDLeftLeg::Construct(), G4MIRDPelvis::Construct(), G4MIRDLeftKidney::Construct(), G4MIRDRightAdrenal::Construct(), G4MIRDLeftLegBone::Construct(), G4MIRDRightClavicle::Construct(), G4MIRDRightKidney::Construct(), G4MIRDRightLeg::Construct(), G4MIRDBrain::Construct(), G4MIRDUterus::Construct(), G4MIRDRightLung::Construct(), G4MIRDRightOvary::Construct(), G4MIRDTrunk::Construct(), G4MIRDPancreas::Construct(), G4MIRDLeftBreast::Construct(), G4MIRDThymus::Construct(), G4MIRDRightTeste::Construct(), G4MIRDMiddleLowerSpine::Construct(), G4MIRDUpperSpine::Construct(), G4MIRDStomach::Construct(), G4MIRDSpleen::Construct(), G4MIRDLeftLung::Construct(), G4MIRDRibCage::Construct(), G4MIRDHeart::Construct(), G4MIRDRightBreast::Construct(), G4MIRDUrinaryBladder::Construct(), G4MIRDLeftArmBone::Construct(), G4MIRDHead::Construct(), G4MIRDRightArmBone::Construct(), export_G4VSolid(), G4EllipticalTube::GetCubicVolume(), G4Hype::GetCubicVolume(), G4GenericTrap::GetCubicVolume(), G4TessellatedSolid::GetCubicVolume(), and G4LogicalVolume::GetMass().

189 {
190  G4int cubVolStatistics = 1000000;
191  G4double cubVolEpsilon = 0.001;
192  return EstimateCubicVolume(cubVolStatistics, cubVolEpsilon);
193 }
G4double EstimateCubicVolume(G4int nStat, G4double epsilon) const
Definition: G4VSolid.cc:203
int G4int
Definition: G4Types.hh:78
double G4double
Definition: G4Types.hh:76
const G4DisplacedSolid * G4VSolid::GetDisplacedSolidPtr ( ) const
virtual

Reimplemented in G4DisplacedSolid.

Definition at line 173 of file G4VSolid.cc.

174 { return 0; }
G4DisplacedSolid * G4VSolid::GetDisplacedSolidPtr ( )
virtual

Reimplemented in G4DisplacedSolid.

Definition at line 176 of file G4VSolid.cc.

177 { return 0; }
virtual G4GeometryType G4VSolid::GetEntityType ( ) const
pure virtual

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

Referenced by G4GMocrenFileSceneHandler::AddPrimitive(), G4GDMLWriteSolids::AddSolid(), G4tgbVolume::BuildSolidForDivision(), Clone(), G4GeometryWorkspace::CloneParameterisedSolids(), G4GeometryWorkspace::CloneReplicaSolid(), G4VoxelNavigation::ComputeSafety(), G4NavigationLogger::ComputeSafetyLog(), G4VDivisionParameterisation::ComputeSolid(), G4PhysicalVolumeModel::CreateCurrentAttValues(), G4SubtractionSolid::DistanceToIn(), G4tgbGeometryDumper::DumpPVParameterised(), G4tgbGeometryDumper::DumpSolid(), G4tgbVolume::FindOrConstructG4Solid(), G4VParameterisationBox::G4VParameterisationBox(), G4VParameterisationCons::G4VParameterisationCons(), G4VParameterisationPara::G4VParameterisationPara(), G4VParameterisationPolycone::G4VParameterisationPolycone(), G4VParameterisationPolyhedra::G4VParameterisationPolyhedra(), G4VParameterisationTrd::G4VParameterisationTrd(), G4VParameterisationTubs::G4VParameterisationTubs(), G4Navigator::GetLocalExitNormal(), G4ITNavigator::GetLocalExitNormal(), GetPointOnSurface(), G4tgbGeometryDumper::GetSolidParams(), G4NavigationLogger::PostComputeStepLog(), G4NavigationLogger::PreComputeStepLog(), G4NavigationLogger::PrintDaughterLog(), G4ASCIITreeSceneHandler::RequestPrimitives(), G4VoxelSafety::SafetyForVoxelHeader(), G4BooleanSolid::StackPolyhedron(), G4CSGSolid::StreamInfo(), and G4PhysicalVolumeModel::VisitGeometryAndGetVisReps().

G4VisExtent G4VSolid::GetExtent ( ) const
virtual

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

Definition at line 621 of file G4VSolid.cc.

References CalculateExtent(), kXAxis, kYAxis, kZAxis, G4VisExtent::SetXmax(), G4VisExtent::SetXmin(), G4VisExtent::SetYmax(), G4VisExtent::SetYmin(), G4VisExtent::SetZmax(), and G4VisExtent::SetZmin().

Referenced by G4tgbVolume::BuildSolidForDivision().

622 {
623  G4VisExtent extent;
624  G4VoxelLimits voxelLimits; // Defaults to "infinite" limits.
625  G4AffineTransform affineTransform;
626  G4double vmin, vmax;
627  CalculateExtent(kXAxis,voxelLimits,affineTransform,vmin,vmax);
628  extent.SetXmin (vmin);
629  extent.SetXmax (vmax);
630  CalculateExtent(kYAxis,voxelLimits,affineTransform,vmin,vmax);
631  extent.SetYmin (vmin);
632  extent.SetYmax (vmax);
633  CalculateExtent(kZAxis,voxelLimits,affineTransform,vmin,vmax);
634  extent.SetZmin (vmin);
635  extent.SetZmax (vmax);
636  return extent;
637 }
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
void SetXmax(G4double xmax)
Definition: G4VisExtent.hh:102
void SetYmax(G4double ymax)
Definition: G4VisExtent.hh:106
void SetZmin(G4double zmin)
Definition: G4VisExtent.hh:108
void SetZmax(G4double zmax)
Definition: G4VisExtent.hh:110
void SetXmin(G4double xmin)
Definition: G4VisExtent.hh:100
double G4double
Definition: G4Types.hh:76
void SetYmin(G4double ymin)
Definition: G4VisExtent.hh:104
G4String G4VSolid::GetName ( ) const
inline

Referenced by G4GMocrenFileSceneHandler::AddPrimitive(), G4XXXFileSceneHandler::AddSolid(), G4XXXStoredSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4XXXSGSceneHandler::AddSolid(), G4GDMLWriteSolids::AddSolid(), G4GMocrenFileSceneHandler::AddSolid(), G4NavigationLogger::AlongComputeStepLog(), G4GDMLWriteSolids::BooleanWrite(), G4GDMLWriteSolids::BoxWrite(), G4Trd::CheckAndSetAllParameters(), G4VDivisionParameterisation::CheckNDivAndWidth(), G4VDivisionParameterisation::CheckOffset(), G4ParameterisationPolyconeRho::CheckParametersValidity(), G4ParameterisationPolyhedraRho::CheckParametersValidity(), G4ParameterisationPolyhedraPhi::CheckParametersValidity(), G4ParameterisationPolyconeZ::CheckParametersValidity(), G4ParameterisationPolyhedraZ::CheckParametersValidity(), G4PhantomParameterisation::CheckVoxelsFillContainer(), G4VoxelSafety::ComputeSafety(), G4VoxelNavigation::ComputeSafety(), G4NavigationLogger::ComputeSafetyLog(), G4ParameterisedNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4GDMLWriteSolids::ConeWrite(), CCalG4Hall::constructIn(), G4GenericPolycone::Create(), G4Polycone::Create(), G4Polyhedra::Create(), G4PhysicalVolumeModel::CreateCurrentAttValues(), G4UGenericPolycone::CreatePolyhedron(), G4GenericPolycone::CreatePolyhedron(), G4UPolyhedra::CreatePolyhedron(), G4Polyhedra::CreatePolyhedron(), G4ReflectedSolid::CreatePolyhedron(), G4GDMLWriteSolids::CutTubeWrite(), G4PhysicalVolumeModel::DescribeSolid(), G4SubtractionSolid::DistanceToIn(), G4Paraboloid::DistanceToIn(), G4tgbGeometryDumper::DumpSolid(), G4GDMLWriteSolids::ElconeWrite(), G4GDMLWriteSolids::EllipsoidWrite(), G4GDMLWriteSolids::EltubeWrite(), export_G4VSolid(), G4Box::G4Box(), G4Cons::G4Cons(), G4CutTubs::G4CutTubs(), G4Ellipsoid::G4Ellipsoid(), G4EllipticalCone::G4EllipticalCone(), G4Hype::G4Hype(), G4OTubs::G4OTubs(), G4Para::G4Para(), G4Paraboloid::G4Paraboloid(), G4Polycone::G4Polycone(), G4Polyhedra::G4Polyhedra(), G4Sphere::G4Sphere(), G4Trap::G4Trap(), G4Tubs::G4Tubs(), G4VParameterisationCons::G4VParameterisationCons(), G4VParameterisationPara::G4VParameterisationPara(), G4VParameterisationPolycone::G4VParameterisationPolycone(), G4VParameterisationPolyhedra::G4VParameterisationPolyhedra(), G4VParameterisationTrd::G4VParameterisationTrd(), G4VTwistedFaceted::G4VTwistedFaceted(), G4GDMLWriteSolids::GenericPolyconeWrite(), G4GDMLWriteSolids::GenTrapWrite(), G4Navigator::GetLocalExitNormal(), G4ITNavigator::GetLocalExitNormal(), G4PhantomParameterisation::GetReplicaNo(), G4GDMLWriteSolids::HypeWrite(), G4Navigator::LocateGlobalPointAndSetup(), G4ITNavigator::LocateGlobalPointAndSetup(), G4Trap::MakePlane(), G4Trap::MakePlanes(), G4GDMLWriteSolids::OrbWrite(), G4GDMLWriteSolids::ParaboloidWrite(), G4GDMLWriteParamvol::ParametersWrite(), G4GDMLWriteSolids::ParaWrite(), G4GDMLWriteSolids::PolyconeWrite(), G4GDMLWriteSolids::PolyhedraWrite(), G4NavigationLogger::PostComputeStepLog(), G4NavigationLogger::PreComputeStepLog(), G4NavigationLogger::PrintDaughterLog(), G4tgbVolumeMgr::RegisterMe(), G4ASCIITreeSceneHandler::RequestPrimitives(), G4VSceneHandler::RequestPrimitives(), G4GenericPolycone::Reset(), G4Polyhedra::Reset(), G4VoxelSafety::SafetyForVoxelNode(), G4Torus::SetAllParameters(), G4Trap::SetAllParameters(), G4Polycone::SetOriginalParameters(), G4Polyhedra::SetOriginalParameters(), G4Box::SetXHalfLength(), G4Box::SetYHalfLength(), G4Box::SetZHalfLength(), G4GDMLWriteSolids::SphereWrite(), G4BooleanSolid::StackPolyhedron(), G4CSGSolid::StreamInfo(), G4TwistedBox::StreamInfo(), G4VCSGfaceted::StreamInfo(), G4BooleanSolid::StreamInfo(), G4TwistedTrd::StreamInfo(), G4EllipticalTube::StreamInfo(), G4GenericPolycone::StreamInfo(), G4CutTubs::StreamInfo(), G4OTubs::StreamInfo(), G4Ellipsoid::StreamInfo(), G4Tet::StreamInfo(), G4Box::StreamInfo(), G4Orb::StreamInfo(), G4ReflectedSolid::StreamInfo(), G4Hype::StreamInfo(), G4VTwistedFaceted::StreamInfo(), G4Paraboloid::StreamInfo(), G4TwistedTrap::StreamInfo(), G4Polycone::StreamInfo(), G4Polyhedra::StreamInfo(), G4GenericTrap::StreamInfo(), G4ExtrudedSolid::StreamInfo(), G4TwistedTubs::StreamInfo(), G4EllipticalCone::StreamInfo(), G4DisplacedSolid::StreamInfo(), G4Para::StreamInfo(), G4Trd::StreamInfo(), G4Tubs::StreamInfo(), G4Torus::StreamInfo(), G4Cons::StreamInfo(), G4Sphere::StreamInfo(), G4Trap::StreamInfo(), G4GDMLRead::StripNames(), SubstractSolids(), 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().

G4ThreeVector G4VSolid::GetPointOnSurface ( ) const
virtual

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

Definition at line 152 of file G4VSolid.cc.

References G4endl, G4Exception(), GetEntityType(), and JustWarning.

Referenced by G4PVParameterised::CheckOverlaps(), G4PVPlacement::CheckOverlaps(), export_G4VSolid(), G4ReflectedSolid::GetPointOnSurface(), G4BooleanSolid::GetPointOnSurface(), and G4DisplacedSolid::GetPointOnSurface().

153 {
154  std::ostringstream message;
155  message << "Not implemented for solid: "
156  << this->GetEntityType() << " !" << G4endl
157  << "Returning origin.";
158  G4Exception("G4VSolid::GetPointOnSurface()", "GeomMgt1001",
159  JustWarning, message);
160  return G4ThreeVector(0,0,0);
161 }
CLHEP::Hep3Vector G4ThreeVector
virtual G4GeometryType GetEntityType() const =0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
G4Polyhedron * G4VSolid::GetPolyhedron ( ) const
virtual
G4double G4VSolid::GetSurfaceArea ( )
virtual
G4double G4VSolid::GetTolerance ( ) const
inline
virtual EInside G4VSolid::Inside ( const G4ThreeVector p) const
pure virtual

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

Referenced by G4NavigationLogger::AlongComputeStepLog(), G4ReplicaNavigation::BackLocate(), G4PVParameterised::CheckOverlaps(), G4PVPlacement::CheckOverlaps(), G4VoxelSafety::ComputeSafety(), G4VoxelNavigation::ComputeSafety(), G4ParameterisedNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4RegularNavigation::ComputeStepSkippingEqualMaterials(), G4TheRayTracer::CreateBitMap(), G4PolyPhiFace::Diagnose(), G4IntersectionSolid::DistanceToIn(), G4SubtractionSolid::DistanceToIn(), G4UnionSolid::DistanceToOut(), EstimateCubicVolume(), EstimateSurfaceArea(), G4Navigator::GetLocalExitNormal(), G4ITNavigator::GetLocalExitNormal(), G4BooleanSolid::GetPointOnSurface(), G4PhantomParameterisation::GetReplicaNo(), G4ReflectedSolid::Inside(), G4DisplacedSolid::Inside(), G4UnionSolid::Inside(), G4IntersectionSolid::Inside(), G4SubtractionSolid::Inside(), G4Navigator::LocateGlobalPointAndSetup(), G4ITNavigator::LocateGlobalPointAndSetup(), G4NavigationLogger::PreComputeStepLog(), DicomIntersectVolume::SetNewValue(), G4RTPrimaryGeneratorAction::SetUp(), G4UnionSolid::SurfaceNormal(), G4SubtractionSolid::SurfaceNormal(), and G4IntersectionSolid::SurfaceNormal().

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

Definition at line 110 of file G4VSolid.cc.

References kCarTolerance.

Referenced by G4VCSGfaceted::operator=(), G4CSGSolid::operator=(), G4BooleanSolid::operator=(), G4ReflectedSolid::operator=(), G4EllipticalTube::operator=(), G4Ellipsoid::operator=(), G4Tet::operator=(), G4Paraboloid::operator=(), G4Hype::operator=(), G4TessellatedSolid::operator=(), G4GenericTrap::operator=(), G4VTwistedFaceted::operator=(), G4DisplacedSolid::operator=(), G4EllipticalCone::operator=(), G4USolid::operator=(), and G4TwistedTubs::operator=().

111 {
112  // Check assignment to self
113  //
114  if (this == &rhs) { return *this; }
115 
116  // Copy data
117  //
119  fshapeName = rhs.fshapeName;
120 
121  return *this;
122 }
G4double kCarTolerance
Definition: G4VSolid.hh:305
G4bool G4VSolid::operator== ( const G4VSolid s) const
inline
void G4VSolid::SetName ( const G4String name)
inline
virtual std::ostream& G4VSolid::StreamInfo ( std::ostream &  os) const
pure virtual
virtual G4ThreeVector G4VSolid::SurfaceNormal ( const G4ThreeVector p) const
pure virtual

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const G4VSolid e 
)
friend

Definition at line 128 of file G4VSolid.cc.

129 {
130  return e.StreamInfo(os);
131 }
virtual std::ostream & StreamInfo(std::ostream &os) const =0

Field Documentation

G4double G4VSolid::kCarTolerance
protected

Definition at line 305 of file G4VSolid.hh.

Referenced by G4TessellatedSolid::AddFacet(), G4USolid::CalculateExtent(), G4ReflectedSolid::CalculateExtent(), G4Box::CalculateExtent(), G4CutTubs::CalculateExtent(), G4VTwistedFaceted::CalculateExtent(), G4Orb::CalculateExtent(), G4OTubs::CalculateExtent(), G4Ellipsoid::CalculateExtent(), G4Paraboloid::CalculateExtent(), G4Trd::CalculateExtent(), G4GenericTrap::CalculateExtent(), G4Para::CalculateExtent(), G4Tubs::CalculateExtent(), G4Cons::CalculateExtent(), G4Sphere::CalculateExtent(), G4Torus::CalculateExtent(), G4TessellatedSolid::CalculateExtent(), G4Trap::CalculateExtent(), G4Trd::CheckAndSetAllParameters(), G4GenericPolycone::Create(), G4Polycone::Create(), G4Polyhedra::Create(), G4UGenericPolycone::CreatePolyhedron(), G4GenericPolycone::CreatePolyhedron(), G4UPolyhedra::CreatePolyhedron(), G4CutTubs::CreatePolyhedron(), G4Polyhedra::CreatePolyhedron(), G4CutTubs::CreateRotatedVertices(), G4OTubs::CreateRotatedVertices(), G4Tubs::CreateRotatedVertices(), G4VCSGfaceted::DistanceTo(), G4VCSGfaceted::DistanceToIn(), G4Paraboloid::DistanceToIn(), G4Hype::DistanceToIn(), G4EllipticalCone::DistanceToIn(), G4Trd::DistanceToIn(), G4Para::DistanceToIn(), G4Sphere::DistanceToIn(), G4Trap::DistanceToIn(), G4VCSGfaceted::DistanceToOut(), G4CutTubs::DistanceToOut(), G4OTubs::DistanceToOut(), G4UnionSolid::DistanceToOut(), G4Paraboloid::DistanceToOut(), G4Hype::DistanceToOut(), G4GenericTrap::DistanceToOut(), G4EllipticalCone::DistanceToOut(), G4Trd::DistanceToOut(), G4Para::DistanceToOut(), G4Tubs::DistanceToOut(), G4Cons::DistanceToOut(), G4Torus::DistanceToOut(), G4Sphere::DistanceToOut(), G4Trap::DistanceToOut(), G4Box::G4Box(), G4Cons::G4Cons(), G4CutTubs::G4CutTubs(), G4Ellipsoid::G4Ellipsoid(), G4EllipticalCone::G4EllipticalCone(), G4EllipticalTube::G4EllipticalTube(), G4ExtrudedSolid::G4ExtrudedSolid(), G4GenericTrap::G4GenericTrap(), G4Hype::G4Hype(), G4Orb::G4Orb(), G4OTubs::G4OTubs(), G4Sphere::G4Sphere(), G4Trap::G4Trap(), G4Tubs::G4Tubs(), G4VSolid(), G4VTwistedFaceted::G4VTwistedFaceted(), G4VCSGfaceted::Inside(), G4Paraboloid::Inside(), G4Hype::Inside(), G4VTwistedFaceted::Inside(), G4Trd::Inside(), G4ExtrudedSolid::Inside(), G4Para::Inside(), G4Trap::Inside(), operator=(), G4TessellatedSolid::SafetyFromInside(), G4TessellatedSolid::SafetyFromOutside(), G4Torus::SetAllParameters(), G4Polycone::SetOriginalParameters(), G4Polyhedra::SetOriginalParameters(), G4Box::SetXHalfLength(), G4Box::SetYHalfLength(), G4Box::SetZHalfLength(), G4Tet::SurfaceNormal(), G4Paraboloid::SurfaceNormal(), G4GenericTrap::SurfaceNormal(), G4Trd::SurfaceNormal(), G4Para::SurfaceNormal(), G4Torus::SurfaceNormal(), and G4Trap::SurfaceNormal().


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