82 #if !defined(G4GEOM_USE_USOLIDS)
89 "Installation with USolids primitives required!");
97 G4int numSolids=munionSolid->GetNumberOfSolids();
105 multiUnionElement->setAttributeNode(
NewAttribute(
"name",name));
107 for (
G4int i=0; i<numSolids; ++i)
109 solid = munionSolid->GetSolid(i);
110 transform = munionSolid->GetTransformation(i);
120 rot3d.
yx(), rot3d.
yy(), rot3d.
yz(),
121 rot3d.
zx(), rot3d.
zy(), rot3d.
zz()));
126 std::ostringstream os; os << i+1;
128 xercesc::DOMElement* solidElement =
NewElement(
"solid");
129 solidElement->setAttributeNode(
NewAttribute(
"ref",solidref));
130 xercesc::DOMElement* multiUnionNodeElement =
NewElement(
"multiUnionNode");
131 multiUnionNodeElement->setAttributeNode(
NewAttribute(
"name", nodeName));
132 multiUnionNodeElement->appendChild(solidElement);
145 multiUnionElement->appendChild(multiUnionNodeElement);
148 solElement->appendChild(multiUnionElement);
160 if (dynamic_cast<const G4IntersectionSolid*>(
boolean))
161 { tag =
"intersection"; }
else
162 if (dynamic_cast<const G4SubtractionSolid*>(
boolean))
163 { tag =
"subtraction"; }
else
164 if (dynamic_cast<const G4UnionSolid*>(
boolean))
167 G4VSolid* firstPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(0));
168 G4VSolid* secondPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(1));
178 G4String ErrorMessage =
"The referenced solid '"
180 +
"in the Boolean shape '" +
181 +
boolean->GetName() +
182 +
"' was displaced too many times!";
189 firstpos += disp->GetObjectTranslation();
190 firstrot +=
GetAngles(disp->GetObjectRotation());
191 firstPtr = disp->GetConstituentMovedSolid();
202 G4String ErrorMessage =
"The referenced solid '"
204 +
"in the Boolean shape '" +
205 +
boolean->GetName() +
206 +
"' was displaced too many times!";
213 pos += disp->GetObjectTranslation();
214 rot +=
GetAngles(disp->GetObjectRotation());
215 secondPtr = disp->GetConstituentMovedSolid();
229 xercesc::DOMElement* booleanElement =
NewElement(tag);
230 booleanElement->setAttributeNode(
NewAttribute(
"name",name));
231 xercesc::DOMElement* firstElement =
NewElement(
"first");
232 firstElement->setAttributeNode(
NewAttribute(
"ref",firstref));
233 booleanElement->appendChild(firstElement);
234 xercesc::DOMElement* secondElement =
NewElement(
"second");
235 secondElement->setAttributeNode(
NewAttribute(
"ref",secondref));
236 booleanElement->appendChild(secondElement);
237 solElement->appendChild(booleanElement);
284 xercesc::DOMElement* scaledElement =
NewElement(tag);
285 scaledElement->setAttributeNode(
NewAttribute(
"name",name));
287 xercesc::DOMElement* solidElement =
NewElement(
"solidref");
288 solidElement->setAttributeNode(
NewAttribute(
"ref",solidref));
289 scaledElement->appendChild(solidElement);
295 ScaleWrite(scaledElement, name+
"_scl", sclVector);
298 solElement->appendChild(scaledElement);
307 xercesc::DOMElement* boxElement =
NewElement(
"box");
308 boxElement->setAttributeNode(
NewAttribute(
"name",name));
312 boxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
313 solElement->appendChild(boxElement);
321 xercesc::DOMElement* coneElement =
NewElement(
"cone");
322 coneElement->setAttributeNode(
NewAttribute(
"name",name));
337 coneElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
338 coneElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
339 solElement->appendChild(coneElement);
348 xercesc::DOMElement* elconeElement =
NewElement(
"elcone");
349 elconeElement->setAttributeNode(
NewAttribute(
"name",name));
354 elconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
355 solElement->appendChild(elconeElement);
364 xercesc::DOMElement* ellipsoidElement =
NewElement(
"ellipsoid");
365 ellipsoidElement->setAttributeNode(
NewAttribute(
"name",name));
378 solElement->appendChild(ellipsoidElement);
387 xercesc::DOMElement* eltubeElement =
NewElement(
"eltube");
388 eltubeElement->setAttributeNode(
NewAttribute(
"name",name));
392 eltubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
393 solElement->appendChild(eltubeElement);
402 xercesc::DOMElement* xtruElement =
NewElement(
"xtru");
403 xtruElement->setAttributeNode(
NewAttribute(
"name",name));
404 xtruElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
405 solElement->appendChild(xtruElement);
409 for (
G4int i=0;i<NumVertex;i++)
411 xercesc::DOMElement* twoDimVertexElement =
NewElement(
"twoDimVertex");
412 xtruElement->appendChild(twoDimVertexElement);
416 twoDimVertexElement->setAttributeNode(
NewAttribute(
"x",vertex.
x()/
mm));
417 twoDimVertexElement->setAttributeNode(
NewAttribute(
"y",vertex.
y()/
mm));
422 for (
G4int i=0;i<NumSection;i++)
424 xercesc::DOMElement* sectionElement =
NewElement(
"section");
425 xtruElement->appendChild(sectionElement);
429 sectionElement->setAttributeNode(
NewAttribute(
"zOrder",i));
445 xercesc::DOMElement* hypeElement =
NewElement(
"hype");
446 hypeElement->setAttributeNode(
NewAttribute(
"name",name));
457 hypeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
458 hypeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
459 solElement->appendChild(hypeElement);
467 xercesc::DOMElement* orbElement =
NewElement(
"orb");
468 orbElement->setAttributeNode(
NewAttribute(
"name",name));
470 orbElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
471 solElement->appendChild(orbElement);
482 const G4double theta = simaxis.theta();
484 xercesc::DOMElement* paraElement =
NewElement(
"para");
485 paraElement->setAttributeNode(
NewAttribute(
"name",name));
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));
514 paraboloidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
515 solElement->appendChild(paraboloidElement);
523 xercesc::DOMElement* polyconeElement =
NewElement(
"polycone");
524 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
525 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
527 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
529 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
530 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
531 solElement->appendChild(polyconeElement);
538 for (
size_t i=0; i<num_zplanes; i++)
540 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(
NewAttribute(
"startphi",
556 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
558 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
559 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
560 solElement->appendChild(polyconeElement);
563 for (
size_t i=0; i<num_rzpoints; i++)
578 xercesc::DOMElement* polyhedraElement =
NewElement(
"polyhedra");
579 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
580 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
582 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
584 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
586 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
587 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
588 solElement->appendChild(polyhedraElement);
599 for (
size_t i=0;i<num_zplanes;i++)
602 rmin_array[i]*convertRad, rmax_array[i]*convertRad);
606 xercesc::DOMElement* polyhedraElement =
NewElement(
"genericPolyhedra");
607 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
608 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
610 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
612 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
614 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
615 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
616 solElement->appendChild(polyhedraElement);
620 for (
size_t i=0;i<num_rzpoints;i++)
634 xercesc::DOMElement* sphereElement =
NewElement(
"sphere");
635 sphereElement->setAttributeNode(
NewAttribute(
"name",name));
640 sphereElement->setAttributeNode(
NewAttribute(
"startphi",
642 sphereElement->setAttributeNode(
NewAttribute(
"deltaphi",
644 sphereElement->setAttributeNode(
NewAttribute(
"starttheta",
646 sphereElement->setAttributeNode(
NewAttribute(
"deltatheta",
648 sphereElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
649 sphereElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
650 solElement->appendChild(sphereElement);
660 xercesc::DOMElement* tessellatedElement =
NewElement(
"tessellated");
661 tessellatedElement->setAttributeNode(
NewAttribute(
"name",name));
662 tessellatedElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
663 tessellatedElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
664 solElement->appendChild(tessellatedElement);
666 std::map<G4ThreeVector, G4String, G4ThreeVectorCompare> vertexMap;
669 size_t NumVertex = 0;
671 for (
size_t i=0;i<NumFacets;i++)
678 if (NumVertexPerFacet==3) { FacetTag=
"triangular"; }
else
679 if (NumVertexPerFacet==4) { FacetTag=
"quadrangular"; }
682 G4Exception(
"G4GDMLWriteSolids::TessellatedWrite()",
"InvalidSetup",
686 xercesc::DOMElement* facetElement =
NewElement(FacetTag);
687 tessellatedElement->appendChild(facetElement);
689 for (
size_t j=0; j<NumVertexPerFacet; j++)
691 std::stringstream name_stream;
692 std::stringstream ref_stream;
694 name_stream <<
"vertex" << (j+1);
695 ref_stream << solid_name <<
"_v" << NumVertex;
708 if(vertexMap.find(vertex) != vertexMap.end())
710 ref = vertexMap[vertex];
714 vertexMap.insert(std::make_pair(vertex,ref));
721 facetElement->setAttributeNode(
NewAttribute(fname,ref));
732 std::vector<G4ThreeVector> vertexList = tet->
GetVertices();
734 xercesc::DOMElement* tetElement =
NewElement(
"tet");
735 tetElement->setAttributeNode(
NewAttribute(
"name",name));
736 tetElement->setAttributeNode(
NewAttribute(
"vertex1",solid_name+
"_v1"));
737 tetElement->setAttributeNode(
NewAttribute(
"vertex2",solid_name+
"_v2"));
738 tetElement->setAttributeNode(
NewAttribute(
"vertex3",solid_name+
"_v3"));
739 tetElement->setAttributeNode(
NewAttribute(
"vertex4",solid_name+
"_v4"));
740 tetElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
741 solElement->appendChild(tetElement);
754 xercesc::DOMElement* torusElement =
NewElement(
"torus");
755 torusElement->setAttributeNode(
NewAttribute(
"name",name));
763 torusElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
764 torusElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
765 solElement->appendChild(torusElement);
774 std::vector<G4TwoVector> vertices = gtrap->
GetVertices();
776 xercesc::DOMElement* gtrapElement =
NewElement(
"arb8");
777 gtrapElement->setAttributeNode(
NewAttribute(
"name",name));
780 gtrapElement->setAttributeNode(
NewAttribute(
"v1x", vertices[0].
x()));
781 gtrapElement->setAttributeNode(
NewAttribute(
"v1y", vertices[0].y()));
782 gtrapElement->setAttributeNode(
NewAttribute(
"v2x", vertices[1].
x()));
783 gtrapElement->setAttributeNode(
NewAttribute(
"v2y", vertices[1].y()));
784 gtrapElement->setAttributeNode(
NewAttribute(
"v3x", vertices[2].
x()));
785 gtrapElement->setAttributeNode(
NewAttribute(
"v3y", vertices[2].y()));
786 gtrapElement->setAttributeNode(
NewAttribute(
"v4x", vertices[3].
x()));
787 gtrapElement->setAttributeNode(
NewAttribute(
"v4y", vertices[3].y()));
788 gtrapElement->setAttributeNode(
NewAttribute(
"v5x", vertices[4].
x()));
789 gtrapElement->setAttributeNode(
NewAttribute(
"v5y", vertices[4].y()));
790 gtrapElement->setAttributeNode(
NewAttribute(
"v6x", vertices[5].
x()));
791 gtrapElement->setAttributeNode(
NewAttribute(
"v6y", vertices[5].y()));
792 gtrapElement->setAttributeNode(
NewAttribute(
"v7x", vertices[6].
x()));
793 gtrapElement->setAttributeNode(
NewAttribute(
"v7y", vertices[6].y()));
794 gtrapElement->setAttributeNode(
NewAttribute(
"v8x", vertices[7].
x()));
795 gtrapElement->setAttributeNode(
NewAttribute(
"v8y", vertices[7].y()));
796 gtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
797 solElement->appendChild(gtrapElement);
807 const G4double theta = simaxis.theta();
811 xercesc::DOMElement* trapElement =
NewElement(
"trap");
812 trapElement->setAttributeNode(
NewAttribute(
"name",name));
831 trapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
832 trapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
833 solElement->appendChild(trapElement);
841 xercesc::DOMElement* trdElement =
NewElement(
"trd");
842 trdElement->setAttributeNode(
NewAttribute(
"name",name));
853 trdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
854 solElement->appendChild(trdElement);
862 xercesc::DOMElement* tubeElement =
NewElement(
"tube");
863 tubeElement->setAttributeNode(
NewAttribute(
"name",name));
874 tubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
875 tubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
876 solElement->appendChild(tubeElement);
884 xercesc::DOMElement* cuttubeElement =
NewElement(
"cutTube");
885 cuttubeElement->setAttributeNode(
NewAttribute(
"name",name));
892 cuttubeElement->setAttributeNode(
NewAttribute(
"startphi",
894 cuttubeElement->setAttributeNode(
NewAttribute(
"deltaphi",
908 cuttubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
909 cuttubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
910 solElement->appendChild(cuttubeElement);
919 xercesc::DOMElement* twistedboxElement =
NewElement(
"twistedbox");
920 twistedboxElement->setAttributeNode(
NewAttribute(
"name",name));
927 twistedboxElement->setAttributeNode(
NewAttribute(
"PhiTwist",
929 twistedboxElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
930 twistedboxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
931 solElement->appendChild(twistedboxElement);
940 xercesc::DOMElement* twistedtrapElement =
NewElement(
"twistedtrap");
941 twistedtrapElement->setAttributeNode(
NewAttribute(
"name",name));
956 twistedtrapElement->setAttributeNode(
NewAttribute(
"Alph",
958 twistedtrapElement->setAttributeNode(
NewAttribute(
"Theta",
960 twistedtrapElement->setAttributeNode(
NewAttribute(
"Phi",
962 twistedtrapElement->setAttributeNode(
NewAttribute(
"PhiTwist",
964 twistedtrapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
965 twistedtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
967 solElement->appendChild(twistedtrapElement);
976 xercesc::DOMElement* twistedtrdElement =
NewElement(
"twistedtrd");
977 twistedtrdElement->setAttributeNode(
NewAttribute(
"name",name));
988 twistedtrdElement->setAttributeNode(
NewAttribute(
"PhiTwist",
990 twistedtrdElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
991 twistedtrdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
992 solElement->appendChild(twistedtrdElement);
1001 xercesc::DOMElement* twistedtubsElement =
NewElement(
"twistedtubs");
1002 twistedtubsElement->setAttributeNode(
NewAttribute(
"name",name));
1003 twistedtubsElement->setAttributeNode(
NewAttribute(
"twistedangle",
1005 twistedtubsElement->setAttributeNode(
NewAttribute(
"endinnerrad",
1007 twistedtubsElement->setAttributeNode(
NewAttribute(
"endouterrad",
1009 twistedtubsElement->setAttributeNode(
NewAttribute(
"zlen",
1011 twistedtubsElement->setAttributeNode(
NewAttribute(
"phi",
1013 twistedtubsElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
1014 twistedtubsElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
1015 solElement->appendChild(twistedtubsElement);
1022 xercesc::DOMElement* zplaneElement =
NewElement(
"zplane");
1026 element->appendChild(zplaneElement);
1033 xercesc::DOMElement* rzpointElement =
NewElement(
"rzpoint");
1036 element->appendChild(rzpointElement);
1043 xercesc::DOMElement* optElement =
NewElement(
"opticalsurface");
1048 optElement->setAttributeNode(
NewAttribute(
"model", smodel));
1051 optElement->setAttributeNode(
NewAttribute(
"value", sval));
1053 solElement->appendChild(optElement);
1068 for (
size_t i=0; i<
solidList.size(); i++)
1070 if (
solidList[i] == solidPtr) {
return; }
1076 = dynamic_cast<const G4BooleanSolid*>(solidPtr))
1079 = dynamic_cast<const G4ScaledSolid*>(solidPtr))
1086 {
const G4Box*
const boxPtr
1087 =
static_cast<const G4Box*
>(solidPtr);
1090 {
const G4Cons*
const conePtr
1091 =
static_cast<const G4Cons*
>(solidPtr);
1110 {
const G4Hype*
const hypePtr
1111 =
static_cast<const G4Hype*
>(solidPtr);
1114 {
const G4Orb*
const orbPtr
1115 =
static_cast<const G4Orb*
>(solidPtr);
1118 {
const G4Para*
const paraPtr
1119 =
static_cast<const G4Para*
>(solidPtr);
1139 =
static_cast<const G4Sphere*
>(solidPtr);
1146 {
const G4Tet*
const tetPtr
1147 =
static_cast<const G4Tet*
>(solidPtr);
1150 {
const G4Torus*
const torusPtr
1151 =
static_cast<const G4Torus*
>(solidPtr);
1158 {
const G4Trap*
const trapPtr
1159 =
static_cast<const G4Trap*
>(solidPtr);
1162 {
const G4Trd*
const trdPtr
1163 =
static_cast<const G4Trd*
>(solidPtr);
1166 {
const G4Tubs*
const tubePtr
1167 =
static_cast<const G4Tubs*
>(solidPtr);
1171 =
static_cast<const G4CutTubs*
>(solidPtr);
1193 G4Exception(
"G4GDMLWriteSolids::AddSolid()",
"WriteError",
G4ThreeVector GetSymAxis() const
static const G4double kAngularPrecision
G4PolyconeSideRZ GetCorner(G4int index) const
G4double GetXHalfLength4() const
void ScaledWrite(xercesc::DOMElement *, const G4ScaledSolid *const)
G4double GetXHalfLength() const
G4double GetOuterStereo() const
G4double GetX1HalfLength() const
G4Scale3D GetScaleTransform() const
G4OpticalSurfaceModel GetModel() const
static constexpr double mm
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
void MultiUnionWrite(xercesc::DOMElement *solElement, const G4MultiUnion *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)
static constexpr double degree
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
void ScaleWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &scl)
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)
G4VSolid * GetUnscaledSolid() 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
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