13 #include "G4CSGSolid.hh"
14 #include "G4Polyhedron.hh"
46 return u.x * v.x + u.y * v.y;
58 BelleLathe(
const G4String& pName,
double phi0,
double dphi,
int n,
double* z,
double* rin,
double* rout);
60 BelleLathe(
const G4String& pName,
double,
double,
const std::vector<zr_t>&);
70 const G4VPhysicalVolume* pRep);
74 const G4VoxelLimits& pVoxelLimit,
75 const G4AffineTransform& pTransform,
76 G4double& pMin, G4double& pMax)
const;
78 EInside Inside(
const G4ThreeVector& p)
const;
80 G4ThreeVector SurfaceNormal(
const G4ThreeVector& p)
const;
82 G4double DistanceToIn(
const G4ThreeVector& p,
const G4ThreeVector& v)
const;
84 G4double DistanceToIn(
const G4ThreeVector& p)
const;
86 G4double DistanceToOut(
const G4ThreeVector& p,
const G4ThreeVector& v,
87 const G4bool calcNorm =
false,
88 G4bool* validNorm = 0, G4ThreeVector* n = 0)
const;
90 G4double DistanceToOut(
const G4ThreeVector& p)
const;
92 G4GeometryType GetEntityType()
const;
94 G4ThreeVector GetPointOnSurface()
const;
96 G4double GetCubicVolume() {
return fCubicVolume;}
98 G4double GetSurfaceArea() {
return fSurfaceArea;}
100 G4VSolid* Clone()
const;
103 void BoundingLimits(G4ThreeVector& pMin, G4ThreeVector& pMax)
const;
105 std::ostream& StreamInfo(std::ostream& os)
const;
109 void DescribeYourselfTo(G4VGraphicsScene& scene)
const;
110 G4Polyhedron* CreatePolyhedron()
const;
127 bool insector(
double,
double)
const;
131 int wn_poly(
const zr_t&)
const;
132 double mindist(
const zr_t&)
const;
133 std::vector<double> linecross(
const G4ThreeVector&,
const G4ThreeVector&)
const;
134 void eartrim()
const;
135 zr_t normal(
const zr_t&,
double&)
const ;
137 void Init(
const std::vector<zr_t>&,
double,
double);
140 std::vector<zr_t> fcontour;
141 std::vector<cachezr_t> fcache;
142 std::vector<double> fz;
143 std::vector<int> findx, fseg;
144 mutable std::vector<double> farea;
145 mutable std::vector<triangle_t> ftlist;
148 double fs0, fc0, fs1, fc1;
149 double fn0x, fn0y, fn1x, fn1y;
150 double frmin, frmax, fzmin, fzmax;
154 mutable std::vector<G4ThreeVector> fsurf;
BelleLathe & operator=(const BelleLathe &rhs)
assignment operator
void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const
Two vectors define an axis-parallel bounding box for the shape.
virtual ~BelleLathe()
Destructor.
BelleLathe(const G4String &pName)
Constructor for "nominal" BelleLathe whose parameters are to be set by a G4VPVParamaterisation later.
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
calculate the extent of the volume
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
compute the dimensions
virtual ~PolyhedronBelleLathe()
destructor
PolyhedronBelleLathe(const std::vector< zr_t > &, const std::vector< triangle_t > &, double, double)
constructor
Abstract base class for different kinds of events.
struct for a three vector