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;
 
  697          const G4String& fname = name_stream.str();  
 
  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