39 #if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
45 using namespace CLHEP;
56 G4UTet::G4UTet(
const G4String& pName,
61 : G4USolid(pName, new UTet(pName,
62 UVector3(anchor.
x(),anchor.y(),anchor.
z()),
63 UVector3(p2.
x(), p2.y(), p2.
z()),
64 UVector3(p3.
x(), p3.y(), p3.
z()),
65 UVector3(p4.
x(), p4.y(), p4.
z()),
75 G4UTet::G4UTet( __void__&
a )
92 G4UTet::G4UTet(
const G4UTet& rhs)
102 G4UTet& G4UTet::operator = (
const G4UTet& rhs)
106 if (
this == &rhs) {
return *
this; }
110 G4USolid::operator=(rhs);
119 std::vector<G4ThreeVector> G4UTet::GetVertices()
const
121 std::vector<UVector3> vec = GetShape()->GetVertices();
122 std::vector<G4ThreeVector> vertices;
123 for (
unsigned int i=0; i<vec.size(); ++i)
126 vertices.push_back(
v);
138 GetShape()->Extent(vmin,vmax);
139 pMin.
set(vmin.x(),vmin.y(),vmin.z());
140 pMax.
set(vmax.x(),vmax.y(),vmax.z());
144 if (pMin.
x() >= pMax.
x() || pMin.
y() >= pMax.
y() || pMin.
z() >= pMax.
z())
146 std::ostringstream message;
147 message <<
"Bad bounding box (min >= max) for solid: "
149 <<
"\npMin = " << pMin
150 <<
"\npMax = " << pMax;
161 G4UTet::CalculateExtent(
const EAxis pAxis,
174 if (
true)
return bbox.CalculateExtent(pAxis,pVoxelLimit,pTransform,pMin,pMax);
176 if (bbox.BoundingBoxVsVoxelLimits(pAxis,pVoxelLimit,pTransform,pMin,pMax))
178 return exist = (pMin < pMax) ?
true :
false;
183 std::vector<UVector3> vec = GetShape()->GetVertices();
186 anchor[0].set(vec[0].
x(),vec[0].y(),vec[0].
z());
189 base[0].set(vec[1].
x(),vec[1].y(),vec[1].
z());
190 base[1].set(vec[2].
x(),vec[2].y(),vec[2].
z());
191 base[2].set(vec[3].
x(),vec[3].y(),vec[3].
z());
193 std::vector<const G4ThreeVectorList *> polygons(2);
194 polygons[0] = &anchor;
198 exist = benv.CalculateExtent(pAxis,pVoxelLimit,pTransform,pMin,pMax);
210 GetShape()->GetParametersList(index, array);
214 const G4int faces[4][4]={{1,3,2,0},{1,4,3,0},{1,2,4,0},{2,3,4,0}};
215 xyz[0][0]=array[0]; xyz[0][1]=array[1]; xyz[0][2]=array[2];
216 xyz[1][0]=array[3]; xyz[1][1]=array[4]; xyz[1][2]=array[5];
217 xyz[2][0]=array[6]; xyz[2][1]=array[7]; xyz[2][2]=array[8];
218 xyz[3][0]=array[9]; xyz[3][1]=array[10]; xyz[3][2]=array[11];
225 #endif // G4GEOM_USE_USOLIDS
void set(double x, double y, double z)
std::vector< ExP01TrackerHit * > a
G4int createPolyhedron(G4int Nnodes, G4int Nfaces, const G4double xyz[][3], const G4int faces[][4])
const XML_Char int const XML_Char int const XML_Char * base
G4GLOB_DLL std::ostream G4cout
std::vector< G4ThreeVector > G4ThreeVectorList
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)