Print

Print


Commit in lcdd/schemas/gdml/1.0 on MAIN
gdml_extensions.xsd+36added 1.1
gdml.xsd+140-351.2 -> 1.3
gdml_core.xsd+351.1 -> 1.2
gdml_define.xsd+181.1 -> 1.2
gdml_materials.xsd+19-31.1 -> 1.2
gdml_parameterised.xsd+11.1 -> 1.2
gdml_replicas.xsd+11.2 -> 1.3
gdml_solids.xsd+375-381.2 -> 1.3
+625-76
1 added + 7 modified, total 8 files
JM: Sync GDML schemas stored in LCDD.

lcdd/schemas/gdml/1.0
gdml_extensions.xsd added at 1.1
diff -N gdml_extensions.xsd
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gdml_extensions.xsd	5 Jul 2007 22:27:06 -0000	1.1
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="loop">
+    <xs:complexType>
+      <xs:choice maxOccurs="unbounded">
+        <xs:element maxOccurs="unbounded" ref="Solid"/>
+	<xs:element name="volume" type="VolumeType"/>
+	<xs:element name="physvol" type="SinglePlacementType"/>
+      </xs:choice>
+      <xs:attribute name="for" type="xs:string">
+	<xs:annotation>
+	  <xs:documentation>
+	  </xs:documentation>
+	</xs:annotation>
+      </xs:attribute>
+      <xs:attribute name="from" type="xs:nonNegativeInteger">
+	<xs:annotation>
+	  <xs:documentation>
+	  </xs:documentation>
+	</xs:annotation>
+      </xs:attribute>
+      <xs:attribute name="to" type="xs:positiveInteger">
+	<xs:annotation>
+	  <xs:documentation>
+	  </xs:documentation>
+	</xs:annotation>
+      </xs:attribute>
+      <xs:attribute name="step" type="xs:positiveInteger">
+	<xs:annotation>
+	  <xs:documentation>
+	  </xs:documentation>
+	</xs:annotation>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>

lcdd/schemas/gdml/1.0
gdml.xsd 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- gdml.xsd	25 Mar 2006 02:05:08 -0000	1.2
+++ gdml.xsd	5 Jul 2007 22:27:06 -0000	1.3
@@ -6,6 +6,7 @@
   <xs:include schemaLocation="gdml_solids.xsd"/>
   <xs:include schemaLocation="gdml_replicas.xsd"/>
   <xs:include schemaLocation="gdml_parameterised.xsd"/>
+  <xs:include schemaLocation="gdml_extensions.xsd"/>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:complexType abstract="true" name="IdentifiableVolumeType">
     <xs:attribute name="name" type="xs:ID" use="required"/>
@@ -14,10 +15,13 @@
   <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:element name="volumeref" type="ReferenceType"/>
+      <xs:choice minOccurs="1">
+	<xs:element name="file" type="FileReferenceType"/>
+	<xs:element name="volumeref" type="ReferenceType"/>
+      </xs:choice>      
       <xs:choice minOccurs="0">
 	<xs:element name="position" type="positionType"/>
 	<xs:element name="positionref" type="ReferenceType"/>
@@ -27,12 +31,13 @@
 	<xs:element name="rotationref" type="ReferenceType"/>
       </xs:choice>
     </xs:sequence>
+    <xs:attribute name="name" type="xs:ID"></xs:attribute>
   </xs:complexType>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <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"/>
@@ -47,21 +52,22 @@
   <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">
 	<xs:sequence>
 	  <xs:element name="materialref" type="ReferenceType"/>
-	  <xs:element name="solidref" type="ReferenceType"/>
-	  <xs:choice minOccurs="0">
+	  <xs:element name="solidref" type="ReferenceType"/>	  
+	  <xs:choice minOccurs="0">	    
 	    <xs:element maxOccurs="unbounded" name="physvol" type="SinglePlacementType"/>
 	    <xs:element maxOccurs="1" minOccurs="1" name="divisionvol" type="DivisionPlacementType"/>
 	    <xs:element maxOccurs="1" minOccurs="1" ref="replicavol"/>
 	    <xs:element maxOccurs="1" minOccurs="1" name="paramvol" type="ParameterisedPlacementType"/>
 	  </xs:choice>
+	  <xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
 	  <xs:element name="auxiliary" maxOccurs="unbounded" minOccurs="0" type="AuxiliaryType"/>
 	</xs:sequence>
       </xs:extension>
@@ -71,12 +77,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">
@@ -89,6 +95,52 @@
     </xs:complexContent>
   </xs:complexType>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <xs:complexType name="LogicalSurfaceType">
+    <xs:annotation>
+      <xs:documentation>Base type for logical surfaces (for the moment only optical)
+      </xs:documentation>
+    </xs:annotation>
+    <xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
+    <xs:attribute name="surfaceproperty" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+  </xs:complexType>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <xs:element abstract="true" name="Surface" type="LogicalSurfaceType">
+    <xs:annotation>
+      <xs:documentation>Abstract element for all solids substitution group</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <xs:element name="bordersurface" substitutionGroup="Surface">
+    <xs:annotation>
+      <xs:documentation>Surface between two physical volumes</xs:documentation>
+    </xs:annotation>
+    <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:extension>
+      </xs:complexContent>
+    </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:complexContent>
+	<xs:extension base="LogicalSurfaceType">
+	  <xs:sequence>
+	    <xs:element name="volumeref" type="ReferenceType"/>
+	  </xs:sequence>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:element name="structure">
     <xs:annotation>
       <xs:documentation>Definitions of a geometrical hierarchy of a set of volumes</xs:documentation>
@@ -98,8 +150,10 @@
 	<xs:choice maxOccurs="unbounded">
 	  <xs:element name="volume" type="VolumeType"/>
 	  <xs:element name="assembly" type="AssemblyVolumeType"/>
+	  <xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
 	  <xs:element ref="ParameterisationAlgorithm"/>
 	</xs:choice>
+	<xs:element minOccurs="0" maxOccurs="unbounded" ref="Surface"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
@@ -114,15 +168,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>
@@ -131,28 +185,79 @@
 	  </xs:complexType>
 	</xs:element>
       </xs:sequence>
-      <xs:attribute fixed="2.3.0" name="version" type="xs:string">
+      <xs:attribute fixed="2.9.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
gdml_core.xsd 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- gdml_core.xsd	30 Mar 2005 19:06:51 -0000	1.1
+++ gdml_core.xsd	5 Jul 2007 22:27:06 -0000	1.2
@@ -51,6 +51,13 @@
     <xs:attribute name="value" type="ExpressionOrIDREFType" use="required"></xs:attribute>
   </xs:complexType>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <xs:complexType name="VariableType">
+    <xs:annotation>
+      <xs:documentation>An anonymous, local scope, value</xs:documentation>
+    </xs:annotation>
+    <xs:attribute name="value" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+  </xs:complexType>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:complexType name="IdentifiableConstantType">
     <xs:annotation>
       <xs:documentation>Named (referenced), global scope, constant value</xs:documentation>
@@ -62,6 +69,17 @@
     </xs:complexContent>
   </xs:complexType>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <xs:complexType name="IdentifiableVariableType">
+    <xs:annotation>
+      <xs:documentation>Named (referenced), local scope, variable value</xs:documentation>
+    </xs:annotation>
+    <xs:complexContent>
+      <xs:extension base="VariableType">
+	<xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:complexType name="QuantityType">
     <xs:annotation>
       <xs:documentation>An anonymous quantity, local scope, with a unit,
@@ -99,6 +117,15 @@
     <xs:attribute default="0.0" name="z" type="ExpressionOrIDREFType"></xs:attribute>
   </xs:complexType>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <xs:complexType name="MatrixType">
+    <xs:annotation>
+      <xs:documentation>A bi-dimensional matrix of doubles</xs:documentation>
+    </xs:annotation>
+    <xs:attribute name="name" type="xs:ID"></xs:attribute>
+    <xs:attribute name="coldim" type="xs:nonNegativeInteger"></xs:attribute>
+    <xs:attribute name="values" type="xs:string"></xs:attribute>
+  </xs:complexType>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:complexType name="IdentifiableThreeVectorType">
     <xs:annotation>
       <xs:documentation>Named (referenced), 3 dimensional, global scope, vector of doubles</xs:documentation>
@@ -146,6 +173,14 @@
     <xs:attribute name="ref" type="xs:IDREF" use="required"></xs:attribute>
   </xs:complexType>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <xs:complexType name="FileReferenceType">
+    <xs:annotation>
+      <xs:documentation>Reference to an external file containing sub-volume information</xs:documentation>
+    </xs:annotation>
+    <xs:attribute name="name" type="xs:anyURI" use="required"></xs:attribute>
+    <xs:attribute name="volname" type="xs:string" use="optional"></xs:attribute>
+  </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>

lcdd/schemas/gdml/1.0
gdml_define.xsd 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- gdml_define.xsd	30 Mar 2005 19:06:51 -0000	1.1
+++ gdml_define.xsd	5 Jul 2007 22:27:06 -0000	1.2
@@ -2,6 +2,7 @@
 <!DOCTYPE xs:schema>
 <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:include schemaLocation="gdml_core.xsd"/>
+  <xs:include schemaLocation="gdml_extensions.xsd"/>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   
   <xs:element name="define" type="defineType">
@@ -23,6 +24,9 @@
     <xs:choice maxOccurs="unbounded">
       <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
       
+      <xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>
+      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+      
       <xs:element maxOccurs="unbounded" minOccurs="0" name="constant" type="IdentifiableConstantType">
 	<xs:annotation>
 	  <xs:documentation>Named constant</xs:documentation>
@@ -30,6 +34,20 @@
       </xs:element>
       <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
       
+      <xs:element maxOccurs="unbounded" minOccurs="0" name="variable" type="IdentifiableVariableType">
+	<xs:annotation>
+	  <xs:documentation>Named variable</xs:documentation>
+	</xs:annotation>
+      </xs:element>
+      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+      
+      <xs:element maxOccurs="unbounded" minOccurs="0" name="matrix" type="MatrixType">
+	<xs:annotation>
+	  <xs:documentation>Named matrix</xs:documentation>
+	</xs:annotation>
+      </xs:element>
+      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+      
       <xs:element maxOccurs="unbounded" minOccurs="0" name="quantity" type="IdentifiableQuantityType">
 	<xs:annotation>
 	  <xs:documentation>Named quantity</xs:documentation>

lcdd/schemas/gdml/1.0
gdml_materials.xsd 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- gdml_materials.xsd	30 Mar 2005 19:06:51 -0000	1.1
+++ gdml_materials.xsd	5 Jul 2007 22:27:06 -0000	1.2
@@ -4,6 +4,7 @@
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <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">
@@ -35,6 +36,20 @@
       <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>
@@ -186,7 +201,8 @@
       <xs:documentation>Materials description</xs:documentation>
     </xs:annotation>
     <xs:complexType>
-      <xs:sequence maxOccurs="unbounded">
+      <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
@@ -200,7 +216,7 @@
 	</xs:element>
 	<xs:element maxOccurs="unbounded" minOccurs="0" name="element" type="MaterialElementType">
 	  <xs:annotation>
-	    <xs:documentation>A simple element or an element compoased of isotopes</xs:documentation>
+	    <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">
@@ -208,7 +224,7 @@
 	    <xs:documentation>A composite or a mixture complex material</xs:documentation>
 	  </xs:annotation>
 	</xs:element>
-      </xs:sequence>
+      </xs:choice>
     </xs:complexType>
   </xs:element>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

lcdd/schemas/gdml/1.0
gdml_parameterised.xsd 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- gdml_parameterised.xsd	30 Mar 2005 19:06:51 -0000	1.1
+++ gdml_parameterised.xsd	5 Jul 2007 22:27:06 -0000	1.2
@@ -1,6 +1,7 @@
 <?xml version="1.0"?>
 <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:include schemaLocation="gdml_define.xsd"/>
+  <xs:include schemaLocation="gdml_extensions.xsd"/>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:complexType abstract="false" name="DimensionsType">
     <xs:annotation>

lcdd/schemas/gdml/1.0
gdml_replicas.xsd 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- gdml_replicas.xsd	25 Mar 2006 02:05:08 -0000	1.2
+++ gdml_replicas.xsd	5 Jul 2007 22:27:06 -0000	1.3
@@ -1,6 +1,7 @@
 <?xml version="1.0"?>
 <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:include schemaLocation="gdml_define.xsd"/>
+  <xs:include schemaLocation="gdml_extensions.xsd"/>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:complexType abstract="false" name="ReplicationAlgorithmType">
     <xs:annotation>

lcdd/schemas/gdml/1.0
gdml_solids.xsd 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- gdml_solids.xsd	25 Mar 2006 02:05:08 -0000	1.2
+++ gdml_solids.xsd	5 Jul 2007 22:27:06 -0000	1.3
@@ -3,6 +3,7 @@
 <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" version="1.0" 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"/>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   
   <xs:complexType name="SolidType">
@@ -79,25 +80,16 @@
       </xs:complexContent>
     </xs:complexType>
   </xs:element>
-
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 
-  <!--
-      <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:complexType name="SurfacePropertyType">
+    <xs:annotation>
+      <xs:documentation>Base surface type</xs:documentation>
+    </xs:annotation>
+    <xs:attribute name="name" type="xs:ID" use="required"></xs:attribute>
+    <xs:attribute name="type" type="xs:string" default="dielectric_dielectric"></xs:attribute>
+  </xs:complexType>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   
   <xs:element abstract="true" name="Solid" type="SolidType">
     <xs:annotation>
@@ -106,12 +98,19 @@
   </xs:element>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   
+  <xs:element abstract="true" name="SurfaceProperty" type="SurfacePropertyType">
+    <xs:annotation>
+      <xs:documentation>Abstract element for surfaces substitution</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:choice maxOccurs="unbounded">
 	<xs:element minOccurs="0" name="define" type="defineType">
 	  <xs:annotation>
 	    <xs:documentation>Definitions of constants and expressions to be used for solids'
@@ -120,7 +119,9 @@
 	  </xs:annotation>
 	</xs:element>
 	<xs:element maxOccurs="unbounded" ref="Solid"></xs:element>
-      </xs:sequence>
+	<xs:element minOccurs="0" maxOccurs="unbounded" ref="SurfaceProperty"></xs:element>
+	<xs:element maxOccurs="unbounded" minOccurs="0" ref="loop"/>	
+      </xs:choice>
     </xs:complexType>
   </xs:element>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
@@ -160,6 +161,109 @@
       </xs:complexContent>
     </xs:complexType>
   </xs:element>
+<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="twistedbox" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>CSG twisted box solid described by 4 dimensions of 
+	x  length along x axis
+	y  length along y axis
+	z  length along z axis
+	PhiTwist twist angle </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+	  <xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="twistedtrap" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>general twisted trapezoid. faces perpendicular to the z planes are trapezia, and their centres are 
+			not necessarily on a line paralell to the z axis.
+	PhiTwist Twist Angle
+	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
+	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
+	Alph   Angle with respect to the y axis from the centre of the side </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+          <xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="Theta" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="Phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="x3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="x4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+          <xs:attribute name="Alph" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="twistedtrd" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>different length axis twistable trapezoid. faces perpendicular to the z planes are trapezia, and their centres are 
+			not necessarily on a line paralell to the z axis.
+	PhiTwist Twist Angle
+	z     length along the z-axis
+	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
+	y2    length along y of the face at +z </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+          <xs:attribute name="PhiTwist" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  
+  <xs:element name="paraboloid" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>CSG paraboloid defined by
+       rlo         radius at -dz
+       rhi         radius at +dz
+       dz          half z length
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+	  <xs:attribute name="rlo" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="rhi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="dz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 
   <xs:element name="sphere" substitutionGroup="Solid">
@@ -170,7 +274,8 @@
         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>
+        deltatheta  delta angle of the segment in radians
+      </xs:documentation>
     </xs:annotation>
     <xs:complexType>
       <xs:complexContent>
@@ -185,7 +290,7 @@
       </xs:complexContent>
     </xs:complexType>
   </xs:element>
-  <!-- +++++++++++++++ G.GUERRIERI - 26.06.2005 +++++++++++++++++++++++ -->
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 
   <xs:element name="ellipsoid" substitutionGroup="Solid">
     <xs:annotation>
@@ -233,8 +338,63 @@
       </xs:complexContent>
     </xs:complexType>
   </xs:element>
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="twistedtubs" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>CSG twisted tube segement solid described by
+	twistedangle	twist angle
+	endinnerrad	inside radius at end of segment
+	endouterrad	outside radius at end of segment
+	zlen		z length of segment
+	phi		phi angle of a segment </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+	  <xs:attribute name="twistedangle" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="endinnerrad" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="endouterrad" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="zlen" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-  
+
+  <xs:element name="cutTube" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>CSG cut tube or cut tube segment 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
+	lowX, lowY, lowZ        Normal at lower Z plane
+	highX, highY, highZ     Normal at higher Z plane
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+	  <xs:attribute name="z" type="ExpressionOrIDREFType"></xs:attribute>
+	  <xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
+	  <xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute default="0.0" name="startphi" type="ExpressionOrIDREFType"></xs:attribute>
+	  <xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="lowX" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="lowY" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="lowZ" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="highX" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="highY" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="highZ" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	</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
@@ -285,17 +445,15 @@
 	</xs:extension>
       </xs:complexContent>
     </xs:complexType>
-  </xs:element>
-  
+  </xs:element>  
   <!-- +++++++++++++ -->
-  
   <xs:complexType name="ZPlaneType">
     <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
     <xs:attribute default="0.0" name="rmin" type="ExpressionOrIDREFType"></xs:attribute>
     <xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"></xs:attribute>
   </xs:complexType>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
+  
   <xs:element name="para" substitutionGroup="Solid">
     <xs:annotation>
       <xs:documentation>CSG parallelepiped solid is described by
@@ -342,7 +500,7 @@
     </xs:complexType>
   </xs:element>
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-  
+
   <xs:element name="trap" substitutionGroup="Solid">
     <xs:annotation>
       <xs:documentation>CSG general trapezoid solid is described by
@@ -371,7 +529,7 @@
 	  <xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
 	  <xs:attribute name="x3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
 	  <xs:attribute name="x4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
-					<xs:attribute name="alpha2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	  <xs:attribute name="alpha2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
 	</xs:extension>
       </xs:complexContent>
     </xs:complexType>
@@ -438,15 +596,47 @@
 	</xs:extension>
       </xs:complexContent>
     </xs:complexType>
-  </xs:element>
+  </xs:element>	
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   
-  <!-- +++++++++++++ -->
-  <!-- this is now obsolete (because polyhedra uses zplanes, like the polycone -->
-  <xs:complexType name="RZCornersType">
-    <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"></xs:attribute>
-    <xs:attribute name="r" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+  <xs:complexType name="TwoDimVertexType">
+    <xs:attribute name="x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+    <xs:attribute name="y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
   </xs:complexType>
-	
+  
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+    
+  <xs:complexType name="SectionType">
+    <xs:attribute name="zOrder" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+    <xs:attribute name="zPosition" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+    <xs:attribute name="xOffset" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+    <xs:attribute name="yOffset" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+    <xs:attribute name="scalingFactor" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+  </xs:complexType>  
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  
+  <xs:element name="xtru" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>Poligonal extrusion is described by
+	an unbounded (min. 3) number of vertices of the blueprint polygon
+	and an unbounded number of Z sections.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+	  <xs:sequence>
+	    <xs:sequence>
+	      <xs:element name="twoDimVertex" minOccurs="3" maxOccurs="unbounded" type="TwoDimVertexType"/>	
+            </xs:sequence>
+	    <xs:sequence>
+	      <xs:element name="section" minOccurs="2" maxOccurs="unbounded" type="SectionType"/>	
+	    </xs:sequence>
+	  </xs:sequence>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>	
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   
   <xs:element name="hype" substitutionGroup="Solid">
@@ -471,7 +661,6 @@
       </xs:complexContent>
     </xs:complexType>
   </xs:element>
-  
   <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   
   <xs:element name="eltube" substitutionGroup="Solid">
@@ -490,7 +679,155 @@
 	</xs:extension>
       </xs:complexContent>
     </xs:complexType>
+  </xs:element>  
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="tet" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>
+	Volume representing a tetrahedron.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+ 	 <xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="vertex4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>  
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="arb8" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>
+	Volume representing an (almost)arbitrary 8 vertices solid.
+	The solid is defined by two quadrilaterals sitting on parallel planes,
+	the distance between these two planes is dz*2.
+	The base quadrilateral contained within the plane located at -dz is defined by
+	the first 4 vertices (v1,v2,v3,v4 each one with the x and y coordinates).
+	The other parallel quadrilateral contained within the plane at +dz is defined by
+	the other 4 vertices (v5,v6,v7,v8 each one with the x and y coordinates).
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+ 	 <xs:attribute name="v1x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v1y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v2x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v2y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v3x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v3y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v4x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v4y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v5x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v5y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v6x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v6y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v7x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v7y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v8x" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="v8y" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	 <xs:attribute name="dz" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>     
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <!-- Tessellated solid elements -->  
+
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->  
+
+  <xs:complexType name="FacetType">
+    <xs:annotation>
+      <xs:documentation>Base facet type</xs:documentation>
+    </xs:annotation>
+  </xs:complexType>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element abstract="true" name="Facet" type="FacetType">
+    <xs:annotation>
+      <xs:documentation>Abstract element for all facets substitution group</xs:documentation>
+    </xs:annotation>
   </xs:element>
-  
-	<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="triangular" substitutionGroup="Facet">
+    <xs:annotation>
+      <xs:documentation>
+      Triangular facet.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="FacetType">
+	<xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	<xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	<xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	<xs:attribute name="type" type="xs:string" default="ABSOLUTE"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>  
+
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="quadrangular" substitutionGroup="Facet">
+    <xs:annotation>
+      <xs:documentation>
+      Quadrangular facet.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="FacetType">
+	<xs:attribute name="vertex1" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	<xs:attribute name="vertex2" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	<xs:attribute name="vertex3" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	<xs:attribute name="vertex4" type="ExpressionOrIDREFType" use="required"></xs:attribute>
+	<xs:attribute name="type" type="xs:string" default="ABSOLUTE"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>  
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+  <xs:element name="tessellated" substitutionGroup="Solid">
+    <xs:annotation>
+      <xs:documentation>Tessellated solid	
+      </xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SolidType">
+	  <xs:sequence>
+	    <xs:element name="Facet" minOccurs="1" maxOccurs="unbounded" type="FacetType"/>	
+	  </xs:sequence>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->  
+
+  <xs:element name="opticalsurface" substitutionGroup="SurfaceProperty">
+    <xs:annotation>
+      <xs:documentation>Optical surface used by Geant4 optical processes</xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+	<xs:extension base="SurfacePropertyType">
+	  <xs:attribute name="model" type="xs:string" default="glisur"></xs:attribute>
+	  <xs:attribute name="finish" type="xs:string" default="polished"></xs:attribute>
+	  <xs:attribute name="value" type="xs:string" default="1.0"></xs:attribute>
+	</xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->  
+
 </xs:schema>
CVSspam 0.2.8