53                                   numZPlanes, zPlane, rInner, rOuter))
 
  111   if (
this == &source) 
return *
this;
 
  159     delete original_parameters;  
 
  190     typedef G4int int4[4];
 
  198       std::vector<G4int*> triQuads;
 
  201       while (remaining >= 3)
 
  205         G4int A = -1, B = -1, C = -1;
 
  206         G4int iStepper = iStarter;
 
  209           if (A < 0)      { A = iStepper; }
 
  210           else if (B < 0) { B = iStepper; }
 
  211           else if (C < 0) { C = iStepper; }
 
  216           while (chopped[iStepper]);
 
  218         while (C < 0 && iStepper != iStarter);
 
  233           triQuads.push_back(tq);
 
  243           while (chopped[iStarter]);
 
  251       faces_vec = 
new int4[nFaces];
 
  255       for (
G4int iEnd = 0; iEnd < 2; ++iEnd)
 
  257         for (
size_t i = 0; i < triQuads.size(); ++i)
 
  270             a = triQuads[i][0] + addition;
 
  271             b = triQuads[i][2] + addition;
 
  272             c = triQuads[i][1] + addition;
 
  275           G4int bc = std::abs(c - b);
 
  276           G4int ca = std::abs(a - c);
 
  277           faces_vec[iface][0] = (ab == 1 || ab == d)? a: -a;
 
  278           faces_vec[iface][1] = (bc == 1 || bc == d)? b: -b;
 
  279           faces_vec[iface][2] = (ca == 1 || ca == d)? c: -c;
 
  280           faces_vec[iface][3] = 0;
 
  287       xyz = 
new double3[nNodes];
 
  291       for (
G4int iSide = 0; iSide < numSide; ++iSide)
 
  295           xyz[ixyz][0] = 
GetCorner(iCorner).
r * std::cos(phi);
 
  296           xyz[ixyz][1] = 
GetCorner(iCorner).
r * std::sin(phi);
 
  300             faces_vec[iface][0] = ixyz + 1;
 
  303             faces_vec[iface][3] = ixyz + 2;
 
  307             faces_vec[iface][0] = ixyz + 1;
 
  309             faces_vec[iface][2] = ixyz + 2;
 
  322         xyz[ixyz][0] = 
GetCorner(iCorner).
r * std::cos(phi);
 
  323         xyz[ixyz][1] = 
GetCorner(iCorner).
r * std::sin(phi);
 
  332       xyz = 
new double3[nNodes];
 
  333       faces_vec = 
new int4[nFaces];
 
  337       G4int ixyz = 0, iface = 0;
 
  342           xyz[ixyz][0] = 
GetCorner(iCorner).
r * std::cos(phi);
 
  343           xyz[ixyz][1] = 
GetCorner(iCorner).
r * std::sin(phi);
 
  349               faces_vec[iface][0] = ixyz + 1;
 
  352               faces_vec[iface][3] = ixyz + 2;
 
  356               faces_vec[iface][0] = ixyz + 1;
 
  358               faces_vec[iface][2] = ixyz + 2;
 
  366               faces_vec[iface][0] = ixyz + 1;
 
  369               faces_vec[iface][3] = ixyz + 2;
 
  373               faces_vec[iface][0] = ixyz + 1;
 
  375               faces_vec[iface][2] = ixyz - nFaces + 2;
 
  386     G4int problem = polyhedron->createPolyhedron(nNodes, nFaces, xyz, faces_vec);
 
  391       std::ostringstream message;
 
  392       message << 
"Problem creating G4Polyhedron for: " << 
GetName();
 
  393       G4Exception(
"G4Polyhedra::CreatePolyhedron()", 
"GeomSolids1002",
 
G4UPolyhedra & operator=(const G4UPolyhedra &source)
 
G4int GetNumRZCorner() const 
 
G4UPolyhedra(const G4String &name, G4double phiStart, G4double phiTotal, G4int numSide, G4int numZPlanes, const G4double zPlane[], const G4double rInner[], const G4double rOuter[])
 
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
 
G4double GetEndPhi() const 
 
G4double GetStartPhi() const 
 
G4PolyhedraHistorical * GetOriginalParameters() const 
 
static const G4double A[nN]
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
G4PolyhedraSideRZ GetCorner(const G4int index) const 
 
virtual void ComputeDimensions(G4Box &, const G4int, const G4VPhysicalVolume *) const 
 
G4Polyhedron * CreatePolyhedron() const 
 
G4USolid & operator=(const G4USolid &rhs)