XML Declaration
<?xml version="1.0" encoding="UTF-8"?>
GDML Namespace
XML Schema Instance Namespace
GDML Schema location
Numerical definitions:

constant PI
NOTE: require the CLHEP built-in pi!

position center( 0.0, 0.0, 0.0 )

rotation identity equals to
identity.rotateX( 0.0 )
identity.rotateY( 0.0 )
identity.rotateZ( 0.0 )

NOTE: GDML rotation is axial rotation

 <constant name="HALFPI" value="pi/2."/>
 <constant name="PI" value="1.*pi"/>
 <constant name="TWOPI" value="2.*pi"/>
 <position name="center"/>
 <rotation name="identity"/>
 <position name="shiftbyx" x="20.0"/>
 <position name="px10" x="10.0"/>
 <position name="px250" x="250.0"/>
 <position name="px200" x="200.0"/>
 <rotation name="rotatebyx" x="HALFPI/2."/>
 <rotation name="rotatebyall" x="HALFPI" y="PI" z="TWOPI"/>

Density quantity definition

their use to create an element

Simple elements type definitions
NOTE: elements can't be associated with a volume, only materials can!

Simple material a la element way

Simple material created from two elements by number of atoms

Material mixture created by fractional mass
   <quantity type="density" name="ro" unit="g/cm3" value="1234.00"/>
  <isotope name="U235" Z="92"   N="235"> <atom type="A" value="235.01"/>
  <isotope name="U238" Z="92.0" N="238"> <atom type="A" value="238.03"/>
  <element name="enriched_Uranium">
   <fraction ref="U235" n="0.9"/> <fraction ref="U238" n="0.1"/>
  <element name="Hydrogen" formula="H" Z="1."> <atom value="1.01"/>
  <element name="Oxygen" formula="O" Z="8."> <atom value="16.0"/>
  <element name="Nitrogen" formula="N" Z="7."> <atom value="14.01"/>
  <element name="Lead" formula="Pb" Z="82."> <atom value="207.20"/>
  <material name="Al" Z="13.0">
   <D value="2.70"/> <atom value="26.98"/>
  <material name="Water" formula="H20">
   <D value="1.0"/>
   <composite n="2" ref="Hydrogen"/>
   <composite n="1" ref="Oxygen"/>
  <material name="Air">
   <D value="1.290" unit="mg/cm3"/>
   <fraction n="0.7" ref="Nitrogen"/>
   <fraction n="0.3" ref="Oxygen"/>
Examples of some of the available CSG solids
One can place numeric definitions here as well as into materials and structure section.
NOTE: All numeric definitions are global!




General trapezoid

   <quantity type="length" name="sizeoft500" unit="mm" value="500.0"/>
   <position name="shiftbysizeoft500" x="500.0"/>
  <box name="WorldBox" x="10000.0" y="10000.0" z="10000.0"/>
  <box name="b100" x="100.0" y="100.0" z="100.0"/>
  <box name="b500" x="500.0" y="500.0" z="500.0"/>
  <cone name="c1" z="111.0" rmax1="22.0" rmax2="33.0" deltaphi="TWOPI"/>
  <para name="p1" x="10.0"     y="10.0"     z="10.0"
                  alpha="30.0" theta="30.0" phi="30.0"/>
  <sphere name="s1" rmax="200.0" deltaphi="TWOPI" deltatheta="PI"/>
  <trap name="trap1" z="100.0"     theta="60.0"  phi="60.0"
                     y1="10.0"     x1="10.0"     x2="10.0"
                     alpha1="30.0" y2="10.0"     x3="10.0"
                     x4="10.0"     alpha2="30.0"/>
  <trd name="trd1" x1="10.0" x2="10.0" y1="10.0" y2="20.0" z="30.0"/>
  <tube name="t1000" z="1000.0" rmax="100.0" deltaphi="TWOPI"/>
  <tube name="t900" z="900.0" rmax="100.0" deltaphi="TWOPI"/>
  <tube name="t100" z="102.0" rmax="30.0" deltaphi="TWOPI"/>
Make a union where tube "t100" is moved 250.0 mm along x-axis from center of the box "b500"

Subtract the non-rotated tube "t100" from the center of box "b100"

Intersection of box "b100" and tube "t100" where tube is moved by 10.0mm in x and rotated by 45 degrees around x-axis
  <union name="u2">
   <first ref="b500"/> <second ref="t100"/>
   <positionref ref="px450"/>
  <subtraction name="sub2">
   <first ref="b100"/> <second ref="t100"/>
   <positionref ref="center"/> <rotationref ref="identity"/>
  <intersection name="intersec1">
   <first ref="b100"/> <second ref="b100"/>
   <positionref ref="px10"/> <rotationref ref="rotatebyx"/>
Simple geometry setup
Volume definitions

World volume definition

Place child volume "v2" at the center

Place the child volume "v1" moved by 200.0 mm along x-axis from the center
  <volume name="v1">
   <materialref ref="Lead"/> <solidref ref="t1000"/>
  <volume name="v2">
   <materialref ref="Lead"/> <solidref ref="sub2"/>
  <volume name="World">
   <materialref ref="Air"/> <solidref ref="WorldBox"/>
    <volumeref ref="v2"/> <positionref ref="center"/>
                          <rotationref ref="identity"/>
    <volumeref ref="v1"/> <positionref ref="px200"/>
                          <rotationref ref="identity"/>
Only one setup is defined here, however it is possible define multiple geometry setups choosing different volumes as world volumes from all the already defined volumes
 <setup name="Test1" version="1.0">
  <world ref="World"/>

Back to GDML web page.