81 #if !defined(G4GEOM_USE_USOLIDS)    88                "Installation with USolids primitives required!");
    96    G4int numSolids=munionSolid->GetNumberOfSolids();
   103    xercesc::DOMElement* multiUnionElement = 
NewElement(tag);
   104    multiUnionElement->setAttributeNode(
NewAttribute(
"name",name));
   106    for (
G4int i=0; i<numSolids; ++i)
   108       solid = munionSolid->GetSolid(i);
   109       transform = munionSolid->GetTransformation(i);
   119                               rot3d.
yx(), rot3d.
yy(), rot3d.
yz(),
   120                               rot3d.
zx(), rot3d.
zy(), rot3d.
zz()));
   125       std::ostringstream os; os << i+1;
   127       xercesc::DOMElement* solidElement = 
NewElement(
"solid");
   128       solidElement->setAttributeNode(
NewAttribute(
"ref",solidref));
   129       xercesc::DOMElement* multiUnionNodeElement = 
NewElement(
"multiUnionNode");
   130       multiUnionNodeElement->setAttributeNode(
NewAttribute(
"name", nodeName));
   131       multiUnionNodeElement->appendChild(solidElement); 
   144       multiUnionElement->appendChild(multiUnionNodeElement); 
   147    solElement->appendChild(multiUnionElement);
   159    if (dynamic_cast<const G4IntersectionSolid*>(
boolean))
   160      { tag = 
"intersection"; } 
else   161    if (dynamic_cast<const G4SubtractionSolid*>(
boolean))
   162      { tag = 
"subtraction"; } 
else   163    if (dynamic_cast<const G4UnionSolid*>(
boolean))
   166    G4VSolid* firstPtr = 
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(0));
   167    G4VSolid* secondPtr = 
const_cast<G4VSolid*
>(
boolean->GetConstituentSolid(1));
   177         G4String ErrorMessage = 
"The referenced solid '"   179                               + 
"in the Boolean shape '" +
   180                               + 
boolean->GetName() +
   181                               + 
"' was displaced too many times!";
   188          firstpos += disp->GetObjectTranslation();
   189          firstrot += 
GetAngles(disp->GetObjectRotation());
   190          firstPtr = disp->GetConstituentMovedSolid();
   201         G4String ErrorMessage = 
"The referenced solid '"   203                               + 
"in the Boolean shape '" +
   204                               + 
boolean->GetName() +
   205                               + 
"' was displaced too many times!";
   212          pos += disp->GetObjectTranslation();
   213          rot += 
GetAngles(disp->GetObjectRotation());
   214          secondPtr = disp->GetConstituentMovedSolid();
   228    xercesc::DOMElement* booleanElement = 
NewElement(tag);
   229    booleanElement->setAttributeNode(
NewAttribute(
"name",name));
   230    xercesc::DOMElement* firstElement = 
NewElement(
"first");
   231    firstElement->setAttributeNode(
NewAttribute(
"ref",firstref));
   232    booleanElement->appendChild(firstElement);
   233    xercesc::DOMElement* secondElement = 
NewElement(
"second");
   234    secondElement->setAttributeNode(
NewAttribute(
"ref",secondref));
   235    booleanElement->appendChild(secondElement);
   236    solElement->appendChild(booleanElement);
   273    xercesc::DOMElement* boxElement = 
NewElement(
"box");
   274    boxElement->setAttributeNode(
NewAttribute(
"name",name));
   278    boxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   279    solElement->appendChild(boxElement);
   287    xercesc::DOMElement* coneElement = 
NewElement(
"cone");
   288    coneElement->setAttributeNode(
NewAttribute(
"name",name));
   303    coneElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   304    coneElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   305    solElement->appendChild(coneElement);
   314    xercesc::DOMElement* elconeElement = 
NewElement(
"elcone");
   315    elconeElement->setAttributeNode(
NewAttribute(
"name",name));
   320    elconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   321    solElement->appendChild(elconeElement);
   330    xercesc::DOMElement* ellipsoidElement = 
NewElement(
"ellipsoid");
   331    ellipsoidElement->setAttributeNode(
NewAttribute(
"name",name));
   344    solElement->appendChild(ellipsoidElement);
   353    xercesc::DOMElement* eltubeElement = 
NewElement(
"eltube");
   354    eltubeElement->setAttributeNode(
NewAttribute(
"name",name));
   358    eltubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   359    solElement->appendChild(eltubeElement);
   368    xercesc::DOMElement* xtruElement = 
NewElement(
"xtru");
   369    xtruElement->setAttributeNode(
NewAttribute(
"name",name));
   370    xtruElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   371    solElement->appendChild(xtruElement);
   375    for (
G4int i=0;i<NumVertex;i++)
   377       xercesc::DOMElement* twoDimVertexElement = 
NewElement(
"twoDimVertex");
   378       xtruElement->appendChild(twoDimVertexElement);
   382       twoDimVertexElement->setAttributeNode(
NewAttribute(
"x",vertex.
x()/
mm));
   383       twoDimVertexElement->setAttributeNode(
NewAttribute(
"y",vertex.
y()/
mm));
   388    for (
G4int i=0;i<NumSection;i++)
   390       xercesc::DOMElement* sectionElement = 
NewElement(
"section");
   391       xtruElement->appendChild(sectionElement);
   395       sectionElement->setAttributeNode(
NewAttribute(
"zOrder",i));
   411    xercesc::DOMElement* hypeElement = 
NewElement(
"hype");
   412    hypeElement->setAttributeNode(
NewAttribute(
"name",name));
   423    hypeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   424    hypeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   425    solElement->appendChild(hypeElement);
   433    xercesc::DOMElement* orbElement = 
NewElement(
"orb");
   434    orbElement->setAttributeNode(
NewAttribute(
"name",name));
   436    orbElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   437    solElement->appendChild(orbElement);
   448    const G4double theta = simaxis.theta();
   450    xercesc::DOMElement* paraElement = 
NewElement(
"para");
   451    paraElement->setAttributeNode(
NewAttribute(
"name",name));
   461    paraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   462    paraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   463    solElement->appendChild(paraElement);
   472    xercesc::DOMElement* paraboloidElement = 
NewElement(
"paraboloid");
   473    paraboloidElement->setAttributeNode(
NewAttribute(
"name",name));
   480    paraboloidElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   481    solElement->appendChild(paraboloidElement);
   489     xercesc::DOMElement* polyconeElement = 
NewElement(
"polycone");
   490     polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
   491     polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
   493     polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
   495     polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   496     polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   497     solElement->appendChild(polyconeElement);
   504     for (
size_t i=0; i<num_zplanes; i++)
   506       ZplaneWrite(polyconeElement,z_array[i],rmin_array[i],rmax_array[i]);
   517    xercesc::DOMElement* polyconeElement = 
NewElement(
"genericPolycone");
   519     polyconeElement->setAttributeNode(
NewAttribute(
"name",name));
   520     polyconeElement->setAttributeNode(
NewAttribute(
"startphi",
   522     polyconeElement->setAttributeNode(
NewAttribute(
"deltaphi",
   524     polyconeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   525     polyconeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   526     solElement->appendChild(polyconeElement);
   529     for (
size_t i=0; i<num_rzpoints; i++)
   544     xercesc::DOMElement* polyhedraElement = 
NewElement(
"polyhedra");
   545     polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
   546     polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
   548     polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
   550     polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
   552     polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   553     polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   554     solElement->appendChild(polyhedraElement);
   565     for (
size_t i=0;i<num_zplanes;i++)
   568                   rmin_array[i]*convertRad, rmax_array[i]*convertRad);
   572     xercesc::DOMElement* polyhedraElement = 
NewElement(
"genericPolyhedra");
   573     polyhedraElement->setAttributeNode(
NewAttribute(
"name",name));
   574     polyhedraElement->setAttributeNode(
NewAttribute(
"startphi",
   576     polyhedraElement->setAttributeNode(
NewAttribute(
"deltaphi",
   578     polyhedraElement->setAttributeNode(
NewAttribute(
"numsides",
   580     polyhedraElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   581     polyhedraElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   582     solElement->appendChild(polyhedraElement);
   586     for (
size_t i=0;i<num_rzpoints;i++)
   600    xercesc::DOMElement* sphereElement = 
NewElement(
"sphere");
   601    sphereElement->setAttributeNode(
NewAttribute(
"name",name));
   606    sphereElement->setAttributeNode(
NewAttribute(
"startphi",
   608    sphereElement->setAttributeNode(
NewAttribute(
"deltaphi",
   610    sphereElement->setAttributeNode(
NewAttribute(
"starttheta",
   612    sphereElement->setAttributeNode(
NewAttribute(
"deltatheta",
   614    sphereElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   615    sphereElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   616    solElement->appendChild(sphereElement);
   626    xercesc::DOMElement* tessellatedElement = 
NewElement(
"tessellated");
   627    tessellatedElement->setAttributeNode(
NewAttribute(
"name",name));
   628    tessellatedElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   629    tessellatedElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   630    solElement->appendChild(tessellatedElement);
   632    std::map<G4ThreeVector, G4String, G4ThreeVectorCompare> vertexMap;
   635    size_t NumVertex = 0;
   637    for (
size_t i=0;i<NumFacets;i++)
   644       if (NumVertexPerFacet==3) { FacetTag=
"triangular"; } 
else   645       if (NumVertexPerFacet==4) { FacetTag=
"quadrangular"; }
   648         G4Exception(
"G4GDMLWriteSolids::TessellatedWrite()", 
"InvalidSetup",
   652       xercesc::DOMElement* facetElement = 
NewElement(FacetTag);
   653       tessellatedElement->appendChild(facetElement);
   655       for (
size_t j=0; j<NumVertexPerFacet; j++)
   657          std::stringstream name_stream;
   658          std::stringstream ref_stream;
   660          name_stream << 
"vertex" << (j+1);
   661          ref_stream << solid_name << 
"_v" << NumVertex;
   674          if(vertexMap.find(vertex) != vertexMap.end())  
   676            ref = vertexMap[vertex];     
   680            vertexMap.insert(std::make_pair(vertex,ref)); 
   687          facetElement->setAttributeNode(
NewAttribute(fname,ref));
   698    std::vector<G4ThreeVector> vertexList = tet->
GetVertices();
   700    xercesc::DOMElement* tetElement = 
NewElement(
"tet");
   701    tetElement->setAttributeNode(
NewAttribute(
"name",name));
   702    tetElement->setAttributeNode(
NewAttribute(
"vertex1",solid_name+
"_v1"));
   703    tetElement->setAttributeNode(
NewAttribute(
"vertex2",solid_name+
"_v2"));
   704    tetElement->setAttributeNode(
NewAttribute(
"vertex3",solid_name+
"_v3"));
   705    tetElement->setAttributeNode(
NewAttribute(
"vertex4",solid_name+
"_v4"));
   706    tetElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   707    solElement->appendChild(tetElement);
   720    xercesc::DOMElement* torusElement = 
NewElement(
"torus");
   721    torusElement->setAttributeNode(
NewAttribute(
"name",name));
   729    torusElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   730    torusElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   731    solElement->appendChild(torusElement);
   740    std::vector<G4TwoVector> vertices = gtrap->
GetVertices();
   742    xercesc::DOMElement* gtrapElement = 
NewElement(
"arb8");
   743    gtrapElement->setAttributeNode(
NewAttribute(
"name",name));
   746    gtrapElement->setAttributeNode(
NewAttribute(
"v1x", vertices[0].
x()));
   747    gtrapElement->setAttributeNode(
NewAttribute(
"v1y", vertices[0].
y()));
   748    gtrapElement->setAttributeNode(
NewAttribute(
"v2x", vertices[1].
x()));
   749    gtrapElement->setAttributeNode(
NewAttribute(
"v2y", vertices[1].
y()));
   750    gtrapElement->setAttributeNode(
NewAttribute(
"v3x", vertices[2].
x()));
   751    gtrapElement->setAttributeNode(
NewAttribute(
"v3y", vertices[2].
y()));
   752    gtrapElement->setAttributeNode(
NewAttribute(
"v4x", vertices[3].
x()));
   753    gtrapElement->setAttributeNode(
NewAttribute(
"v4y", vertices[3].
y()));
   754    gtrapElement->setAttributeNode(
NewAttribute(
"v5x", vertices[4].
x()));
   755    gtrapElement->setAttributeNode(
NewAttribute(
"v5y", vertices[4].
y()));
   756    gtrapElement->setAttributeNode(
NewAttribute(
"v6x", vertices[5].
x()));
   757    gtrapElement->setAttributeNode(
NewAttribute(
"v6y", vertices[5].
y()));
   758    gtrapElement->setAttributeNode(
NewAttribute(
"v7x", vertices[6].
x()));
   759    gtrapElement->setAttributeNode(
NewAttribute(
"v7y", vertices[6].
y()));
   760    gtrapElement->setAttributeNode(
NewAttribute(
"v8x", vertices[7].
x()));
   761    gtrapElement->setAttributeNode(
NewAttribute(
"v8y", vertices[7].
y()));
   762    gtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   763    solElement->appendChild(gtrapElement);
   773    const G4double theta = simaxis.theta();
   777    xercesc::DOMElement* trapElement = 
NewElement(
"trap");
   778    trapElement->setAttributeNode(
NewAttribute(
"name",name));
   797    trapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   798    trapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   799    solElement->appendChild(trapElement);
   807    xercesc::DOMElement* trdElement = 
NewElement(
"trd");
   808    trdElement->setAttributeNode(
NewAttribute(
"name",name));
   819    trdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   820    solElement->appendChild(trdElement);
   828    xercesc::DOMElement* tubeElement = 
NewElement(
"tube");
   829    tubeElement->setAttributeNode(
NewAttribute(
"name",name));
   840    tubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   841    tubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   842    solElement->appendChild(tubeElement);
   850    xercesc::DOMElement* cuttubeElement = 
NewElement(
"cutTube");
   851    cuttubeElement->setAttributeNode(
NewAttribute(
"name",name));
   858    cuttubeElement->setAttributeNode(
NewAttribute(
"startphi",
   860    cuttubeElement->setAttributeNode(
NewAttribute(
"deltaphi",
   874    cuttubeElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   875    cuttubeElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   876    solElement->appendChild(cuttubeElement);
   885    xercesc::DOMElement* twistedboxElement = 
NewElement(
"twistedbox");
   886    twistedboxElement->setAttributeNode(
NewAttribute(
"name",name));
   893    twistedboxElement->setAttributeNode(
NewAttribute(
"PhiTwist",
   895    twistedboxElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   896    twistedboxElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   897    solElement->appendChild(twistedboxElement);
   906    xercesc::DOMElement* twistedtrapElement = 
NewElement(
"twistedtrap");
   907    twistedtrapElement->setAttributeNode(
NewAttribute(
"name",name));
   922    twistedtrapElement->setAttributeNode(
NewAttribute(
"Alph",
   924    twistedtrapElement->setAttributeNode(
NewAttribute(
"Theta",
   926    twistedtrapElement->setAttributeNode(
NewAttribute(
"Phi",
   928    twistedtrapElement->setAttributeNode(
NewAttribute(
"PhiTwist",
   930    twistedtrapElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   931    twistedtrapElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   933    solElement->appendChild(twistedtrapElement);
   942    xercesc::DOMElement* twistedtrdElement = 
NewElement(
"twistedtrd");
   943    twistedtrdElement->setAttributeNode(
NewAttribute(
"name",name));
   954    twistedtrdElement->setAttributeNode(
NewAttribute(
"PhiTwist",
   956    twistedtrdElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   957    twistedtrdElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   958    solElement->appendChild(twistedtrdElement);
   967    xercesc::DOMElement* twistedtubsElement = 
NewElement(
"twistedtubs");
   968    twistedtubsElement->setAttributeNode(
NewAttribute(
"name",name));
   969    twistedtubsElement->setAttributeNode(
NewAttribute(
"twistedangle",
   971    twistedtubsElement->setAttributeNode(
NewAttribute(
"endinnerrad",
   973    twistedtubsElement->setAttributeNode(
NewAttribute(
"endouterrad",
   975    twistedtubsElement->setAttributeNode(
NewAttribute(
"zlen",
   977    twistedtubsElement->setAttributeNode(
NewAttribute(
"phi",
   979    twistedtubsElement->setAttributeNode(
NewAttribute(
"aunit",
"deg"));
   980    twistedtubsElement->setAttributeNode(
NewAttribute(
"lunit",
"mm"));
   981    solElement->appendChild(twistedtubsElement);
   988    xercesc::DOMElement* zplaneElement = 
NewElement(
"zplane");
   992    element->appendChild(zplaneElement);
   999    xercesc::DOMElement* rzpointElement = 
NewElement(
"rzpoint");
  1002    element->appendChild(rzpointElement);
  1009    xercesc::DOMElement* optElement = 
NewElement(
"opticalsurface");
  1014    optElement->setAttributeNode(
NewAttribute(
"model", smodel));
  1017    optElement->setAttributeNode(
NewAttribute(
"value", sval));
  1019    solElement->appendChild(optElement);
  1034    for (
size_t i=0; i<
solidList.size(); i++)   
  1036       if (
solidList[i] == solidPtr)  { 
return; }
  1042      = dynamic_cast<const G4BooleanSolid*>(solidPtr))
  1049      { 
const G4Box* 
const boxPtr
  1050      = 
static_cast<const G4Box*
>(solidPtr);
  1053      { 
const G4Cons* 
const conePtr
  1054      = 
static_cast<const G4Cons*
>(solidPtr);
  1073      { 
const G4Hype* 
const hypePtr
  1074      = 
static_cast<const G4Hype*
>(solidPtr);
  1077      { 
const G4Orb* 
const orbPtr
  1078      = 
static_cast<const G4Orb*
>(solidPtr);
  1081      { 
const G4Para* 
const paraPtr
  1082      = 
static_cast<const G4Para*
>(solidPtr);
  1102      = 
static_cast<const G4Sphere*
>(solidPtr);
  1109      { 
const G4Tet* 
const tetPtr
  1110      = 
static_cast<const G4Tet*
>(solidPtr);
  1113      { 
const G4Torus* 
const torusPtr
  1114      = 
static_cast<const G4Torus*
>(solidPtr);
  1121      { 
const G4Trap* 
const trapPtr
  1122      = 
static_cast<const G4Trap*
>(solidPtr);
  1125      { 
const G4Trd* 
const trdPtr
  1126      = 
static_cast<const G4Trd*
>(solidPtr);
  1129      { 
const G4Tubs* 
const tubePtr
  1130      = 
static_cast<const G4Tubs*
>(solidPtr);
  1134      = 
static_cast<const G4CutTubs*
>(solidPtr);
  1156      G4Exception(
"G4GDMLWriteSolids::AddSolid()", 
"WriteError",
 static const G4double kAngularPrecision
 
G4double GetPolarAngleTheta() const
 
G4double GetStartPhiAngle() const
 
G4double GetX2HalfLength() const
 
const G4SurfaceType & GetType() const
 
G4double GetXHalfLength1() const
 
G4double GetStartPhi() const
 
G4double GetOuterRadius() const
 
G4double GetSemiAxisMax(G4int i) const
 
G4ThreeVector GetSymAxis() const
 
G4double GetZHalfLength() const
 
const G4String & GetName() const
 
G4double GetOuterRadiusPlusZ() const
 
G4double GetStartPhiAngle() const
 
void BoxWrite(xercesc::DOMElement *, const G4Box *const)
 
void PolyhedraWrite(xercesc::DOMElement *, const G4Polyhedra *const)
 
G4double GetZHalfLength() const
 
G4double GetDeltaPhiAngle() const
 
G4double GetStartThetaAngle() const
 
void TessellatedWrite(xercesc::DOMElement *, const G4TessellatedSolid *const)
 
G4double GetY2HalfLength() const
 
G4double GetYHalfLength1() const
 
G4int GetNofZSections() const
 
G4double GetX2HalfLength() const
 
G4double GetZTopCut() const
 
G4double GetInnerRadiusMinusZ() const
 
G4double GetXHalfLength() const
 
std::vector< G4ThreeVector > GetVertices() const
 
ZSection GetZSection(G4int index) const
 
virtual G4int GetNumberOfVertices() const =0
 
virtual ~G4GDMLWriteSolids()
 
void TrdWrite(xercesc::DOMElement *, const G4Trd *const)
 
G4ThreeVector GetSymAxis() const
 
G4double GetXHalfLength3() const
 
G4double GetInnerRadius() const
 
void FirstpositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
 
void XtruWrite(xercesc::DOMElement *, const G4ExtrudedSolid *const)
 
G4double GetXHalfLength4() const
 
G4double GetZBottomCut() const
 
G4OpticalSurfaceModel GetModel() const
 
G4double GetRadiusPlusZ() const
 
virtual G4GeometryType GetEntityType() const =0
 
G4double GetZHalfLength() const
 
G4double GetYHalfLength2() const
 
void TwistedtrdWrite(xercesc::DOMElement *, const G4TwistedTrd *const)
 
G4double GetX1HalfLength() const
 
xercesc::DOMElement * NewElement(const G4String &)
 
G4VFacet * GetFacet(G4int i) const
 
G4double GetZHalfLength() const
 
G4double GetPolish() const
 
G4double GetZHalfLength() const
 
void TwistedboxWrite(xercesc::DOMElement *, const G4TwistedBox *const)
 
const std::vector< G4TwoVector > & GetVertices() const
 
G4double GetZHalfLength() const
 
void MultiUnionWrite(xercesc::DOMElement *solElement, const G4MultiUnion *const)
 
G4double GetXHalfLength() const
 
static const G4int maxTransforms
 
void RZPointWrite(xercesc::DOMElement *, const G4double &, const G4double &)
 
G4double GetPhiTwist() const
 
void OrbWrite(xercesc::DOMElement *, const G4Orb *const)
 
void TwistedtubsWrite(xercesc::DOMElement *, const G4TwistedTubs *const)
 
G4PolyhedraHistorical * GetOriginalParameters() const
 
G4GLOB_DLL std::ostream G4cout
 
G4int GetNumberOfFacets() const
 
G4double GetYHalfLength1() const
 
void TrapWrite(xercesc::DOMElement *, const G4Trap *const)
 
G4double GetRadiusMinusZ() const
 
void ConeWrite(xercesc::DOMElement *, const G4Cons *const)
 
G4double GetXHalfLength2() const
 
G4double GetZHalfLength() const
 
void ElconeWrite(xercesc::DOMElement *, const G4EllipticalCone *const)
 
G4double GetYHalfLength() const
 
void ParaboloidWrite(xercesc::DOMElement *, const G4Paraboloid *const)
 
G4double GetRadius() const
 
void FirstrotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
 
G4double GetInnerRadius() const
 
G4double GetTanAlpha() const
 
G4double GetY1HalfLength() const
 
G4double GetZHalfLength() const
 
void PolyconeWrite(xercesc::DOMElement *, const G4Polycone *const)
 
G4double GetInnerStereo() const
 
G4double GetTiltAngleAlpha() const
 
void OpticalSurfaceWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
 
G4double GetPhiTwist() const
 
G4double GetY2HalfLength() const
 
G4double GetPhiTwist() const
 
G4double GetSigmaAlpha() const
 
G4double GetOuterRadius() const
 
void AddPosition(const G4String &name, const G4ThreeVector &pos)
 
void GenericPolyconeWrite(xercesc::DOMElement *, const G4GenericPolycone *const)
 
G4double GetXHalfLength() const
 
G4String GenerateName(const G4String &, const void *const)
 
G4double GetXHalfLength2() const
 
void RotationWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &rot)
 
G4double GetOuterRadius() const
 
void CutTubeWrite(xercesc::DOMElement *, const G4CutTubs *const)
 
G4PolyconeHistorical * GetOriginalParameters() const
 
G4double GetInnerRadiusPlusZ() 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 GetZHalfLength() const
 
G4double GetDeltaPhiAngle() const
 
G4double GetStartPhiAngle() const
 
G4double GetYHalfLength() const
 
void HypeWrite(xercesc::DOMElement *, const G4Hype *const)
 
xercesc::DOMAttr * NewAttribute(const G4String &, const G4String &)
 
static const G4double kLinearPrecision
 
G4double GetOuterStereo() const
 
G4double GetInnerRadius() const
 
G4double GetOuterRadius() const
 
G4double GetDeltaPhiAngle() const
 
G4double GetZHalfLength() const
 
G4OpticalSurfaceFinish GetFinish() const
 
void EltubeWrite(xercesc::DOMElement *, const G4EllipticalTube *const)
 
G4PolyhedraSideRZ GetCorner(const G4int index) const
 
void ParaWrite(xercesc::DOMElement *, const G4Para *const)
 
G4double GetOuterRadiusMinusZ() const
 
void EllipsoidWrite(xercesc::DOMElement *, const G4Ellipsoid *const)
 
G4ThreeVector GetAngles(const G4RotationMatrix &)
 
G4double GetXHalfLength1() const
 
G4int GetNofVertices() const
 
G4double GetX3HalfLength() const
 
G4double GetTanAlpha2() const
 
virtual void SolidsWrite(xercesc::DOMElement *)
 
void TetWrite(xercesc::DOMElement *, const G4Tet *const)
 
G4double GetDeltaThetaAngle() const
 
G4double GetX1HalfLength() const
 
static const double degree
 
void TubeWrite(xercesc::DOMElement *, const G4Tubs *const)
 
G4TwoVector GetVertex(G4int index) const
 
G4int GetNumRZCorner() const
 
void BooleanWrite(xercesc::DOMElement *, const G4BooleanSolid *const)
 
G4PolyconeSideRZ GetCorner(G4int index) const
 
void TorusWrite(xercesc::DOMElement *, const G4Torus *const)
 
G4double GetX4HalfLength() const
 
G4double GetInnerRadius() const
 
G4double GetYHalfLength() const
 
G4double GetY1HalfLength() const
 
G4double GetInnerRadius() const
 
G4ThreeVector GetLowNorm() const
 
void PositionWrite(xercesc::DOMElement *element, const G4String &name, const G4ThreeVector &pos)
 
G4double GetStartPhiAngle() const
 
void TwistedtrapWrite(xercesc::DOMElement *, const G4TwistedTrap *const)
 
G4double GetZTopCut() const
 
G4double GetYHalfLength2() const
 
G4double GetZHalfLength() const
 
G4double GetSemiAxisY() const
 
static const G4double alpha
 
virtual G4ThreeVector GetVertex(G4int i) const =0
 
void GenTrapWrite(xercesc::DOMElement *, const G4GenericTrap *const)
 
G4double GetAzimuthalAnglePhi() const
 
G4double GetZHalfLength() const
 
G4double GetDeltaPhiAngle() const
 
G4double GetTanAlpha1() const
 
xercesc::DOMElement * solidsElement
 
static const G4double pos
 
G4double GetSemiAxisX() const
 
G4double GetPhiTwist() const
 
void SphereWrite(xercesc::DOMElement *, const G4Sphere *const)
 
G4double GetZHalfLength() const
 
virtual void AddSolid(const G4VSolid *const)
 
G4int GetNumRZCorner() const
 
G4double GetZHalfLength() const
 
G4double GetEndPhi() const
 
G4double GetOuterRadius() const
 
std::vector< const G4VSolid * > solidList
 
G4ThreeVector GetHighNorm() const