Import Geant4 4.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 16:39:52 +02:00
parent 921d3b1cda
commit 330b82b769
4524 changed files with 178689 additions and 43575 deletions
+123
View File
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gdml="http://cern.ch/2001/Schemas/GDML"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="1.0">
<xs:include schemaLocation="gdml_simple_core.xsd"/>
<xs:include schemaLocation="gdml_simple_define.xsd"/>
<xs:include schemaLocation="gdml_simple_materials.xsd"/>
<xs:include schemaLocation="gdml_simple_solids.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableVolumeType" abstract="true">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="VolumeType">
<xs:annotation>
<xs:documentation>
Represents a top of a geometrical sub-hierarchy not placed in space
None of its children can coincide with its boundary defined by an associated solid
Two different placements of the same logical volume represent two different geometrical
hierarchies in space
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="IdentifiableVolumeType">
<xs:sequence>
<xs:element name="materialref" type="ReferenceType"/>
<xs:element name="solidref" type="ReferenceType"/>
<xs:sequence minOccurs="0">
<xs:element name="child" type="SinglePlacementType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AssemblyVolumeType">
<xs:annotation>
<xs:documentation>
Allows to create a group of volumes bound together without a boundary
All the volumes exits inside the same virtual reference system of the assmebly volume
they belong to
When assembly volume is placed all its children follow the global transformation applied
to their assembly volume
After the assembly volume is placed its children exist as standalone placements in space
independent of each other
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="IdentifiableVolumeType">
<xs:sequence>
<xs:element name="child" type="SinglePlacementType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SinglePlacementType">
<xs:annotation>
<xs:documentation>
Represents a single unique copy a of an associated logical volume
in geometrical hierarchy
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"/>
<xs:element name="positionref" type="ReferenceType"/>
<xs:element name="rotationref" type="ReferenceType"/>
</xs:sequence>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="structure">
<xs:annotation>
<xs:documentation>
Definitions of a geometrical hierarchy of a set of volumes
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="volume" type="VolumeType"/>
<xs:element name="assembly" type="AssemblyVolumeType"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="gdml">
<xs:complexType>
<xs:sequence>
<xs:element ref="define"/>
<xs:element ref="materials"/>
<xs:element ref="solids"/>
<xs:element ref="structure"/>
<xs:element name="setup" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Geometry setup representing the particular geometry hierarchy by refferring to
a given volume which becomes the top level volume
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="world" type="ReferenceType">
<xs:annotation>
<xs:documentation>
A reference to the previously defined volume
in the structure block chosen by this setup
World volumme can't be an assembly volume
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:ID" use="required"/>
<xs:attribute name="version" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="version" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
</xs:schema>
@@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gdml="http://cern.ch/2001/Schemas/GDML"
elementFormDefault="unqualified"
attributeFormDefault="unqualified" version="1.0">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:simpleType name="InlineExpressionType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:simpleType name="ExpressionOrIDREFType">
<xs:union memberTypes="xs:IDREF InlineExpressionType xs:double"/>
</xs:simpleType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableExpressionType">
<xs:simpleContent>
<xs:extension base="InlineExpressionType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="ExpressionType" mixed="true">
<xs:annotation>
<xs:documentation>
A base type for expressions
</xs:documentation>
</xs:annotation>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="IdentifiableExpressionType" mixed="true">
<xs:annotation>
<xs:documentation>
Named (referenced), global scope,
expression (may contain named constants and quantities)
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ExpressionType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ConstantType">
<xs:annotation>
<xs:documentation>
An anonymous, local scope, value
</xs:documentation>
</xs:annotation>
<xs:attribute name="value" type="ExpressionOrIDREFType" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableConstantType">
<xs:annotation>
<xs:documentation>
Named (referenced), global scope, constant value
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ConstantType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="QuantityType">
<xs:annotation>
<xs:documentation>
An anonymous quantity, local scope, with a unit,
(possibly of a given type) quantity
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ConstantType">
<!-- The unit attribute was originally required,
but set to optional and is recommended to provide
a default value in its derived type
-->
<xs:attribute name="unit" type="xs:string" use="optional"/>
<xs:attribute name="type" type="xs:string" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableQuantityType">
<xs:annotation>
<xs:documentation>
Named (referenced), global scope,(possibly of a given type) quantity
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="QuantityType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ThreeVectorType">
<xs:annotation>
<xs:documentation>
An anonymous, 3 dimensional, local scope, vector of doubles
</xs:documentation>
</xs:annotation>
<xs:attribute name="x" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="y" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="z" type="ExpressionOrIDREFType" default="0.0"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableThreeVectorType">
<xs:annotation>
<xs:documentation>
Named (referenced), 3 dimensional, global scope, vector of doubles
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ThreeVectorType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="QuantityVectorType">
<xs:annotation>
<xs:documentation>
An anonymous, 3 dimensional, local scope, with a unit,
(possibly of a given type) quantity vector
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="ThreeVectorType">
<!-- The unit attribute was originally required,
but set to optional and is recommended to provide
a default value in its derived type
-->
<xs:attribute name="unit" type="xs:string" use="optional"/>
<xs:attribute name="type" type="xs:string" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="IdentifiableQuantityVectorType">
<xs:annotation>
<xs:documentation>
Named (referenced), 3 dimensional, global scope, with a unit,
(possibly of a given type) quantity vector
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="QuantityVectorType">
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ReferenceType">
<xs:annotation>
<xs:documentation>
Local reference to an element of a named type
</xs:documentation>
</xs:annotation>
<xs:attribute name="ref" type="xs:IDREF" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="ReferenceListType">
<xs:annotation>
<xs:documentation>
List of local references to a set of element of a named type
</xs:documentation>
</xs:annotation>
<xs:attribute name="refs" type="xs:IDREFS" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gdml="http://cern.ch/2001/Schemas/GDML"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="1.0">
<xs:include schemaLocation="gdml_simple_core.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="define" type="defineType">
<xs:annotation>
<xs:documentation>
Definition block of global named constants, quantitties, expressions,
positions and rotations which may be used by name or
by a reference in scope of the current document
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="defineType">
<xs:annotation>
<xs:documentation>
The global complex type is defined in order to reuse this defintion
in derived schemas
</xs:documentation>
</xs:annotation>
<!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -->
<xs:choice maxOccurs="unbounded">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="constant" type="IdentifiableConstantType"
minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Named constant</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="quantity" type="IdentifiableQuantityType"
minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Named quantity</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="expression" type="IdentifiableExpressionType"
minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Named expression, may contain other named constants,
quantities and expressions
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="position" type="positionType"
minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Named cartesian position, default unit mm
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="rotation" type="rotationType"
minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Named cartesian rotation, default unit radian
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:choice>
<!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -->
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="positionType">
<xs:complexContent>
<xs:restriction base="IdentifiableQuantityVectorType">
<xs:attribute name="unit" default="mm"/>
<xs:attribute name="type" default="cartesian"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="rotationType">
<xs:complexContent>
<xs:restriction base="IdentifiableQuantityVectorType">
<xs:attribute name="unit" default="radian"/>
<xs:attribute name="type" default="cartesian"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,428 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:gdml="http://cern.ch/2001/Schemas/GDML"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="0.1">
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:include schemaLocation="gdml_simple_core.xsd"/>
<xs:include schemaLocation="gdml_simple_define.xsd"/>
<!-- Removed abstract="true" in AtomType -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="AtomType">
<xs:annotation>
<xs:documentation>
Atomic mass, quantity type A, default unit g/mole
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute name="unit" default="g/mole"/>
<xs:attribute name="type" fixed="A"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="DensityType">
<xs:annotation>
<xs:documentation>Density</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute name="unit" default="g/cm3"/>
<xs:attribute name="type" fixed="density"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:group name="MaterialPropertiesGroup">
<xs:annotation>
<xs:documentation>General material properties</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="RL">
<xs:annotation>
<xs:documentation>
Radiation length
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute name="unit" default="cm"/>
<xs:attribute name="type" fixed="X0"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="RLref" type="ReferenceType">
<xs:annotation>
<xs:documentation>
A reference to a previsouly defined named radiation length quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="AL">
<xs:annotation>
<xs:documentation>Absorption length</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute name="unit" default="cm"/>
<xs:attribute name="type" fixed="lambda"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ALref" type="ReferenceType">
<xs:annotation>
<xs:documentation>
A reference to a previsouly defined named absorption length quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="T">
<xs:annotation>
<xs:documentation>Temperature</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute name="unit" default="K"/>
<xs:attribute name="type" fixed="temperature"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Tref" type="ReferenceType">
<xs:annotation>
<xs:documentation>
A reference to previously defined named temperature quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="P">
<xs:annotation>
<xs:documentation>Pressure</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="QuantityType">
<xs:attribute name="unit" default="pascal"/>
<xs:attribute name="type" fixed="pressure"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="Pref" type="ReferenceType">
<xs:annotation>
<xs:documentation>
A reference to previously defined named pressure quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:group>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:attributeGroup name="MaterialAttributeGroup">
<xs:annotation>
<xs:documentation>
General material attributes
</xs:documentation>
</xs:annotation>
<xs:attribute name="name" type="xs:ID" use="required">
<xs:annotation>
<xs:documentation>Material name</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="formula" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Material chemical formula</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="state" default="unknown">
<xs:annotation>
<xs:documentation>
Material physical state
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="gas"/>
<xs:enumeration value="liquid"/>
<xs:enumeration value="solid"/>
<xs:enumeration value="unknown"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialType">
<xs:annotation>
<xs:documentation>
Base type for materials
</xs:documentation>
</xs:annotation>
<xs:group ref="MaterialPropertiesGroup"/>
<xs:attributeGroup ref="MaterialAttributeGroup"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:complexType name="ComplexMaterialType">
<xs:annotation>
<xs:documentation>
Base type for complex materials
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
-->
<!-- <xs:group ref="MaterialPropertiesGroup"/> -->
<!--
Removed from referenced attribute group
<xs:attribute name="N" use="prohibited"/>
-->
<!--
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="materials">
<xs:annotation>
<xs:documentation>Materials description</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="define" type="defineType" minOccurs="0">
<xs:annotation>
<xs:documentation>
Material related definitons of constants and quantities
In this version of schema these become visible in global scope
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="isotope" type="MaterialIsotopeType"
minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>An isotope</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="element" type="MaterialElementType"
minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
A simple element or an element compoased of isotopes
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="material" type="MaterialMixtureType"
minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
A composite or a mixture complex material
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialIsotopeType">
<xs:annotation>
<xs:documentation>Exported isotope type</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>
Density quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>
A reference to a previsouly defined named density quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:element name="atom" type="AtomType"/>
</xs:sequence>
<xs:attribute name="N" type="xs:positiveInteger" use="required">
<xs:annotation>
<xs:documentation>Number of nucleons</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Z" type="xs:double" use="required">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialElementType">
<xs:annotation>
<xs:documentation>Exported material element type</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>
Density quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>
A reference to a previsouly defined named density quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice>
<xs:annotation>
<xs:documentation>
An element can be defined either as a simple element or by a set
of isotopes fractions
</xs:documentation>
</xs:annotation>
<xs:element name="atom" type="AtomType"/>
<xs:element name="fraction" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
An isotope fraction of an element where n is the actual amount
of the isotope in the element
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:double" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="N" type="xs:positiveInteger" use="optional">
<xs:annotation>
<xs:documentation>Number of nucleons</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="MaterialMixtureType">
<xs:annotation>
<xs:documentation>
Exported material composite or mixture type
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<!-- <xs:extension base="ComplexMaterialType"> -->
<xs:extension base="MaterialType">
<xs:sequence>
<xs:choice>
<xs:element name="D" type="DensityType">
<xs:annotation>
<xs:documentation>
Density quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Dref" type="ReferenceType">
<xs:annotation>
<xs:documentation>
A reference to a previsouly defined named density quantity value
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
<xs:choice>
<xs:annotation>
<xs:documentation>
A complex material can be defined as a simple mixture when
its material properties are known or as a composite material
or a mixture. A composite material is defined by a set of elements
by specifying the number of atoms.
The second way is by a set of material fractions where the fractions
can be either simple elements or other complex materials.
The restriction is that one can't mix composition by atoms and fractions
at the same time.
</xs:documentation>
</xs:annotation>
<xs:element name="atom" type="AtomType"/>
<xs:element name="composite" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Elements of this composite material specified as a set of local references
to already defined simple elements where value of n in each means the number of atoms
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:positiveInteger" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="fraction" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Fractions of this mixture specified as a set of local references to already defined
elements or other mixtures where value of n in each means the fraction of the whole
material in the range 0.0 &lt; n &lt; 1.0
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="ReferenceType">
<xs:attribute name="n" type="xs:double" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="Z" type="xs:double" use="optional">
<xs:annotation>
<xs:documentation>Atomic number</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>
@@ -0,0 +1,302 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Radovan Chytracek (private) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gdml="http://cern.ch/2001/Schemas/GDML"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="1.0">
<xs:include schemaLocation="gdml_simple_core.xsd"/>
<xs:include schemaLocation="gdml_simple_define.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="SolidType">
<xs:annotation>
<xs:documentation>
Base solid type
</xs:documentation>
</xs:annotation>
<xs:attribute name="lunit" type="xs:string" default="mm">
<xs:annotation>
<xs:documentation>
Length unit of all dimensions used for this instance of solid
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="aunit" type="xs:string" default="radian">
<xs:annotation>
<xs:documentation>
Angle unit of angles used in definition of this solid
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="xs:ID" use="required"/>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:complexType name="BooleanSolidType">
<xs:annotation>
<xs:documentation>
Base type for boolean solids
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:sequence>
<xs:element name="first" type="ReferenceType"/>
<xs:element name="second" type="ReferenceType"/>
<xs:choice minOccurs="0">
<xs:element name="position" type="positionType"/>
<xs:element name="positionref" type="ReferenceType"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="rotation" type="rotationType"/>
<xs:element name="rotationref" type="ReferenceType"/>
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
<xs:element name="BooleanSolid" abstract="true">
<xs:annotation>
<xs:documentation>
Abstract element for boolean solids substitution group
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="BooleanSolidType"/>
</xs:complexContent>
</xs:complexType>
</xs:element>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="Solid" type="SolidType" abstract="true">
<xs:annotation>
<xs:documentation>
Abstract element for all solids substitution group
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="solids">
<xs:annotation>
<xs:documentation>
Solids definitions block
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="define" type="defineType" minOccurs="0">
<xs:annotation>
<xs:documentation>
Definitions of constants and expressions to be used for solids'
dimensions and transformations
In this version these become part of the global scope.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="Solid" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="union" type="BooleanSolidType" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Exported boolean union of two solids
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="subtraction" type="BooleanSolidType" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Exported boolean subtraction of two solids
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="intersection" type="BooleanSolidType" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
Exported boolean intersectioin of two solids
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="box" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation>
CSG box solid described by 3 dimensions of x, y, and z
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="sphere" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation> CSG sphere or spherical shell segment solid described by
rmin inner radius
rmax outer radius
startphi starting angle of the segment in radians(0 &lt;= phi &lt;= 2*PI)
deltaphi delta angle of the segment in radians
starttheta starting angle of the segment in radians(0 &lt;= theta &lt;= PI)
deltatheta delta angle of the segment in radians
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="rmin" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="starttheta" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="deltatheta" type="ExpressionOrIDREFType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="tube" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation> CSG tube or tube segement solid described by
rmin Inner radius
rmax Outer radius
z length in z
startphi The starting phi angle in radians, adjusted such that
(startphi+deltaphi &lt;= 2PI, startphi &gt; -2PI)
deltaphi Delta angle of the segment in radians
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType"/>
<xs:attribute name="rmin" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="cone" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation> CSG cone or cone segment described by
rmin1 inside radius at z/2
rmin2 inside radius at z/2
rmax1 outside radius at z/2
rmax2 outside radius at z/2
z length in z
startphi starting angle of the segment in radians
deltaphi delta angle of the segment in radians
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="rmin1" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="rmin2" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="rmax1" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="rmax2" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/>
<xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="para" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation> CSG parallelepiped solid is described by
x, y, z length in x,y,z
alpha Angle formed by the y axis and by the plane joining the centre of the faces
G4Parallel to the z-x plane at -y and +y
theta Polar angle of the line joining the centres of the faces at -z and +z in z
phi Azimuthal angle of the line joining the centres of the faces at -z and +z in z
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="y" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="alpha" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="trd" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation> CSG trapezoid solid with varying x and y dimensions along z axis
x1 Length along x at the surface positioned at -z
x2 Length along x at the surface positioned at +z
y1 Length along y at the surface positioned at -z
y2 Length along y at the surface positioned at +z
z Length along z axis
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="trap" substitutionGroup="Solid">
<xs:annotation>
<xs:documentation> CSG general trapezoid solid is described by
z Length along the z-axis
theta Polar angle of the line joining the centres of the faces at -/+z
phi Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z
y1 Length along y of the face at -z
x1 Length along x of the side at y = -y1 of the face at -z
x2 Length along x of the side at y = +y1 of the face at -z
alp1 Angle with respect to the y axis from the centre of the side at y =- y1 to the centre at y = +y1 of the face at -z
y2 Length along y of the face at +z
x3 Length along x of the side at y = -y2 of the face at +z
x4 Length along x of the side at y = +y2 of the face at +z
alp2 Angle with respect to the y axis from the centre of the side at y = -y2 to the centre at y = +y2 of the face at +z
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="SolidType">
<xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="alpha1" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="x3" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="x4" type="ExpressionOrIDREFType" use="required"/>
<xs:attribute name="alpha2" type="ExpressionOrIDREFType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>