22#ifndef GEANT4_GM_ARB8_SOLID_H
23#define GEANT4_GM_ARB8_SOLID_H
29#include "G4ThreeVector.hh"
35class G4TessellatedSolid;
44 const std::string& name,
double hz, std::vector<VGM::TwoVector> vertices);
48 static bool IsTwisted(std::vector<VGM::TwoVector> vertices);
51 virtual std::string
Name()
const;
63 void ReorderVertices(std::vector<G4ThreeVector>& vertices);
65 G4VFacet* MakeDownFacet(std::vector<G4ThreeVector> fromVertices,
int ind1,
66 int ind2,
int ind3)
const;
67 G4VFacet* MakeUpFacet(std::vector<G4ThreeVector> fromVertices,
int ind1,
68 int ind2,
int ind3)
const;
69 G4VFacet* MakeSideFacet(G4ThreeVector downVertex0, G4ThreeVector downVertex1,
70 G4ThreeVector upVertex1, G4ThreeVector upVertex0)
const;
73 static const int fgkNofVertices;
74 static const double fgkTolerance;
78 std::vector<VGM::TwoVector> fVertices;
79 G4TessellatedSolid* fTessellatedSolid;
VGM implementation for Geant4 Arb8 solid, the shape is implemented using G4TessellatedSolid.
static bool IsTwisted(std::vector< VGM::TwoVector > vertices)
virtual int NofVertices() const
Return the number of vertices.
virtual double ZHalfLength() const
Return the half-length along the z axis in mm.
virtual VGM::TwoVector Vertex(int index) const
Return the index-th vertex.
virtual double TwistAngle(int index) const
Return the index-th twist angle.
virtual std::string Name() const
Return the name of this solid.
VGM implementation for Geant4.
std::pair< double, double > TwoVector