88 if (dynamic_cast<const G4IntersectionSolid*>(
boolean))
89 { tag =
"intersection"; }
else
90 if (dynamic_cast<const G4SubtractionSolid*>(
boolean))
91 { tag =
"subtraction"; }
else
92 if (dynamic_cast<const G4UnionSolid*>(
boolean))
96 G4VSolid* secondPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(1));
106 G4String ErrorMessage =
"The referenced solid '"
108 +
"in the Boolean shape '" +
109 +
boolean->GetName() +
110 +
"' was displaced too many times!";
117 firstpos += disp->GetObjectTranslation();
118 firstrot += firstrot +
GetAngles(disp->GetObjectRotation());
119 firstPtr = disp->GetConstituentMovedSolid();
130 G4String ErrorMessage =
"The referenced solid '"
132 +
"in the Boolean shape '" +
133 +
boolean->GetName() +
134 +
"' was displaced too many times!";
141 pos += disp->GetObjectTranslation();
142 rot +=
GetAngles(disp->GetObjectRotation());
143 secondPtr = disp->GetConstituentMovedSolid();
157 xercesc::DOMElement* booleanElement =
NewElement(tag);
158 booleanElement->setAttributeNode(
NewAttribute(
"name",name));
159 xercesc::DOMElement* firstElement =
NewElement(
"first");
160 firstElement->setAttributeNode(
NewAttribute(
"ref",firstref));
161 booleanElement->appendChild(firstElement);
162 xercesc::DOMElement* secondElement =
NewElement(
"second");
163 secondElement->setAttributeNode(
NewAttribute(
"ref",secondref));
164 booleanElement->appendChild(secondElement);
165 solElement->appendChild(booleanElement);
202 xercesc::DOMElement* boxElement =
NewElement(
"box");
203 boxElement->setAttributeNode(
NewAttribute(
"name",name));
207 boxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
208 solElement->appendChild(boxElement);
216 xercesc::DOMElement* coneElement =
NewElement(
"cone");
217 coneElement->setAttributeNode(
NewAttribute(
"name",name));
232 coneElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
233 coneElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
234 solElement->appendChild(coneElement);
243 xercesc::DOMElement* elconeElement =
NewElement(
"elcone");
244 elconeElement->setAttributeNode(
NewAttribute(
"name",name));
249 elconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
250 solElement->appendChild(elconeElement);
259 xercesc::DOMElement* ellipsoidElement =
NewElement(
"ellipsoid");
260 ellipsoidElement->setAttributeNode(
NewAttribute(
"name",name));
273 solElement->appendChild(ellipsoidElement);
282 xercesc::DOMElement* eltubeElement =
NewElement(
"eltube");
283 eltubeElement->setAttributeNode(
NewAttribute(
"name",name));
287 eltubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
288 solElement->appendChild(eltubeElement);
297 xercesc::DOMElement* xtruElement =
NewElement(
"xtru");
298 xtruElement->setAttributeNode(
NewAttribute(
"name",name));
299 xtruElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
300 solElement->appendChild(xtruElement);
304 for (
G4int i=0;i<NumVertex;i++)
306 xercesc::DOMElement* twoDimVertexElement =
NewElement(
"twoDimVertex");
307 xtruElement->appendChild(twoDimVertexElement);
311 twoDimVertexElement->setAttributeNode(
NewAttribute(
"x",vertex.
x()/
mm));
312 twoDimVertexElement->setAttributeNode(
NewAttribute(
"y",vertex.
y()/
mm));
317 for (
G4int i=0;i<NumSection;i++)
319 xercesc::DOMElement* sectionElement =
NewElement(
"section");
320 xtruElement->appendChild(sectionElement);
324 sectionElement->setAttributeNode(
NewAttribute(
"zOrder",i));
340 xercesc::DOMElement* hypeElement =
NewElement(
"hype");
341 hypeElement->setAttributeNode(
NewAttribute(
"name",name));
352 hypeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
353 hypeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
354 solElement->appendChild(hypeElement);
362 xercesc::DOMElement* orbElement =
NewElement(
"orb");
363 orbElement->setAttributeNode(
NewAttribute(
"name",name));
365 orbElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
366 solElement->appendChild(orbElement);
376 const G4double theta = std::acos(simaxis.z());
377 const G4double phi = (simaxis.z() != 1.0)
378 ? (std::atan(simaxis.y()/simaxis.x())) : (0.0);
380 xercesc::DOMElement* paraElement =
NewElement(
"para");
381 paraElement->setAttributeNode(
NewAttribute(
"name",name));
391 paraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
392 paraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
393 solElement->appendChild(paraElement);
402 xercesc::DOMElement* paraboloidElement =
NewElement(
"paraboloid");
403 paraboloidElement->setAttributeNode(
NewAttribute(
"name",name));
410 paraboloidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
411 solElement->appendChild(paraboloidElement);
419 xercesc::DOMElement* polyconeElement =
NewElement(
"polycone");
420 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
421 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
423 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
425 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
426 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
427 solElement->appendChild(polyconeElement);
434 for (
size_t i=0; i<num_zplanes; i++)
436 ZplaneWrite(polyconeElement,z_array[i],rmin_array[i],rmax_array[i]);
447 xercesc::DOMElement* polyconeElement =
NewElement(
"genericPolycone");
449 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
450 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
452 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
454 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
455 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
456 solElement->appendChild(polyconeElement);
459 for (
size_t i=0; i<num_rzpoints; i++)
474 xercesc::DOMElement* polyhedraElement =
NewElement(
"polyhedra");
475 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
476 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
478 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
480 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
482 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
483 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
484 solElement->appendChild(polyhedraElement);
495 for (
size_t i=0;i<num_zplanes;i++)
498 rmin_array[i]*convertRad, rmax_array[i]*convertRad);
502 xercesc::DOMElement* polyhedraElement =
NewElement(
"genericPolyhedra");
503 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
504 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
506 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
508 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
510 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
511 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
512 solElement->appendChild(polyhedraElement);
516 for (
size_t i=0;i<num_rzpoints;i++)
530 xercesc::DOMElement* sphereElement =
NewElement(
"sphere");
531 sphereElement->setAttributeNode(
NewAttribute(
"name",name));
536 sphereElement->setAttributeNode(
NewAttribute(
"startphi",
538 sphereElement->setAttributeNode(
NewAttribute(
"deltaphi",
540 sphereElement->setAttributeNode(
NewAttribute(
"starttheta",
542 sphereElement->setAttributeNode(
NewAttribute(
"deltatheta",
544 sphereElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
545 sphereElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
546 solElement->appendChild(sphereElement);
556 xercesc::DOMElement* tessellatedElement =
NewElement(
"tessellated");
557 tessellatedElement->setAttributeNode(
NewAttribute(
"name",name));
558 tessellatedElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
559 tessellatedElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
560 solElement->appendChild(tessellatedElement);
562 std::map<G4ThreeVector, G4String> vertexMap;
565 size_t NumVertex = 0;
567 for (
size_t i=0;i<NumFacets;i++)
574 if (NumVertexPerFacet==3) { FacetTag=
"triangular"; }
else
575 if (NumVertexPerFacet==4) { FacetTag=
"quadrangular"; }
578 G4Exception(
"G4GDMLWriteSolids::TessellatedWrite()",
"InvalidSetup",
582 xercesc::DOMElement* facetElement =
NewElement(FacetTag);
583 tessellatedElement->appendChild(facetElement);
585 for (
size_t j=0; j<NumVertexPerFacet; j++)
587 std::stringstream name_stream;
588 std::stringstream ref_stream;
590 name_stream <<
"vertex" << (j+1);
591 ref_stream << solid_name <<
"_v" << NumVertex;
604 if(vertexMap.find(vertex) != vertexMap.end())
606 ref = vertexMap[vertex];
610 vertexMap.insert(std::make_pair(vertex,ref));
617 facetElement->setAttributeNode(
NewAttribute(fname,ref));
628 std::vector<G4ThreeVector> vertexList = tet->
GetVertices();
630 xercesc::DOMElement* tetElement =
NewElement(
"tet");
631 tetElement->setAttributeNode(
NewAttribute(
"name",name));
632 tetElement->setAttributeNode(
NewAttribute(
"vertex1",solid_name+
"_v1"));
633 tetElement->setAttributeNode(
NewAttribute(
"vertex2",solid_name+
"_v2"));
634 tetElement->setAttributeNode(
NewAttribute(
"vertex3",solid_name+
"_v3"));
635 tetElement->setAttributeNode(
NewAttribute(
"vertex4",solid_name+
"_v4"));
636 tetElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
637 solElement->appendChild(tetElement);
650 xercesc::DOMElement* torusElement =
NewElement(
"torus");
651 torusElement->setAttributeNode(
NewAttribute(
"name",name));
659 torusElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
660 torusElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
661 solElement->appendChild(torusElement);
670 std::vector<G4TwoVector> vertices = gtrap->
GetVertices();
672 xercesc::DOMElement* gtrapElement =
NewElement(
"arb8");
673 gtrapElement->setAttributeNode(
NewAttribute(
"name",name));
676 gtrapElement->setAttributeNode(
NewAttribute(
"v1x", vertices[0].
x()));
677 gtrapElement->setAttributeNode(
NewAttribute(
"v1y", vertices[0].
y()));
678 gtrapElement->setAttributeNode(
NewAttribute(
"v2x", vertices[1].
x()));
679 gtrapElement->setAttributeNode(
NewAttribute(
"v2y", vertices[1].
y()));
680 gtrapElement->setAttributeNode(
NewAttribute(
"v3x", vertices[2].
x()));
681 gtrapElement->setAttributeNode(
NewAttribute(
"v3y", vertices[2].
y()));
682 gtrapElement->setAttributeNode(
NewAttribute(
"v4x", vertices[3].
x()));
683 gtrapElement->setAttributeNode(
NewAttribute(
"v4y", vertices[3].
y()));
684 gtrapElement->setAttributeNode(
NewAttribute(
"v5x", vertices[4].
x()));
685 gtrapElement->setAttributeNode(
NewAttribute(
"v5y", vertices[4].
y()));
686 gtrapElement->setAttributeNode(
NewAttribute(
"v6x", vertices[5].
x()));
687 gtrapElement->setAttributeNode(
NewAttribute(
"v6y", vertices[5].
y()));
688 gtrapElement->setAttributeNode(
NewAttribute(
"v7x", vertices[6].
x()));
689 gtrapElement->setAttributeNode(
NewAttribute(
"v7y", vertices[6].
y()));
690 gtrapElement->setAttributeNode(
NewAttribute(
"v8x", vertices[7].
x()));
691 gtrapElement->setAttributeNode(
NewAttribute(
"v8y", vertices[7].
y()));
692 gtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
693 solElement->appendChild(gtrapElement);
702 const G4double phi = (simaxis.z() != 1.0)
703 ? (std::atan(simaxis.y()/simaxis.x())) : (0.0);
704 const G4double theta = std::acos(simaxis.z());
708 xercesc::DOMElement* trapElement =
NewElement(
"trap");
709 trapElement->setAttributeNode(
NewAttribute(
"name",name));
728 trapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
729 trapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
730 solElement->appendChild(trapElement);
738 xercesc::DOMElement* trdElement =
NewElement(
"trd");
739 trdElement->setAttributeNode(
NewAttribute(
"name",name));
750 trdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
751 solElement->appendChild(trdElement);
759 xercesc::DOMElement* tubeElement =
NewElement(
"tube");
760 tubeElement->setAttributeNode(
NewAttribute(
"name",name));
771 tubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
772 tubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
773 solElement->appendChild(tubeElement);
781 xercesc::DOMElement* cuttubeElement =
NewElement(
"cutTube");
782 cuttubeElement->setAttributeNode(
NewAttribute(
"name",name));
789 cuttubeElement->setAttributeNode(
NewAttribute(
"startphi",
791 cuttubeElement->setAttributeNode(
NewAttribute(
"deltaphi",
805 cuttubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
806 cuttubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
807 solElement->appendChild(cuttubeElement);
816 xercesc::DOMElement* twistedboxElement =
NewElement(
"twistedbox");
817 twistedboxElement->setAttributeNode(
NewAttribute(
"name",name));
824 twistedboxElement->setAttributeNode(
NewAttribute(
"PhiTwist",
826 twistedboxElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
827 twistedboxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
828 solElement->appendChild(twistedboxElement);
837 xercesc::DOMElement* twistedtrapElement =
NewElement(
"twistedtrap");
838 twistedtrapElement->setAttributeNode(
NewAttribute(
"name",name));
853 twistedtrapElement->setAttributeNode(
NewAttribute(
"Alph",
855 twistedtrapElement->setAttributeNode(
NewAttribute(
"Theta",
857 twistedtrapElement->setAttributeNode(
NewAttribute(
"Phi",
859 twistedtrapElement->setAttributeNode(
NewAttribute(
"PhiTwist",
861 twistedtrapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
862 twistedtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
864 solElement->appendChild(twistedtrapElement);
873 xercesc::DOMElement* twistedtrdElement =
NewElement(
"twistedtrd");
874 twistedtrdElement->setAttributeNode(
NewAttribute(
"name",name));
885 twistedtrdElement->setAttributeNode(
NewAttribute(
"PhiTwist",
887 twistedtrdElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
888 twistedtrdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
889 solElement->appendChild(twistedtrdElement);
898 xercesc::DOMElement* twistedtubsElement =
NewElement(
"twistedtubs");
899 twistedtubsElement->setAttributeNode(
NewAttribute(
"name",name));
900 twistedtubsElement->setAttributeNode(
NewAttribute(
"twistedangle",
902 twistedtubsElement->setAttributeNode(
NewAttribute(
"endinnerrad",
904 twistedtubsElement->setAttributeNode(
NewAttribute(
"endouterrad",
906 twistedtubsElement->setAttributeNode(
NewAttribute(
"zlen",
908 twistedtubsElement->setAttributeNode(
NewAttribute(
"phi",
910 twistedtubsElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
911 twistedtubsElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
912 solElement->appendChild(twistedtubsElement);
919 xercesc::DOMElement* zplaneElement =
NewElement(
"zplane");
923 element->appendChild(zplaneElement);
930 xercesc::DOMElement* rzpointElement =
NewElement(
"rzpoint");
933 element->appendChild(rzpointElement);
940 xercesc::DOMElement* optElement =
NewElement(
"opticalsurface");
945 optElement->setAttributeNode(
NewAttribute(
"model", smodel));
948 optElement->setAttributeNode(
NewAttribute(
"value", sval));
950 solElement->appendChild(optElement);
965 for (
size_t i=0; i<
solidList.size(); i++)
967 if (
solidList[i] == solidPtr) {
return; }
973 = dynamic_cast<const G4BooleanSolid*>(solidPtr))
975 if (
const G4Box*
const boxPtr
976 = dynamic_cast<const G4Box*>(solidPtr))
978 if (
const G4Cons*
const conePtr
979 = dynamic_cast<const G4Cons*>(solidPtr))
982 = dynamic_cast<const G4EllipticalCone*>(solidPtr))
985 = dynamic_cast<const G4Ellipsoid*>(solidPtr))
988 = dynamic_cast<const G4EllipticalTube*>(solidPtr))
991 = dynamic_cast<const G4ExtrudedSolid*>(solidPtr))
993 if (
const G4Hype*
const hypePtr
994 = dynamic_cast<const G4Hype*>(solidPtr))
996 if (
const G4Orb*
const orbPtr
997 = dynamic_cast<const G4Orb*>(solidPtr))
999 if (
const G4Para*
const paraPtr
1000 = dynamic_cast<const G4Para*>(solidPtr))
1003 = dynamic_cast<const G4Paraboloid*>(solidPtr))
1006 = dynamic_cast<const G4Polycone*>(solidPtr))
1009 = dynamic_cast<const G4GenericPolycone*>(solidPtr))
1012 = dynamic_cast<const G4Polyhedra*>(solidPtr))
1014 if (
const G4Sphere*
const spherePtr
1015 = dynamic_cast<const G4Sphere*>(solidPtr))
1018 = dynamic_cast<const G4TessellatedSolid*>(solidPtr))
1020 if (
const G4Tet*
const tetPtr
1021 = dynamic_cast<const G4Tet*>(solidPtr))
1023 if (
const G4Torus*
const torusPtr
1024 = dynamic_cast<const G4Torus*>(solidPtr))
1027 = dynamic_cast<const G4GenericTrap*>(solidPtr))
1029 if (
const G4Trap*
const trapPtr
1030 = dynamic_cast<const G4Trap*>(solidPtr))
1032 if (
const G4Trd*
const trdPtr
1033 = dynamic_cast<const G4Trd*>(solidPtr))
1035 if (
const G4Tubs*
const tubePtr
1036 = dynamic_cast<const G4Tubs*>(solidPtr))
1039 = dynamic_cast<const G4CutTubs*>(solidPtr))
1042 = dynamic_cast<const G4TwistedBox*>(solidPtr))
1045 = dynamic_cast<const G4TwistedTrap*>(solidPtr))
1048 = dynamic_cast<const G4TwistedTrd*>(solidPtr))
1051 = dynamic_cast<const G4TwistedTubs*>(solidPtr))
1057 G4Exception(
"G4GDMLWriteSolids::AddSolid()",
"WriteError",
G4ThreeVector GetSymAxis() const
static const G4double kAngularPrecision
G4PolyconeSideRZ GetCorner(G4int index) const
G4double GetXHalfLength4() const
G4double GetXHalfLength() const
G4double GetOuterStereo() const
G4double GetX1HalfLength() const
G4OpticalSurfaceModel GetModel() const
G4double GetY1HalfLength() const
G4double GetPolarAngleTheta() const
G4double GetYHalfLength2() const
G4double GetYHalfLength1() const
G4double GetInnerStereo() const
G4double GetSemiAxisX() const
void BoxWrite(xercesc::DOMElement *, const G4Box *const)
G4double GetInnerRadius() const
void PolyhedraWrite(xercesc::DOMElement *, const G4Polyhedra *const)
void TessellatedWrite(xercesc::DOMElement *, const G4TessellatedSolid *const)
G4double GetZTopCut() const
G4double GetZHalfLength() const
G4ThreeVector GetLowNorm() const
G4double GetZHalfLength() const
virtual G4int GetNumberOfVertices() const =0
virtual ~G4GDMLWriteSolids()
void TrdWrite(xercesc::DOMElement *, const G4Trd *const)
G4double GetZBottomCut() const
const G4String & GetName() const
void FirstpositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
void XtruWrite(xercesc::DOMElement *, const G4ExtrudedSolid *const)
const G4SurfaceType & GetType() const
G4double GetZHalfLength() const
G4double GetOuterRadiusMinusZ() const
G4double GetRadiusMinusZ() const
G4double GetX2HalfLength() const
G4double GetInnerRadius() const
virtual G4GeometryType GetEntityType() const =0
G4double GetZHalfLength() const
void TwistedtrdWrite(xercesc::DOMElement *, const G4TwistedTrd *const)
xercesc::DOMElement * NewElement(const G4String &)
G4double GetStartPhiAngle() const
G4double GetDeltaPhiAngle() const
G4double GetZHalfLength() const
G4double GetSemiAxisMax(G4int i) const
G4double GetXHalfLength2() const
G4TwoVector GetVertex(G4int index) const
G4double GetZHalfLength() const
G4double GetZHalfLength() const
void TwistedboxWrite(xercesc::DOMElement *, const G4TwistedBox *const)
G4double GetEndPhi() const
G4double GetTanAlpha2() const
G4int GetNumRZCorner() const
G4double GetPhiTwist() const
G4VFacet * GetFacet(G4int i) const
G4double GetY1HalfLength() const
std::vector< G4ThreeVector > GetVertices() const
G4double GetXHalfLength2() const
G4double GetRadius() const
static const G4int maxTransforms
void RZPointWrite(xercesc::DOMElement *, const G4double &, const G4double &)
void OrbWrite(xercesc::DOMElement *, const G4Orb *const)
void TwistedtubsWrite(xercesc::DOMElement *, const G4TwistedTubs *const)
G4double GetXHalfLength1() const
G4GLOB_DLL std::ostream G4cout
G4double GetDeltaPhiAngle() const
G4double GetPolish() const
G4double GetStartThetaAngle() const
G4double GetXHalfLength3() const
void TrapWrite(xercesc::DOMElement *, const G4Trap *const)
void ConeWrite(xercesc::DOMElement *, const G4Cons *const)
void ElconeWrite(xercesc::DOMElement *, const G4EllipticalCone *const)
G4double GetZHalfLength() const
void ParaboloidWrite(xercesc::DOMElement *, const G4Paraboloid *const)
void FirstrotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
void PolyconeWrite(xercesc::DOMElement *, const G4Polycone *const)
G4double GetY2HalfLength() const
G4int GetNofVertices() const
void OpticalSurfaceWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
G4double GetX3HalfLength() const
G4double GetPhiTwist() const
G4double GetYHalfLength() const
G4double GetStartPhiAngle() const
void AddPosition(const G4String &name, const G4ThreeVector &pos)
void GenericPolyconeWrite(xercesc::DOMElement *, const G4GenericPolycone *const)
G4double GetYHalfLength2() const
G4double GetOuterRadius() const
G4double GetStartPhiAngle() const
G4double GetStartPhi() const
G4String GenerateName(const G4String &, const void *const)
G4double GetInnerRadiusPlusZ() const
void RotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
void CutTubeWrite(xercesc::DOMElement *, const G4CutTubs *const)
G4double GetInnerRadius() const
G4PolyconeHistorical * GetOriginalParameters() const
G4OpticalSurfaceFinish GetFinish() const
G4int GetNofZSections() const
G4double GetZHalfLength() const
G4double GetXHalfLength() const
G4double GetInnerRadius() 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 GetSemiAxisY() const
G4double GetX4HalfLength() const
G4double GetYHalfLength() const
void HypeWrite(xercesc::DOMElement *, const G4Hype *const)
G4int GetNumberOfFacets() const
G4double GetOuterRadius() const
G4double GetRadiusPlusZ() const
G4double GetZHalfLength() const
xercesc::DOMAttr * NewAttribute(const G4String &, const G4String &)
static const G4double kLinearPrecision
G4double GetTanAlpha() const
void EltubeWrite(xercesc::DOMElement *, const G4EllipticalTube *const)
void ParaWrite(xercesc::DOMElement *, const G4Para *const)
G4ThreeVector GetHighNorm() const
void EllipsoidWrite(xercesc::DOMElement *, const G4Ellipsoid *const)
G4ThreeVector GetAngles(const G4RotationMatrix &)
ZSection GetZSection(G4int index) const
virtual void SolidsWrite(xercesc::DOMElement *)
void TetWrite(xercesc::DOMElement *, const G4Tet *const)
G4PolyhedraHistorical * GetOriginalParameters() const
G4double GetZHalfLength() const
G4double GetZHalfLength() const
void TubeWrite(xercesc::DOMElement *, const G4Tubs *const)
G4ThreeVector GetSymAxis() const
G4double GetInnerRadius() const
G4double GetZTopCut() const
void BooleanWrite(xercesc::DOMElement *, const G4BooleanSolid *const)
G4double GetZHalfLength() const
G4double GetAzimuthalAnglePhi() const
void TorusWrite(xercesc::DOMElement *, const G4Torus *const)
G4double GetXHalfLength1() const
G4double GetOuterRadius() const
G4double GetStartPhiAngle() const
G4PolyhedraSideRZ GetCorner(const G4int index) const
G4double GetYHalfLength1() const
G4double GetDeltaPhiAngle() const
void PositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
void TwistedtrapWrite(xercesc::DOMElement *, const G4TwistedTrap *const)
G4double GetPhiTwist() const
G4double GetInnerRadiusMinusZ() const
G4double GetSigmaAlpha() const
G4double GetTanAlpha1() const
G4int GetNumRZCorner() const
virtual G4ThreeVector GetVertex(G4int i) const =0
G4double GetDeltaThetaAngle() const
G4double GetX1HalfLength() const
void GenTrapWrite(xercesc::DOMElement *, const G4GenericTrap *const)
G4double GetTiltAngleAlpha() const
G4double GetX2HalfLength() const
G4double GetOuterRadiusPlusZ() const
const std::vector< G4TwoVector > & GetVertices() const
G4double GetZHalfLength() const
G4double GetOuterRadius() const
G4double GetXHalfLength() const
xercesc::DOMElement * solidsElement
void SphereWrite(xercesc::DOMElement *, const G4Sphere *const)
G4double GetPhiTwist() const
G4double GetOuterRadius() const
virtual void AddSolid(const G4VSolid *const)
G4double GetY2HalfLength() const
std::vector< const G4VSolid * > solidList
G4double GetDeltaPhiAngle() const
G4double GetYHalfLength() const