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);
377 const G4double theta = simaxis.theta();
379 xercesc::DOMElement* paraElement =
NewElement(
"para");
380 paraElement->setAttributeNode(
NewAttribute(
"name",name));
390 paraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
391 paraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
392 solElement->appendChild(paraElement);
401 xercesc::DOMElement* paraboloidElement =
NewElement(
"paraboloid");
402 paraboloidElement->setAttributeNode(
NewAttribute(
"name",name));
409 paraboloidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
410 solElement->appendChild(paraboloidElement);
418 xercesc::DOMElement* polyconeElement =
NewElement(
"polycone");
419 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
420 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
422 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
424 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
425 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
426 solElement->appendChild(polyconeElement);
433 for (
size_t i=0; i<num_zplanes; i++)
435 ZplaneWrite(polyconeElement,z_array[i],rmin_array[i],rmax_array[i]);
446 xercesc::DOMElement* polyconeElement =
NewElement(
"genericPolycone");
448 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
449 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
451 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
453 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
454 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
455 solElement->appendChild(polyconeElement);
458 for (
size_t i=0; i<num_rzpoints; i++)
473 xercesc::DOMElement* polyhedraElement =
NewElement(
"polyhedra");
474 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
475 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
477 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
479 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
481 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
482 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
483 solElement->appendChild(polyhedraElement);
494 for (
size_t i=0;i<num_zplanes;i++)
497 rmin_array[i]*convertRad, rmax_array[i]*convertRad);
501 xercesc::DOMElement* polyhedraElement =
NewElement(
"genericPolyhedra");
502 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
503 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
505 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
507 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
509 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
510 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
511 solElement->appendChild(polyhedraElement);
515 for (
size_t i=0;i<num_rzpoints;i++)
529 xercesc::DOMElement* sphereElement =
NewElement(
"sphere");
530 sphereElement->setAttributeNode(
NewAttribute(
"name",name));
535 sphereElement->setAttributeNode(
NewAttribute(
"startphi",
537 sphereElement->setAttributeNode(
NewAttribute(
"deltaphi",
539 sphereElement->setAttributeNode(
NewAttribute(
"starttheta",
541 sphereElement->setAttributeNode(
NewAttribute(
"deltatheta",
543 sphereElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
544 sphereElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
545 solElement->appendChild(sphereElement);
555 xercesc::DOMElement* tessellatedElement =
NewElement(
"tessellated");
556 tessellatedElement->setAttributeNode(
NewAttribute(
"name",name));
557 tessellatedElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
558 tessellatedElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
559 solElement->appendChild(tessellatedElement);
561 std::map<G4ThreeVector, G4String, G4ThreeVectorCompare> vertexMap;
564 size_t NumVertex = 0;
566 for (
size_t i=0;i<NumFacets;i++)
573 if (NumVertexPerFacet==3) { FacetTag=
"triangular"; }
else
574 if (NumVertexPerFacet==4) { FacetTag=
"quadrangular"; }
577 G4Exception(
"G4GDMLWriteSolids::TessellatedWrite()",
"InvalidSetup",
581 xercesc::DOMElement* facetElement =
NewElement(FacetTag);
582 tessellatedElement->appendChild(facetElement);
584 for (
size_t j=0; j<NumVertexPerFacet; j++)
586 std::stringstream name_stream;
587 std::stringstream ref_stream;
589 name_stream <<
"vertex" << (j+1);
590 ref_stream << solid_name <<
"_v" << NumVertex;
592 const G4String& fname = name_stream.str();
603 if(vertexMap.find(vertex) != vertexMap.end())
605 ref = vertexMap[vertex];
609 vertexMap.insert(std::make_pair(vertex,ref));
616 facetElement->setAttributeNode(
NewAttribute(fname,ref));
627 std::vector<G4ThreeVector> vertexList = tet->
GetVertices();
629 xercesc::DOMElement* tetElement =
NewElement(
"tet");
630 tetElement->setAttributeNode(
NewAttribute(
"name",name));
631 tetElement->setAttributeNode(
NewAttribute(
"vertex1",solid_name+
"_v1"));
632 tetElement->setAttributeNode(
NewAttribute(
"vertex2",solid_name+
"_v2"));
633 tetElement->setAttributeNode(
NewAttribute(
"vertex3",solid_name+
"_v3"));
634 tetElement->setAttributeNode(
NewAttribute(
"vertex4",solid_name+
"_v4"));
635 tetElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
636 solElement->appendChild(tetElement);
649 xercesc::DOMElement* torusElement =
NewElement(
"torus");
650 torusElement->setAttributeNode(
NewAttribute(
"name",name));
658 torusElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
659 torusElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
660 solElement->appendChild(torusElement);
669 std::vector<G4TwoVector> vertices = gtrap->
GetVertices();
671 xercesc::DOMElement* gtrapElement =
NewElement(
"arb8");
672 gtrapElement->setAttributeNode(
NewAttribute(
"name",name));
675 gtrapElement->setAttributeNode(
NewAttribute(
"v1x", vertices[0].x()));
676 gtrapElement->setAttributeNode(
NewAttribute(
"v1y", vertices[0].y()));
677 gtrapElement->setAttributeNode(
NewAttribute(
"v2x", vertices[1].x()));
678 gtrapElement->setAttributeNode(
NewAttribute(
"v2y", vertices[1].y()));
679 gtrapElement->setAttributeNode(
NewAttribute(
"v3x", vertices[2].x()));
680 gtrapElement->setAttributeNode(
NewAttribute(
"v3y", vertices[2].y()));
681 gtrapElement->setAttributeNode(
NewAttribute(
"v4x", vertices[3].x()));
682 gtrapElement->setAttributeNode(
NewAttribute(
"v4y", vertices[3].y()));
683 gtrapElement->setAttributeNode(
NewAttribute(
"v5x", vertices[4].x()));
684 gtrapElement->setAttributeNode(
NewAttribute(
"v5y", vertices[4].y()));
685 gtrapElement->setAttributeNode(
NewAttribute(
"v6x", vertices[5].x()));
686 gtrapElement->setAttributeNode(
NewAttribute(
"v6y", vertices[5].y()));
687 gtrapElement->setAttributeNode(
NewAttribute(
"v7x", vertices[6].x()));
688 gtrapElement->setAttributeNode(
NewAttribute(
"v7y", vertices[6].y()));
689 gtrapElement->setAttributeNode(
NewAttribute(
"v8x", vertices[7].x()));
690 gtrapElement->setAttributeNode(
NewAttribute(
"v8y", vertices[7].y()));
691 gtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
692 solElement->appendChild(gtrapElement);
702 const G4double theta = simaxis.theta();
706 xercesc::DOMElement* trapElement =
NewElement(
"trap");
707 trapElement->setAttributeNode(
NewAttribute(
"name",name));
726 trapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
727 trapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
728 solElement->appendChild(trapElement);
736 xercesc::DOMElement* trdElement =
NewElement(
"trd");
737 trdElement->setAttributeNode(
NewAttribute(
"name",name));
748 trdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
749 solElement->appendChild(trdElement);
757 xercesc::DOMElement* tubeElement =
NewElement(
"tube");
758 tubeElement->setAttributeNode(
NewAttribute(
"name",name));
769 tubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
770 tubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
771 solElement->appendChild(tubeElement);
779 xercesc::DOMElement* cuttubeElement =
NewElement(
"cutTube");
780 cuttubeElement->setAttributeNode(
NewAttribute(
"name",name));
787 cuttubeElement->setAttributeNode(
NewAttribute(
"startphi",
789 cuttubeElement->setAttributeNode(
NewAttribute(
"deltaphi",
803 cuttubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
804 cuttubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
805 solElement->appendChild(cuttubeElement);
814 xercesc::DOMElement* twistedboxElement =
NewElement(
"twistedbox");
815 twistedboxElement->setAttributeNode(
NewAttribute(
"name",name));
822 twistedboxElement->setAttributeNode(
NewAttribute(
"PhiTwist",
824 twistedboxElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
825 twistedboxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
826 solElement->appendChild(twistedboxElement);
835 xercesc::DOMElement* twistedtrapElement =
NewElement(
"twistedtrap");
836 twistedtrapElement->setAttributeNode(
NewAttribute(
"name",name));
851 twistedtrapElement->setAttributeNode(
NewAttribute(
"Alph",
853 twistedtrapElement->setAttributeNode(
NewAttribute(
"Theta",
855 twistedtrapElement->setAttributeNode(
NewAttribute(
"Phi",
857 twistedtrapElement->setAttributeNode(
NewAttribute(
"PhiTwist",
859 twistedtrapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
860 twistedtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
862 solElement->appendChild(twistedtrapElement);
871 xercesc::DOMElement* twistedtrdElement =
NewElement(
"twistedtrd");
872 twistedtrdElement->setAttributeNode(
NewAttribute(
"name",name));
883 twistedtrdElement->setAttributeNode(
NewAttribute(
"PhiTwist",
885 twistedtrdElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
886 twistedtrdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
887 solElement->appendChild(twistedtrdElement);
896 xercesc::DOMElement* twistedtubsElement =
NewElement(
"twistedtubs");
897 twistedtubsElement->setAttributeNode(
NewAttribute(
"name",name));
898 twistedtubsElement->setAttributeNode(
NewAttribute(
"twistedangle",
900 twistedtubsElement->setAttributeNode(
NewAttribute(
"endinnerrad",
902 twistedtubsElement->setAttributeNode(
NewAttribute(
"endouterrad",
904 twistedtubsElement->setAttributeNode(
NewAttribute(
"zlen",
906 twistedtubsElement->setAttributeNode(
NewAttribute(
"phi",
908 twistedtubsElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
909 twistedtubsElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
910 solElement->appendChild(twistedtubsElement);
917 xercesc::DOMElement* zplaneElement =
NewElement(
"zplane");
921 element->appendChild(zplaneElement);
928 xercesc::DOMElement* rzpointElement =
NewElement(
"rzpoint");
931 element->appendChild(rzpointElement);
938 xercesc::DOMElement* optElement =
NewElement(
"opticalsurface");
943 optElement->setAttributeNode(
NewAttribute(
"model", smodel));
946 optElement->setAttributeNode(
NewAttribute(
"value", sval));
948 solElement->appendChild(optElement);
963 for (
size_t i=0; i<
solidList.size(); i++)
965 if (
solidList[i] == solidPtr) {
return; }
971 = dynamic_cast<const G4BooleanSolid*>(solidPtr))
973 if (
const G4Box*
const boxPtr
974 = dynamic_cast<const G4Box*>(solidPtr))
976 if (
const G4Cons*
const conePtr
977 = dynamic_cast<const G4Cons*>(solidPtr))
980 = dynamic_cast<const G4EllipticalCone*>(solidPtr))
983 = dynamic_cast<const G4Ellipsoid*>(solidPtr))
986 = dynamic_cast<const G4EllipticalTube*>(solidPtr))
989 = dynamic_cast<const G4ExtrudedSolid*>(solidPtr))
991 if (
const G4Hype*
const hypePtr
992 = dynamic_cast<const G4Hype*>(solidPtr))
994 if (
const G4Orb*
const orbPtr
995 = dynamic_cast<const G4Orb*>(solidPtr))
997 if (
const G4Para*
const paraPtr
998 = dynamic_cast<const G4Para*>(solidPtr))
1001 = dynamic_cast<const G4Paraboloid*>(solidPtr))
1004 = dynamic_cast<const G4Polycone*>(solidPtr))
1007 = dynamic_cast<const G4GenericPolycone*>(solidPtr))
1010 = dynamic_cast<const G4Polyhedra*>(solidPtr))
1012 if (
const G4Sphere*
const spherePtr
1013 = dynamic_cast<const G4Sphere*>(solidPtr))
1016 = dynamic_cast<const G4TessellatedSolid*>(solidPtr))
1018 if (
const G4Tet*
const tetPtr
1019 = dynamic_cast<const G4Tet*>(solidPtr))
1021 if (
const G4Torus*
const torusPtr
1022 = dynamic_cast<const G4Torus*>(solidPtr))
1025 = dynamic_cast<const G4GenericTrap*>(solidPtr))
1027 if (
const G4Trap*
const trapPtr
1028 = dynamic_cast<const G4Trap*>(solidPtr))
1030 if (
const G4Trd*
const trdPtr
1031 = dynamic_cast<const G4Trd*>(solidPtr))
1033 if (
const G4Tubs*
const tubePtr
1034 = dynamic_cast<const G4Tubs*>(solidPtr))
1037 = dynamic_cast<const G4CutTubs*>(solidPtr))
1040 = dynamic_cast<const G4TwistedBox*>(solidPtr))
1043 = dynamic_cast<const G4TwistedTrap*>(solidPtr))
1046 = dynamic_cast<const G4TwistedTrd*>(solidPtr))
1049 = dynamic_cast<const G4TwistedTubs*>(solidPtr))
1055 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
CLHEP::Hep3Vector G4ThreeVector
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
static const double degree
G4double GetZHalfLength() const
void TubeWrite(xercesc::DOMElement *, const G4Tubs *const)
G4ThreeVector GetSymAxis() const
G4double GetInnerRadius() const
CLHEP::Hep2Vector G4TwoVector
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
static const G4double alpha
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
static const G4double pos
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