93 multiUnionElement->setAttributeNode(
NewAttribute(
"name", name));
95 for(
G4int i = 0; i < numSolids; ++i)
107 rot3d.
yx(), rot3d.
yy(), rot3d.
yz(),
108 rot3d.
zx(), rot3d.
zy(), rot3d.
zz()));
113 std::ostringstream os;
116 xercesc::DOMElement* solidElement =
NewElement(
"solid");
117 solidElement->setAttributeNode(
NewAttribute(
"ref", solidref));
118 xercesc::DOMElement* multiUnionNodeElement =
NewElement(
"multiUnionNode");
119 multiUnionNodeElement->setAttributeNode(
NewAttribute(
"name", name+
"_"+nodeName));
120 multiUnionNodeElement->appendChild(solidElement);
125 PositionWrite(multiUnionNodeElement,name+
"_"+nodeName+
"_pos",pos);
131 RotationWrite(multiUnionNodeElement,name+
"_"+nodeName+
"_rot",rot);
133 multiUnionElement->appendChild(multiUnionNodeElement);
136 solElement->appendChild(multiUnionElement);
149 tag =
"intersection";
160 G4VSolid* firstPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(0));
161 G4VSolid* secondPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(1));
171 G4String ErrorMessage =
"The referenced solid '" + firstPtr->
GetName() +
172 +
"in the Boolean shape '" + +
boolean->GetName() +
173 +
"' was displaced too many times!";
174 G4Exception(
"G4GDMLWriteSolids::BooleanWrite()",
"InvalidSetup",
180 firstpos += disp->GetObjectTranslation();
181 firstrot +=
GetAngles(disp->GetObjectRotation());
182 firstPtr = disp->GetConstituentMovedSolid();
193 G4String ErrorMessage =
"The referenced solid '" + secondPtr->
GetName() +
194 +
"in the Boolean shape '" + +
boolean->GetName() +
195 +
"' was displaced too many times!";
196 G4Exception(
"G4GDMLWriteSolids::BooleanWrite()",
"InvalidSetup",
202 pos += disp->GetObjectTranslation();
203 rot +=
GetAngles(disp->GetObjectRotation());
204 secondPtr = disp->GetConstituentMovedSolid();
219 booleanElement->setAttributeNode(
NewAttribute(
"name", name));
220 xercesc::DOMElement* firstElement =
NewElement(
"first");
221 firstElement->setAttributeNode(
NewAttribute(
"ref", firstref));
222 booleanElement->appendChild(firstElement);
223 xercesc::DOMElement* secondElement =
NewElement(
"second");
224 secondElement->setAttributeNode(
NewAttribute(
"ref", secondref));
225 booleanElement->appendChild(secondElement);
226 solElement->appendChild(booleanElement);
274 scaledElement->setAttributeNode(
NewAttribute(
"name", name));
276 xercesc::DOMElement* solidElement =
NewElement(
"solidref");
277 solidElement->setAttributeNode(
NewAttribute(
"ref", solidref));
278 scaledElement->appendChild(solidElement);
284 ScaleWrite(scaledElement, name +
"_scl", sclVector);
287 solElement->appendChild(scaledElement);
293 const G4Box*
const box)
297 xercesc::DOMElement* boxElement =
NewElement(
"box");
298 boxElement->setAttributeNode(
NewAttribute(
"name", name));
299 boxElement->setAttributeNode(
301 boxElement->setAttributeNode(
303 boxElement->setAttributeNode(
305 boxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
306 solElement->appendChild(boxElement);
315 xercesc::DOMElement* coneElement =
NewElement(
"cone");
316 coneElement->setAttributeNode(
NewAttribute(
"name", name));
317 coneElement->setAttributeNode(
319 coneElement->setAttributeNode(
321 coneElement->setAttributeNode(
323 coneElement->setAttributeNode(
325 coneElement->setAttributeNode(
327 coneElement->setAttributeNode(
329 coneElement->setAttributeNode(
331 coneElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
332 coneElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
333 solElement->appendChild(coneElement);
342 xercesc::DOMElement* elconeElement =
NewElement(
"elcone");
343 elconeElement->setAttributeNode(
NewAttribute(
"name", name));
344 elconeElement->setAttributeNode(
346 elconeElement->setAttributeNode(
349 elconeElement->setAttributeNode(
351 elconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
352 solElement->appendChild(elconeElement);
361 xercesc::DOMElement* ellipsoidElement =
NewElement(
"ellipsoid");
362 ellipsoidElement->setAttributeNode(
NewAttribute(
"name", name));
363 ellipsoidElement->setAttributeNode(
365 ellipsoidElement->setAttributeNode(
367 ellipsoidElement->setAttributeNode(
369 ellipsoidElement->setAttributeNode(
371 ellipsoidElement->setAttributeNode(
373 ellipsoidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
374 solElement->appendChild(ellipsoidElement);
383 xercesc::DOMElement* eltubeElement =
NewElement(
"eltube");
384 eltubeElement->setAttributeNode(
NewAttribute(
"name", name));
388 eltubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
389 solElement->appendChild(eltubeElement);
398 xercesc::DOMElement* xtruElement =
NewElement(
"xtru");
399 xtruElement->setAttributeNode(
NewAttribute(
"name", name));
400 xtruElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
401 solElement->appendChild(xtruElement);
405 for(
G4int i = 0; i < NumVertex; ++i)
407 xercesc::DOMElement* twoDimVertexElement =
NewElement(
"twoDimVertex");
408 xtruElement->appendChild(twoDimVertexElement);
412 twoDimVertexElement->setAttributeNode(
NewAttribute(
"x", vertex.
x() / mm));
413 twoDimVertexElement->setAttributeNode(
NewAttribute(
"y", vertex.
y() / mm));
418 for(
G4int i = 0; i < NumSection; ++i)
420 xercesc::DOMElement* sectionElement =
NewElement(
"section");
421 xtruElement->appendChild(sectionElement);
425 sectionElement->setAttributeNode(
NewAttribute(
"zOrder", i));
426 sectionElement->setAttributeNode(
428 sectionElement->setAttributeNode(
430 sectionElement->setAttributeNode(
432 sectionElement->setAttributeNode(
443 xercesc::DOMElement* hypeElement =
NewElement(
"hype");
444 hypeElement->setAttributeNode(
NewAttribute(
"name", name));
445 hypeElement->setAttributeNode(
447 hypeElement->setAttributeNode(
449 hypeElement->setAttributeNode(
451 hypeElement->setAttributeNode(
453 hypeElement->setAttributeNode(
455 hypeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
456 hypeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
457 solElement->appendChild(hypeElement);
462 const G4Orb*
const orb)
466 xercesc::DOMElement* orbElement =
NewElement(
"orb");
467 orbElement->setAttributeNode(
NewAttribute(
"name", name));
469 orbElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
470 solElement->appendChild(orbElement);
484 xercesc::DOMElement* paraElement =
NewElement(
"para");
485 paraElement->setAttributeNode(
NewAttribute(
"name", name));
486 paraElement->setAttributeNode(
488 paraElement->setAttributeNode(
490 paraElement->setAttributeNode(
492 paraElement->setAttributeNode(
NewAttribute(
"alpha", alpha / degree));
493 paraElement->setAttributeNode(
NewAttribute(
"theta", theta / degree));
494 paraElement->setAttributeNode(
NewAttribute(
"phi", phi / degree));
495 paraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
496 paraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
497 solElement->appendChild(paraElement);
506 xercesc::DOMElement* paraboloidElement =
NewElement(
"paraboloid");
507 paraboloidElement->setAttributeNode(
NewAttribute(
"name", name));
508 paraboloidElement->setAttributeNode(
510 paraboloidElement->setAttributeNode(
512 paraboloidElement->setAttributeNode(
514 paraboloidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
515 solElement->appendChild(paraboloidElement);
524 xercesc::DOMElement* polyconeElement =
NewElement(
"polycone");
525 polyconeElement->setAttributeNode(
NewAttribute(
"name", name));
530 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
531 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
532 solElement->appendChild(polyconeElement);
534 const std::size_t num_zplanes
540 for(std::size_t i = 0; i < num_zplanes; ++i)
542 ZplaneWrite(polyconeElement, z_array[i], rmin_array[i], rmax_array[i]);
551 xercesc::DOMElement* polyconeElement =
NewElement(
"genericPolycone");
553 polyconeElement->setAttributeNode(
NewAttribute(
"name", name));
554 polyconeElement->setAttributeNode(
556 polyconeElement->setAttributeNode(
558 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
559 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
560 solElement->appendChild(polyconeElement);
563 for(
G4int i = 0; i < num_rzpoints; ++i)
578 xercesc::DOMElement* polyhedraElement =
NewElement(
"polyhedra");
579 polyhedraElement->setAttributeNode(
NewAttribute(
"name", name));
584 polyhedraElement->setAttributeNode(
586 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
587 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
588 solElement->appendChild(polyhedraElement);
590 const std::size_t num_zplanes
600 for(std::size_t i = 0; i < num_zplanes; ++i)
602 ZplaneWrite(polyhedraElement, z_array[i], rmin_array[i] * convertRad,
603 rmax_array[i] * convertRad);
608 xercesc::DOMElement* polyhedraElement =
NewElement(
"genericPolyhedra");
609 polyhedraElement->setAttributeNode(
NewAttribute(
"name", name));
614 polyhedraElement->setAttributeNode(
616 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
617 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
618 solElement->appendChild(polyhedraElement);
622 for(
G4int i = 0; i < num_rzpoints; ++i)
637 xercesc::DOMElement* sphereElement =
NewElement(
"sphere");
638 sphereElement->setAttributeNode(
NewAttribute(
"name", name));
639 sphereElement->setAttributeNode(
641 sphereElement->setAttributeNode(
643 sphereElement->setAttributeNode(
645 sphereElement->setAttributeNode(
647 sphereElement->setAttributeNode(
649 sphereElement->setAttributeNode(
651 sphereElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
652 sphereElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
653 solElement->appendChild(sphereElement);
663 xercesc::DOMElement* tessellatedElement =
NewElement(
"tessellated");
664 tessellatedElement->setAttributeNode(
NewAttribute(
"name", name));
665 tessellatedElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
666 tessellatedElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
667 solElement->appendChild(tessellatedElement);
669 std::map<G4ThreeVector, G4String, G4ThreeVectorCompare> vertexMap;
672 std::size_t NumVertex = 0;
674 for(std::size_t i = 0; i < NumFacets; ++i)
681 if(NumVertexPerFacet == 3)
683 FacetTag =
"triangular";
685 else if(NumVertexPerFacet == 4)
687 FacetTag =
"quadrangular";
691 G4Exception(
"G4GDMLWriteSolids::TessellatedWrite()",
"InvalidSetup",
695 xercesc::DOMElement* facetElement =
NewElement(FacetTag);
696 tessellatedElement->appendChild(facetElement);
698 for(std::size_t j = 0; j < NumVertexPerFacet; ++j)
700 std::stringstream name_stream;
701 std::stringstream ref_stream;
703 name_stream <<
"vertex" << (j + 1);
704 ref_stream << solid_name <<
"_v" << NumVertex;
706 const G4String& fname = name_stream.str();
717 if(vertexMap.find(vertex) != vertexMap.cend())
719 ref = vertexMap[vertex];
723 vertexMap.insert(std::make_pair(vertex, ref));
730 facetElement->setAttributeNode(
NewAttribute(fname, ref));
737 const G4Tet*
const tet)
742 std::vector<G4ThreeVector> vertexList = tet->
GetVertices();
744 xercesc::DOMElement* tetElement =
NewElement(
"tet");
745 tetElement->setAttributeNode(
NewAttribute(
"name", name));
746 tetElement->setAttributeNode(
NewAttribute(
"vertex1", solid_name +
"_v1"));
747 tetElement->setAttributeNode(
NewAttribute(
"vertex2", solid_name +
"_v2"));
748 tetElement->setAttributeNode(
NewAttribute(
"vertex3", solid_name +
"_v3"));
749 tetElement->setAttributeNode(
NewAttribute(
"vertex4", solid_name +
"_v4"));
750 tetElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
751 solElement->appendChild(tetElement);
765 xercesc::DOMElement* torusElement =
NewElement(
"torus");
766 torusElement->setAttributeNode(
NewAttribute(
"name", name));
770 torusElement->setAttributeNode(
772 torusElement->setAttributeNode(
774 torusElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
775 torusElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
776 solElement->appendChild(torusElement);
785 std::vector<G4TwoVector> vertices = gtrap->
GetVertices();
787 xercesc::DOMElement* gtrapElement =
NewElement(
"arb8");
788 gtrapElement->setAttributeNode(
NewAttribute(
"name", name));
789 gtrapElement->setAttributeNode(
791 gtrapElement->setAttributeNode(
NewAttribute(
"v1x", vertices[0].x()));
792 gtrapElement->setAttributeNode(
NewAttribute(
"v1y", vertices[0].y()));
793 gtrapElement->setAttributeNode(
NewAttribute(
"v2x", vertices[1].x()));
794 gtrapElement->setAttributeNode(
NewAttribute(
"v2y", vertices[1].y()));
795 gtrapElement->setAttributeNode(
NewAttribute(
"v3x", vertices[2].x()));
796 gtrapElement->setAttributeNode(
NewAttribute(
"v3y", vertices[2].y()));
797 gtrapElement->setAttributeNode(
NewAttribute(
"v4x", vertices[3].x()));
798 gtrapElement->setAttributeNode(
NewAttribute(
"v4y", vertices[3].y()));
799 gtrapElement->setAttributeNode(
NewAttribute(
"v5x", vertices[4].x()));
800 gtrapElement->setAttributeNode(
NewAttribute(
"v5y", vertices[4].y()));
801 gtrapElement->setAttributeNode(
NewAttribute(
"v6x", vertices[5].x()));
802 gtrapElement->setAttributeNode(
NewAttribute(
"v6y", vertices[5].y()));
803 gtrapElement->setAttributeNode(
NewAttribute(
"v7x", vertices[6].x()));
804 gtrapElement->setAttributeNode(
NewAttribute(
"v7y", vertices[6].y()));
805 gtrapElement->setAttributeNode(
NewAttribute(
"v8x", vertices[7].x()));
806 gtrapElement->setAttributeNode(
NewAttribute(
"v8y", vertices[7].y()));
807 gtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
808 solElement->appendChild(gtrapElement);
823 xercesc::DOMElement* trapElement =
NewElement(
"trap");
824 trapElement->setAttributeNode(
NewAttribute(
"name", name));
825 trapElement->setAttributeNode(
827 trapElement->setAttributeNode(
NewAttribute(
"theta", theta / degree));
828 trapElement->setAttributeNode(
NewAttribute(
"phi", phi / degree));
829 trapElement->setAttributeNode(
831 trapElement->setAttributeNode(
833 trapElement->setAttributeNode(
835 trapElement->setAttributeNode(
NewAttribute(
"alpha1", alpha1 / degree));
836 trapElement->setAttributeNode(
838 trapElement->setAttributeNode(
840 trapElement->setAttributeNode(
843 trapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
844 trapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
845 solElement->appendChild(trapElement);
850 const G4Trd*
const trd)
854 xercesc::DOMElement* trdElement =
NewElement(
"trd");
855 trdElement->setAttributeNode(
NewAttribute(
"name", name));
856 trdElement->setAttributeNode(
858 trdElement->setAttributeNode(
860 trdElement->setAttributeNode(
862 trdElement->setAttributeNode(
864 trdElement->setAttributeNode(
866 trdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
867 solElement->appendChild(trdElement);
876 xercesc::DOMElement* tubeElement =
NewElement(
"tube");
877 tubeElement->setAttributeNode(
NewAttribute(
"name", name));
878 tubeElement->setAttributeNode(
880 tubeElement->setAttributeNode(
882 tubeElement->setAttributeNode(
884 tubeElement->setAttributeNode(
886 tubeElement->setAttributeNode(
888 tubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
889 tubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
890 solElement->appendChild(tubeElement);
899 xercesc::DOMElement* cuttubeElement =
NewElement(
"cutTube");
900 cuttubeElement->setAttributeNode(
NewAttribute(
"name", name));
901 cuttubeElement->setAttributeNode(
903 cuttubeElement->setAttributeNode(
905 cuttubeElement->setAttributeNode(
907 cuttubeElement->setAttributeNode(
909 cuttubeElement->setAttributeNode(
911 cuttubeElement->setAttributeNode(
913 cuttubeElement->setAttributeNode(
915 cuttubeElement->setAttributeNode(
917 cuttubeElement->setAttributeNode(
919 cuttubeElement->setAttributeNode(
921 cuttubeElement->setAttributeNode(
923 cuttubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
924 cuttubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
925 solElement->appendChild(cuttubeElement);
934 xercesc::DOMElement* twistedboxElement =
NewElement(
"twistedbox");
935 twistedboxElement->setAttributeNode(
NewAttribute(
"name", name));
936 twistedboxElement->setAttributeNode(
938 twistedboxElement->setAttributeNode(
940 twistedboxElement->setAttributeNode(
942 twistedboxElement->setAttributeNode(
944 twistedboxElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
945 twistedboxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
946 solElement->appendChild(twistedboxElement);
955 xercesc::DOMElement* twistedtrapElement =
NewElement(
"twistedtrap");
956 twistedtrapElement->setAttributeNode(
NewAttribute(
"name", name));
957 twistedtrapElement->setAttributeNode(
959 twistedtrapElement->setAttributeNode(
961 twistedtrapElement->setAttributeNode(
963 twistedtrapElement->setAttributeNode(
965 twistedtrapElement->setAttributeNode(
967 twistedtrapElement->setAttributeNode(
969 twistedtrapElement->setAttributeNode(
971 twistedtrapElement->setAttributeNode(
973 twistedtrapElement->setAttributeNode(
975 twistedtrapElement->setAttributeNode(
977 twistedtrapElement->setAttributeNode(
979 twistedtrapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
980 twistedtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
982 solElement->appendChild(twistedtrapElement);
991 xercesc::DOMElement* twistedtrdElement =
NewElement(
"twistedtrd");
992 twistedtrdElement->setAttributeNode(
NewAttribute(
"name", name));
993 twistedtrdElement->setAttributeNode(
995 twistedtrdElement->setAttributeNode(
997 twistedtrdElement->setAttributeNode(
999 twistedtrdElement->setAttributeNode(
1001 twistedtrdElement->setAttributeNode(
1003 twistedtrdElement->setAttributeNode(
1005 twistedtrdElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
1006 twistedtrdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
1007 solElement->appendChild(twistedtrdElement);
1016 xercesc::DOMElement* twistedtubsElement =
NewElement(
"twistedtubs");
1017 twistedtubsElement->setAttributeNode(
NewAttribute(
"name", name));
1018 twistedtubsElement->setAttributeNode(
1020 twistedtubsElement->setAttributeNode(
1022 twistedtubsElement->setAttributeNode(
1024 twistedtubsElement->setAttributeNode(
1026 twistedtubsElement->setAttributeNode(
1028 twistedtubsElement->setAttributeNode(
1030 twistedtubsElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
1031 twistedtubsElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
1032 solElement->appendChild(twistedtubsElement);
1040 xercesc::DOMElement* zplaneElement =
NewElement(
"zplane");
1041 zplaneElement->setAttributeNode(
NewAttribute(
"z", z / mm));
1042 zplaneElement->setAttributeNode(
NewAttribute(
"rmin", rmin / mm));
1043 zplaneElement->setAttributeNode(
NewAttribute(
"rmax", rmax / mm));
1044 element->appendChild(zplaneElement);
1051 xercesc::DOMElement* rzpointElement =
NewElement(
"rzpoint");
1052 rzpointElement->setAttributeNode(
NewAttribute(
"r", r / mm));
1053 rzpointElement->setAttributeNode(
NewAttribute(
"z", z / mm));
1054 element->appendChild(rzpointElement);
1061 xercesc::DOMElement* optElement =
NewElement(
"opticalsurface");
1067 optElement->setAttributeNode(
NewAttribute(
"name", name));
1068 optElement->setAttributeNode(
NewAttribute(
"model", smodel));
1071 optElement->setAttributeNode(
NewAttribute(
"value", sval));
1080 solElement->appendChild(optElement);
1087 xercesc::DOMElement* propElement;
1092 for(
size_t i = 0; i < pvec.size(); ++i)
1094 if(pvec[i] !=
nullptr) {
1096 propElement->setAttributeNode(
1103 optElement->appendChild(propElement);
1106 for(
size_t i = 0; i < cvec.size(); ++i)
1108 if (cvec[i].second ==
true) {
1114 xercesc::DOMElement* constElement =
NewElement(
"constant");
1117 constElement->setAttributeNode(
NewAttribute(
"value", cvec[i].first));
1119 optElement->appendChild(propElement);
1139 for(std::size_t i = 0; i <
solidList.size(); ++i)
1167 const G4Box*
const boxPtr =
static_cast<const G4Box*
>(solidPtr);
1172 const G4Cons*
const conePtr =
static_cast<const G4Cons*
>(solidPtr);
1201 const G4Hype*
const hypePtr =
static_cast<const G4Hype*
>(solidPtr);
1206 const G4Orb*
const orbPtr =
static_cast<const G4Orb*
>(solidPtr);
1211 const G4Para*
const paraPtr =
static_cast<const G4Para*
>(solidPtr);
1251 const G4Tet*
const tetPtr =
static_cast<const G4Tet*
>(solidPtr);
1256 const G4Torus*
const torusPtr =
static_cast<const G4Torus*
>(solidPtr);
1267 const G4Trap*
const trapPtr =
static_cast<const G4Trap*
>(solidPtr);
1272 const G4Trd*
const trdPtr =
static_cast<const G4Trd*
>(solidPtr);
1277 const G4Tubs*
const tubePtr =
static_cast<const G4Tubs*
>(solidPtr);
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
G4double GetYHalfLength() const
G4double GetZHalfLength() const
G4double GetXHalfLength() const
G4double GetOuterRadiusPlusZ() const
G4double GetStartPhiAngle() const
G4double GetDeltaPhiAngle() const
G4double GetInnerRadiusMinusZ() const
G4double GetInnerRadiusPlusZ() const
G4double GetOuterRadiusMinusZ() const
G4double GetZHalfLength() const
G4ThreeVector GetHighNorm() const
G4double GetStartPhiAngle() const
G4double GetZHalfLength() const
G4double GetInnerRadius() const
G4ThreeVector GetLowNorm() const
G4double GetDeltaPhiAngle() const
G4double GetOuterRadius() const
G4double GetSemiAxisMax(G4int i) const
G4double GetZTopCut() const
G4double GetZBottomCut() const
G4double GetSemiAxisX() const
G4double GetSemiAxisY() const
G4double GetZTopCut() const
ZSection GetZSection(G4int index) const
G4int GetNofZSections() const
G4int GetNofVertices() const
G4TwoVector GetVertex(G4int index) const
xercesc::DOMElement * defineElement
void FirstrotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
static const G4double kLinearPrecision
void RotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
static const G4double kAngularPrecision
void AddPosition(const G4String &name, const G4ThreeVector &pos)
void FirstpositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
void PositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
G4ThreeVector GetAngles(const G4RotationMatrix &)
void ScaleWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &scl)
void PropertyVectorWrite(const G4String &, const G4PhysicsFreeVector *const)
void TwistedtrdWrite(xercesc::DOMElement *, const G4TwistedTrd *const)
void TorusWrite(xercesc::DOMElement *, const G4Torus *const)
void RZPointWrite(xercesc::DOMElement *, const G4double &, const G4double &)
void TetWrite(xercesc::DOMElement *, const G4Tet *const)
void TrapWrite(xercesc::DOMElement *, const G4Trap *const)
void HypeWrite(xercesc::DOMElement *, const G4Hype *const)
void TwistedtrapWrite(xercesc::DOMElement *, const G4TwistedTrap *const)
void ScaledWrite(xercesc::DOMElement *, const G4ScaledSolid *const)
void MultiUnionWrite(xercesc::DOMElement *solElement, const G4MultiUnion *const)
virtual void AddSolid(const G4VSolid *const)
void PolyhedraWrite(xercesc::DOMElement *, const G4Polyhedra *const)
void TessellatedWrite(xercesc::DOMElement *, const G4TessellatedSolid *const)
void GenTrapWrite(xercesc::DOMElement *, const G4GenericTrap *const)
void TwistedboxWrite(xercesc::DOMElement *, const G4TwistedBox *const)
void TubeWrite(xercesc::DOMElement *, const G4Tubs *const)
void ParaboloidWrite(xercesc::DOMElement *, const G4Paraboloid *const)
std::vector< const G4VSolid * > solidList
void SphereWrite(xercesc::DOMElement *, const G4Sphere *const)
void BoxWrite(xercesc::DOMElement *, const G4Box *const)
void OrbWrite(xercesc::DOMElement *, const G4Orb *const)
void TwistedtubsWrite(xercesc::DOMElement *, const G4TwistedTubs *const)
void EltubeWrite(xercesc::DOMElement *, const G4EllipticalTube *const)
void BooleanWrite(xercesc::DOMElement *, const G4BooleanSolid *const)
void ElconeWrite(xercesc::DOMElement *, const G4EllipticalCone *const)
void ConeWrite(xercesc::DOMElement *, const G4Cons *const)
void GenericPolyconeWrite(xercesc::DOMElement *, const G4GenericPolycone *const)
virtual void SolidsWrite(xercesc::DOMElement *)
xercesc::DOMElement * solidsElement
virtual ~G4GDMLWriteSolids()
static const G4int maxTransforms
void CutTubeWrite(xercesc::DOMElement *, const G4CutTubs *const)
void EllipsoidWrite(xercesc::DOMElement *, const G4Ellipsoid *const)
void PolyconeWrite(xercesc::DOMElement *, const G4Polycone *const)
void ParaWrite(xercesc::DOMElement *, const G4Para *const)
void PropertyWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
void TrdWrite(xercesc::DOMElement *, const G4Trd *const)
void XtruWrite(xercesc::DOMElement *, const G4ExtrudedSolid *const)
void OpticalSurfaceWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
void ZplaneWrite(xercesc::DOMElement *, const G4double &, const G4double &, const G4double &)
xercesc::DOMElement * NewElement(const G4String &)
G4String GenerateName(const G4String &, const void *const)
xercesc::DOMAttr * NewAttribute(const G4String &, const G4String &)
G4double GetStartPhi() const
G4double GetEndPhi() const
G4int GetNumRZCorner() const
G4PolyconeSideRZ GetCorner(G4int index) const
G4double GetZHalfLength() const
const std::vector< G4TwoVector > & GetVertices() const
G4double GetInnerStereo() const
G4double GetZHalfLength() const
G4double GetOuterStereo() const
G4double GetOuterRadius() const
G4double GetInnerRadius() const
const std::vector< G4String > & GetMaterialConstPropertyNames() const
const std::vector< std::pair< G4double, G4bool > > & GetConstProperties() const
const std::vector< G4MaterialPropertyVector * > & GetProperties() const
const std::vector< G4String > & GetMaterialPropertyNames() const
const G4Transform3D & GetTransformation(G4int index) const
G4int GetNumberOfSolids() const
G4VSolid * GetSolid(G4int index) const
G4OpticalSurfaceModel GetModel() const
G4double GetSigmaAlpha() const
G4OpticalSurfaceFinish GetFinish() const
G4double GetPolish() const
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
G4double GetRadius() const
G4double GetTanAlpha() const
G4ThreeVector GetSymAxis() const
G4double GetYHalfLength() const
G4double GetZHalfLength() const
G4double GetXHalfLength() const
G4double GetRadiusPlusZ() const
G4double GetRadiusMinusZ() const
G4double GetZHalfLength() const
G4PolyconeHistorical * GetOriginalParameters() const
G4int GetNumRZCorner() const
G4PolyhedraHistorical * GetOriginalParameters() const
G4PolyhedraSideRZ GetCorner(const G4int index) const
G4VSolid * GetUnscaledSolid() const
G4Scale3D GetScaleTransform() const
G4double GetStartPhiAngle() const
G4double GetDeltaPhiAngle() const
G4double GetInnerRadius() const
G4double GetOuterRadius() const
G4double GetDeltaThetaAngle() const
G4double GetStartThetaAngle() const
const G4String & GetName() const
const G4SurfaceType & GetType() const
G4int GetNumberOfFacets() const
G4VFacet * GetFacet(G4int i) const
void GetVertices(G4ThreeVector &anchor, G4ThreeVector &p1, G4ThreeVector &p2, G4ThreeVector &p3) const
G4double GetYHalfLength1() const
G4double GetTanAlpha2() const
G4double GetXHalfLength2() const
G4ThreeVector GetSymAxis() const
G4double GetXHalfLength4() const
G4double GetZHalfLength() const
G4double GetYHalfLength2() const
G4double GetTanAlpha1() const
G4double GetXHalfLength3() const
G4double GetXHalfLength1() const
G4double GetXHalfLength2() const
G4double GetYHalfLength2() const
G4double GetXHalfLength1() const
G4double GetYHalfLength1() const
G4double GetZHalfLength() const
G4double GetZHalfLength() const
G4double GetInnerRadius() const
G4double GetOuterRadius() const
G4double GetStartPhiAngle() const
G4double GetDeltaPhiAngle() const
G4double GetPhiTwist() const
G4double GetXHalfLength() const
G4double GetZHalfLength() const
G4double GetYHalfLength() const
G4double GetPolarAngleTheta() const
G4double GetAzimuthalAnglePhi() const
G4double GetTiltAngleAlpha() const
G4double GetZHalfLength() const
G4double GetX1HalfLength() const
G4double GetX2HalfLength() const
G4double GetX3HalfLength() const
G4double GetX4HalfLength() const
G4double GetY2HalfLength() const
G4double GetPhiTwist() const
G4double GetY1HalfLength() const
G4double GetX2HalfLength() const
G4double GetY2HalfLength() const
G4double GetY1HalfLength() const
G4double GetZHalfLength() const
G4double GetPhiTwist() const
G4double GetX1HalfLength() const
G4double GetOuterRadius() const
G4double GetPhiTwist() const
G4double GetEndZ(G4int i) const
G4double GetInnerRadius() const
virtual G4ThreeVector GetVertex(G4int i) const =0
virtual G4int GetNumberOfVertices() const =0
virtual G4GeometryType GetEntityType() const =0