G4BREPSolidCone Class Reference

#include <G4BREPSolidCone.hh>

Inheritance diagram for G4BREPSolidCone:

G4BREPSolid G4VSolid

Public Member Functions

 G4BREPSolidCone (const G4String &name, const G4ThreeVector &origin, const G4ThreeVector &axis, const G4ThreeVector &direction, G4double length, G4double radius, G4double large_radius)
 ~G4BREPSolidCone ()
void Initialize ()
EInside Inside (register const G4ThreeVector &Pt) const
G4ThreeVector SurfaceNormal (const G4ThreeVector &p) const
G4double DistanceToIn (const G4ThreeVector &p) const
G4double DistanceToIn (register const G4ThreeVector &p, register const G4ThreeVector &v) const
G4double DistanceToOut (register const G4ThreeVector &p, register const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
G4double DistanceToOut (const G4ThreeVector &p) const
G4VSolidClone () const
std::ostream & StreamInfo (std::ostream &os) const
 G4BREPSolidCone (__void__ &)
 G4BREPSolidCone (const G4BREPSolidCone &rhs)
G4BREPSolidConeoperator= (const G4BREPSolidCone &rhs)

Data Structures

struct  G4BREPConeParams

Detailed Description

Definition at line 52 of file G4BREPSolidCone.hh.


Constructor & Destructor Documentation

G4BREPSolidCone::G4BREPSolidCone ( const G4String name,
const G4ThreeVector origin,
const G4ThreeVector axis,
const G4ThreeVector direction,
G4double  length,
G4double  radius,
G4double  large_radius 
)

Definition at line 41 of file G4BREPSolidCone.cc.

References G4BREPSolid::active, and G4BREPSolid::nb_of_surfaces.

Referenced by Clone().

00048   : G4BREPSolid(name)
00049 {
00050   nb_of_surfaces = 3;
00051   active=1;
00052   
00053   // Save constructor parameters
00054   constructorParams.origin       = origin;
00055   constructorParams.axis         = axis;
00056   constructorParams.direction    = direction;
00057   constructorParams.length       = length;
00058   constructorParams.radius       = radius;
00059   constructorParams.large_radius = large_radius;
00060   
00061   InitializeCone();
00062 }

G4BREPSolidCone::~G4BREPSolidCone (  ) 

Definition at line 69 of file G4BREPSolidCone.cc.

00070 {
00071 }

G4BREPSolidCone::G4BREPSolidCone ( __void__ &   ) 

Definition at line 64 of file G4BREPSolidCone.cc.

00065   : G4BREPSolid(a)
00066 {
00067 }

G4BREPSolidCone::G4BREPSolidCone ( const G4BREPSolidCone rhs  ) 

Definition at line 73 of file G4BREPSolidCone.cc.

References constructorParams.

00074   : G4BREPSolid(rhs)
00075 {
00076   constructorParams.origin       = rhs.constructorParams.origin;
00077   constructorParams.axis         = rhs.constructorParams.axis;
00078   constructorParams.direction    = rhs.constructorParams.direction;
00079   constructorParams.length       = rhs.constructorParams.length;
00080   constructorParams.radius       = rhs.constructorParams.radius;
00081   constructorParams.large_radius = rhs.constructorParams.large_radius;
00082   
00083   InitializeCone();
00084 }


Member Function Documentation

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

Reimplemented from G4BREPSolid.

Definition at line 268 of file G4BREPSolidCone.cc.

References G4BREPSolidCone().

00269 {
00270   return new G4BREPSolidCone(*this);
00271 }

G4double G4BREPSolidCone::DistanceToIn ( register const G4ThreeVector p,
register const G4ThreeVector v 
) const [virtual]

Reimplemented from G4BREPSolid.

Definition at line 218 of file G4BREPSolidCone.cc.

References G4Surface::GetDistance(), G4BREPSolid::Intersect(), G4BREPSolid::Reset(), G4BREPSolid::ShortestDistance, and G4BREPSolid::SurfaceVec.

00220 {
00221   Reset();  
00222   G4Vector3D Pttmp(Pt);
00223   G4Vector3D Vtmp(V);   
00224   //  G4double kInfinity = 10e20;
00225   G4Ray r(Pttmp, Vtmp);
00226 
00227   if(SurfaceVec[0]->Intersect( r ))
00228   {
00229     ShortestDistance = SurfaceVec[0]->GetDistance();
00230     return ShortestDistance;
00231   }
00232   return kInfinity; 
00233 }

G4double G4BREPSolidCone::DistanceToIn ( const G4ThreeVector p  )  const [virtual]

Reimplemented from G4BREPSolid.

Definition at line 207 of file G4BREPSolidCone.cc.

References G4BREPSolid::SurfaceVec.

00208 {
00209   G4double dist1 = std::fabs(SurfaceVec[0]->HowNear(Pt));
00210   G4double dist2 = std::fabs(SurfaceVec[1]->ClosestDistanceToPoint(Pt));
00211   G4double dist3 = std::fabs(SurfaceVec[2]->ClosestDistanceToPoint(Pt));  
00212   if(dist1 > dist2) dist1 = dist2;
00213   if(dist1 > dist3) dist1 = dist3;  
00214   return dist1;
00215  
00216 }

G4double G4BREPSolidCone::DistanceToOut ( const G4ThreeVector p  )  const [virtual]

Reimplemented from G4BREPSolid.

Definition at line 258 of file G4BREPSolidCone.cc.

References G4BREPSolid::SurfaceVec.

00259 {
00260   G4double dist1 = std::fabs(SurfaceVec[0]->HowNear(Pt));
00261   G4double dist2 = std::fabs(SurfaceVec[1]->ClosestDistanceToPoint(Pt));
00262   G4double dist3 = std::fabs(SurfaceVec[2]->ClosestDistanceToPoint(Pt));  
00263   if(dist1 > dist2) dist1 = dist2;
00264   if(dist1 > dist3) dist1 = dist3;  
00265   return dist1;
00266 }

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

Reimplemented from G4BREPSolid.

Definition at line 235 of file G4BREPSolidCone.cc.

References G4Surface::GetDistance(), G4BREPSolid::Intersect(), G4BREPSolid::Reset(), G4BREPSolid::ShortestDistance, and G4BREPSolid::SurfaceVec.

00240 {
00241   if(validNorm)
00242     *validNorm = false;
00243   Reset();  
00244 
00245   G4Vector3D Pttmp(Pt);
00246   G4Vector3D Vtmp(V);   
00247   //  G4double kInfinity = 10e20;
00248 
00249   G4Ray r(Pttmp, Vtmp);
00250   if(SurfaceVec[0]->Intersect( r ))
00251   {
00252     ShortestDistance = SurfaceVec[0]->GetDistance();
00253     return ShortestDistance;
00254   }
00255   return kInfinity; 
00256 }

void G4BREPSolidCone::Initialize (  )  [virtual]

Reimplemented from G4BREPSolid.

Definition at line 177 of file G4BREPSolidCone.cc.

References G4BREPSolid::AxisBox, G4BREPSolid::Box, G4BREPSolid::CalcBBoxes(), G4BREPSolid::CheckSurfaceNormals(), G4BREPSolid::IsConvex(), and G4BREPSolid::ShortestDistance.

00178 {
00179   // Calc bounding box for solids and surfaces
00180   // Convert concave planes to convex
00181   //
00182   ShortestDistance=1000000;
00183   CheckSurfaceNormals();
00184   if(!Box || !AxisBox) { IsConvex(); }
00185   CalcBBoxes();
00186 }

EInside G4BREPSolidCone::Inside ( register const G4ThreeVector Pt  )  const [virtual]

Reimplemented from G4BREPSolid.

Definition at line 188 of file G4BREPSolidCone.cc.

References G4Surface::ClosestDistanceToPoint(), G4Surface::HowNear(), kInside, kOutside, kSurface, and G4BREPSolid::SurfaceVec.

00189 {
00190   G4double dist1 = SurfaceVec[0]->HowNear(Pt);
00191   G4double dist2 = SurfaceVec[1]->ClosestDistanceToPoint(Pt);
00192   G4double dist3 = SurfaceVec[2]->ClosestDistanceToPoint(Pt);  
00193   if(dist1 > dist2) dist1 = dist2;
00194   if(dist1 > dist3) dist1 = dist3;  
00195   if(dist1 > 0) return kInside;
00196   if(dist1 < 0) return kOutside;
00197   return kSurface;
00198 }

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

Definition at line 86 of file G4BREPSolidCone.cc.

References constructorParams, and G4BREPSolid::operator=().

00087 {
00088   // Check assignment to self
00089   //
00090   if (this == &rhs)  { return *this; }
00091 
00092   // Copy base class data
00093   //
00094   G4BREPSolid::operator=(rhs);
00095 
00096   // Copy data
00097   //
00098   constructorParams.origin       = rhs.constructorParams.origin;
00099   constructorParams.axis         = rhs.constructorParams.axis;
00100   constructorParams.direction    = rhs.constructorParams.direction;
00101   constructorParams.length       = rhs.constructorParams.length;
00102   constructorParams.radius       = rhs.constructorParams.radius;
00103   constructorParams.large_radius = rhs.constructorParams.large_radius;
00104   
00105   InitializeCone();
00106 
00107   return *this;
00108 }  

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

Reimplemented from G4BREPSolid.

Definition at line 273 of file G4BREPSolidCone.cc.

References G4BREPSolid::StreamInfo().

00274 {
00275   // Streams solid contents to output stream.
00276 
00277   G4BREPSolid::StreamInfo( os )
00278   << "\n origin:       " << constructorParams.origin
00279   << "\n axis:         " << constructorParams.axis
00280   << "\n direction:    " << constructorParams.direction
00281   << "\n length:       " << constructorParams.length
00282   << "\n radius:       " << constructorParams.radius
00283   << "\n large_radius: " << constructorParams.large_radius
00284   << "\n-----------------------------------------------------------\n";
00285 
00286   return os;
00287 }

G4ThreeVector G4BREPSolidCone::SurfaceNormal ( const G4ThreeVector p  )  const [virtual]

Reimplemented from G4BREPSolid.

Definition at line 200 of file G4BREPSolidCone.cc.

References CLHEP::detail::n, G4Surface::Normal(), and G4BREPSolid::SurfaceVec.

00201 {
00202   G4Vector3D n =  SurfaceVec[0]->Normal(Pt);
00203   G4ThreeVector norm(n.x(), n.y(), n.z());
00204   return norm;
00205 }


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