<?xml version="1.0" encoding="UTF-8"?> <!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Radovan Chytracek (private) --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gdml="http://cern.ch/2001/Schemas/GDML" elementFormDefault="unqualified" attributeFormDefault="unqualified" version="1.0"> <xs:include schemaLocation="gdml_simple_core.xsd"/> <xs:include schemaLocation="gdml_simple_define.xsd"/> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="SolidType"> <xs:annotation> <xs:documentation> Base solid type </xs:documentation> </xs:annotation> <xs:attribute name="lunit" type="xs:string" default="mm"> <xs:annotation> <xs:documentation> Length unit of all dimensions used for this instance of solid </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="aunit" type="xs:string" default="radian"> <xs:annotation> <xs:documentation> Angle unit of angles used in definition of this solid </xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="name" type="xs:ID" use="required"/> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:complexType name="BooleanSolidType"> <xs:annotation> <xs:documentation> Base type for boolean solids </xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="SolidType"> <xs:sequence> <xs:element name="first" type="ReferenceType"/> <xs:element name="second" type="ReferenceType"/> <xs:choice minOccurs="0"> <xs:element name="position" type="positionType"/> <xs:element name="positionref" type="ReferenceType"/> </xs:choice> <xs:choice minOccurs="0"> <xs:element name="rotation" type="rotationType"/> <xs:element name="rotationref" type="ReferenceType"/> </xs:choice> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <!-- <xs:element name="BooleanSolid" abstract="true"> <xs:annotation> <xs:documentation> Abstract element for boolean solids substitution group </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="BooleanSolidType"/> </xs:complexContent> </xs:complexType> </xs:element> --> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="Solid" type="SolidType" abstract="true"> <xs:annotation> <xs:documentation> Abstract element for all solids substitution group </xs:documentation> </xs:annotation> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="solids"> <xs:annotation> <xs:documentation> Solids definitions block </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="define" type="defineType" minOccurs="0"> <xs:annotation> <xs:documentation> Definitions of constants and expressions to be used for solids' dimensions and transformations In this version these become part of the global scope. </xs:documentation> </xs:annotation> </xs:element> <xs:element ref="Solid" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="union" type="BooleanSolidType" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> Exported boolean union of two solids </xs:documentation> </xs:annotation> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="subtraction" type="BooleanSolidType" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> Exported boolean subtraction of two solids </xs:documentation> </xs:annotation> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="intersection" type="BooleanSolidType" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> Exported boolean intersectioin of two solids </xs:documentation> </xs:annotation> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="box" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> CSG box solid described by 3 dimensions of x, y, and z </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="SolidType"> <xs:attribute name="x" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="y" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="sphere" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> CSG sphere or spherical shell segment solid described by rmin inner radius rmax outer radius startphi starting angle of the segment in radians(0 <= phi <= 2*PI) deltaphi delta angle of the segment in radians starttheta starting angle of the segment in radians(0 <= theta <= PI) deltatheta delta angle of the segment in radians </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="SolidType"> <xs:attribute name="rmin" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="starttheta" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="deltatheta" type="ExpressionOrIDREFType" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="tube" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> CSG tube or tube segement solid described by rmin Inner radius rmax Outer radius z length in z startphi The starting phi angle in radians, adjusted such that (startphi+deltaphi <= 2PI, startphi > -2PI) deltaphi Delta angle of the segment in radians </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="SolidType"> <xs:attribute name="z" type="ExpressionOrIDREFType"/> <xs:attribute name="rmin" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="cone" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> CSG cone or cone segment described by rmin1 inside radius at z/2 rmin2 inside radius at z/2 rmax1 outside radius at z/2 rmax2 outside radius at z/2 z length in z startphi starting angle of the segment in radians deltaphi delta angle of the segment in radians </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="SolidType"> <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="rmin1" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="rmin2" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="rmax1" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="rmax2" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/> <xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="para" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> CSG parallelepiped solid is described by x, y, z length in x,y,z alpha Angle formed by the y axis and by the plane joining the centre of the faces G4Parallel to the z-x plane at -y and +y theta Polar angle of the line joining the centres of the faces at -z and +z in z phi Azimuthal angle of the line joining the centres of the faces at -z and +z in z </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="SolidType"> <xs:attribute name="x" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="y" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="alpha" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="trd" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> CSG trapezoid solid with varying x and y dimensions along z axis x1 Length along x at the surface positioned at -z x2 Length along x at the surface positioned at +z y1 Length along y at the surface positioned at -z y2 Length along y at the surface positioned at +z z Length along z axis </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="SolidType"> <xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <xs:element name="trap" substitutionGroup="Solid"> <xs:annotation> <xs:documentation> CSG general trapezoid solid is described by z Length along the z-axis theta Polar angle of the line joining the centres of the faces at -/+z phi Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z y1 Length along y of the face at -z x1 Length along x of the side at y = -y1 of the face at -z x2 Length along x of the side at y = +y1 of the face at -z alp1 Angle with respect to the y axis from the centre of the side at y =- y1 to the centre at y = +y1 of the face at -z y2 Length along y of the face at +z x3 Length along x of the side at y = -y2 of the face at +z x4 Length along x of the side at y = +y2 of the face at +z alp2 Angle with respect to the y axis from the centre of the side at y = -y2 to the centre at y = +y2 of the face at +z </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="SolidType"> <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="phi" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="alpha1" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="x3" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="x4" type="ExpressionOrIDREFType" use="required"/> <xs:attribute name="alpha2" type="ExpressionOrIDREFType" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> </xs:schema>