92 xercesc::DOMElement* multiUnionElement =
NewElement(tag);
93 multiUnionElement->setAttributeNode(
NewAttribute(
"name",name));
95 for (
G4int i=0; i<numSolids; ++i)
100 HepGeom::Rotate3D rot3d;
101 HepGeom::Translate3D transl ;
102 HepGeom::Scale3D scale;
103 transform->getDecomposition(scale,rot3d,transl);
107 rotm(CLHEP::HepRep3x3(rot3d.xx(), rot3d.xy(), rot3d.xz(),
108 rot3d.yx(), rot3d.yy(), rot3d.yz(),
109 rot3d.zx(), rot3d.zy(), rot3d.zz()));
114 std::ostringstream os; os << i+1;
116 xercesc::DOMElement* solidElement =
NewElement(
"solid");
117 solidElement->setAttributeNode(
NewAttribute(
"ref",solidref));
118 xercesc::DOMElement* multiUnionNodeElement =
NewElement(
"multiUnionNode");
119 multiUnionNodeElement->setAttributeNode(
NewAttribute(
"name", nodeName));
120 multiUnionNodeElement->appendChild(solidElement);
133 multiUnionElement->appendChild(multiUnionNodeElement);
136 solElement->appendChild(multiUnionElement);
147 if (dynamic_cast<const G4IntersectionSolid*>(
boolean))
148 { tag =
"intersection"; }
else
149 if (dynamic_cast<const G4SubtractionSolid*>(
boolean))
150 { tag =
"subtraction"; }
else
151 if (dynamic_cast<const G4UnionSolid*>(
boolean))
154 G4VSolid* firstPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(0));
155 G4VSolid* secondPtr =
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(1));
165 G4String ErrorMessage =
"The referenced solid '"
167 +
"in the Boolean shape '" +
168 +
boolean->GetName() +
169 +
"' was displaced too many times!";
176 firstpos += disp->GetObjectTranslation();
177 firstrot +=
GetAngles(disp->GetObjectRotation());
178 firstPtr = disp->GetConstituentMovedSolid();
189 G4String ErrorMessage =
"The referenced solid '"
191 +
"in the Boolean shape '" +
192 +
boolean->GetName() +
193 +
"' was displaced too many times!";
200 pos += disp->GetObjectTranslation();
201 rot +=
GetAngles(disp->GetObjectRotation());
202 secondPtr = disp->GetConstituentMovedSolid();
216 xercesc::DOMElement* booleanElement =
NewElement(tag);
217 booleanElement->setAttributeNode(
NewAttribute(
"name",name));
218 xercesc::DOMElement* firstElement =
NewElement(
"first");
219 firstElement->setAttributeNode(
NewAttribute(
"ref",firstref));
220 booleanElement->appendChild(firstElement);
221 xercesc::DOMElement* secondElement =
NewElement(
"second");
222 secondElement->setAttributeNode(
NewAttribute(
"ref",secondref));
223 booleanElement->appendChild(secondElement);
224 solElement->appendChild(booleanElement);
261 xercesc::DOMElement* boxElement =
NewElement(
"box");
262 boxElement->setAttributeNode(
NewAttribute(
"name",name));
266 boxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
267 solElement->appendChild(boxElement);
275 xercesc::DOMElement* coneElement =
NewElement(
"cone");
276 coneElement->setAttributeNode(
NewAttribute(
"name",name));
291 coneElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
292 coneElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
293 solElement->appendChild(coneElement);
302 xercesc::DOMElement* elconeElement =
NewElement(
"elcone");
303 elconeElement->setAttributeNode(
NewAttribute(
"name",name));
308 elconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
309 solElement->appendChild(elconeElement);
318 xercesc::DOMElement* ellipsoidElement =
NewElement(
"ellipsoid");
319 ellipsoidElement->setAttributeNode(
NewAttribute(
"name",name));
332 solElement->appendChild(ellipsoidElement);
341 xercesc::DOMElement* eltubeElement =
NewElement(
"eltube");
342 eltubeElement->setAttributeNode(
NewAttribute(
"name",name));
346 eltubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
347 solElement->appendChild(eltubeElement);
356 xercesc::DOMElement* xtruElement =
NewElement(
"xtru");
357 xtruElement->setAttributeNode(
NewAttribute(
"name",name));
358 xtruElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
359 solElement->appendChild(xtruElement);
363 for (
G4int i=0;i<NumVertex;i++)
365 xercesc::DOMElement* twoDimVertexElement =
NewElement(
"twoDimVertex");
366 xtruElement->appendChild(twoDimVertexElement);
370 twoDimVertexElement->setAttributeNode(
NewAttribute(
"x",vertex.x()/
mm));
371 twoDimVertexElement->setAttributeNode(
NewAttribute(
"y",vertex.y()/
mm));
376 for (
G4int i=0;i<NumSection;i++)
378 xercesc::DOMElement* sectionElement =
NewElement(
"section");
379 xtruElement->appendChild(sectionElement);
383 sectionElement->setAttributeNode(
NewAttribute(
"zOrder",i));
399 xercesc::DOMElement* hypeElement =
NewElement(
"hype");
400 hypeElement->setAttributeNode(
NewAttribute(
"name",name));
411 hypeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
412 hypeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
413 solElement->appendChild(hypeElement);
421 xercesc::DOMElement* orbElement =
NewElement(
"orb");
422 orbElement->setAttributeNode(
NewAttribute(
"name",name));
424 orbElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
425 solElement->appendChild(orbElement);
436 const G4double theta = simaxis.theta();
438 xercesc::DOMElement* paraElement =
NewElement(
"para");
439 paraElement->setAttributeNode(
NewAttribute(
"name",name));
449 paraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
450 paraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
451 solElement->appendChild(paraElement);
460 xercesc::DOMElement* paraboloidElement =
NewElement(
"paraboloid");
461 paraboloidElement->setAttributeNode(
NewAttribute(
"name",name));
468 paraboloidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
469 solElement->appendChild(paraboloidElement);
477 xercesc::DOMElement* polyconeElement =
NewElement(
"polycone");
478 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
479 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
481 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
483 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
484 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
485 solElement->appendChild(polyconeElement);
492 for (
size_t i=0; i<num_zplanes; i++)
494 ZplaneWrite(polyconeElement,z_array[i],rmin_array[i],rmax_array[i]);
505 xercesc::DOMElement* polyconeElement =
NewElement(
"genericPolycone");
507 polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
508 polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
510 polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
512 polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
513 polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
514 solElement->appendChild(polyconeElement);
517 for (
size_t i=0; i<num_rzpoints; i++)
532 xercesc::DOMElement* polyhedraElement =
NewElement(
"polyhedra");
533 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
534 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
536 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
538 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
540 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
541 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
542 solElement->appendChild(polyhedraElement);
553 for (
size_t i=0;i<num_zplanes;i++)
556 rmin_array[i]*convertRad, rmax_array[i]*convertRad);
560 xercesc::DOMElement* polyhedraElement =
NewElement(
"genericPolyhedra");
561 polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
562 polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
564 polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
566 polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
568 polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
569 polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
570 solElement->appendChild(polyhedraElement);
574 for (
size_t i=0;i<num_rzpoints;i++)
588 xercesc::DOMElement* sphereElement =
NewElement(
"sphere");
589 sphereElement->setAttributeNode(
NewAttribute(
"name",name));
594 sphereElement->setAttributeNode(
NewAttribute(
"startphi",
596 sphereElement->setAttributeNode(
NewAttribute(
"deltaphi",
598 sphereElement->setAttributeNode(
NewAttribute(
"starttheta",
600 sphereElement->setAttributeNode(
NewAttribute(
"deltatheta",
602 sphereElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
603 sphereElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
604 solElement->appendChild(sphereElement);
614 xercesc::DOMElement* tessellatedElement =
NewElement(
"tessellated");
615 tessellatedElement->setAttributeNode(
NewAttribute(
"name",name));
616 tessellatedElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
617 tessellatedElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
618 solElement->appendChild(tessellatedElement);
620 std::map<G4ThreeVector, G4String, G4ThreeVectorCompare> vertexMap;
623 size_t NumVertex = 0;
625 for (
size_t i=0;i<NumFacets;i++)
632 if (NumVertexPerFacet==3) { FacetTag=
"triangular"; }
else
633 if (NumVertexPerFacet==4) { FacetTag=
"quadrangular"; }
636 G4Exception(
"G4GDMLWriteSolids::TessellatedWrite()",
"InvalidSetup",
640 xercesc::DOMElement* facetElement =
NewElement(FacetTag);
641 tessellatedElement->appendChild(facetElement);
643 for (
size_t j=0; j<NumVertexPerFacet; j++)
645 std::stringstream name_stream;
646 std::stringstream ref_stream;
648 name_stream <<
"vertex" << (j+1);
649 ref_stream << solid_name <<
"_v" << NumVertex;
651 const G4String& fname = name_stream.str();
662 if(vertexMap.find(vertex) != vertexMap.end())
664 ref = vertexMap[vertex];
668 vertexMap.insert(std::make_pair(vertex,ref));
675 facetElement->setAttributeNode(
NewAttribute(fname,ref));
686 std::vector<G4ThreeVector> vertexList = tet->
GetVertices();
688 xercesc::DOMElement* tetElement =
NewElement(
"tet");
689 tetElement->setAttributeNode(
NewAttribute(
"name",name));
690 tetElement->setAttributeNode(
NewAttribute(
"vertex1",solid_name+
"_v1"));
691 tetElement->setAttributeNode(
NewAttribute(
"vertex2",solid_name+
"_v2"));
692 tetElement->setAttributeNode(
NewAttribute(
"vertex3",solid_name+
"_v3"));
693 tetElement->setAttributeNode(
NewAttribute(
"vertex4",solid_name+
"_v4"));
694 tetElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
695 solElement->appendChild(tetElement);
708 xercesc::DOMElement* torusElement =
NewElement(
"torus");
709 torusElement->setAttributeNode(
NewAttribute(
"name",name));
717 torusElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
718 torusElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
719 solElement->appendChild(torusElement);
728 std::vector<G4TwoVector> vertices = gtrap->
GetVertices();
730 xercesc::DOMElement* gtrapElement =
NewElement(
"arb8");
731 gtrapElement->setAttributeNode(
NewAttribute(
"name",name));
734 gtrapElement->setAttributeNode(
NewAttribute(
"v1x", vertices[0].x()));
735 gtrapElement->setAttributeNode(
NewAttribute(
"v1y", vertices[0].y()));
736 gtrapElement->setAttributeNode(
NewAttribute(
"v2x", vertices[1].x()));
737 gtrapElement->setAttributeNode(
NewAttribute(
"v2y", vertices[1].y()));
738 gtrapElement->setAttributeNode(
NewAttribute(
"v3x", vertices[2].x()));
739 gtrapElement->setAttributeNode(
NewAttribute(
"v3y", vertices[2].y()));
740 gtrapElement->setAttributeNode(
NewAttribute(
"v4x", vertices[3].x()));
741 gtrapElement->setAttributeNode(
NewAttribute(
"v4y", vertices[3].y()));
742 gtrapElement->setAttributeNode(
NewAttribute(
"v5x", vertices[4].x()));
743 gtrapElement->setAttributeNode(
NewAttribute(
"v5y", vertices[4].y()));
744 gtrapElement->setAttributeNode(
NewAttribute(
"v6x", vertices[5].x()));
745 gtrapElement->setAttributeNode(
NewAttribute(
"v6y", vertices[5].y()));
746 gtrapElement->setAttributeNode(
NewAttribute(
"v7x", vertices[6].x()));
747 gtrapElement->setAttributeNode(
NewAttribute(
"v7y", vertices[6].y()));
748 gtrapElement->setAttributeNode(
NewAttribute(
"v8x", vertices[7].x()));
749 gtrapElement->setAttributeNode(
NewAttribute(
"v8y", vertices[7].y()));
750 gtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
751 solElement->appendChild(gtrapElement);
761 const G4double theta = simaxis.theta();
765 xercesc::DOMElement* trapElement =
NewElement(
"trap");
766 trapElement->setAttributeNode(
NewAttribute(
"name",name));
785 trapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
786 trapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
787 solElement->appendChild(trapElement);
795 xercesc::DOMElement* trdElement =
NewElement(
"trd");
796 trdElement->setAttributeNode(
NewAttribute(
"name",name));
807 trdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
808 solElement->appendChild(trdElement);
816 xercesc::DOMElement* tubeElement =
NewElement(
"tube");
817 tubeElement->setAttributeNode(
NewAttribute(
"name",name));
828 tubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
829 tubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
830 solElement->appendChild(tubeElement);
838 xercesc::DOMElement* cuttubeElement =
NewElement(
"cutTube");
839 cuttubeElement->setAttributeNode(
NewAttribute(
"name",name));
846 cuttubeElement->setAttributeNode(
NewAttribute(
"startphi",
848 cuttubeElement->setAttributeNode(
NewAttribute(
"deltaphi",
862 cuttubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
863 cuttubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
864 solElement->appendChild(cuttubeElement);
873 xercesc::DOMElement* twistedboxElement =
NewElement(
"twistedbox");
874 twistedboxElement->setAttributeNode(
NewAttribute(
"name",name));
881 twistedboxElement->setAttributeNode(
NewAttribute(
"PhiTwist",
883 twistedboxElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
884 twistedboxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
885 solElement->appendChild(twistedboxElement);
894 xercesc::DOMElement* twistedtrapElement =
NewElement(
"twistedtrap");
895 twistedtrapElement->setAttributeNode(
NewAttribute(
"name",name));
910 twistedtrapElement->setAttributeNode(
NewAttribute(
"Alph",
912 twistedtrapElement->setAttributeNode(
NewAttribute(
"Theta",
914 twistedtrapElement->setAttributeNode(
NewAttribute(
"Phi",
916 twistedtrapElement->setAttributeNode(
NewAttribute(
"PhiTwist",
918 twistedtrapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
919 twistedtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
921 solElement->appendChild(twistedtrapElement);
930 xercesc::DOMElement* twistedtrdElement =
NewElement(
"twistedtrd");
931 twistedtrdElement->setAttributeNode(
NewAttribute(
"name",name));
942 twistedtrdElement->setAttributeNode(
NewAttribute(
"PhiTwist",
944 twistedtrdElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
945 twistedtrdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
946 solElement->appendChild(twistedtrdElement);
955 xercesc::DOMElement* twistedtubsElement =
NewElement(
"twistedtubs");
956 twistedtubsElement->setAttributeNode(
NewAttribute(
"name",name));
957 twistedtubsElement->setAttributeNode(
NewAttribute(
"twistedangle",
959 twistedtubsElement->setAttributeNode(
NewAttribute(
"endinnerrad",
961 twistedtubsElement->setAttributeNode(
NewAttribute(
"endouterrad",
963 twistedtubsElement->setAttributeNode(
NewAttribute(
"zlen",
965 twistedtubsElement->setAttributeNode(
NewAttribute(
"phi",
967 twistedtubsElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
968 twistedtubsElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
969 solElement->appendChild(twistedtubsElement);
976 xercesc::DOMElement* zplaneElement =
NewElement(
"zplane");
980 element->appendChild(zplaneElement);
987 xercesc::DOMElement* rzpointElement =
NewElement(
"rzpoint");
990 element->appendChild(rzpointElement);
997 xercesc::DOMElement* optElement =
NewElement(
"opticalsurface");
1002 optElement->setAttributeNode(
NewAttribute(
"model", smodel));
1005 optElement->setAttributeNode(
NewAttribute(
"value", sval));
1007 solElement->appendChild(optElement);
1022 for (
size_t i=0; i<
solidList.size(); i++)
1024 if (
solidList[i] == solidPtr) {
return; }
1030 = dynamic_cast<const G4BooleanSolid*>(solidPtr))
1037 {
const G4Box*
const boxPtr
1038 =
static_cast<const G4Box*
>(solidPtr);
1041 {
const G4Cons*
const conePtr
1042 =
static_cast<const G4Cons*
>(solidPtr);
1061 {
const G4Hype*
const hypePtr
1062 =
static_cast<const G4Hype*
>(solidPtr);
1065 {
const G4Orb*
const orbPtr
1066 =
static_cast<const G4Orb*
>(solidPtr);
1069 {
const G4Para*
const paraPtr
1070 =
static_cast<const G4Para*
>(solidPtr);
1090 =
static_cast<const G4Sphere*
>(solidPtr);
1097 {
const G4Tet*
const tetPtr
1098 =
static_cast<const G4Tet*
>(solidPtr);
1101 {
const G4Torus*
const torusPtr
1102 =
static_cast<const G4Torus*
>(solidPtr);
1109 {
const G4Trap*
const trapPtr
1110 =
static_cast<const G4Trap*
>(solidPtr);
1113 {
const G4Trd*
const trdPtr
1114 =
static_cast<const G4Trd*
>(solidPtr);
1117 {
const G4Tubs*
const tubePtr
1118 =
static_cast<const G4Tubs*
>(solidPtr);
1122 =
static_cast<const G4CutTubs*
>(solidPtr);
1144 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
CLHEP::HepRotation G4RotationMatrix
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
G4Transform3D * GetTransformation(G4int index) 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
G4VSolid * GetSolid(G4int index) 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)
int GetNumberOfSolids() const
G4double GetY2HalfLength() const
std::vector< const G4VSolid * > solidList
G4double GetDeltaPhiAngle() const
G4double GetYHalfLength() const