303 lines
13 KiB
XML
303 lines
13 KiB
XML
<?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>
|