lcdd/schemas/gdml/1.0
diff -u -r1.3 -r1.4
--- gdml.xsd 5 Jul 2007 22:27:06 -0000 1.3
+++ gdml.xsd 2 May 2013 20:46:40 -0000 1.4
@@ -15,7 +15,7 @@
<xs:complexType name="SinglePlacementType">
<xs:annotation>
<xs:documentation>Represents a single unique copy a of an associated logical volume
- in geometrical hierarchy</xs:documentation>
+ in geometrical hierarchy</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice minOccurs="1">
@@ -30,6 +30,10 @@
<xs:element name="rotation" type="rotationType"/>
<xs:element name="rotationref" type="ReferenceType"/>
</xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element name="scale" type="scaleType"/>
+ <xs:element name="scaleref" type="ReferenceType"/>
+ </xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:ID"></xs:attribute>
</xs:complexType>
@@ -37,7 +41,7 @@
<xs:complexType name="DivisionPlacementType">
<xs:annotation>
<xs:documentation>Represents a division of the associated logical volume
- in geometrical hierarchy</xs:documentation>
+ in geometrical hierarchy</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="volumeref" type="ReferenceType"/>
@@ -52,9 +56,9 @@
<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>
+ 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">
@@ -77,12 +81,12 @@
<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>
+ 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">
@@ -114,31 +118,31 @@
<xs:annotation>
<xs:documentation>Surface between two physical volumes</xs:documentation>
</xs:annotation>
- <xs:complexType>
+ <xs:complexType>
<xs:complexContent>
<xs:extension base="LogicalSurfaceType">
- <xs:sequence>
- <xs:element name="physvolref" type="ReferenceType"/>
- <xs:element name="physvolref" type="ReferenceType"/>
- </xs:sequence>
+ <xs:sequence>
+ <xs:element name="physvolref" type="ReferenceType"/>
+ <xs:element name="physvolref" type="ReferenceType"/>
+ </xs:sequence>
</xs:extension>
</xs:complexContent>
- </xs:complexType>
+ </xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="skinsurface" substitutionGroup="Surface">
<xs:annotation>
<xs:documentation>Surface between two physical volumes</xs:documentation>
</xs:annotation>
- <xs:complexType>
+ <xs:complexType>
<xs:complexContent>
<xs:extension base="LogicalSurfaceType">
<xs:sequence>
- <xs:element name="volumeref" type="ReferenceType"/>
+ <xs:element name="volumeref" type="ReferenceType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
- </xs:complexType>
+ </xs:complexType>
</xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<xs:element name="structure">
@@ -168,15 +172,15 @@
<xs:element maxOccurs="unbounded" name="setup">
<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>
+ 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>
+ in the structure block chosen by this setup
+ World volumme can't be an assembly volume</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
@@ -185,79 +189,28 @@
</xs:complexType>
</xs:element>
</xs:sequence>
- <xs:attribute fixed="2.9.0" name="version" type="xs:string">
+ <xs:attribute fixed="2.10.0" name="version" type="xs:string">
<xs:annotation>
<xs:documentation>The GDML Schema version consists of 3 digits X.Y.Z
- where these mean:
- X - major number, increased when major new
- features or backward incompatible bug fixes
- are added and means the GDML Processor is
- allowed to refuse processing of such a
- document if this is using the more recent
- version of the GDML Schema then GDML Processor
- understands
- Y - minor number, increased when incremental and
- backward compatible changes or improvements
- are made into the GDML Schema. GDML Processor
- should be able to process such a document
- using higher minor version number then that of
- the GDML Processor
- Z - bugfix revision number, increased when fully
- backward compatible changes which resolve a
- problem in GDML Schema are applied</xs:documentation>
+ where these mean:
+ X - major number, increased when major new
+ features or backward incompatible bug fixes
+ are added and means the GDML Processor is
+ allowed to refuse processing of such a
+ document if this is using the more recent
+ version of the GDML Schema then GDML Processor
+ understands
+ Y - minor number, increased when incremental and
+ backward compatible changes or improvements
+ are made into the GDML Schema. GDML Processor
+ should be able to process such a document
+ using higher minor version number then that of
+ the GDML Processor
+ Z - bugfix revision number, increased when fully
+ backward compatible changes which resolve a
+ problem in GDML Schema are applied</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
-
- <xs:complexType name="GDMLType">
- <xs:sequence>
- <xs:element ref="define"/>
- <xs:element ref="materials"/>
- <xs:element ref="solids"/>
- <xs:element ref="structure"/>
- <xs:element maxOccurs="unbounded" name="setup">
- <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 fixed="2.8.0" name="version" type="xs:string">
- <xs:annotation>
- <xs:documentation>The GDML Schema version consists of 3 digits X.Y.Z
- where these mean:
- X - major number, increased when major new
- features or backward incompatible bug fixes
- are added and means the GDML Processor is
- allowed to refuse processing of such a
- document if this is using the more recent
- version of the GDML Schema then GDML Processor
- understands
- Y - minor number, increased when incremental and
- backward compatible changes or improvements
- are made into the GDML Schema. GDML Processor
- should be able to process such a document
- using higher minor version number then that of
- the GDML Processor
- Z - bugfix revision number, increased when fully
- backward compatible changes which resolve a
- problem in GDML Schema are applied</xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
-
</xs:schema>
lcdd/schemas/gdml/1.0
diff -u -r1.2 -r1.3
--- gdml_materials.xsd 5 Jul 2007 22:27:06 -0000 1.2
+++ gdml_materials.xsd 2 May 2013 20:46:40 -0000 1.3
@@ -1,390 +1,410 @@
<?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: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: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: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="NIL">
+ <xs:annotation>
+ <xs:documentation>Nuclear interaction 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="NILref" type="ReferenceType">
+ <xs:annotation>
+ <xs:documentation>A reference to a previously defined named nuclear interaction 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>