24#include "G4MultiUnion.hh"
25#include "G4ReflectedSolid.hh"
29 std::vector<VGM::ISolid*> constituents, std::vector<G4Transform3D> transforms)
40 fMultiUnion =
new G4MultiUnion(name);
42 for (
size_t i = 0; i < constituents.size(); ++i) {
47 fMultiUnion->AddNode(*g4Solid, transforms[i]);
50 fMultiUnion->Voxelize();
57 G4MultiUnion* multiUnion, G4ReflectedSolid* reflected)
61 fMultiUnion(multiUnion),
67 fToBeReflected =
true;
84 :
VGM::ISolid(rhs),
VGM::IMultiUnion(rhs),
BaseVGM::VMultiUnion(rhs)
105 return fMultiUnion->GetName();
114 return fMultiUnion->GetNumberOfSolids();
123 G4VSolid* g4Solid = fMultiUnion->GetSolid(index);
VGM implementation for Geant4 Boolean solid.
virtual VGM::Transform Transformation(G4int index) const
virtual ISolid * ConstituentSolid(G4int index) const
virtual int NofSolids() const
Return the number of constituent solids.
virtual std::string Name() const
Return the name of this solid.
G4VSolid * GetSolid(VGM::ISolid *iSolid) const
static SolidMap * Instance()
void AddSolid(VGM::ISolid *, G4VSolid *)
The VGM interface to solids.
VGM::Transform Transform(const CLHEP::HepRotation &rotation, const CLHEP::Hep3Vector &translation)
std::vector< double > Transform