391 lines
15 KiB
XML
391 lines
15 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE xs:schema []>
|
|
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="0.1" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
|
|
<xs:include schemaLocation="gdml_core.xsd"></xs:include>
|
|
<xs:include schemaLocation="gdml_define.xsd"></xs:include>
|
|
<xs:include schemaLocation="gdml_extensions.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 default="g/mole" type="xs:string" name="unit"></xs:attribute>
|
|
<xs:attribute fixed="A" type="xs:string" name="type"></xs:attribute>
|
|
</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 default="g/cm3" type="xs:string" name="unit"></xs:attribute>
|
|
<xs:attribute fixed="density" type="xs:string" name="type"></xs:attribute>
|
|
</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 maxOccurs="unbounded" name="property">
|
|
<xs:annotation>
|
|
<xs:documentation>General material property (const or vector)</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:complexType>
|
|
<xs:complexContent>
|
|
<xs:extension base="ReferenceType">
|
|
<xs:attribute name="name" type="xs:string" use="required"></xs:attribute>
|
|
</xs:extension>
|
|
</xs:complexContent>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:choice>
|
|
<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 default="cm" type="xs:string" name="unit"></xs:attribute>
|
|
<xs:attribute fixed="X0" type="xs:string" name="type"></xs:attribute>
|
|
</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 default="cm" type="xs:string" name="unit"></xs:attribute>
|
|
<xs:attribute fixed="lambda" type="xs:string" name="type"></xs:attribute>
|
|
</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 default="K" type="xs:string" name="unit"></xs:attribute>
|
|
<xs:attribute fixed="temperature" type="xs:string" name="type"></xs:attribute>
|
|
</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 default="pascal" type="xs:string" name="unit"></xs:attribute>
|
|
<xs:attribute fixed="pressure" type="xs:string" name="type"></xs:attribute>
|
|
</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 default="unknown" name="state">
|
|
<xs:annotation>
|
|
<xs:documentation>Material physical state</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:simpleType>
|
|
<xs:restriction base="xs:NMTOKEN">
|
|
<xs:enumeration value="gas"></xs:enumeration>
|
|
<xs:enumeration value="liquid"></xs:enumeration>
|
|
<xs:enumeration value="solid"></xs:enumeration>
|
|
<xs:enumeration value="unknown"></xs:enumeration>
|
|
</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:group>
|
|
<xs:attributeGroup ref="MaterialAttributeGroup"></xs:attributeGroup>
|
|
</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:choice maxOccurs="unbounded">
|
|
<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
|
|
<xs:element minOccurs="0" name="define" type="defineType">
|
|
<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 maxOccurs="unbounded" minOccurs="0" name="isotope" type="MaterialIsotopeType">
|
|
<xs:annotation>
|
|
<xs:documentation>An isotope</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="element" type="MaterialElementType">
|
|
<xs:annotation>
|
|
<xs:documentation>A simple element or an element composed of isotopes</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
<xs:element maxOccurs="unbounded" minOccurs="0" name="material" type="MaterialMixtureType">
|
|
<xs:annotation>
|
|
<xs:documentation>A composite or a mixture complex material</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
</xs:choice>
|
|
</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:element>
|
|
</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>
|
|
<xs:element maxOccurs="unbounded" name="fraction">
|
|
<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:attribute>
|
|
</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>
|
|
<xs:element maxOccurs="unbounded" name="composite">
|
|
<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:attribute>
|
|
</xs:extension>
|
|
</xs:complexContent>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:element maxOccurs="unbounded" name="fraction">
|
|
<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 < n < 1.0</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:complexType>
|
|
<xs:complexContent>
|
|
<xs:extension base="ReferenceType">
|
|
<xs:attribute name="n" type="xs:double" use="required"></xs:attribute>
|
|
</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>
|