G4VSolid Class Reference

#include <G4VSolid.hh>

Inheritance diagram for G4VSolid:

G4BooleanSolid G4BREPSolid G4CSGSolid G4DisplacedSolid G4Ellipsoid G4EllipticalCone G4EllipticalTube G4GenericTrap G4Hype G4Paraboloid G4ReflectedSolid G4TessellatedSolid G4Tet G4TwistedTubs 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 G4NURBSCreateNURBS () 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 88 of file G4VSolid.hh.


Constructor & Destructor Documentation

G4VSolid::G4VSolid ( const G4String name  ) 

Definition at line 60 of file G4VSolid.cc.

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

00061   : fshapeName(name)
00062 {
00063     kCarTolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance();
00064 
00065     // Register to store
00066     //
00067     G4SolidStore::GetInstance()->Register(this);
00068 }

G4VSolid::~G4VSolid (  )  [virtual]

Definition at line 101 of file G4VSolid.cc.

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

00102 {
00103     G4SolidStore::GetInstance()->DeRegister(this);
00104 }

G4VSolid::G4VSolid ( __void__ &   ) 

Definition at line 88 of file G4VSolid.cc.

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

00089   : fshapeName("")
00090 {
00091     // Register to store
00092     //
00093     G4SolidStore::GetInstance()->Register(this);
00094 }

G4VSolid::G4VSolid ( const G4VSolid rhs  ) 

Definition at line 75 of file G4VSolid.cc.

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

00076   : kCarTolerance(rhs.kCarTolerance), fshapeName(rhs.fshapeName)
00077 {
00078     // Register to store
00079     //
00080     G4SolidStore::GetInstance()->Register(this);
00081 }


Member Function Documentation

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

Definition at line 425 of file G4VSolid.cc.

References ClipPolygon().

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

00430 {
00431   G4int noLeft,i;
00432   G4double component;
00433   /*  
00434   G4cout<<G4endl;
00435   for(i = 0 ; i < pPolygon.size() ; i++ )
00436   {
00437       G4cout << i << "\t"
00438              << "p.x = " << pPolygon[i].operator()(pAxis) << "\t"
00439         //   << "p.y = " << pPolygon[i].y() << "\t"
00440         //   << "p.z = " << pPolygon[i].z() << "\t"
00441              << G4endl;
00442   }    
00443   G4cout<<G4endl;
00444   */  
00445   ClipPolygon(pPolygon,pVoxelLimit,pAxis);
00446   noLeft = pPolygon.size();
00447 
00448   if ( noLeft )
00449   {
00450     //  G4cout<<G4endl;
00451     for (i=0;i<noLeft;i++)
00452     {
00453       component = pPolygon[i].operator()(pAxis);
00454       //  G4cout <<i<<"\t"<<component<<G4endl;
00455  
00456       if (component < pMin) 
00457       { 
00458         //  G4cout <<i<<"\t"<<"Pmin = "<<component<<G4endl;
00459         pMin = component;      
00460       }
00461       if (component > pMax)
00462       {  
00463         //  G4cout <<i<<"\t"<<"PMax = "<<component<<G4endl;
00464         pMax = component;  
00465       }    
00466     }
00467     //  G4cout<<G4endl;
00468   }
00469   // G4cout<<"pMin = "<<pMin<<"\t"<<"pMax = "<<pMax<<G4endl;
00470 }

virtual G4bool G4VSolid::CalculateExtent ( const EAxis  pAxis,
const G4VoxelLimits pVoxelLimit,
const G4AffineTransform pTransform,
G4double pMin,
G4double pMax 
) const [pure virtual]

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

Referenced by G4SmartVoxelHeader::BuildNodes(), G4SmartVoxelHeader::BuildReplicaVoxels(), G4SmartVoxelHeader::BuildVoxelsWithinLimits(), G4UnionSolid::CalculateExtent(), G4SubtractionSolid::CalculateExtent(), G4ReflectedSolid::CalculateExtent(), G4IntersectionSolid::CalculateExtent(), G4DisplacedSolid::CalculateExtent(), EstimateCubicVolume(), EstimateSurfaceArea(), and GetExtent().

void G4VSolid::ClipBetweenSections ( G4ThreeVectorList pVertices,
const G4int  pSectionIndex,
const G4VoxelLimits pVoxelLimit,
const EAxis  pAxis,
G4double pMin,
G4double pMax 
) const [protected]

Definition at line 376 of file G4VSolid.cc.

References CalculateClippedPolygonExtent().

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

00381 {
00382   G4ThreeVectorList polygon;
00383   polygon.reserve(4);
00384   polygon.push_back((*pVertices)[pSectionIndex]);
00385   polygon.push_back((*pVertices)[pSectionIndex+4]);
00386   polygon.push_back((*pVertices)[pSectionIndex+5]);
00387   polygon.push_back((*pVertices)[pSectionIndex+1]);
00388   // G4cout<<"ClipBetweenSections: 0-4-5-1"<<G4endl;
00389   CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
00390   polygon.clear();
00391 
00392   polygon.push_back((*pVertices)[pSectionIndex+1]);
00393   polygon.push_back((*pVertices)[pSectionIndex+5]);
00394   polygon.push_back((*pVertices)[pSectionIndex+6]);
00395   polygon.push_back((*pVertices)[pSectionIndex+2]);
00396   // G4cout<<"ClipBetweenSections: 1-5-6-2"<<G4endl;
00397   CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
00398   polygon.clear();
00399 
00400   polygon.push_back((*pVertices)[pSectionIndex+2]);
00401   polygon.push_back((*pVertices)[pSectionIndex+6]);
00402   polygon.push_back((*pVertices)[pSectionIndex+7]);
00403   polygon.push_back((*pVertices)[pSectionIndex+3]);
00404   //  G4cout<<"ClipBetweenSections: 2-6-7-3"<<G4endl;
00405   CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
00406   polygon.clear();
00407 
00408   polygon.push_back((*pVertices)[pSectionIndex+3]);
00409   polygon.push_back((*pVertices)[pSectionIndex+7]);
00410   polygon.push_back((*pVertices)[pSectionIndex+4]);
00411   polygon.push_back((*pVertices)[pSectionIndex]);
00412   //  G4cout<<"ClipBetweenSections: 3-7-4-0"<<G4endl;
00413   CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
00414   return;
00415 }

void G4VSolid::ClipCrossSection ( G4ThreeVectorList pVertices,
const G4int  pSectionIndex,
const G4VoxelLimits pVoxelLimit,
const EAxis  pAxis,
G4double pMin,
G4double pMax 
) const [protected]

Definition at line 345 of file G4VSolid.cc.

References CalculateClippedPolygonExtent().

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

00350 {
00351 
00352   G4ThreeVectorList polygon;
00353   polygon.reserve(4);
00354   polygon.push_back((*pVertices)[pSectionIndex]);
00355   polygon.push_back((*pVertices)[pSectionIndex+1]);
00356   polygon.push_back((*pVertices)[pSectionIndex+2]);
00357   polygon.push_back((*pVertices)[pSectionIndex+3]);
00358   //  G4cout<<"ClipCrossSection: 0-1-2-3"<<G4endl;
00359   CalculateClippedPolygonExtent(polygon,pVoxelLimit,pAxis,pMin,pMax);
00360   return;
00361 }

void G4VSolid::ClipPolygon ( G4ThreeVectorList pPolygon,
const G4VoxelLimits pVoxelLimit,
const EAxis  pAxis 
) const [protected]

Definition at line 492 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().

00495 {
00496   G4ThreeVectorList outputPolygon;
00497 
00498   if ( pVoxelLimit.IsLimited() )
00499   {
00500     if (pVoxelLimit.IsXLimited() ) // && pAxis != kXAxis)
00501     {
00502       G4VoxelLimits simpleLimit1;
00503       simpleLimit1.AddLimit(kXAxis,pVoxelLimit.GetMinXExtent(),kInfinity);
00504       //  G4cout<<"MinXExtent()"<<G4endl;
00505       ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
00506    
00507       pPolygon.clear();
00508 
00509       if ( !outputPolygon.size() )  return;
00510 
00511       G4VoxelLimits simpleLimit2;
00512       //  G4cout<<"MaxXExtent()"<<G4endl;
00513       simpleLimit2.AddLimit(kXAxis,-kInfinity,pVoxelLimit.GetMaxXExtent());
00514       ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
00515 
00516       if ( !pPolygon.size() )       return;
00517       else                          outputPolygon.clear();
00518     }
00519     if ( pVoxelLimit.IsYLimited() ) // && pAxis != kYAxis)
00520     {
00521       G4VoxelLimits simpleLimit1;
00522       simpleLimit1.AddLimit(kYAxis,pVoxelLimit.GetMinYExtent(),kInfinity);
00523       ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
00524 
00525       // Must always clear pPolygon - for clip to simpleLimit2 and in case of
00526       // early exit
00527 
00528       pPolygon.clear();
00529 
00530       if ( !outputPolygon.size() )  return;
00531 
00532       G4VoxelLimits simpleLimit2;
00533       simpleLimit2.AddLimit(kYAxis,-kInfinity,pVoxelLimit.GetMaxYExtent());
00534       ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
00535 
00536       if ( !pPolygon.size() )       return;
00537       else                          outputPolygon.clear();
00538     }
00539     if ( pVoxelLimit.IsZLimited() ) // && pAxis != kZAxis)
00540     {
00541       G4VoxelLimits simpleLimit1;
00542       simpleLimit1.AddLimit(kZAxis,pVoxelLimit.GetMinZExtent(),kInfinity);
00543       ClipPolygonToSimpleLimits(pPolygon,outputPolygon,simpleLimit1);
00544 
00545       // Must always clear pPolygon - for clip to simpleLimit2 and in case of
00546       // early exit
00547 
00548       pPolygon.clear();
00549 
00550       if ( !outputPolygon.size() )  return;
00551 
00552       G4VoxelLimits simpleLimit2;
00553       simpleLimit2.AddLimit(kZAxis,-kInfinity,pVoxelLimit.GetMaxZExtent());
00554       ClipPolygonToSimpleLimits(outputPolygon,pPolygon,simpleLimit2);
00555 
00556       // Return after final clip - no cleanup
00557     }
00558   }
00559 }

G4VSolid * G4VSolid::Clone (  )  const [virtual]

Reimplemented in G4ReflectedSolid, G4DisplacedSolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4BREPSolid, G4BREPSolidBox, G4BREPSolidCone, G4BREPSolidCylinder, G4BREPSolidOpenPCone, G4BREPSolidPCone, G4BREPSolidPolyhedra, G4BREPSolidSphere, G4BREPSolidTorus, G4Box, G4Cons, G4CutTubs, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4ExtrudedSolid, G4GenericTrap, G4Hype, G4Paraboloid, G4Polycone, G4Polyhedra, G4TessellatedSolid, G4Tet, G4TwistedBox, G4TwistedTrap, G4TwistedTrd, and G4TwistedTubs.

Definition at line 322 of file G4VSolid.cc.

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

00323 {
00324   std::ostringstream message;
00325   message << "Clone() method not implemented for type: "
00326           << GetEntityType() << "!" << G4endl
00327           << "Returning NULL pointer!";
00328   G4Exception("G4VSolid::Clone()", "GeomMgt1001", JustWarning, message);
00329   return 0;
00330 }

void G4VSolid::ComputeDimensions ( G4VPVParameterisation p,
const G4int  n,
const G4VPhysicalVolume pRep 
) [virtual]

Reimplemented in G4ReflectedSolid, G4DisplacedSolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4Box, G4Cons, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Hype, G4Polycone, G4Polyhedra, G4Tet, G4TwistedTubs, and G4VTwistedFaceted.

Definition at line 137 of file G4VSolid.cc.

References FatalException, G4endl, and G4Exception().

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

00140 {
00141     std::ostringstream message;
00142     message << "Illegal call to G4VSolid::ComputeDimensions()" << G4endl
00143             << "Method not overloaded by derived class !";
00144     G4Exception("G4VSolid::ComputeDimensions()", "GeomMgt0003",
00145                 FatalException, message);
00146 }

G4NURBS * G4VSolid::CreateNURBS (  )  const [virtual]

Reimplemented in G4ReflectedSolid, G4DisplacedSolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4BREPSolid, G4Box, G4Cons, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Ellipsoid, G4EllipticalCone, G4GenericTrap, G4Hype, G4Paraboloid, G4Polycone, G4Polyhedra, G4TessellatedSolid, G4Tet, G4TwistedTubs, and G4VTwistedFaceted.

Definition at line 642 of file G4VSolid.cc.

Referenced by G4VSceneHandler::RequestPrimitives().

00643 {
00644   return 0;
00645 }

G4Polyhedron * G4VSolid::CreatePolyhedron (  )  const [virtual]

Reimplemented in G4ReflectedSolid, G4DisplacedSolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4BREPSolid, G4BREPSolidPCone, G4BREPSolidPolyhedra, G4Box, G4Cons, G4CutTubs, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4GenericTrap, G4Hype, G4Paraboloid, G4Polycone, G4Polyhedra, G4TessellatedSolid, G4Tet, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

Definition at line 637 of file G4VSolid.cc.

Referenced by G4ReflectedSolid::CreatePolyhedron(), G4DisplacedSolid::CreatePolyhedron(), G4CSGSolid::GetPolyhedron(), and G4BooleanSolid::GetPolyhedron().

00638 {
00639   return 0;
00640 }

virtual void G4VSolid::DescribeYourselfTo ( G4VGraphicsScene scene  )  const [pure virtual]

Implemented in G4ReflectedSolid, G4DisplacedSolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4BREPSolid, G4BREPSolidOpenPCone, G4Box, G4Cons, G4CutTubs, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4GenericTrap, G4Hype, G4Paraboloid, G4TessellatedSolid, G4Tet, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

Referenced by G4VisManager::Draw().

virtual G4double G4VSolid::DistanceToIn ( const G4ThreeVector p  )  const [pure virtual]

Implemented in G4ReflectedSolid, G4DisplacedSolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4BREPSolid, G4BREPSolidCone, G4BREPSolidPCone, G4BREPSolidPolyhedra, G4BREPSolidSphere, G4Box, G4Cons, G4CutTubs, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4GenericTrap, G4Hype, G4Paraboloid, G4Polycone, G4Polyhedra, G4TessellatedSolid, G4Tet, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

virtual G4double G4VSolid::DistanceToIn ( const G4ThreeVector p,
const G4ThreeVector v 
) const [pure virtual]

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

Referenced by G4NavigationLogger::AlongComputeStepLog(), G4PVPlacement::CheckOverlaps(), G4PVParameterised::CheckOverlaps(), G4AuxiliaryNavServices::CheckPointExiting(), G4AuxiliaryNavServices::CheckPointOnSurface(), G4VoxelSafety::ComputeSafety(), G4VoxelNavigation::ComputeSafety(), G4ReplicaNavigation::ComputeSafety(), G4ParameterisedNavigation::ComputeSafety(), G4NormalNavigation::ComputeSafety(), G4VoxelNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4ParameterisedNavigation::ComputeStep(), G4NormalNavigation::ComputeStep(), G4UnionSolid::DistanceToIn(), G4SubtractionSolid::DistanceToIn(), G4ReflectedSolid::DistanceToIn(), G4IntersectionSolid::DistanceToIn(), G4DisplacedSolid::DistanceToIn(), G4SubtractionSolid::DistanceToOut(), EstimateSurfaceArea(), G4Navigator::GetLocalExitNormal(), G4ITNavigator::GetLocalExitNormal(), G4NavigationLogger::PreComputeStepLog(), G4VoxelSafety::SafetyForVoxelNode(), and G4SubtractionSolid::SurfaceNormal().

virtual G4double G4VSolid::DistanceToOut ( const G4ThreeVector p  )  const [pure virtual]

Implemented in G4ReflectedSolid, G4DisplacedSolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4BREPSolid, G4BREPSolidCone, G4BREPSolidPCone, G4BREPSolidPolyhedra, G4BREPSolidSphere, G4Box, G4Cons, G4CutTubs, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4ExtrudedSolid, G4GenericTrap, G4Hype, G4Paraboloid, G4TessellatedSolid, G4Tet, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

virtual G4double G4VSolid::DistanceToOut ( const G4ThreeVector p,
const G4ThreeVector v,
const G4bool  calcNorm = false,
G4bool validNorm = 0,
G4ThreeVector n = 0 
) const [pure virtual]

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

Referenced by G4NavigationLogger::AlongComputeStepLog(), G4PVPlacement::CheckOverlaps(), G4VoxelSafety::ComputeSafety(), G4VoxelNavigation::ComputeSafety(), G4ReplicaNavigation::ComputeSafety(), G4ParameterisedNavigation::ComputeSafety(), G4NormalNavigation::ComputeSafety(), G4VoxelNavigation::ComputeStep(), G4ReplicaNavigation::ComputeStep(), G4ParameterisedNavigation::ComputeStep(), G4NormalNavigation::ComputeStep(), G4RegularNavigation::ComputeStepSkippingEqualMaterials(), G4SubtractionSolid::DistanceToIn(), G4IntersectionSolid::DistanceToIn(), G4UnionSolid::DistanceToOut(), G4SubtractionSolid::DistanceToOut(), G4ReflectedSolid::DistanceToOut(), G4IntersectionSolid::DistanceToOut(), G4DisplacedSolid::DistanceToOut(), EstimateSurfaceArea(), G4Navigator::GetLocalExitNormal(), G4ITNavigator::GetLocalExitNormal(), G4VXTRenergyLoss::PostStepDoIt(), G4SubtractionSolid::SurfaceNormal(), and G4IntersectionSolid::SurfaceNormal().

void G4VSolid::DumpInfo (  )  const [inline]

Definition at line 41 of file G4VSolid.icc.

References G4cout, and StreamInfo().

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

00042 {
00043   StreamInfo(G4cout);
00044 }

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 GetCubicVolume(), G4VCSGfaceted::GetCubicVolume(), G4BREPSolid::GetCubicVolume(), and G4BooleanSolid::GetCubicVolume().

00204 {
00205   G4int iInside=0;
00206   G4double px,py,pz,minX,maxX,minY,maxY,minZ,maxZ,volume;
00207   G4ThreeVector p;
00208   EInside in;
00209 
00210   // values needed for CalculateExtent signature
00211 
00212   G4VoxelLimits limit;                // Unlimited
00213   G4AffineTransform origin;
00214 
00215   // min max extents of pSolid along X,Y,Z
00216 
00217   this->CalculateExtent(kXAxis,limit,origin,minX,maxX);
00218   this->CalculateExtent(kYAxis,limit,origin,minY,maxY);
00219   this->CalculateExtent(kZAxis,limit,origin,minZ,maxZ);
00220 
00221   // limits
00222 
00223   if(nStat < 100)    nStat   = 100;
00224   if(epsilon > 0.01) epsilon = 0.01;
00225 
00226   for(G4int i = 0; i < nStat; i++ )
00227   {
00228     px = minX+(maxX-minX)*G4UniformRand();
00229     py = minY+(maxY-minY)*G4UniformRand();
00230     pz = minZ+(maxZ-minZ)*G4UniformRand();
00231     p  = G4ThreeVector(px,py,pz);
00232     in = this->Inside(p);
00233     if(in != kOutside) iInside++;    
00234   }
00235   volume = (maxX-minX)*(maxY-minY)*(maxZ-minZ)*iInside/nStat;
00236   return volume;
00237 }

G4double G4VSolid::EstimateSurfaceArea ( G4int  nStat,
G4double  ell 
) const [protected]

Definition at line 261 of file G4VSolid.cc.

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

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

00262 {
00263   G4int inside=0;
00264   G4double px,py,pz,minX,maxX,minY,maxY,minZ,maxZ,surf;
00265   G4ThreeVector p;
00266   EInside in;
00267 
00268   // values needed for CalculateExtent signature
00269 
00270   G4VoxelLimits limit;                // Unlimited
00271   G4AffineTransform origin;
00272 
00273   // min max extents of pSolid along X,Y,Z
00274 
00275   this->CalculateExtent(kXAxis,limit,origin,minX,maxX);
00276   this->CalculateExtent(kYAxis,limit,origin,minY,maxY);
00277   this->CalculateExtent(kZAxis,limit,origin,minZ,maxZ);
00278 
00279   // limits
00280 
00281   if(nStat < 100) { nStat = 100; }
00282 
00283   G4double dX=maxX-minX;
00284   G4double dY=maxY-minY;
00285   G4double dZ=maxZ-minZ;
00286   if(ell<=0.)          // Automatic definition of skin thickness
00287   {
00288     G4double minval=dX;
00289     if(dY<dX) { minval=dY; }
00290     if(dZ<minval) { minval=dZ; }
00291     ell=.01*minval;
00292   }
00293 
00294   G4double dd=2*ell;
00295   minX-=ell; minY-=ell; minZ-=ell; dX+=dd; dY+=dd; dZ+=dd;
00296 
00297   for(G4int i = 0; i < nStat; i++ )
00298   {
00299     px = minX+dX*G4UniformRand();
00300     py = minY+dY*G4UniformRand();
00301     pz = minZ+dZ*G4UniformRand();
00302     p  = G4ThreeVector(px,py,pz);
00303     in = this->Inside(p);
00304     if(in != kOutside)
00305     {
00306       if  (DistanceToOut(p)<ell) { inside++; }
00307     }
00308     else if(DistanceToIn(p)<ell) { inside++; }
00309   }
00310   // @@ The conformal correction can be upgraded
00311   surf = dX*dY*dZ*inside/dd/nStat;
00312   return surf;
00313 }

G4VSolid * G4VSolid::GetConstituentSolid ( G4int  no  )  [virtual]

Reimplemented in G4BooleanSolid.

Definition at line 170 of file G4VSolid.cc.

00171 { return 0; } 

const G4VSolid * G4VSolid::GetConstituentSolid ( G4int  no  )  const [virtual]

Reimplemented in G4BooleanSolid.

Definition at line 167 of file G4VSolid.cc.

Referenced by G4BooleanSolid::StackPolyhedron().

00168 { return 0; } 

G4double G4VSolid::GetCubicVolume (  )  [virtual]

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

Definition at line 188 of file G4VSolid.cc.

References EstimateCubicVolume().

Referenced by G4PSPassageCellFlux::ComputeVolume(), G4PSDoseDeposit::ComputeVolume(), G4PSCellFlux::ComputeVolume(), G4TessellatedSolid::GetCubicVolume(), G4Hype::GetCubicVolume(), G4GenericTrap::GetCubicVolume(), G4EllipticalTube::GetCubicVolume(), G4CutTubs::GetCubicVolume(), and G4LogicalVolume::GetMass().

00189 {
00190   G4int cubVolStatistics = 1000000;
00191   G4double cubVolEpsilon = 0.001;
00192   return EstimateCubicVolume(cubVolStatistics, cubVolEpsilon);
00193 }

G4DisplacedSolid * G4VSolid::GetDisplacedSolidPtr (  )  [virtual]

Reimplemented in G4DisplacedSolid.

Definition at line 176 of file G4VSolid.cc.

00177 { return 0; } 

const G4DisplacedSolid * G4VSolid::GetDisplacedSolidPtr (  )  const [virtual]

Reimplemented in G4DisplacedSolid.

Definition at line 173 of file G4VSolid.cc.

00174 { return 0; } 

virtual G4GeometryType G4VSolid::GetEntityType (  )  const [pure virtual]

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

Referenced by G4GMocrenFileSceneHandler::AddPrimitive(), G4tgbVolume::BuildSolidForDivision(), Clone(), 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 G4Box, G4Sphere, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4GenericTrap, G4Hype, G4TessellatedSolid, G4Tet, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

Definition at line 619 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().

00620 {
00621   G4VisExtent extent;
00622   G4VoxelLimits voxelLimits;  // Defaults to "infinite" limits.
00623   G4AffineTransform affineTransform;
00624   G4double vmin, vmax;
00625   CalculateExtent(kXAxis,voxelLimits,affineTransform,vmin,vmax);
00626   extent.SetXmin (vmin);
00627   extent.SetXmax (vmax);
00628   CalculateExtent(kYAxis,voxelLimits,affineTransform,vmin,vmax);
00629   extent.SetYmin (vmin);
00630   extent.SetYmax (vmax);
00631   CalculateExtent(kZAxis,voxelLimits,affineTransform,vmin,vmax);
00632   extent.SetZmin (vmin);
00633   extent.SetZmax (vmax);
00634   return extent;
00635 }

G4String G4VSolid::GetName (  )  const [inline]

Reimplemented in G4BREPSolid.

Definition at line 47 of file G4VSolid.icc.

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

00048 {
00049     return fshapeName;
00050 }       

G4ThreeVector G4VSolid::GetPointOnSurface (  )  const [virtual]

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

Definition at line 152 of file G4VSolid.cc.

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

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

00153 {
00154     std::ostringstream message;
00155     message << "Not implemented for solid: "
00156             << this->GetEntityType() << " !" << G4endl
00157             << "Returning origin.";
00158     G4Exception("G4VSolid::GetPointOnSurface()", "GeomMgt1001",
00159                 JustWarning, message);
00160     return G4ThreeVector(0,0,0);
00161 }

G4Polyhedron * G4VSolid::GetPolyhedron (  )  const [virtual]

Reimplemented in G4ReflectedSolid, G4BooleanSolid, G4DisplacedSolid, G4BREPSolid, G4CSGSolid, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4GenericTrap, G4Hype, G4Paraboloid, G4TessellatedSolid, G4Tet, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

Definition at line 647 of file G4VSolid.cc.

Referenced by G4PhysicalVolumeModel::DescribeSolid(), G4VSceneHandler::RequestPrimitives(), and G4BooleanSolid::StackPolyhedron().

00648 {
00649   return 0;
00650 }

G4double G4VSolid::GetSurfaceArea (  )  [virtual]

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

Definition at line 248 of file G4VSolid.cc.

References EstimateSurfaceArea().

Referenced by G4AdjointCrossSurfChecker::AddanExtSurfaceOfAvolume(), G4BooleanSolid::GetAreaRatio(), G4VTwistedFaceted::GetSurfaceArea(), G4TwistedTubs::GetSurfaceArea(), G4Hype::GetSurfaceArea(), G4GenericTrap::GetSurfaceArea(), G4EllipticalTube::GetSurfaceArea(), G4EllipticalCone::GetSurfaceArea(), G4Ellipsoid::GetSurfaceArea(), and G4CutTubs::GetSurfaceArea().

00249 {
00250   G4int stat = 1000000;
00251   G4double ell = -1.;
00252   return EstimateSurfaceArea(stat,ell);
00253 }

G4double G4VSolid::GetTolerance (  )  const [inline]

Definition at line 59 of file G4VSolid.icc.

References kCarTolerance.

Referenced by G4ParameterisedNavigation::ComputeStep(), and G4NavigationLogger::PreComputeStepLog().

00060 {
00061     return kCarTolerance;
00062 }

virtual EInside G4VSolid::Inside ( const G4ThreeVector p  )  const [pure virtual]

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

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

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

Definition at line 110 of file G4VSolid.cc.

References fshapeName, and kCarTolerance.

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

00111 {
00112    // Check assignment to self
00113    //
00114    if (this == &rhs)  { return *this; }
00115 
00116    // Copy data
00117    //
00118    kCarTolerance = rhs.kCarTolerance;
00119    fshapeName = rhs.fshapeName;
00120 
00121    return *this;
00122 }  

G4bool G4VSolid::operator== ( const G4VSolid s  )  const [inline]

Definition at line 35 of file G4VSolid.icc.

00036 {
00037   return (this==&right) ? true : false;
00038 }

void G4VSolid::SetName ( const G4String name  )  [inline]

Reimplemented in G4BREPSolid.

Definition at line 53 of file G4VSolid.icc.

Referenced by G4BREPSolidOpenPCone::G4BREPSolidOpenPCone(), and G4BREPSolidOpenPCone::operator=().

00054 {
00055     fshapeName=name;
00056 }       

virtual std::ostream& G4VSolid::StreamInfo ( std::ostream &  os  )  const [pure virtual]

Implemented in G4ReflectedSolid, G4BooleanSolid, G4DisplacedSolid, G4BREPSolid, G4BREPSolidBox, G4BREPSolidCone, G4BREPSolidCylinder, G4BREPSolidOpenPCone, G4BREPSolidPCone, G4BREPSolidPolyhedra, G4BREPSolidSphere, G4BREPSolidTorus, G4Box, G4Cons, G4CSGSolid, G4CutTubs, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4ExtrudedSolid, G4GenericTrap, G4Hype, G4Paraboloid, G4Polycone, G4Polyhedra, G4TessellatedSolid, G4Tet, G4TwistedBox, G4TwistedTrap, G4TwistedTrd, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

Referenced by DumpInfo(), operator<<(), G4ReflectedSolid::StreamInfo(), G4DisplacedSolid::StreamInfo(), and G4BooleanSolid::StreamInfo().

virtual G4ThreeVector G4VSolid::SurfaceNormal ( const G4ThreeVector p  )  const [pure virtual]

Implemented in G4ReflectedSolid, G4DisplacedSolid, G4IntersectionSolid, G4SubtractionSolid, G4UnionSolid, G4BREPSolid, G4BREPSolidCone, G4BREPSolidPCone, G4BREPSolidPolyhedra, G4BREPSolidSphere, G4Box, G4Cons, G4CutTubs, G4Orb, G4Para, G4Sphere, G4Torus, G4Trap, G4Trd, G4Tubs, G4Ellipsoid, G4EllipticalCone, G4EllipticalTube, G4GenericTrap, G4Hype, G4Paraboloid, G4TessellatedSolid, G4Tet, G4TwistedTubs, G4VCSGfaceted, and G4VTwistedFaceted.

Referenced by G4AuxiliaryNavServices::CheckPointExiting(), G4AuxiliaryNavServices::CheckPointOnSurface(), G4ReplicaNavigation::ComputeStep(), G4Navigator::ComputeStep(), G4ITNavigator::ComputeStep(), G4SubtractionSolid::DistanceToOut(), G4Navigator::GetLocalExitNormal(), G4ITNavigator::GetLocalExitNormal(), G4UnionSolid::Inside(), G4SubtractionSolid::Inside(), G4Navigator::LocateGlobalPointAndSetup(), G4ITNavigator::LocateGlobalPointAndSetup(), G4UnionSolid::SurfaceNormal(), G4SubtractionSolid::SurfaceNormal(), G4ReflectedSolid::SurfaceNormal(), G4IntersectionSolid::SurfaceNormal(), and G4DisplacedSolid::SurfaceNormal().


Friends And Related Function Documentation

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

Definition at line 128 of file G4VSolid.cc.

00129 {
00130     return e.StreamInfo(os);
00131 }


Field Documentation

G4double G4VSolid::kCarTolerance [protected]

Definition at line 307 of file G4VSolid.hh.

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


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:55 2013 for Geant4 by  doxygen 1.4.7