81 #if !defined(G4GEOM_USE_USOLIDS) 88 "Installation with USolids primitives required!");
96 G4int numSolids=munionSolid->GetNumberOfSolids();
103 xercesc::DOMElement* multiUnionElement =
NewElement(tag);
104 multiUnionElement->setAttributeNode(
NewAttribute(
"name",name));
106 for (
G4int i=0; i<numSolids; ++i)
108 solid = munionSolid->GetSolid(i);
109 transform = munionSolid->GetTransformation(i);
119 rot3d.
yx(), rot3d.
yy(), rot3d.
yz(),
120 rot3d.
zx(), rot3d.
zy(), rot3d.
zz()));
125 std::ostringstream os; os << i+1;
127 xercesc::DOMElement* solidElement =
NewElement(
"solid");
128 solidElement->setAttributeNode(
NewAttribute(
"ref",solidref));
129 xercesc::DOMElement* multiUnionNodeElement =
NewElement(
"multiUnionNode");
130 multiUnionNodeElement->setAttributeNode(
NewAttribute(
"name", nodeName));
131 multiUnionNodeElement->appendChild(solidElement);
144 multiUnionElement->appendChild(multiUnionNodeElement);
147 solElement->appendChild(multiUnionElement);
159 if (dynamic_cast<const G4IntersectionSolid*>(
boolean))
160 { tag =
"intersection"; }
else 161 if (dynamic_cast<const G4SubtractionSolid*>(
boolean))
162 { tag =
"subtraction"; }
else 163 if (dynamic_cast<const G4UnionSolid*>(
boolean))
166 G4VSolid* firstPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(0));
167 G4VSolid* secondPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(1));
177 G4String ErrorMessage =
"The referenced solid '" 179 +
"in the Boolean shape '" +
180 +
boolean->GetName() +
181 +
"' was displaced too many times!";
188 firstpos += disp->GetObjectTranslation();
189 firstrot +=
GetAngles(disp->GetObjectRotation());
190 firstPtr = disp->GetConstituentMovedSolid();
201 G4String ErrorMessage =
"The referenced solid '" 203 +
"in the Boolean shape '" +
204 +
boolean->GetName() +
205 +
"' was displaced too many times!";
212 pos += disp->GetObjectTranslation();
213 rot +=
GetAngles(disp->GetObjectRotation());
214 secondPtr = disp->GetConstituentMovedSolid();
228 xercesc::DOMElement* booleanElement =
NewElement(tag);
229 booleanElement->setAttributeNode(
NewAttribute(
"name",name));
230 xercesc::DOMElement* firstElement =
NewElement(
"first");
231 firstElement->setAttributeNode(
NewAttribute(
"ref",firstref));
232 booleanElement->appendChild(firstElement);
233 xercesc::DOMElement* secondElement =
NewElement(
"second");
234 secondElement->setAttributeNode(
NewAttribute(
"ref",secondref));
235 booleanElement->appendChild(secondElement);
236 solElement->appendChild(booleanElement);
273 xercesc::DOMElement* boxElement =
NewElement(
"box");
274 boxElement->setAttributeNode(
NewAttribute(
"name",name));
278 boxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
279 solElement->appendChild(boxElement);
287 xercesc::DOMElement* coneElement =
NewElement(
"cone");
288 coneElement->setAttributeNode(
NewAttribute(
"name",name));
303 coneElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
304 coneElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
305 solElement->appendChild(coneElement);
314 xercesc::DOMElement* elconeElement =
NewElement(
"elcone");
315 elconeElement->setAttributeNode(
NewAttribute(
"name",name));
320 elconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
321 solElement->appendChild(elconeElement);
330 xercesc::DOMElement* ellipsoidElement =
NewElement(
"ellipsoid");
331 ellipsoidElement->setAttributeNode(
NewAttribute(
"name",name));
344 solElement->appendChild(ellipsoidElement);
353 xercesc::DOMElement* eltubeElement =
NewElement(
"eltube");
354 eltubeElement->setAttributeNode(
NewAttribute(
"name",name));
358 eltubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
359 solElement->appendChild(eltubeElement);
368 xercesc::DOMElement* xtruElement =
NewElement(
"xtru");
369 xtruElement->setAttributeNode(
NewAttribute(
"name",name));
370 xtruElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
371 solElement->appendChild(xtruElement);
375 for (
G4int i=0;i<NumVertex;i++)
377 xercesc::DOMElement* twoDimVertexElement =
NewElement(
"twoDimVertex");
378 xtruElement->appendChild(twoDimVertexElement);
382 twoDimVertexElement->setAttributeNode(
NewAttribute(
"x",vertex.
x()/
mm));
383 twoDimVertexElement->setAttributeNode(
NewAttribute(
"y",vertex.
y()/
mm));
388 for (
G4int i=0;i<NumSection;i++)
390 xercesc::DOMElement* sectionElement =
NewElement(
"section");
391 xtruElement->appendChild(sectionElement);
395 sectionElement->setAttributeNode(
NewAttribute(
"zOrder",i));
411 xercesc::DOMElement* hypeElement =
NewElement(
"hype");
412 hypeElement->setAttributeNode(
NewAttribute(
"name",name));
423 hypeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
424 hypeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
425 solElement->appendChild(hypeElement);
433 xercesc::DOMElement* orbElement =
NewElement(
"orb");
434 orbElement->setAttributeNode(
NewAttribute(
"name",name));
436 orbElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
437 solElement->appendChild(orbElement);
448 const G4double theta = simaxis.theta();
450 xercesc::DOMElement* paraElement =
NewElement(
"para");
451 paraElement->setAttributeNode(
NewAttribute(
"name",name));
461 paraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
462 paraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
463 solElement->appendChild(paraElement);
472 xercesc::DOMElement* paraboloidElement =
NewElement(
"paraboloid");
473 paraboloidElement->setAttributeNode(
NewAttribute(
"name",name));
480 paraboloidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
481 solElement->appendChild(paraboloidElement);
489 xercesc::DOMElement* polyconeElement =
NewElement(
"polycone");
490 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
491 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
493 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
495 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
496 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
497 solElement->appendChild(polyconeElement);
504 for (
size_t i=0; i<num_zplanes; i++)
506 ZplaneWrite(polyconeElement,z_array[i],rmin_array[i],rmax_array[i]);
517 xercesc::DOMElement* polyconeElement =
NewElement(
"genericPolycone");
519 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
520 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
522 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
524 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
525 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
526 solElement->appendChild(polyconeElement);
529 for (
size_t i=0; i<num_rzpoints; i++)
544 xercesc::DOMElement* polyhedraElement =
NewElement(
"polyhedra");
545 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
546 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
548 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
550 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
552 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
553 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
554 solElement->appendChild(polyhedraElement);
565 for (
size_t i=0;i<num_zplanes;i++)
568 rmin_array[i]*convertRad, rmax_array[i]*convertRad);
572 xercesc::DOMElement* polyhedraElement =
NewElement(
"genericPolyhedra");
573 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
574 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
576 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
578 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
580 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
581 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
582 solElement->appendChild(polyhedraElement);
586 for (
size_t i=0;i<num_rzpoints;i++)
600 xercesc::DOMElement* sphereElement =
NewElement(
"sphere");
601 sphereElement->setAttributeNode(
NewAttribute(
"name",name));
606 sphereElement->setAttributeNode(
NewAttribute(
"startphi",
608 sphereElement->setAttributeNode(
NewAttribute(
"deltaphi",
610 sphereElement->setAttributeNode(
NewAttribute(
"starttheta",
612 sphereElement->setAttributeNode(
NewAttribute(
"deltatheta",
614 sphereElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
615 sphereElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
616 solElement->appendChild(sphereElement);
626 xercesc::DOMElement* tessellatedElement =
NewElement(
"tessellated");
627 tessellatedElement->setAttributeNode(
NewAttribute(
"name",name));
628 tessellatedElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
629 tessellatedElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
630 solElement->appendChild(tessellatedElement);
632 std::map<G4ThreeVector, G4String, G4ThreeVectorCompare> vertexMap;
635 size_t NumVertex = 0;
637 for (
size_t i=0;i<NumFacets;i++)
644 if (NumVertexPerFacet==3) { FacetTag=
"triangular"; }
else 645 if (NumVertexPerFacet==4) { FacetTag=
"quadrangular"; }
648 G4Exception(
"G4GDMLWriteSolids::TessellatedWrite()",
"InvalidSetup",
652 xercesc::DOMElement* facetElement =
NewElement(FacetTag);
653 tessellatedElement->appendChild(facetElement);
655 for (
size_t j=0; j<NumVertexPerFacet; j++)
657 std::stringstream name_stream;
658 std::stringstream ref_stream;
660 name_stream <<
"vertex" << (j+1);
661 ref_stream << solid_name <<
"_v" << NumVertex;
674 if(vertexMap.find(vertex) != vertexMap.end())
676 ref = vertexMap[vertex];
680 vertexMap.insert(std::make_pair(vertex,ref));
687 facetElement->setAttributeNode(
NewAttribute(fname,ref));
698 std::vector<G4ThreeVector> vertexList = tet->
GetVertices();
700 xercesc::DOMElement* tetElement =
NewElement(
"tet");
701 tetElement->setAttributeNode(
NewAttribute(
"name",name));
702 tetElement->setAttributeNode(
NewAttribute(
"vertex1",solid_name+
"_v1"));
703 tetElement->setAttributeNode(
NewAttribute(
"vertex2",solid_name+
"_v2"));
704 tetElement->setAttributeNode(
NewAttribute(
"vertex3",solid_name+
"_v3"));
705 tetElement->setAttributeNode(
NewAttribute(
"vertex4",solid_name+
"_v4"));
706 tetElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
707 solElement->appendChild(tetElement);
720 xercesc::DOMElement* torusElement =
NewElement(
"torus");
721 torusElement->setAttributeNode(
NewAttribute(
"name",name));
729 torusElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
730 torusElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
731 solElement->appendChild(torusElement);
740 std::vector<G4TwoVector> vertices = gtrap->
GetVertices();
742 xercesc::DOMElement* gtrapElement =
NewElement(
"arb8");
743 gtrapElement->setAttributeNode(
NewAttribute(
"name",name));
746 gtrapElement->setAttributeNode(
NewAttribute(
"v1x", vertices[0].
x()));
747 gtrapElement->setAttributeNode(
NewAttribute(
"v1y", vertices[0].
y()));
748 gtrapElement->setAttributeNode(
NewAttribute(
"v2x", vertices[1].
x()));
749 gtrapElement->setAttributeNode(
NewAttribute(
"v2y", vertices[1].
y()));
750 gtrapElement->setAttributeNode(
NewAttribute(
"v3x", vertices[2].
x()));
751 gtrapElement->setAttributeNode(
NewAttribute(
"v3y", vertices[2].
y()));
752 gtrapElement->setAttributeNode(
NewAttribute(
"v4x", vertices[3].
x()));
753 gtrapElement->setAttributeNode(
NewAttribute(
"v4y", vertices[3].
y()));
754 gtrapElement->setAttributeNode(
NewAttribute(
"v5x", vertices[4].
x()));
755 gtrapElement->setAttributeNode(
NewAttribute(
"v5y", vertices[4].
y()));
756 gtrapElement->setAttributeNode(
NewAttribute(
"v6x", vertices[5].
x()));
757 gtrapElement->setAttributeNode(
NewAttribute(
"v6y", vertices[5].
y()));
758 gtrapElement->setAttributeNode(
NewAttribute(
"v7x", vertices[6].
x()));
759 gtrapElement->setAttributeNode(
NewAttribute(
"v7y", vertices[6].
y()));
760 gtrapElement->setAttributeNode(
NewAttribute(
"v8x", vertices[7].
x()));
761 gtrapElement->setAttributeNode(
NewAttribute(
"v8y", vertices[7].
y()));
762 gtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
763 solElement->appendChild(gtrapElement);
773 const G4double theta = simaxis.theta();
777 xercesc::DOMElement* trapElement =
NewElement(
"trap");
778 trapElement->setAttributeNode(
NewAttribute(
"name",name));
797 trapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
798 trapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
799 solElement->appendChild(trapElement);
807 xercesc::DOMElement* trdElement =
NewElement(
"trd");
808 trdElement->setAttributeNode(
NewAttribute(
"name",name));
819 trdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
820 solElement->appendChild(trdElement);
828 xercesc::DOMElement* tubeElement =
NewElement(
"tube");
829 tubeElement->setAttributeNode(
NewAttribute(
"name",name));
840 tubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
841 tubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
842 solElement->appendChild(tubeElement);
850 xercesc::DOMElement* cuttubeElement =
NewElement(
"cutTube");
851 cuttubeElement->setAttributeNode(
NewAttribute(
"name",name));
858 cuttubeElement->setAttributeNode(
NewAttribute(
"startphi",
860 cuttubeElement->setAttributeNode(
NewAttribute(
"deltaphi",
874 cuttubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
875 cuttubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
876 solElement->appendChild(cuttubeElement);
885 xercesc::DOMElement* twistedboxElement =
NewElement(
"twistedbox");
886 twistedboxElement->setAttributeNode(
NewAttribute(
"name",name));
893 twistedboxElement->setAttributeNode(
NewAttribute(
"PhiTwist",
895 twistedboxElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
896 twistedboxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
897 solElement->appendChild(twistedboxElement);
906 xercesc::DOMElement* twistedtrapElement =
NewElement(
"twistedtrap");
907 twistedtrapElement->setAttributeNode(
NewAttribute(
"name",name));
922 twistedtrapElement->setAttributeNode(
NewAttribute(
"Alph",
924 twistedtrapElement->setAttributeNode(
NewAttribute(
"Theta",
926 twistedtrapElement->setAttributeNode(
NewAttribute(
"Phi",
928 twistedtrapElement->setAttributeNode(
NewAttribute(
"PhiTwist",
930 twistedtrapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
931 twistedtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
933 solElement->appendChild(twistedtrapElement);
942 xercesc::DOMElement* twistedtrdElement =
NewElement(
"twistedtrd");
943 twistedtrdElement->setAttributeNode(
NewAttribute(
"name",name));
954 twistedtrdElement->setAttributeNode(
NewAttribute(
"PhiTwist",
956 twistedtrdElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
957 twistedtrdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
958 solElement->appendChild(twistedtrdElement);
967 xercesc::DOMElement* twistedtubsElement =
NewElement(
"twistedtubs");
968 twistedtubsElement->setAttributeNode(
NewAttribute(
"name",name));
969 twistedtubsElement->setAttributeNode(
NewAttribute(
"twistedangle",
971 twistedtubsElement->setAttributeNode(
NewAttribute(
"endinnerrad",
973 twistedtubsElement->setAttributeNode(
NewAttribute(
"endouterrad",
975 twistedtubsElement->setAttributeNode(
NewAttribute(
"zlen",
977 twistedtubsElement->setAttributeNode(
NewAttribute(
"phi",
979 twistedtubsElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
980 twistedtubsElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
981 solElement->appendChild(twistedtubsElement);
988 xercesc::DOMElement* zplaneElement =
NewElement(
"zplane");
992 element->appendChild(zplaneElement);
999 xercesc::DOMElement* rzpointElement =
NewElement(
"rzpoint");
1002 element->appendChild(rzpointElement);
1009 xercesc::DOMElement* optElement =
NewElement(
"opticalsurface");
1014 optElement->setAttributeNode(
NewAttribute(
"model", smodel));
1017 optElement->setAttributeNode(
NewAttribute(
"value", sval));
1019 solElement->appendChild(optElement);
1034 for (
size_t i=0; i<
solidList.size(); i++)
1036 if (
solidList[i] == solidPtr) {
return; }
1042 = dynamic_cast<const G4BooleanSolid*>(solidPtr))
1049 {
const G4Box*
const boxPtr
1050 =
static_cast<const G4Box*
>(solidPtr);
1053 {
const G4Cons*
const conePtr
1054 =
static_cast<const G4Cons*
>(solidPtr);
1073 {
const G4Hype*
const hypePtr
1074 =
static_cast<const G4Hype*
>(solidPtr);
1077 {
const G4Orb*
const orbPtr
1078 =
static_cast<const G4Orb*
>(solidPtr);
1081 {
const G4Para*
const paraPtr
1082 =
static_cast<const G4Para*
>(solidPtr);
1102 =
static_cast<const G4Sphere*
>(solidPtr);
1109 {
const G4Tet*
const tetPtr
1110 =
static_cast<const G4Tet*
>(solidPtr);
1113 {
const G4Torus*
const torusPtr
1114 =
static_cast<const G4Torus*
>(solidPtr);
1121 {
const G4Trap*
const trapPtr
1122 =
static_cast<const G4Trap*
>(solidPtr);
1125 {
const G4Trd*
const trdPtr
1126 =
static_cast<const G4Trd*
>(solidPtr);
1129 {
const G4Tubs*
const tubePtr
1130 =
static_cast<const G4Tubs*
>(solidPtr);
1134 =
static_cast<const G4CutTubs*
>(solidPtr);
1156 G4Exception(
"G4GDMLWriteSolids::AddSolid()",
"WriteError",
static const G4double kAngularPrecision
G4double GetPolarAngleTheta() const
G4double GetStartPhiAngle() const
G4double GetX2HalfLength() const
const G4SurfaceType & GetType() const
G4double GetXHalfLength1() const
G4double GetStartPhi() const
G4double GetOuterRadius() const
G4double GetSemiAxisMax(G4int i) const
G4ThreeVector GetSymAxis() const
G4double GetZHalfLength() const
const G4String & GetName() const
G4double GetOuterRadiusPlusZ() const
G4double GetStartPhiAngle() const
void BoxWrite(xercesc::DOMElement *, const G4Box *const)
void PolyhedraWrite(xercesc::DOMElement *, const G4Polyhedra *const)
G4double GetZHalfLength() const
G4double GetDeltaPhiAngle() const
G4double GetStartThetaAngle() const
void TessellatedWrite(xercesc::DOMElement *, const G4TessellatedSolid *const)
G4double GetY2HalfLength() const
G4double GetYHalfLength1() const
G4int GetNofZSections() const
G4double GetX2HalfLength() const
G4double GetZTopCut() const
G4double GetInnerRadiusMinusZ() const
G4double GetXHalfLength() const
std::vector< G4ThreeVector > GetVertices() const
ZSection GetZSection(G4int index) const
virtual G4int GetNumberOfVertices() const =0
virtual ~G4GDMLWriteSolids()
void TrdWrite(xercesc::DOMElement *, const G4Trd *const)
G4ThreeVector GetSymAxis() const
G4double GetXHalfLength3() const
G4double GetInnerRadius() const
void FirstpositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
void XtruWrite(xercesc::DOMElement *, const G4ExtrudedSolid *const)
G4double GetXHalfLength4() const
G4double GetZBottomCut() const
G4OpticalSurfaceModel GetModel() const
G4double GetRadiusPlusZ() const
virtual G4GeometryType GetEntityType() const =0
G4double GetZHalfLength() const
G4double GetYHalfLength2() const
void TwistedtrdWrite(xercesc::DOMElement *, const G4TwistedTrd *const)
G4double GetX1HalfLength() const
xercesc::DOMElement * NewElement(const G4String &)
G4VFacet * GetFacet(G4int i) const
G4double GetZHalfLength() const
G4double GetPolish() const
G4double GetZHalfLength() const
void TwistedboxWrite(xercesc::DOMElement *, const G4TwistedBox *const)
const std::vector< G4TwoVector > & GetVertices() const
G4double GetZHalfLength() const
void MultiUnionWrite(xercesc::DOMElement *solElement, const G4MultiUnion *const)
G4double GetXHalfLength() const
static const G4int maxTransforms
void RZPointWrite(xercesc::DOMElement *, const G4double &, const G4double &)
G4double GetPhiTwist() const
void OrbWrite(xercesc::DOMElement *, const G4Orb *const)
void TwistedtubsWrite(xercesc::DOMElement *, const G4TwistedTubs *const)
G4PolyhedraHistorical * GetOriginalParameters() const
G4GLOB_DLL std::ostream G4cout
G4int GetNumberOfFacets() const
G4double GetYHalfLength1() const
void TrapWrite(xercesc::DOMElement *, const G4Trap *const)
G4double GetRadiusMinusZ() const
void ConeWrite(xercesc::DOMElement *, const G4Cons *const)
G4double GetXHalfLength2() const
G4double GetZHalfLength() const
void ElconeWrite(xercesc::DOMElement *, const G4EllipticalCone *const)
G4double GetYHalfLength() const
void ParaboloidWrite(xercesc::DOMElement *, const G4Paraboloid *const)
G4double GetRadius() const
void FirstrotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
G4double GetInnerRadius() const
G4double GetTanAlpha() const
G4double GetY1HalfLength() const
G4double GetZHalfLength() const
void PolyconeWrite(xercesc::DOMElement *, const G4Polycone *const)
G4double GetInnerStereo() const
G4double GetTiltAngleAlpha() const
void OpticalSurfaceWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
G4double GetPhiTwist() const
G4double GetY2HalfLength() const
G4double GetPhiTwist() const
G4double GetSigmaAlpha() const
G4double GetOuterRadius() const
void AddPosition(const G4String &name, const G4ThreeVector &pos)
void GenericPolyconeWrite(xercesc::DOMElement *, const G4GenericPolycone *const)
G4double GetXHalfLength() const
G4String GenerateName(const G4String &, const void *const)
G4double GetXHalfLength2() const
void RotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
G4double GetOuterRadius() const
void CutTubeWrite(xercesc::DOMElement *, const G4CutTubs *const)
G4PolyconeHistorical * GetOriginalParameters() const
G4double GetInnerRadiusPlusZ() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void ZplaneWrite(xercesc::DOMElement *, const G4double &, const G4double &, const G4double &)
G4double GetZHalfLength() const
G4double GetDeltaPhiAngle() const
G4double GetStartPhiAngle() const
G4double GetYHalfLength() const
void HypeWrite(xercesc::DOMElement *, const G4Hype *const)
xercesc::DOMAttr * NewAttribute(const G4String &, const G4String &)
static const G4double kLinearPrecision
G4double GetOuterStereo() const
G4double GetInnerRadius() const
G4double GetOuterRadius() const
G4double GetDeltaPhiAngle() const
G4double GetZHalfLength() const
G4OpticalSurfaceFinish GetFinish() const
void EltubeWrite(xercesc::DOMElement *, const G4EllipticalTube *const)
G4PolyhedraSideRZ GetCorner(const G4int index) const
void ParaWrite(xercesc::DOMElement *, const G4Para *const)
G4double GetOuterRadiusMinusZ() const
void EllipsoidWrite(xercesc::DOMElement *, const G4Ellipsoid *const)
G4ThreeVector GetAngles(const G4RotationMatrix &)
G4double GetXHalfLength1() const
G4int GetNofVertices() const
G4double GetX3HalfLength() const
G4double GetTanAlpha2() const
virtual void SolidsWrite(xercesc::DOMElement *)
void TetWrite(xercesc::DOMElement *, const G4Tet *const)
G4double GetDeltaThetaAngle() const
G4double GetX1HalfLength() const
static const double degree
void TubeWrite(xercesc::DOMElement *, const G4Tubs *const)
G4TwoVector GetVertex(G4int index) const
G4int GetNumRZCorner() const
void BooleanWrite(xercesc::DOMElement *, const G4BooleanSolid *const)
G4PolyconeSideRZ GetCorner(G4int index) const
void TorusWrite(xercesc::DOMElement *, const G4Torus *const)
G4double GetX4HalfLength() const
G4double GetInnerRadius() const
G4double GetYHalfLength() const
G4double GetY1HalfLength() const
G4double GetInnerRadius() const
G4ThreeVector GetLowNorm() const
void PositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
G4double GetStartPhiAngle() const
void TwistedtrapWrite(xercesc::DOMElement *, const G4TwistedTrap *const)
G4double GetZTopCut() const
G4double GetYHalfLength2() const
G4double GetZHalfLength() const
G4double GetSemiAxisY() const
static const G4double alpha
virtual G4ThreeVector GetVertex(G4int i) const =0
void GenTrapWrite(xercesc::DOMElement *, const G4GenericTrap *const)
G4double GetAzimuthalAnglePhi() const
G4double GetZHalfLength() const
G4double GetDeltaPhiAngle() const
G4double GetTanAlpha1() const
xercesc::DOMElement * solidsElement
static const G4double pos
G4double GetSemiAxisX() const
G4double GetPhiTwist() const
void SphereWrite(xercesc::DOMElement *, const G4Sphere *const)
G4double GetZHalfLength() const
virtual void AddSolid(const G4VSolid *const)
G4int GetNumRZCorner() const
G4double GetZHalfLength() const
G4double GetEndPhi() const
G4double GetOuterRadius() const
std::vector< const G4VSolid * > solidList
G4ThreeVector GetHighNorm() const