39#ifndef G4MULTIUNION_HH
40#define G4MULTIUNION_HH
154 const G4bool calcNorm =
false,
155 G4bool* validNorm =
nullptr,
248 std::ostream&
StreamInfo(std::ostream& os)
const override;
275 std::vector<G4int>& candidates,
294 struct G4MultiUnionSurface
300 std::vector<G4VSolid*> fSolids;
301 std::vector<G4Transform3D> fTransformObjs;
306 mutable G4bool fAccurate =
false;
308 mutable G4bool fRebuildPolyhedron =
false;
312#include "G4MultiUnion.icc"
CLHEP::Hep3Vector G4ThreeVector
const G4Transform3D & GetTransformation(G4int index) const
G4int GetNumberOfSolids() const
G4ThreeVector SurfaceNormal(const G4ThreeVector &aPoint) const override
G4ThreeVector GetPointOnSurface() const override
G4double GetCubicVolume() override
void DescribeYourselfTo(G4VGraphicsScene &scene) const override
void BoundingLimits(G4ThreeVector &aMin, G4ThreeVector &aMax) const override
G4double DistanceToOutNoVoxels(const G4ThreeVector &aPoint, const G4ThreeVector &aDirection, G4ThreeVector *aNormalVector) const
G4VSolid * Clone() const override
G4double DistanceToInNoVoxels(const G4ThreeVector &aPoint, const G4ThreeVector &aDirection) const
G4double GetSurfaceArea() override
G4int GetNumOfConstituents() const override
G4Polyhedron * CreatePolyhedron() const override
G4double DistanceToOutVoxels(const G4ThreeVector &aPoint, const G4ThreeVector &aDirection, G4ThreeVector *aNormalVector) const
G4GeometryType GetEntityType() const override
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const override
std::ostream & StreamInfo(std::ostream &os) const override
G4double DistanceToIn(const G4ThreeVector &aPoint) const override
void AddNode(G4VSolid &solid, const G4Transform3D &trans)
~G4MultiUnion() override=default
G4double DistanceToOut(const G4ThreeVector &aPoint) const override
G4bool IsFaceted() const override
void Extent(EAxis aAxis, G4double &aMin, G4double &aMax) const
G4VSolid * GetSolid(G4int index) const
void SetAccurateSafety(G4bool flag)
EInside Inside(const G4ThreeVector &aPoint) const override
G4Voxelizer & GetVoxels() const
G4Polyhedron * GetPolyhedron() const override
G4MultiUnion & operator=(const G4MultiUnion &rhs)
G4SurfBits provides a simple container of bits, to be used for optimization of tessellated surfaces....
G4VSolid(const G4String &name)
G4VoxelLimits represents limitation/restrictions of space, where restrictions are only made perpendic...
G4Voxelizer is a tool for generating the optimisation structure of tessellated surfaces and solids po...