38#ifndef G4MULTIUNION_HH
39#define G4MULTIUNION_HH
90 const G4bool calcNorm =
false,
91 G4bool* validNorm =
nullptr,
103 std::vector<G4int>& candidates)
const;
130 std::ostream&
StreamInfo(std::ostream& os)
const;
151 std::vector<G4int>& candidates,
167 struct G4MultiUnionSurface
173 std::vector<G4VSolid*> fSolids;
174 std::vector<G4Transform3D> fTransformObjs;
179 mutable G4bool fAccurate =
false;
181 mutable G4bool fRebuildPolyhedron =
false;
194 return fTransformObjs[index];
200 return fSolids[index];
206 return G4int(fSolids.size());
HepGeom::Point3D< G4double > G4Point3D
HepGeom::Vector3D< G4double > G4Vector3D
const G4Transform3D & GetTransformation(G4int index) const
G4int GetNumberOfSolids() const
EInside InsideIterator(const G4ThreeVector &aPoint) const
G4double DistanceToIn(const G4ThreeVector &aPoint) const
G4double GetSurfaceArea()
G4double DistanceToOutNoVoxels(const G4ThreeVector &aPoint, const G4ThreeVector &aDirection, G4ThreeVector *aNormalVector) const
G4double GetCubicVolume()
EInside InsideNoVoxels(const G4ThreeVector &aPoint) const
G4double DistanceToInNoVoxels(const G4ThreeVector &aPoint, const G4ThreeVector &aDirection) const
EInside Inside(const G4ThreeVector &aPoint) const
G4double DistanceToOut(const G4ThreeVector &aPoint) const
G4Polyhedron * CreatePolyhedron() const
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
void BoundingLimits(G4ThreeVector &aMin, G4ThreeVector &aMax) const
G4double DistanceToOutVoxelsCore(const G4ThreeVector &aPoint, const G4ThreeVector &aDirection, G4ThreeVector *aNormalVector, G4bool &aConvex, std::vector< G4int > &candidates) const
G4Polyhedron * GetPolyhedron() const
G4GeometryType GetEntityType() const
G4double DistanceToOutVoxels(const G4ThreeVector &aPoint, const G4ThreeVector &aDirection, G4ThreeVector *aNormalVector) const
std::ostream & StreamInfo(std::ostream &os) const
void DescribeYourselfTo(G4VGraphicsScene &scene) const
void AddNode(G4VSolid &solid, const G4Transform3D &trans)
void Extent(EAxis aAxis, G4double &aMin, G4double &aMax) const
G4ThreeVector GetPointOnSurface() const
G4VSolid * GetSolid(G4int index) const
void SetAccurateSafety(G4bool flag)
G4Voxelizer & GetVoxels() const
G4ThreeVector SurfaceNormal(const G4ThreeVector &aPoint) const
G4MultiUnion & operator=(const G4MultiUnion &rhs)