94 xercesc::DOMElement* multiUnionElement =
NewElement(tag);
95 multiUnionElement->setAttributeNode(
NewAttribute(
"name",name));
97 for (
G4int i=0; i<numSolids; ++i)
110 rot3d.
yx(), rot3d.
yy(), rot3d.
yz(),
111 rot3d.
zx(), rot3d.
zy(), rot3d.
zz()));
116 std::ostringstream os; os << i+1;
118 xercesc::DOMElement* solidElement =
NewElement(
"solid");
119 solidElement->setAttributeNode(
NewAttribute(
"ref",solidref));
120 xercesc::DOMElement* multiUnionNodeElement =
NewElement(
"multiUnionNode");
121 multiUnionNodeElement->setAttributeNode(
NewAttribute(
"name", nodeName));
122 multiUnionNodeElement->appendChild(solidElement);
135 multiUnionElement->appendChild(multiUnionNodeElement);
138 solElement->appendChild(multiUnionElement);
149 if (dynamic_cast<const G4IntersectionSolid*>(
boolean))
150 { tag =
"intersection"; }
else
151 if (dynamic_cast<const G4SubtractionSolid*>(
boolean))
152 { tag =
"subtraction"; }
else
153 if (dynamic_cast<const G4UnionSolid*>(
boolean))
156 G4VSolid* firstPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(0));
157 G4VSolid* secondPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(1));
167 G4String ErrorMessage =
"The referenced solid '"
169 +
"in the Boolean shape '" +
170 +
boolean->GetName() +
171 +
"' was displaced too many times!";
178 firstpos += disp->GetObjectTranslation();
179 firstrot +=
GetAngles(disp->GetObjectRotation());
180 firstPtr = disp->GetConstituentMovedSolid();
191 G4String ErrorMessage =
"The referenced solid '"
193 +
"in the Boolean shape '" +
194 +
boolean->GetName() +
195 +
"' was displaced too many times!";
202 pos += disp->GetObjectTranslation();
203 rot +=
GetAngles(disp->GetObjectRotation());
204 secondPtr = disp->GetConstituentMovedSolid();
218 xercesc::DOMElement* booleanElement =
NewElement(tag);
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);
273 xercesc::DOMElement* scaledElement =
NewElement(tag);
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);
296 xercesc::DOMElement* boxElement =
NewElement(
"box");
297 boxElement->setAttributeNode(
NewAttribute(
"name",name));
301 boxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
302 solElement->appendChild(boxElement);
310 xercesc::DOMElement* coneElement =
NewElement(
"cone");
311 coneElement->setAttributeNode(
NewAttribute(
"name",name));
326 coneElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
327 coneElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
328 solElement->appendChild(coneElement);
337 xercesc::DOMElement* elconeElement =
NewElement(
"elcone");
338 elconeElement->setAttributeNode(
NewAttribute(
"name",name));
343 elconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
344 solElement->appendChild(elconeElement);
353 xercesc::DOMElement* ellipsoidElement =
NewElement(
"ellipsoid");
354 ellipsoidElement->setAttributeNode(
NewAttribute(
"name",name));
367 solElement->appendChild(ellipsoidElement);
376 xercesc::DOMElement* eltubeElement =
NewElement(
"eltube");
377 eltubeElement->setAttributeNode(
NewAttribute(
"name",name));
381 eltubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
382 solElement->appendChild(eltubeElement);
391 xercesc::DOMElement* xtruElement =
NewElement(
"xtru");
392 xtruElement->setAttributeNode(
NewAttribute(
"name",name));
393 xtruElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
394 solElement->appendChild(xtruElement);
398 for (
G4int i=0;i<NumVertex;i++)
400 xercesc::DOMElement* twoDimVertexElement =
NewElement(
"twoDimVertex");
401 xtruElement->appendChild(twoDimVertexElement);
405 twoDimVertexElement->setAttributeNode(
NewAttribute(
"x",vertex.
x()/
mm));
406 twoDimVertexElement->setAttributeNode(
NewAttribute(
"y",vertex.
y()/
mm));
411 for (
G4int i=0;i<NumSection;i++)
413 xercesc::DOMElement* sectionElement =
NewElement(
"section");
414 xtruElement->appendChild(sectionElement);
418 sectionElement->setAttributeNode(
NewAttribute(
"zOrder",i));
434 xercesc::DOMElement* hypeElement =
NewElement(
"hype");
435 hypeElement->setAttributeNode(
NewAttribute(
"name",name));
446 hypeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
447 hypeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
448 solElement->appendChild(hypeElement);
456 xercesc::DOMElement* orbElement =
NewElement(
"orb");
457 orbElement->setAttributeNode(
NewAttribute(
"name",name));
459 orbElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
460 solElement->appendChild(orbElement);
471 const G4double theta = simaxis.theta();
473 xercesc::DOMElement* paraElement =
NewElement(
"para");
474 paraElement->setAttributeNode(
NewAttribute(
"name",name));
484 paraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
485 paraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
486 solElement->appendChild(paraElement);
495 xercesc::DOMElement* paraboloidElement =
NewElement(
"paraboloid");
496 paraboloidElement->setAttributeNode(
NewAttribute(
"name",name));
503 paraboloidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
504 solElement->appendChild(paraboloidElement);
512 xercesc::DOMElement* polyconeElement =
NewElement(
"polycone");
513 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
514 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
516 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
518 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
519 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
520 solElement->appendChild(polyconeElement);
527 for (
size_t i=0; i<num_zplanes; i++)
529 ZplaneWrite(polyconeElement,z_array[i],rmin_array[i],rmax_array[i]);
540 xercesc::DOMElement* polyconeElement =
NewElement(
"genericPolycone");
542 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
543 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
545 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
547 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
548 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
549 solElement->appendChild(polyconeElement);
552 for (
size_t i=0; i<num_rzpoints; i++)
567 xercesc::DOMElement* polyhedraElement =
NewElement(
"polyhedra");
568 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
569 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
571 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
573 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
575 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
576 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
577 solElement->appendChild(polyhedraElement);
579 const size_t num_zplanes =
590 for (
size_t i=0;i<num_zplanes;i++)
593 rmin_array[i]*convertRad, rmax_array[i]*convertRad);
598 xercesc::DOMElement* polyhedraElement =
NewElement(
"genericPolyhedra");
599 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
600 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
602 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
604 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
606 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
607 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
608 solElement->appendChild(polyhedraElement);
612 for (
size_t i=0;i<num_rzpoints;i++)
626 xercesc::DOMElement* sphereElement =
NewElement(
"sphere");
627 sphereElement->setAttributeNode(
NewAttribute(
"name",name));
632 sphereElement->setAttributeNode(
NewAttribute(
"startphi",
634 sphereElement->setAttributeNode(
NewAttribute(
"deltaphi",
636 sphereElement->setAttributeNode(
NewAttribute(
"starttheta",
638 sphereElement->setAttributeNode(
NewAttribute(
"deltatheta",
640 sphereElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
641 sphereElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
642 solElement->appendChild(sphereElement);
652 xercesc::DOMElement* tessellatedElement =
NewElement(
"tessellated");
653 tessellatedElement->setAttributeNode(
NewAttribute(
"name",name));
654 tessellatedElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
655 tessellatedElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
656 solElement->appendChild(tessellatedElement);
658 std::map<G4ThreeVector, G4String, G4ThreeVectorCompare> vertexMap;
661 size_t NumVertex = 0;
663 for (
size_t i=0;i<NumFacets;i++)
670 if (NumVertexPerFacet==3) { FacetTag=
"triangular"; }
else
671 if (NumVertexPerFacet==4) { FacetTag=
"quadrangular"; }
674 G4Exception(
"G4GDMLWriteSolids::TessellatedWrite()",
"InvalidSetup",
678 xercesc::DOMElement* facetElement =
NewElement(FacetTag);
679 tessellatedElement->appendChild(facetElement);
681 for (
size_t j=0; j<NumVertexPerFacet; j++)
683 std::stringstream name_stream;
684 std::stringstream ref_stream;
686 name_stream <<
"vertex" << (j+1);
687 ref_stream << solid_name <<
"_v" << NumVertex;
689 const G4String& fname = name_stream.str();
700 if(vertexMap.find(vertex) != vertexMap.end())
702 ref = vertexMap[vertex];
706 vertexMap.insert(std::make_pair(vertex,ref));
713 facetElement->setAttributeNode(
NewAttribute(fname,ref));
724 std::vector<G4ThreeVector> vertexList = tet->
GetVertices();
726 xercesc::DOMElement* tetElement =
NewElement(
"tet");
727 tetElement->setAttributeNode(
NewAttribute(
"name",name));
728 tetElement->setAttributeNode(
NewAttribute(
"vertex1",solid_name+
"_v1"));
729 tetElement->setAttributeNode(
NewAttribute(
"vertex2",solid_name+
"_v2"));
730 tetElement->setAttributeNode(
NewAttribute(
"vertex3",solid_name+
"_v3"));
731 tetElement->setAttributeNode(
NewAttribute(
"vertex4",solid_name+
"_v4"));
732 tetElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
733 solElement->appendChild(tetElement);
746 xercesc::DOMElement* torusElement =
NewElement(
"torus");
747 torusElement->setAttributeNode(
NewAttribute(
"name",name));
755 torusElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
756 torusElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
757 solElement->appendChild(torusElement);
766 std::vector<G4TwoVector> vertices = gtrap->
GetVertices();
768 xercesc::DOMElement* gtrapElement =
NewElement(
"arb8");
769 gtrapElement->setAttributeNode(
NewAttribute(
"name",name));
772 gtrapElement->setAttributeNode(
NewAttribute(
"v1x", vertices[0].
x()));
773 gtrapElement->setAttributeNode(
NewAttribute(
"v1y", vertices[0].
y()));
774 gtrapElement->setAttributeNode(
NewAttribute(
"v2x", vertices[1].
x()));
775 gtrapElement->setAttributeNode(
NewAttribute(
"v2y", vertices[1].
y()));
776 gtrapElement->setAttributeNode(
NewAttribute(
"v3x", vertices[2].
x()));
777 gtrapElement->setAttributeNode(
NewAttribute(
"v3y", vertices[2].
y()));
778 gtrapElement->setAttributeNode(
NewAttribute(
"v4x", vertices[3].
x()));
779 gtrapElement->setAttributeNode(
NewAttribute(
"v4y", vertices[3].
y()));
780 gtrapElement->setAttributeNode(
NewAttribute(
"v5x", vertices[4].
x()));
781 gtrapElement->setAttributeNode(
NewAttribute(
"v5y", vertices[4].
y()));
782 gtrapElement->setAttributeNode(
NewAttribute(
"v6x", vertices[5].
x()));
783 gtrapElement->setAttributeNode(
NewAttribute(
"v6y", vertices[5].
y()));
784 gtrapElement->setAttributeNode(
NewAttribute(
"v7x", vertices[6].
x()));
785 gtrapElement->setAttributeNode(
NewAttribute(
"v7y", vertices[6].
y()));
786 gtrapElement->setAttributeNode(
NewAttribute(
"v8x", vertices[7].
x()));
787 gtrapElement->setAttributeNode(
NewAttribute(
"v8y", vertices[7].
y()));
788 gtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
789 solElement->appendChild(gtrapElement);
799 const G4double theta = simaxis.theta();
803 xercesc::DOMElement* trapElement =
NewElement(
"trap");
804 trapElement->setAttributeNode(
NewAttribute(
"name",name));
823 trapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
824 trapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
825 solElement->appendChild(trapElement);
833 xercesc::DOMElement* trdElement =
NewElement(
"trd");
834 trdElement->setAttributeNode(
NewAttribute(
"name",name));
845 trdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
846 solElement->appendChild(trdElement);
854 xercesc::DOMElement* tubeElement =
NewElement(
"tube");
855 tubeElement->setAttributeNode(
NewAttribute(
"name",name));
866 tubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
867 tubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
868 solElement->appendChild(tubeElement);
876 xercesc::DOMElement* cuttubeElement =
NewElement(
"cutTube");
877 cuttubeElement->setAttributeNode(
NewAttribute(
"name",name));
884 cuttubeElement->setAttributeNode(
NewAttribute(
"startphi",
886 cuttubeElement->setAttributeNode(
NewAttribute(
"deltaphi",
900 cuttubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
901 cuttubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
902 solElement->appendChild(cuttubeElement);
911 xercesc::DOMElement* twistedboxElement =
NewElement(
"twistedbox");
912 twistedboxElement->setAttributeNode(
NewAttribute(
"name",name));
919 twistedboxElement->setAttributeNode(
NewAttribute(
"PhiTwist",
921 twistedboxElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
922 twistedboxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
923 solElement->appendChild(twistedboxElement);
932 xercesc::DOMElement* twistedtrapElement =
NewElement(
"twistedtrap");
933 twistedtrapElement->setAttributeNode(
NewAttribute(
"name",name));
948 twistedtrapElement->setAttributeNode(
NewAttribute(
"Alph",
950 twistedtrapElement->setAttributeNode(
NewAttribute(
"Theta",
952 twistedtrapElement->setAttributeNode(
NewAttribute(
"Phi",
954 twistedtrapElement->setAttributeNode(
NewAttribute(
"PhiTwist",
956 twistedtrapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
957 twistedtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
959 solElement->appendChild(twistedtrapElement);
968 xercesc::DOMElement* twistedtrdElement =
NewElement(
"twistedtrd");
969 twistedtrdElement->setAttributeNode(
NewAttribute(
"name",name));
980 twistedtrdElement->setAttributeNode(
NewAttribute(
"PhiTwist",
982 twistedtrdElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
983 twistedtrdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
984 solElement->appendChild(twistedtrdElement);
993 xercesc::DOMElement* twistedtubsElement =
NewElement(
"twistedtubs");
994 twistedtubsElement->setAttributeNode(
NewAttribute(
"name",name));
995 twistedtubsElement->setAttributeNode(
NewAttribute(
"twistedangle",
997 twistedtubsElement->setAttributeNode(
NewAttribute(
"midinnerrad",
999 twistedtubsElement->setAttributeNode(
NewAttribute(
"midouterrad",
1001 twistedtubsElement->setAttributeNode(
NewAttribute(
"negativeEndz",
1003 twistedtubsElement->setAttributeNode(
NewAttribute(
"positiveEndz",
1005 twistedtubsElement->setAttributeNode(
NewAttribute(
"phi",
1007 twistedtubsElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
1008 twistedtubsElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
1009 solElement->appendChild(twistedtubsElement);
1016 xercesc::DOMElement* zplaneElement =
NewElement(
"zplane");
1020 element->appendChild(zplaneElement);
1027 xercesc::DOMElement* rzpointElement =
NewElement(
"rzpoint");
1030 element->appendChild(rzpointElement);
1037 xercesc::DOMElement* optElement =
NewElement(
"opticalsurface");
1042 optElement->setAttributeNode(
NewAttribute(
"model", smodel));
1045 optElement->setAttributeNode(
NewAttribute(
"value", sval));
1054 solElement->appendChild(optElement);
1060 xercesc::DOMElement* propElement;
1066 std::map<
G4int, G4PhysicsOrderedFreeVector*,
1067 std::less<G4int> >::const_iterator mpos;
1069 std::less<G4int> >::const_iterator cpos;
1070 for (mpos=pmap->begin(); mpos!=pmap->end(); mpos++)
1082 optElement->appendChild(propElement);
1086 G4String warn_message =
"Null pointer for material property -"
1088 +
"- of optical surface -" + surf->
GetName() +
"- !";
1089 G4Exception(
"G4GDMLWriteSolids::PropertyWrite()",
"NullPointer",
1094 for (cpos=cmap->begin(); cpos!=cmap->end(); cpos++)
1101 xercesc::DOMElement* constElement =
NewElement(
"constant");
1104 constElement->setAttributeNode(
NewAttribute(
"value", cpos->second));
1106 optElement->appendChild(propElement);
1123 for (
size_t i=0; i<
solidList.size(); i++)
1125 if (
solidList[i] == solidPtr) {
return; }
1131 = dynamic_cast<const G4BooleanSolid*>(solidPtr))
1134 = dynamic_cast<const G4ScaledSolid*>(solidPtr))
1141 {
const G4Box*
const boxPtr
1142 =
static_cast<const G4Box*
>(solidPtr);
1145 {
const G4Cons*
const conePtr
1146 =
static_cast<const G4Cons*
>(solidPtr);
1165 {
const G4Hype*
const hypePtr
1166 =
static_cast<const G4Hype*
>(solidPtr);
1169 {
const G4Orb*
const orbPtr
1170 =
static_cast<const G4Orb*
>(solidPtr);
1173 {
const G4Para*
const paraPtr
1174 =
static_cast<const G4Para*
>(solidPtr);
1194 =
static_cast<const G4Sphere*
>(solidPtr);
1201 {
const G4Tet*
const tetPtr
1202 =
static_cast<const G4Tet*
>(solidPtr);
1205 {
const G4Torus*
const torusPtr
1206 =
static_cast<const G4Torus*
>(solidPtr);
1213 {
const G4Trap*
const trapPtr
1214 =
static_cast<const G4Trap*
>(solidPtr);
1217 {
const G4Trd*
const trdPtr
1218 =
static_cast<const G4Trd*
>(solidPtr);
1221 {
const G4Tubs*
const tubePtr
1222 =
static_cast<const G4Tubs*
>(solidPtr);
1226 =
static_cast<const G4CutTubs*
>(solidPtr);
1248 G4Exception(
"G4GDMLWriteSolids::AddSolid()",
"WriteError",
G4double GetX1HalfLength() const
void ZplaneWrite(xercesc::DOMElement *, const G4double &, const G4double &, const G4double &)
G4double GetTanAlpha1() const
void FirstpositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
ZSection GetZSection(G4int index) const
void ElconeWrite(xercesc::DOMElement *, const G4EllipticalCone *const)
G4TwoVector GetVertex(G4int index) const
G4double GetOuterStereo() const
const std::map< G4int, G4double, std::less< G4int > > * GetConstPropertyMap() const
void PropertyVectorWrite(const G4String &, const G4PhysicsOrderedFreeVector *const)
G4double GetYHalfLength() const
G4double GetInnerRadiusMinusZ() const
CLHEP::Hep3Vector G4ThreeVector
G4double GetSemiAxisMax(G4int i) const
void OrbWrite(xercesc::DOMElement *, const G4Orb *const)
G4double GetRadiusPlusZ() const
G4double GetX4HalfLength() const
G4VSolid * GetSolid(G4int index) const
void SphereWrite(xercesc::DOMElement *, const G4Sphere *const)
const std::map< G4int, G4MaterialPropertyVector *, std::less< G4int > > * GetPropertyMap() const
static const G4double pos
void PropertyWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
G4double GetRadius() const
G4double GetPhiTwist() const
G4double GetTanAlpha() const
void TwistedtubsWrite(xercesc::DOMElement *, const G4TwistedTubs *const)
G4double GetAzimuthalAnglePhi() const
G4double GetOuterRadius() const
G4double GetY2HalfLength() const
G4String GenerateName(const G4String &, const void *const)
G4double GetStartPhi() const
G4double GetEndPhi() const
static constexpr double mm
G4double GetPolish() const
void TrdWrite(xercesc::DOMElement *, const G4Trd *const)
G4double GetOuterRadius() const
void ScaledWrite(xercesc::DOMElement *, const G4ScaledSolid *const)
G4double GetOuterRadius() const
G4double GetXHalfLength1() const
G4double GetXHalfLength4() const
xercesc::DOMElement * NewElement(const G4String &)
static const G4double kLinearPrecision
G4Scale3D GetScaleTransform() const
G4double GetZHalfLength() const
void TetWrite(xercesc::DOMElement *, const G4Tet *const)
G4double GetZHalfLength() const
G4double GetXHalfLength() const
G4double GetYHalfLength2() const
std::vector< G4String > GetMaterialPropertyNames() const
G4ThreeVector GetSymAxis() const
G4double GetZHalfLength() const
G4ThreeVector GetSymAxis() const
void ParaWrite(xercesc::DOMElement *, const G4Para *const)
G4double GetXHalfLength3() const
void CutTubeWrite(xercesc::DOMElement *, const G4CutTubs *const)
G4double GetY2HalfLength() const
G4double GetOuterRadiusMinusZ() const
G4PolyhedraHistorical * GetOriginalParameters() const
G4double GetX1HalfLength() const
void EllipsoidWrite(xercesc::DOMElement *, const G4Ellipsoid *const)
G4double GetDeltaPhiAngle() const
G4double GetOuterRadiusPlusZ() const
std::vector< const G4VSolid * > solidList
virtual G4ThreeVector GetVertex(G4int i) const =0
G4double GetZHalfLength() const
G4double GetYHalfLength2() const
void PolyconeWrite(xercesc::DOMElement *, const G4Polycone *const)
G4double GetZHalfLength() const
G4double GetXHalfLength2() const
G4double GetXHalfLength1() const
void GenTrapWrite(xercesc::DOMElement *, const G4GenericTrap *const)
G4double GetSemiAxisY() const
void EltubeWrite(xercesc::DOMElement *, const G4EllipticalTube *const)
G4ThreeVector GetLowNorm() const
std::vector< G4ThreeVector > GetVertices() const
G4ThreeVector GetAngles(const G4RotationMatrix &)
G4double GetTiltAngleAlpha() const
void ParaboloidWrite(xercesc::DOMElement *, const G4Paraboloid *const)
virtual void SolidsWrite(xercesc::DOMElement *)
const G4String & GetName() const
static const G4double kAngularPrecision
void FirstrotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
G4double GetYHalfLength() const
G4double GetEndZ(G4int i) const
static const G4int maxTransforms
G4OpticalSurfaceModel GetModel() const
G4double GetPhiTwist() const
G4double GetInnerRadius() const
void PolyhedraWrite(xercesc::DOMElement *, const G4Polyhedra *const)
const G4Transform3D & GetTransformation(G4int index) const
virtual void AddSolid(const G4VSolid *const)
G4int GetNumberOfFacets() const
static const G4double alpha
G4double GetZTopCut() const
xercesc::DOMElement * defineElement
const std::vector< G4TwoVector > & GetVertices() const
G4double GetX2HalfLength() const
G4double GetInnerRadius() const
void TessellatedWrite(xercesc::DOMElement *, const G4TessellatedSolid *const)
G4double GetInnerRadiusPlusZ() const
virtual G4int GetNumberOfVertices() const =0
void TubeWrite(xercesc::DOMElement *, const G4Tubs *const)
G4double GetZHalfLength() const
G4double GetStartPhiAngle() const
G4double GetY1HalfLength() const
void BooleanWrite(xercesc::DOMElement *, const G4BooleanSolid *const)
G4double GetXHalfLength() const
G4double GetZBottomCut() const
G4double GetYHalfLength1() const
G4double GetStartThetaAngle() const
G4double GetZHalfLength() const
G4PolyconeSideRZ GetCorner(G4int index) const
G4int GetNofZSections() const
void GenericPolyconeWrite(xercesc::DOMElement *, const G4GenericPolycone *const)
G4double GetZHalfLength() const
G4PolyhedraSideRZ GetCorner(const G4int index) const
G4double GetPhiTwist() const
void TwistedboxWrite(xercesc::DOMElement *, const G4TwistedBox *const)
G4double GetZHalfLength() const
void RZPointWrite(xercesc::DOMElement *, const G4double &, const G4double &)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4double GetSigmaAlpha() const
G4double GetSemiAxisX() const
G4double GetY1HalfLength() const
void MultiUnionWrite(xercesc::DOMElement *solElement, const G4MultiUnion *const)
G4double GetPhiTwist() const
std::vector< G4String > GetMaterialConstPropertyNames() const
void OpticalSurfaceWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
G4double GetXHalfLength2() const
G4double GetDeltaPhiAngle() const
G4double GetStartPhiAngle() const
G4int GetNumRZCorner() const
G4double GetDeltaThetaAngle() const
G4ThreeVector GetHighNorm() const
G4double GetInnerRadius() const
G4double GetStartPhiAngle() const
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
void HypeWrite(xercesc::DOMElement *, const G4Hype *const)
static constexpr double degree
G4double GetOuterRadius() const
G4GLOB_DLL std::ostream G4cout
G4VSolid * GetUnscaledSolid() const
G4double GetTanAlpha2() const
G4double GetZTopCut() const
virtual ~G4GDMLWriteSolids()
G4double GetDeltaPhiAngle() const
xercesc::DOMAttr * NewAttribute(const G4String &, const G4String &)
G4double GetInnerStereo() const
void TrapWrite(xercesc::DOMElement *, const G4Trap *const)
G4double GetPolarAngleTheta() const
void XtruWrite(xercesc::DOMElement *, const G4ExtrudedSolid *const)
G4OpticalSurfaceFinish GetFinish() const
G4PolyconeHistorical * GetOriginalParameters() const
G4double GetYHalfLength1() const
void ConeWrite(xercesc::DOMElement *, const G4Cons *const)
void RotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
G4double GetZHalfLength() const
G4double GetDeltaPhiAngle() const
G4double GetStartPhiAngle() const
G4int GetNofVertices() const
void TwistedtrapWrite(xercesc::DOMElement *, const G4TwistedTrap *const)
const G4SurfaceType & GetType() const
virtual G4GeometryType GetEntityType() const =0
G4double GetX3HalfLength() const
void AddPosition(const G4String &name, const G4ThreeVector &pos)
G4double GetX2HalfLength() const
G4double GetXHalfLength() const
void TorusWrite(xercesc::DOMElement *, const G4Torus *const)
G4double GetZHalfLength() const
void BoxWrite(xercesc::DOMElement *, const G4Box *const)
G4double GetZHalfLength() const
G4double GetOuterRadius() const
G4double GetInnerRadius() const
xercesc::DOMElement * solidsElement
G4int GetNumberOfSolids() const
void ScaleWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &scl)
G4double GetRadiusMinusZ() const
G4double GetZHalfLength() const
void PositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
G4int GetNumRZCorner() const
G4double GetYHalfLength() const
G4double GetInnerRadius() const
void TwistedtrdWrite(xercesc::DOMElement *, const G4TwistedTrd *const)
G4VFacet * GetFacet(G4int i) const