Files
geant4/examples/extended/gdml/schema/gdml_simple_solids.xsd
T
2016-06-08 16:39:52 +02:00

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 &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>
</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 &lt;= 2PI, startphi &gt; -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>