Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4DisplacedSolid Class Reference

#include <G4DisplacedSolid.hh>

Inheritance diagram for G4DisplacedSolid:
Collaboration diagram for G4DisplacedSolid:

Public Member Functions

 G4DisplacedSolid (const G4String &pName, G4VSolid *pSolid, G4RotationMatrix *rotMatrix, const G4ThreeVector &transVector)
 
 G4DisplacedSolid (const G4String &pName, G4VSolid *pSolid, const G4Transform3D &transform)
 
 G4DisplacedSolid (const G4String &pName, G4VSolid *pSolid, const G4AffineTransform directTransform)
 
virtual ~G4DisplacedSolid ()
 
EInside Inside (const G4ThreeVector &p) const
 
void Extent (G4ThreeVector &pMin, G4ThreeVector &pMax) const
 
G4bool CalculateExtent (const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) 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 CleanTransformations ()
 
G4ThreeVector GetPointOnSurface () const
 
G4GeometryType GetEntityType () const
 
G4VSolid * Clone () const
 
const G4DisplacedSolid * GetDisplacedSolidPtr () const
 
G4DisplacedSolid * GetDisplacedSolidPtr ()
 
G4VSolid * GetConstituentMovedSolid () const
 
G4AffineTransform GetTransform () const
 
void SetTransform (G4AffineTransform &)
 
G4AffineTransform GetDirectTransform () const
 
void SetDirectTransform (G4AffineTransform &)
 
G4RotationMatrix GetFrameRotation () const
 
void SetFrameRotation (const G4RotationMatrix &)
 
G4ThreeVector GetFrameTranslation () const
 
void SetFrameTranslation (const G4ThreeVector &)
 
G4RotationMatrix GetObjectRotation () const
 
void SetObjectRotation (const G4RotationMatrix &)
 
G4ThreeVector GetObjectTranslation () const
 
void SetObjectTranslation (const G4ThreeVector &)
 
std::ostream & StreamInfo (std::ostream &os) const
 
 G4DisplacedSolid (__void__ &)
 
 G4DisplacedSolid (const G4DisplacedSolid &rhs)
 
G4DisplacedSolid & operator= (const G4DisplacedSolid &rhs)
 
void DescribeYourselfTo (G4VGraphicsScene &scene) const
 
G4Polyhedron * CreatePolyhedron () const
 
G4Polyhedron * GetPolyhedron () const
 
- 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
 
virtual G4double GetCubicVolume ()
 
virtual G4double GetSurfaceArea ()
 
void DumpInfo () const
 
virtual G4VisExtent GetExtent () const
 
virtual const G4VSolid * GetConstituentSolid (G4int no) const
 
virtual G4VSolid * GetConstituentSolid (G4int no)
 
 G4VSolid (__void__ &)
 
 G4VSolid (const G4VSolid &rhs)
 
G4VSolid & operator= (const G4VSolid &rhs)
 
G4double EstimateCubicVolume (G4int nStat, G4double epsilon) const
 
G4double EstimateSurfaceArea (G4int nStat, G4double ell) const
 

Protected Attributes

G4VSolid * fPtrSolid
 
G4AffineTransform * fPtrTransform
 
G4AffineTransform * fDirectTransform
 
G4bool fRebuildPolyhedron
 
G4Polyhedron * fpPolyhedron
 
- Protected Attributes inherited from G4VSolid
G4double kCarTolerance
 

Additional Inherited Members

- Protected Member Functions inherited from G4VSolid
void CalculateClippedPolygonExtent (G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipCrossSection (G4ThreeVectorList *pVertices, const G4int pSectionIndex, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipBetweenSections (G4ThreeVectorList *pVertices, const G4int pSectionIndex, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis, G4double &pMin, G4double &pMax) const
 
void ClipPolygon (G4ThreeVectorList &pPolygon, const G4VoxelLimits &pVoxelLimit, const EAxis pAxis) const
 

Detailed Description

Definition at line 53 of file G4DisplacedSolid.hh.

Constructor & Destructor Documentation

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

Definition at line 54 of file G4DisplacedSolid.cc.

58  : G4VSolid(pName), fRebuildPolyhedron(false), fpPolyhedron(0)
59 {
60  fPtrSolid = pSolid ;
61  fPtrTransform = new G4AffineTransform(rotMatrix,transVector) ;
63  fDirectTransform = new G4AffineTransform(rotMatrix,transVector) ;
64 }
G4AffineTransform & Invert()
G4AffineTransform * fPtrTransform
G4Polyhedron * fpPolyhedron
G4AffineTransform * fDirectTransform
G4VSolid(const G4String &name)
Definition: G4VSolid.cc:61

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 70 of file G4DisplacedSolid.cc.

73  : G4VSolid(pName), fRebuildPolyhedron(false), fpPolyhedron(0)
74 {
75  fPtrSolid = pSolid ;
77  transform.getTranslation()) ;
78 
80  transform.getTranslation()) ;
81  fPtrTransform->Invert() ;
82 }
HepRotation inverse() const
G4AffineTransform & Invert()
CLHEP::HepRotation getRotation() const
G4AffineTransform * fPtrTransform
G4Polyhedron * fpPolyhedron
G4AffineTransform * fDirectTransform
G4VSolid(const G4String &name)
Definition: G4VSolid.cc:61
CLHEP::Hep3Vector getTranslation() const

Here is the call graph for this function:

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

Definition at line 89 of file G4DisplacedSolid.cc.

92  : G4VSolid(pName), fRebuildPolyhedron(false), fpPolyhedron(0)
93 {
94  fPtrSolid = pSolid ;
95  fDirectTransform = new G4AffineTransform( directTransform );
96  fPtrTransform = new G4AffineTransform( directTransform.Inverse() ) ;
97 }
G4AffineTransform Inverse() const
G4AffineTransform * fPtrTransform
G4Polyhedron * fpPolyhedron
G4AffineTransform * fDirectTransform
G4VSolid(const G4String &name)
Definition: G4VSolid.cc:61

Here is the call graph for this function:

G4DisplacedSolid::~G4DisplacedSolid ( )
virtual

Definition at line 114 of file G4DisplacedSolid.cc.

115 {
117  delete fpPolyhedron; fpPolyhedron = 0;
118 }
G4Polyhedron * fpPolyhedron

Here is the call graph for this function:

G4DisplacedSolid::G4DisplacedSolid ( __void__ &  a)

Definition at line 104 of file G4DisplacedSolid.cc.

105  : G4VSolid(a), fPtrSolid(0), fPtrTransform(0),
107 {
108 }
std::vector< ExP01TrackerHit * > a
Definition: ExP01Classes.hh:33
G4AffineTransform * fPtrTransform
G4Polyhedron * fpPolyhedron
G4AffineTransform * fDirectTransform
G4VSolid(const G4String &name)
Definition: G4VSolid.cc:61
G4DisplacedSolid::G4DisplacedSolid ( const G4DisplacedSolid &  rhs)

Definition at line 124 of file G4DisplacedSolid.cc.

125  : G4VSolid (rhs), fPtrSolid(rhs.fPtrSolid),
127 {
130 }
G4AffineTransform * fPtrTransform
G4Polyhedron * fpPolyhedron
G4AffineTransform * fDirectTransform
G4VSolid(const G4String &name)
Definition: G4VSolid.cc:61

Member Function Documentation

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

Implements G4VSolid.

Definition at line 312 of file G4DisplacedSolid.cc.

317 {
318  G4AffineTransform sumTransform ;
319  sumTransform.Product(*fDirectTransform,pTransform) ;
320  return fPtrSolid->CalculateExtent(pAxis,pVoxelLimit,sumTransform,pMin,pMax) ;
321 }
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
G4AffineTransform * fDirectTransform
G4AffineTransform & Product(const G4AffineTransform &tf1, const G4AffineTransform &tf2)

Here is the call graph for this function:

void G4DisplacedSolid::CleanTransformations ( )

Definition at line 158 of file G4DisplacedSolid.cc.

159 {
160  if(fPtrTransform)
161  {
162  delete fPtrTransform; fPtrTransform=0;
164  }
165 }
G4AffineTransform * fPtrTransform
G4AffineTransform * fDirectTransform

Here is the caller graph for this function:

G4VSolid * G4DisplacedSolid::Clone ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 444 of file G4DisplacedSolid.cc.

445 {
446  return new G4DisplacedSolid(*this);
447 }
G4DisplacedSolid(const G4String &pName, G4VSolid *pSolid, G4RotationMatrix *rotMatrix, const G4ThreeVector &transVector)

Here is the call graph for this function:

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

Reimplemented from G4VSolid.

Definition at line 409 of file G4DisplacedSolid.cc.

412 {
413  DumpInfo();
414  G4Exception("G4DisplacedSolid::ComputeDimensions()",
415  "GeomSolids0001", FatalException,
416  "Method not applicable in this context!");
417 }
void DumpInfo() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

G4Polyhedron * G4DisplacedSolid::CreatePolyhedron ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 490 of file G4DisplacedSolid.cc.

491 {
492  G4Polyhedron* polyhedron = fPtrSolid->CreatePolyhedron();
493  polyhedron
495  return polyhedron;
496 }
G4RotationMatrix GetObjectRotation() const
HepPolyhedron & Transform(const G4Transform3D &t)
G4ThreeVector GetObjectTranslation() const
HepGeom::Transform3D G4Transform3D
virtual G4Polyhedron * CreatePolyhedron() const
Definition: G4VSolid.cc:660

Here is the call graph for this function:

Here is the caller graph for this function:

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

Implements G4VSolid.

Definition at line 480 of file G4DisplacedSolid.cc.

481 {
482  scene.AddSolid (*this);
483 }
virtual void AddSolid(const G4Box &)=0

Here is the call graph for this function:

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

Implements G4VSolid.

Definition at line 350 of file G4DisplacedSolid.cc.

352 {
354  G4ThreeVector newDirection = fPtrTransform->TransformAxis(v) ;
355  return fPtrSolid->DistanceToIn(newPoint,newDirection) ;
356 }
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
G4AffineTransform * fPtrTransform
G4ThreeVector TransformPoint(const G4ThreeVector &vec) const
G4ThreeVector TransformAxis(const G4ThreeVector &axis) const

Here is the call graph for this function:

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

Implements G4VSolid.

Definition at line 364 of file G4DisplacedSolid.cc.

365 {
367  return fPtrSolid->DistanceToIn(newPoint) ;
368 }
virtual G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const =0
G4AffineTransform * fPtrTransform
G4ThreeVector TransformPoint(const G4ThreeVector &vec) const

Here is the call graph for this function:

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

Implements G4VSolid.

Definition at line 375 of file G4DisplacedSolid.cc.

380 {
381  G4ThreeVector solNorm ;
383  G4ThreeVector newDirection = fPtrTransform->TransformAxis(v) ;
384  G4double dist = fPtrSolid->DistanceToOut(newPoint,newDirection,
385  calcNorm,validNorm,&solNorm) ;
386  if(calcNorm)
387  {
388  *n = fDirectTransform->TransformAxis(solNorm) ;
389  }
390  return dist ;
391 }
G4AffineTransform * fPtrTransform
G4ThreeVector TransformPoint(const G4ThreeVector &vec) const
G4ThreeVector TransformAxis(const G4ThreeVector &axis) const
G4AffineTransform * fDirectTransform
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

Here is the call graph for this function:

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

Implements G4VSolid.

Definition at line 398 of file G4DisplacedSolid.cc.

399 {
401  return fPtrSolid->DistanceToOut(newPoint) ;
402 }
G4AffineTransform * fPtrTransform
G4ThreeVector TransformPoint(const G4ThreeVector &vec) const
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0

Here is the call graph for this function:

void G4DisplacedSolid::Extent ( G4ThreeVector &  pMin,
G4ThreeVector &  pMax 
) const
virtual

Reimplemented from G4VSolid.

Definition at line 268 of file G4DisplacedSolid.cc.

269 {
270  if (!fDirectTransform->IsRotated())
271  {
272  // Special case of pure translation
273  //
274  fPtrSolid->Extent(pMin,pMax);
276  pMin += offset;
277  pMax += offset;
278  }
279  else
280  {
281  // General case, use CalculateExtent() to find bounding box
282  //
283  G4VoxelLimits unLimit;
284  G4double xmin,xmax,ymin,ymax,zmin,zmax;
285  fPtrSolid->CalculateExtent(kXAxis,unLimit,*fDirectTransform,xmin,xmax);
286  fPtrSolid->CalculateExtent(kYAxis,unLimit,*fDirectTransform,ymin,ymax);
287  fPtrSolid->CalculateExtent(kZAxis,unLimit,*fDirectTransform,zmin,zmax);
288  pMin.set(xmin,ymin,zmin);
289  pMax.set(xmax,ymax,zmax);
290  }
291 
292  // Check correctness of the bounding box
293  //
294  if (pMin.x() >= pMax.x() || pMin.y() >= pMax.y() || pMin.z() >= pMax.z())
295  {
296  std::ostringstream message;
297  message << "Bad bounding box (min >= max) for solid: "
298  << GetName() << " !"
299  << "\npMin = " << pMin
300  << "\npMax = " << pMax;
301  G4Exception("G4DisplacedSolid::Extent()", "GeomMgt0001",
302  JustWarning, message);
303  DumpInfo();
304  }
305 }
void set(double x, double y, double z)
G4String GetName() const
virtual G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const =0
double x() const
G4bool IsRotated() const
G4ThreeVector NetTranslation() const
double z() const
void DumpInfo() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
double y() const
G4AffineTransform * fDirectTransform
double G4double
Definition: G4Types.hh:76
virtual void Extent(G4ThreeVector &pMin, G4ThreeVector &pMax) const
Definition: G4VSolid.cc:626

Here is the call graph for this function:

G4VSolid * G4DisplacedSolid::GetConstituentMovedSolid ( ) const

Definition at line 177 of file G4DisplacedSolid.cc.

178 {
179  return fPtrSolid;
180 }

Here is the caller graph for this function:

G4AffineTransform G4DisplacedSolid::GetDirectTransform ( ) const

Definition at line 198 of file G4DisplacedSolid.cc.

199 {
200  G4AffineTransform aTransform= *fDirectTransform;
201  return aTransform;
202 }
G4AffineTransform * fDirectTransform
const G4DisplacedSolid * G4DisplacedSolid::GetDisplacedSolidPtr ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 167 of file G4DisplacedSolid.cc.

168 {
169  return this;
170 }
G4DisplacedSolid * G4DisplacedSolid::GetDisplacedSolidPtr ( )
virtual

Reimplemented from G4VSolid.

Definition at line 172 of file G4DisplacedSolid.cc.

173 {
174  return this;
175 }
G4GeometryType G4DisplacedSolid::GetEntityType ( ) const
virtual

Implements G4VSolid.

Definition at line 435 of file G4DisplacedSolid.cc.

436 {
437  return G4String("G4DisplacedSolid");
438 }

Here is the caller graph for this function:

G4RotationMatrix G4DisplacedSolid::GetFrameRotation ( ) const

Definition at line 212 of file G4DisplacedSolid.cc.

213 {
215  return InvRotation;
216 }
G4RotationMatrix NetRotation() const
G4AffineTransform * fDirectTransform

Here is the call graph for this function:

G4ThreeVector G4DisplacedSolid::GetFrameTranslation ( ) const

Definition at line 226 of file G4DisplacedSolid.cc.

227 {
228  return fPtrTransform->NetTranslation();
229 }
G4ThreeVector NetTranslation() const
G4AffineTransform * fPtrTransform

Here is the call graph for this function:

G4RotationMatrix G4DisplacedSolid::GetObjectRotation ( ) const

Definition at line 239 of file G4DisplacedSolid.cc.

240 {
242  return Rotation;
243 }
G4AffineTransform * fPtrTransform
G4RotationMatrix NetRotation() const

Here is the call graph for this function:

Here is the caller graph for this function:

G4ThreeVector G4DisplacedSolid::GetObjectTranslation ( ) const

Definition at line 253 of file G4DisplacedSolid.cc.

254 {
256 }
G4ThreeVector NetTranslation() const
G4AffineTransform * fDirectTransform

Here is the call graph for this function:

Here is the caller graph for this function:

G4ThreeVector G4DisplacedSolid::GetPointOnSurface ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 425 of file G4DisplacedSolid.cc.

426 {
428  return fDirectTransform->TransformPoint(p);
429 }
const char * p
Definition: xmltok.h:285
G4ThreeVector TransformPoint(const G4ThreeVector &vec) const
virtual G4ThreeVector GetPointOnSurface() const
Definition: G4VSolid.cc:153
G4AffineTransform * fDirectTransform

Here is the call graph for this function:

G4Polyhedron * G4DisplacedSolid::GetPolyhedron ( ) const
virtual

Reimplemented from G4VSolid.

Definition at line 502 of file G4DisplacedSolid.cc.

503 {
504  if (!fpPolyhedron ||
508  {
510  fRebuildPolyhedron = false;
511  }
512  return fpPolyhedron;
513 }
G4Polyhedron * CreatePolyhedron() const
static G4int GetNumberOfRotationSteps()
G4Polyhedron * fpPolyhedron
G4int GetNumberOfRotationStepsAtTimeOfCreation() const

Here is the call graph for this function:

G4AffineTransform G4DisplacedSolid::GetTransform ( ) const

Definition at line 184 of file G4DisplacedSolid.cc.

185 {
186  G4AffineTransform aTransform = *fPtrTransform;
187  return aTransform;
188 }
G4AffineTransform * fPtrTransform
EInside G4DisplacedSolid::Inside ( const G4ThreeVector &  p) const
virtual

Implements G4VSolid.

Definition at line 327 of file G4DisplacedSolid.cc.

328 {
330  return fPtrSolid->Inside(newPoint) ;
331 }
virtual EInside Inside(const G4ThreeVector &p) const =0
G4AffineTransform * fPtrTransform
G4ThreeVector TransformPoint(const G4ThreeVector &vec) const

Here is the call graph for this function:

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

Definition at line 136 of file G4DisplacedSolid.cc.

137 {
138  // Check assignment to self
139  //
140  if (this == &rhs) { return *this; }
141 
142  // Copy base class data
143  //
144  G4VSolid::operator=(rhs);
145 
146  // Copy data
147  //
148  fPtrSolid = rhs.fPtrSolid;
149  delete fPtrTransform; delete fDirectTransform;
152  fRebuildPolyhedron = false;
153  delete fpPolyhedron; fpPolyhedron= 0;
154 
155  return *this;
156 }
G4AffineTransform * fPtrTransform
G4Polyhedron * fpPolyhedron
G4AffineTransform * fDirectTransform
G4VSolid & operator=(const G4VSolid &rhs)
Definition: G4VSolid.cc:111

Here is the call graph for this function:

void G4DisplacedSolid::SetDirectTransform ( G4AffineTransform &  transform)

Definition at line 204 of file G4DisplacedSolid.cc.

205 {
206  fDirectTransform = &transform ;
207  fRebuildPolyhedron = true;
208 }
G4AffineTransform * fDirectTransform
void G4DisplacedSolid::SetFrameRotation ( const G4RotationMatrix &  matrix)

Definition at line 218 of file G4DisplacedSolid.cc.

219 {
221  fRebuildPolyhedron = true;
222 }
void SetNetRotation(const G4RotationMatrix &rot)
G4AffineTransform * fDirectTransform

Here is the call graph for this function:

void G4DisplacedSolid::SetFrameTranslation ( const G4ThreeVector &  vector)

Definition at line 231 of file G4DisplacedSolid.cc.

232 {
234  fRebuildPolyhedron = true;
235 }
void SetNetTranslation(const G4ThreeVector &tlate)
G4AffineTransform * fPtrTransform

Here is the call graph for this function:

void G4DisplacedSolid::SetObjectRotation ( const G4RotationMatrix &  matrix)

Definition at line 245 of file G4DisplacedSolid.cc.

246 {
247  fPtrTransform->SetNetRotation(matrix);
248  fRebuildPolyhedron = true;
249 }
void SetNetRotation(const G4RotationMatrix &rot)
G4AffineTransform * fPtrTransform

Here is the call graph for this function:

void G4DisplacedSolid::SetObjectTranslation ( const G4ThreeVector &  vector)

Definition at line 258 of file G4DisplacedSolid.cc.

259 {
261  fRebuildPolyhedron = true;
262 }
void SetNetTranslation(const G4ThreeVector &tlate)
G4AffineTransform * fDirectTransform

Here is the call graph for this function:

void G4DisplacedSolid::SetTransform ( G4AffineTransform &  transform)

Definition at line 190 of file G4DisplacedSolid.cc.

191 {
192  fPtrTransform = &transform ;
193  fRebuildPolyhedron = true;
194 }
G4AffineTransform * fPtrTransform
std::ostream & G4DisplacedSolid::StreamInfo ( std::ostream &  os) const
virtual

Implements G4VSolid.

Definition at line 453 of file G4DisplacedSolid.cc.

454 {
455  os << "-----------------------------------------------------------\n"
456  << " *** Dump for Displaced solid - " << GetName() << " ***\n"
457  << " ===================================================\n"
458  << " Solid type: " << GetEntityType() << "\n"
459  << " Parameters of constituent solid: \n"
460  << "===========================================================\n";
461  fPtrSolid->StreamInfo(os);
462  os << "===========================================================\n"
463  << " Transformations: \n"
464  << " Direct transformation - translation : \n"
465  << " " << fDirectTransform->NetTranslation() << "\n"
466  << " - rotation : \n"
467  << " ";
469  os << "\n"
470  << "===========================================================\n";
471 
472  return os;
473 }
G4String GetName() const
std::ostream & print(std::ostream &os) const
Definition: RotationIO.cc:21
G4ThreeVector NetTranslation() const
virtual std::ostream & StreamInfo(std::ostream &os) const =0
G4GeometryType GetEntityType() const
G4RotationMatrix NetRotation() const
G4AffineTransform * fDirectTransform

Here is the call graph for this function:

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

Implements G4VSolid.

Definition at line 338 of file G4DisplacedSolid.cc.

339 {
342  return fDirectTransform->TransformAxis(normal) ;
343 }
static double normal(HepRandomEngine *eptr)
Definition: RandPoisson.cc:77
virtual G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const =0
G4AffineTransform * fPtrTransform
G4ThreeVector TransformPoint(const G4ThreeVector &vec) const
G4ThreeVector TransformAxis(const G4ThreeVector &axis) const
G4AffineTransform * fDirectTransform

Here is the call graph for this function:

Member Data Documentation

G4AffineTransform* G4DisplacedSolid::fDirectTransform
protected

Definition at line 165 of file G4DisplacedSolid.hh.

G4Polyhedron* G4DisplacedSolid::fpPolyhedron
mutableprotected

Definition at line 167 of file G4DisplacedSolid.hh.

G4VSolid* G4DisplacedSolid::fPtrSolid
protected

Definition at line 163 of file G4DisplacedSolid.hh.

G4AffineTransform* G4DisplacedSolid::fPtrTransform
protected

Definition at line 164 of file G4DisplacedSolid.hh.

G4bool G4DisplacedSolid::fRebuildPolyhedron
mutableprotected

Definition at line 166 of file G4DisplacedSolid.hh.


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