96   : 
G4VSolid(rhs), fPtrSolid(rhs.fPtrSolid), fpPolyhedron(0)
 
  111   if (
this == &rhs)  { 
return *
this; }
 
  137   return G4String(
"G4ReflectedSolid");
 
  280   G4bool existsAfterClip = false ;
 
  288   existsAfterClip = 
false;
 
  295   G4Transform3D transform3D  = pTransform3D*(*fDirectTransform3D);
 
  305     vertices->reserve(8);
 
  308     tmpPoint    = transform3D*
G4Point3D(vertex0);
 
  309     vertex0     = 
G4ThreeVector(tmpPoint.x(),tmpPoint.y(),tmpPoint.z());
 
  310     vertices->push_back(vertex0);
 
  313     tmpPoint    = transform3D*
G4Point3D(vertex1);
 
  314     vertex1     = 
G4ThreeVector(tmpPoint.x(),tmpPoint.y(),tmpPoint.z());
 
  315     vertices->push_back(vertex1);
 
  318     tmpPoint    = transform3D*
G4Point3D(vertex2);
 
  319     vertex2     = 
G4ThreeVector(tmpPoint.x(),tmpPoint.y(),tmpPoint.z());
 
  320     vertices->push_back(vertex2);
 
  323     tmpPoint    = transform3D*
G4Point3D(vertex3);
 
  324     vertex3     = 
G4ThreeVector(tmpPoint.x(),tmpPoint.y(),tmpPoint.z());
 
  325     vertices->push_back(vertex3);
 
  328     tmpPoint    = transform3D*
G4Point3D(vertex4);
 
  329     vertex4     = 
G4ThreeVector(tmpPoint.x(),tmpPoint.y(),tmpPoint.z());
 
  330     vertices->push_back(vertex4);
 
  333     tmpPoint    = transform3D*
G4Point3D(vertex5);
 
  334     vertex5     = 
G4ThreeVector(tmpPoint.x(),tmpPoint.y(),tmpPoint.z());
 
  335     vertices->push_back(vertex5);
 
  338     tmpPoint    = transform3D*
G4Point3D(vertex6);
 
  339     vertex6     = 
G4ThreeVector(tmpPoint.x(),tmpPoint.y(),tmpPoint.z());
 
  340     vertices->push_back(vertex6);
 
  343     tmpPoint    = transform3D*
G4Point3D(vertex7);
 
  344     vertex7     = 
G4ThreeVector(tmpPoint.x(),tmpPoint.y(),tmpPoint.z());
 
  345     vertices->push_back(vertex7);
 
  352                 "Error in allocation of vertices. Out of memory !");
 
  359     if (pVoxelLimit.
IsLimited(pAxis) == 
false) 
 
  363         existsAfterClip = true ;
 
  380         existsAfterClip = true ;
 
  413       existsAfterClip = true ;
 
  419   return existsAfterClip;
 
  449   G4Point3D newN = (*fDirectTransform3D)*
G4Point3D(normal) ;
 
  464   G4Point3D newDirection = (*fDirectTransform3D)*
G4Point3D(v) ;
 
  465   newDirection.unit() ;
 
  468        G4ThreeVector(newDirection.x(),newDirection.y(),newDirection.z())) ;   
 
  498   G4Point3D newDirection = (*fDirectTransform3D)*
G4Point3D(v);
 
  499   newDirection.unit() ;
 
  504               G4ThreeVector(newDirection.x(),newDirection.y(),newDirection.z()),
 
  505               calcNorm, validNorm, &solNorm) ;
 
  508     G4Point3D newN = (*fDirectTransform3D)*
G4Point3D(solNorm);
 
  537   G4Exception(
"G4ReflectedSolid::ComputeDimensions()",
 
  539                "Method not applicable in this context!");
 
  552   return G4ThreeVector(newPoint.x(),newPoint.y(),newPoint.z());
 
  571   os << 
"-----------------------------------------------------------\n" 
  572      << 
"    *** Dump for Reflected solid - " << 
GetName() << 
" ***\n" 
  573      << 
"    ===================================================\n" 
  575      << 
" Parameters of constituent solid: \n" 
  576      << 
"===========================================================\n";
 
  578   os << 
"===========================================================\n" 
  579      << 
" Transformations: \n" 
  580      << 
"    Direct transformation - translation : \n" 
  582      << 
"                          - rotation    : \n" 
  586      << 
"===========================================================\n";
 
  616     std::ostringstream message;
 
  617     message << 
"Solid - " << 
GetName()
 
  618             << 
" - original solid has no" << 
G4endl 
  619             << 
"corresponding polyhedron. Returning NULL!";
 
  620     G4Exception(
"G4ReflectedSolid::CreatePolyhedron()",
 
void ClipCrossSection(G4ThreeVectorList *pVertices, const G4int pSectionIndex, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const 
 
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
 
G4ThreeVector GetObjectTranslation() const 
 
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const 
 
void SetTransform(G4AffineTransform &)
 
static const G4double kInfinity
 
G4double GetMinYExtent() const 
 
void SetDirectTransform3D(G4Transform3D &)
 
G4RotationMatrix GetObjectRotation() const 
 
CLHEP::Hep3Vector G4ThreeVector
 
std::ostream & StreamInfo(std::ostream &os) const 
 
CLHEP::HepRotation G4RotationMatrix
 
G4RotationMatrix GetFrameRotation() const 
 
G4Polyhedron * GetPolyhedron() const 
 
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const 
 
EInside Inside(const G4ThreeVector &p) const 
 
G4AffineTransform GetDirectTransform() const 
 
HepGeom::Point3D< G4double > G4Point3D
 
void SetFrameTranslation(const G4ThreeVector &)
 
G4ReflectedSolid & operator=(const G4ReflectedSolid &rhs)
 
virtual void AddSolid(const G4Box &)=0
 
G4Transform3D * fDirectTransform3D
 
void SetObjectTranslation(const G4ThreeVector &)
 
static double normal(HepRandomEngine *eptr)
 
G4AffineTransform * fDirectTransform
 
void DescribeYourselfTo(G4VGraphicsScene &scene) const 
 
G4Transform3D GetTransform3D() const 
 
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
 
G4double GetMaxXExtent() const 
 
G4double GetMinZExtent() const 
 
virtual std::ostream & StreamInfo(std::ostream &os) const =0
 
void SetDirectTransform(G4AffineTransform &)
 
virtual ~G4ReflectedSolid()
 
virtual EInside Inside(const G4ThreeVector &p) const =0
 
void SetTransform3D(G4Transform3D &)
 
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
 
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const 
 
G4Transform3D * fPtrTransform3D
 
void SetFrameRotation(const G4RotationMatrix &)
 
std::vector< G4ThreeVector > G4ThreeVectorList
 
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
 
virtual G4Polyhedron * CreatePolyhedron() const 
 
virtual G4GeometryType GetEntityType() const 
 
G4VSolid * GetConstituentMovedSolid() const 
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
G4double GetMinXExtent() const 
 
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const 
 
G4double GetMaxZExtent() const 
 
virtual G4ThreeVector GetPointOnSurface() const 
 
G4AffineTransform * fPtrTransform
 
void SetObjectRotation(const G4RotationMatrix &)
 
G4Polyhedron * fpPolyhedron
 
G4ReflectedSolid(const G4String &pName, G4VSolid *pSolid, const G4Transform3D &transform)
 
G4double GetMaxYExtent() const 
 
G4VSolid & operator=(const G4VSolid &rhs)
 
G4int GetNumberOfRotationStepsAtTimeOfCreation() const 
 
G4AffineTransform GetTransform() const 
 
G4Polyhedron * CreatePolyhedron() const 
 
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
 
G4double GetMaxExtent(const EAxis pAxis) const 
 
G4ThreeVector GetPointOnSurface() const 
 
G4ThreeVector GetFrameTranslation() const 
 
G4Transform3D GetDirectTransform3D() const 
 
void ClipBetweenSections(G4ThreeVectorList *pVertices, const G4int pSectionIndex, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const 
 
G4double GetMinExtent(const EAxis pAxis) const 
 
virtual const G4ReflectedSolid * GetReflectedSolidPtr() const