Geant4  10.02.p03
G4UnionSolid Class Reference

#include <G4UnionSolid.hh>

Inheritance diagram for G4UnionSolid:
Collaboration diagram for G4UnionSolid:

Public Member Functions

 G4UnionSolid (const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
 
 G4UnionSolid (const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB, G4RotationMatrix *rotMatrix, const G4ThreeVector &transVector)
 
 G4UnionSolid (const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB, const G4Transform3D &transform)
 
virtual ~G4UnionSolid ()
 
G4GeometryType GetEntityType () const
 
G4VSolidClone () const
 
 G4UnionSolid (__void__ &)
 
 G4UnionSolid (const G4UnionSolid &rhs)
 
G4UnionSolidoperator= (const G4UnionSolid &rhs)
 
G4bool CalculateExtent (const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
 
EInside Inside (const G4ThreeVector &p) const
 
G4ThreeVector SurfaceNormal (const G4ThreeVector &p) const
 
G4double DistanceToIn (const G4ThreeVector &p, const G4ThreeVector &v) const
 
G4double DistanceToIn (const G4ThreeVector &p) const
 
G4double DistanceToOut (const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
 
G4double DistanceToOut (const G4ThreeVector &p) const
 
void ComputeDimensions (G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
 
void DescribeYourselfTo (G4VGraphicsScene &scene) const
 
G4PolyhedronCreatePolyhedron () const
 
- Public Member Functions inherited from G4BooleanSolid
 G4BooleanSolid (const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
 
 G4BooleanSolid (const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB, G4RotationMatrix *rotMatrix, const G4ThreeVector &transVector)
 
 G4BooleanSolid (const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB, const G4Transform3D &transform)
 
virtual ~G4BooleanSolid ()
 
virtual const G4VSolidGetConstituentSolid (G4int no) const
 
virtual G4VSolidGetConstituentSolid (G4int no)
 
G4double GetCubicVolume ()
 
G4double GetSurfaceArea ()
 
virtual G4PolyhedronGetPolyhedron () const
 
std::ostream & StreamInfo (std::ostream &os) const
 
G4int GetCubVolStatistics () const
 
G4double GetCubVolEpsilon () const
 
void SetCubVolStatistics (G4int st)
 
void SetCubVolEpsilon (G4double ep)
 
G4int GetAreaStatistics () const
 
G4double GetAreaAccuracy () const
 
void SetAreaStatistics (G4int st)
 
void SetAreaAccuracy (G4double ep)
 
G4ThreeVector GetPointOnSurface () const
 
 G4BooleanSolid (__void__ &)
 
 G4BooleanSolid (const G4BooleanSolid &rhs)
 
G4BooleanSolidoperator= (const G4BooleanSolid &rhs)
 
- Public Member Functions inherited from G4VSolid
 G4VSolid (const G4String &name)
 
virtual ~G4VSolid ()
 
G4bool operator== (const G4VSolid &s) const
 
G4String GetName () const
 
void SetName (const G4String &name)
 
G4double GetTolerance () const
 
void DumpInfo () const
 
virtual G4VisExtent GetExtent () const
 
virtual const G4DisplacedSolidGetDisplacedSolidPtr () const
 
virtual G4DisplacedSolidGetDisplacedSolidPtr ()
 
 G4VSolid (__void__ &)
 
 G4VSolid (const G4VSolid &rhs)
 
G4VSolidoperator= (const G4VSolid &rhs)
 
G4double EstimateCubicVolume (G4int nStat, G4double epsilon) const
 
G4double EstimateSurfaceArea (G4int nStat, G4double ell) const
 

Additional Inherited Members

- Protected Member Functions inherited from G4BooleanSolid
G4PolyhedronStackPolyhedron (HepPolyhedronProcessor &, const G4VSolid *) const
 
G4double GetAreaRatio () const
 
- Protected Member Functions inherited from G4VSolid
void CalculateClippedPolygonExtent (G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipCrossSection (G4ThreeVectorList *pVertices, const G4int pSectionIndex, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipBetweenSections (G4ThreeVectorList *pVertices, const G4int pSectionIndex, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipPolygon (G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis) const
 
- Protected Attributes inherited from G4BooleanSolid
G4VSolidfPtrSolidA
 
G4VSolidfPtrSolidB
 
G4double fAreaRatio
 
- Protected Attributes inherited from G4VSolid
G4double kCarTolerance
 

Detailed Description

Definition at line 52 of file G4UnionSolid.hh.

Constructor & Destructor Documentation

◆ G4UnionSolid() [1/5]

G4UnionSolid::G4UnionSolid ( const G4String pName,
G4VSolid pSolidA,
G4VSolid pSolidB 
)

Definition at line 58 of file G4UnionSolid.cc.

61  : G4BooleanSolid(pName,pSolidA,pSolidB)
62 {
63 }
G4BooleanSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
Here is the caller graph for this function:

◆ G4UnionSolid() [2/5]

G4UnionSolid::G4UnionSolid ( const G4String pName,
G4VSolid pSolidA,
G4VSolid pSolidB,
G4RotationMatrix rotMatrix,
const G4ThreeVector transVector 
)

Definition at line 69 of file G4UnionSolid.cc.

74  : G4BooleanSolid(pName,pSolidA,pSolidB,rotMatrix,transVector)
75 
76 {
77 }
G4BooleanSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)

◆ G4UnionSolid() [3/5]

G4UnionSolid::G4UnionSolid ( const G4String pName,
G4VSolid pSolidA,
G4VSolid pSolidB,
const G4Transform3D transform 
)

Definition at line 83 of file G4UnionSolid.cc.

87  : G4BooleanSolid(pName,pSolidA,pSolidB,transform)
88 {
89 }
G4BooleanSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)

◆ ~G4UnionSolid()

G4UnionSolid::~G4UnionSolid ( )
virtual

Definition at line 105 of file G4UnionSolid.cc.

106 {
107 }

◆ G4UnionSolid() [4/5]

G4UnionSolid::G4UnionSolid ( __void__ &  a)

Definition at line 96 of file G4UnionSolid.cc.

97  : G4BooleanSolid(a)
98 {
99 }
G4BooleanSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)

◆ G4UnionSolid() [5/5]

G4UnionSolid::G4UnionSolid ( const G4UnionSolid rhs)

Definition at line 113 of file G4UnionSolid.cc.

114  : G4BooleanSolid (rhs)
115 {
116 }
G4BooleanSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)

Member Function Documentation

◆ CalculateExtent()

G4bool G4UnionSolid::CalculateExtent ( const EAxis  pAxis,
const G4VoxelLimits pVoxelLimit,
const G4AffineTransform pTransform,
G4double pMin,
G4double pMax 
) const
virtual

Implements G4VSolid.

Definition at line 140 of file G4UnionSolid.cc.

145 {
146  G4bool touchesA, touchesB, out ;
147  G4double minA = kInfinity, minB = kInfinity,
148  maxA = -kInfinity, maxB = -kInfinity;
149 
150  touchesA = fPtrSolidA->CalculateExtent( pAxis, pVoxelLimit,
151  pTransform, minA, maxA);
152  touchesB= fPtrSolidB->CalculateExtent( pAxis, pVoxelLimit,
153  pTransform, minB, maxB);
154  if( touchesA || touchesB )
155  {
156  pMin = std::min( minA, minB );
157  pMax = std::max( maxA, maxB );
158  out = true ;
159  }
160  else out = false ;
161 
162  return out ; // It exists in this slice if either one does.
163 }
G4VSolid * fPtrSolidB
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
static const G4double kInfinity
Definition: geomdefs.hh:42
bool G4bool
Definition: G4Types.hh:79
G4VSolid * fPtrSolidA
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

◆ Clone()

G4VSolid * G4UnionSolid::Clone ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 456 of file G4UnionSolid.cc.

457 {
458  return new G4UnionSolid(*this);
459 }
G4UnionSolid(const G4String &pName, G4VSolid *pSolidA, G4VSolid *pSolidB)
Definition: G4UnionSolid.cc:58
Here is the call graph for this function:

◆ ComputeDimensions()

void G4UnionSolid::ComputeDimensions ( G4VPVParameterisation p,
const G4int  n,
const G4VPhysicalVolume pRep 
)
virtual

Reimplemented from G4VSolid.

Definition at line 466 of file G4UnionSolid.cc.

469 {
470 }

◆ CreatePolyhedron()

G4Polyhedron * G4UnionSolid::CreatePolyhedron ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 487 of file G4UnionSolid.cc.

488 {
490  // Stack components and components of components recursively
491  // See G4BooleanSolid::StackPolyhedron
492  G4Polyhedron* top = StackPolyhedron(processor, this);
493  G4Polyhedron* result = new G4Polyhedron(*top);
494  if (processor.execute(*result)) { return result; }
495  else { return 0; }
496 }
#define processor
Definition: xmlparse.cc:617
G4Polyhedron * StackPolyhedron(HepPolyhedronProcessor &, const G4VSolid *) const
bool execute(HepPolyhedron &)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DescribeYourselfTo()

void G4UnionSolid::DescribeYourselfTo ( G4VGraphicsScene scene) const
virtual

Implements G4VSolid.

Definition at line 477 of file G4UnionSolid.cc.

478 {
479  scene.AddSolid (*this);
480 }
virtual void AddSolid(const G4Box &)=0
Here is the call graph for this function:

◆ DistanceToIn() [1/2]

G4double G4UnionSolid::DistanceToIn ( const G4ThreeVector p,
const G4ThreeVector v 
) const
virtual

Implements G4VSolid.

Definition at line 253 of file G4UnionSolid.cc.

255 {
256 #ifdef G4BOOLDEBUG
257  if( Inside(p) == kInside )
258  {
259  G4cout << "WARNING - Invalid call in "
260  << "G4UnionSolid::DistanceToIn(p,v)" << G4endl
261  << " Point p is inside !" << G4endl;
262  G4cout << " p = " << p << G4endl;
263  G4cout << " v = " << v << G4endl;
264  G4cerr << "WARNING - Invalid call in "
265  << "G4UnionSolid::DistanceToIn(p,v)" << G4endl
266  << " Point p is inside !" << G4endl;
267  G4cerr << " p = " << p << G4endl;
268  G4cerr << " v = " << v << G4endl;
269  }
270 #endif
271 
272  return std::min(fPtrSolidA->DistanceToIn(p,v),
273  fPtrSolidB->DistanceToIn(p,v) ) ;
274 }
G4VSolid * fPtrSolidB
G4GLOB_DLL std::ostream G4cout
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
G4VSolid * fPtrSolidA
#define G4endl
Definition: G4ios.hh:61
EInside Inside(const G4ThreeVector &p) const
G4GLOB_DLL std::ostream G4cerr
Here is the call graph for this function:

◆ DistanceToIn() [2/2]

G4double G4UnionSolid::DistanceToIn ( const G4ThreeVector p) const
virtual

Implements G4VSolid.

Definition at line 282 of file G4UnionSolid.cc.

283 {
284 #ifdef G4BOOLDEBUG
285  if( Inside(p) == kInside )
286  {
287  G4cout << "WARNING - Invalid call in "
288  << "G4UnionSolid::DistanceToIn(p)" << G4endl
289  << " Point p is inside !" << G4endl;
290  G4cout << " p = " << p << G4endl;
291  G4cerr << "WARNING - Invalid call in "
292  << "G4UnionSolid::DistanceToIn(p)" << G4endl
293  << " Point p is inside !" << G4endl;
294  G4cerr << " p = " << p << G4endl;
295  }
296 #endif
297  G4double distA = fPtrSolidA->DistanceToIn(p) ;
298  G4double distB = fPtrSolidB->DistanceToIn(p) ;
299  G4double safety = std::min(distA,distB) ;
300  if(safety < 0.0) safety = 0.0 ;
301  return safety ;
302 }
G4VSolid * fPtrSolidB
G4GLOB_DLL std::ostream G4cout
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
G4VSolid * fPtrSolidA
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
EInside Inside(const G4ThreeVector &p) const
G4GLOB_DLL std::ostream G4cerr
Here is the call graph for this function:

◆ DistanceToOut() [1/2]

G4double G4UnionSolid::DistanceToOut ( const G4ThreeVector p,
const G4ThreeVector v,
const G4bool  calcNorm = false,
G4bool validNorm = 0,
G4ThreeVector n = 0 
) const
virtual

Implements G4VSolid.

Definition at line 309 of file G4UnionSolid.cc.

314 {
315  G4double dist = 0.0, disTmp = 0.0 ;
316  G4ThreeVector normTmp;
317  G4ThreeVector* nTmp= &normTmp;
318 
319  if( Inside(p) == kOutside )
320  {
321 #ifdef G4BOOLDEBUG
322  G4cout << "Position:" << G4endl << G4endl;
323  G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl;
324  G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl;
325  G4cout << "p.z() = " << p.z()/mm << " mm" << G4endl << G4endl;
326  G4cout << "Direction:" << G4endl << G4endl;
327  G4cout << "v.x() = " << v.x() << G4endl;
328  G4cout << "v.y() = " << v.y() << G4endl;
329  G4cout << "v.z() = " << v.z() << G4endl << G4endl;
330  G4cout << "WARNING - Invalid call in "
331  << "G4UnionSolid::DistanceToOut(p,v)" << G4endl
332  << " Point p is outside !" << G4endl;
333  G4cout << " p = " << p << G4endl;
334  G4cout << " v = " << v << G4endl;
335  G4cerr << "WARNING - Invalid call in "
336  << "G4UnionSolid::DistanceToOut(p,v)" << G4endl
337  << " Point p is outside !" << G4endl;
338  G4cerr << " p = " << p << G4endl;
339  G4cerr << " v = " << v << G4endl;
340 #endif
341  }
342  else
343  {
344  EInside positionA = fPtrSolidA->Inside(p) ;
345  // EInside positionB = fPtrSolidB->Inside(p) ;
346 
347  if( positionA != kOutside )
348  {
349  do // Loop checking, 13.08.2015, G.Cosmo
350  {
351  disTmp = fPtrSolidA->DistanceToOut(p+dist*v,v,calcNorm,
352  validNorm,nTmp);
353  dist += disTmp ;
354 
355  if(fPtrSolidB->Inside(p+dist*v) != kOutside)
356  {
357  disTmp = fPtrSolidB->DistanceToOut(p+dist*v,v,calcNorm,
358  validNorm,nTmp);
359  dist += disTmp ;
360  }
361  }
362  while( (fPtrSolidA->Inside(p+dist*v) != kOutside)
363  && (disTmp > 0.5*kCarTolerance) );
364  }
365  else // if( positionB != kOutside )
366  {
367  do // Loop checking, 13.08.2015, G.Cosmo
368  {
369  disTmp = fPtrSolidB->DistanceToOut(p+dist*v,v,calcNorm,
370  validNorm,nTmp);
371  dist += disTmp ;
372 
373  if(fPtrSolidA->Inside(p+dist*v) != kOutside)
374  {
375  disTmp = fPtrSolidA->DistanceToOut(p+dist*v,v,calcNorm,
376  validNorm,nTmp);
377  dist += disTmp ;
378  }
379  }
380  while( (fPtrSolidB->Inside(p+dist*v) != kOutside)
381  && (disTmp > 0.5*kCarTolerance) );
382  }
383  }
384  if( calcNorm )
385  {
386  *validNorm = false ;
387  *n = *nTmp ;
388  }
389  return dist ;
390 }
G4VSolid * fPtrSolidB
G4GLOB_DLL std::ostream G4cout
virtual EInside Inside(const G4ThreeVector &p) const =0
double x() const
double y() const
EInside
Definition: geomdefs.hh:58
double z() const
G4VSolid * fPtrSolidA
#define G4endl
Definition: G4ios.hh:61
G4double kCarTolerance
Definition: G4VSolid.hh:304
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
static const double mm
Definition: G4SIunits.hh:114
EInside Inside(const G4ThreeVector &p) const
G4GLOB_DLL std::ostream G4cerr
Here is the call graph for this function:

◆ DistanceToOut() [2/2]

G4double G4UnionSolid::DistanceToOut ( const G4ThreeVector p) const
virtual

Implements G4VSolid.

Definition at line 397 of file G4UnionSolid.cc.

398 {
399  G4double distout = 0.0;
400  if( Inside(p) == kOutside )
401  {
402 #ifdef G4BOOLDEBUG
403  G4cout << "WARNING - Invalid call in "
404  << "G4UnionSolid::DistanceToOut(p)" << G4endl
405  << " Point p is outside !" << G4endl;
406  G4cout << " p = " << p << G4endl;
407  G4cerr << "WARNING - Invalid call in "
408  << "G4UnionSolid::DistanceToOut(p)" << G4endl
409  << " Point p is outside !" << G4endl;
410  G4cerr << " p = " << p << G4endl;
411 #endif
412  }
413  else
414  {
415  EInside positionA = fPtrSolidA->Inside(p) ;
416  EInside positionB = fPtrSolidB->Inside(p) ;
417 
418  // Is this equivalent ??
419  // if( ! ( (positionA == kOutside)) &&
420  // (positionB == kOutside)) )
421  if((positionA == kInside && positionB == kInside ) ||
422  (positionA == kInside && positionB == kSurface ) ||
423  (positionA == kSurface && positionB == kInside ) )
424  {
425  distout= std::max(fPtrSolidA->DistanceToOut(p),
426  fPtrSolidB->DistanceToOut(p) ) ;
427  }
428  else
429  {
430  if(positionA == kOutside)
431  {
432  distout= fPtrSolidB->DistanceToOut(p) ;
433  }
434  else
435  {
436  distout= fPtrSolidA->DistanceToOut(p) ;
437  }
438  }
439  }
440  return distout;
441 }
G4VSolid * fPtrSolidB
G4GLOB_DLL std::ostream G4cout
virtual EInside Inside(const G4ThreeVector &p) const =0
EInside
Definition: geomdefs.hh:58
G4VSolid * fPtrSolidA
#define G4endl
Definition: G4ios.hh:61
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
EInside Inside(const G4ThreeVector &p) const
G4GLOB_DLL std::ostream G4cerr
Here is the call graph for this function:

◆ GetEntityType()

G4GeometryType G4UnionSolid::GetEntityType ( ) const
virtual

Reimplemented from G4BooleanSolid.

Definition at line 447 of file G4UnionSolid.cc.

448 {
449  return G4String("G4UnionSolid");
450 }

◆ Inside()

EInside G4UnionSolid::Inside ( const G4ThreeVector p) const
virtual

Implements G4VSolid.

Definition at line 171 of file G4UnionSolid.cc.

172 {
173  EInside positionA = fPtrSolidA->Inside(p);
174  if (positionA == kInside) { return kInside; }
175 
176  static const G4double rtol
178  EInside positionB = fPtrSolidB->Inside(p);
179 
180  if( positionB == kInside ||
181  ( positionA == kSurface && positionB == kSurface &&
182  ( fPtrSolidA->SurfaceNormal(p) +
183  fPtrSolidB->SurfaceNormal(p) ).mag2() < rtol ) )
184  {
185  return kInside;
186  }
187  else
188  {
189  if( ( positionB == kSurface ) || ( positionA == kSurface ) )
190  { return kSurface; }
191  else
192  { return kOutside; }
193  }
194 }
G4VSolid * fPtrSolidB
G4double GetRadialTolerance() const
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
EInside
Definition: geomdefs.hh:58
G4VSolid * fPtrSolidA
double G4double
Definition: G4Types.hh:76
static G4GeometryTolerance * GetInstance()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

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

Definition at line 122 of file G4UnionSolid.cc.

123 {
124  // Check assignment to self
125  //
126  if (this == &rhs) { return *this; }
127 
128  // Copy base class data
129  //
131 
132  return *this;
133 }
G4BooleanSolid & operator=(const G4BooleanSolid &rhs)
Here is the call graph for this function:

◆ SurfaceNormal()

G4ThreeVector G4UnionSolid::SurfaceNormal ( const G4ThreeVector p) const
virtual

Implements G4VSolid.

Definition at line 201 of file G4UnionSolid.cc.

202 {
204 
205 #ifdef G4BOOLDEBUG
206  if( Inside(p) == kOutside )
207  {
208  G4cout << "WARNING - Invalid call in "
209  << "G4UnionSolid::SurfaceNormal(p)" << G4endl
210  << " Point p is outside !" << G4endl;
211  G4cout << " p = " << p << G4endl;
212  G4cerr << "WARNING - Invalid call in "
213  << "G4UnionSolid::SurfaceNormal(p)" << G4endl
214  << " Point p is outside !" << G4endl;
215  G4cerr << " p = " << p << G4endl;
216  }
217 #endif
218 
219  if(fPtrSolidA->Inside(p) == kSurface && fPtrSolidB->Inside(p) != kInside)
220  {
221  normal= fPtrSolidA->SurfaceNormal(p) ;
222  }
223  else if(fPtrSolidB->Inside(p) == kSurface &&
224  fPtrSolidA->Inside(p) != kInside)
225  {
226  normal= fPtrSolidB->SurfaceNormal(p) ;
227  }
228  else
229  {
230  normal= fPtrSolidA->SurfaceNormal(p) ;
231 #ifdef G4BOOLDEBUG
232  if(Inside(p)==kInside)
233  {
234  G4cout << "WARNING - Invalid call in "
235  << "G4UnionSolid::SurfaceNormal(p)" << G4endl
236  << " Point p is inside !" << G4endl;
237  G4cout << " p = " << p << G4endl;
238  G4cerr << "WARNING - Invalid call in "
239  << "G4UnionSolid::SurfaceNormal(p)" << G4endl
240  << " Point p is inside !" << G4endl;
241  G4cerr << " p = " << p << G4endl;
242  }
243 #endif
244  }
245  return normal;
246 }
G4VSolid * fPtrSolidB
static double normal(HepRandomEngine *eptr)
Definition: RandPoisson.cc:77
G4GLOB_DLL std::ostream G4cout
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
G4VSolid * fPtrSolidA
#define G4endl
Definition: G4ios.hh:61
EInside Inside(const G4ThreeVector &p) const
G4GLOB_DLL std::ostream G4cerr
Here is the call graph for this function:

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