# Source

Full commit
Blame Embed Raw

- Default File Viewer

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <?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>
          <xs:documentation>Abstract base for replication placement strategies</xs:documentation>
        </xs:annotation>
      </xs:complexType>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
      <xs:element name="ReplicationAlgorithm" abstract="true" type="ReplicationAlgorithmType">
        <xs:annotation>
          <xs:documentation>Abstract element for substitution group</xs:documentation>
        </xs:annotation>
      </xs:element>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
      <xs:complexType name="AxisReplicationAlgorithmType">
        <xs:annotation>
          <xs:documentation>Replica volumes get created along the specified direction
    	starting with the first replica placed at the given position and rotated
    	according to the given rotation and others placed using	the given distance;
    	If position and/or rotation is omitted the defaults will be applied, e.g.
    	position at the mother volume center and identity rotation;
    	NOTE: THE ROTATION IS APPLIED TO ALL REPLICATED VOLUMES!</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
          <xs:extension base="ReplicationAlgorithmType">
    	<xs:sequence>
    	  <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:choice>
    	    <xs:element ref="direction"/>
    	    <xs:element name="directionref" type="ReferenceType"/>
    	  </xs:choice>
    	  <xs:element ref="width"/>
    	  <xs:element ref="offset"/>
    	</xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
      <xs:element name="replicate_along_axis" substitutionGroup="ReplicationAlgorithm" type="AxisReplicationAlgorithmType"/>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
      <xs:complexType name="ReplicaPlacementType">
        <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
        <xs:annotation>
          <xs:documentation>Base type for replicated volumes</xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="volumeref" type="ReferenceType"></xs:element>
          <xs:element ref="ReplicationAlgorithm"/>
        </xs:sequence>
        <xs:attribute name="number" type="xs:positiveInteger" use="required"/>
        <xs:attribute name="copy_num_start" type="xs:positiveInteger" use="optional" default="1"/>
        <xs:attribute name="copy_num_step" type="xs:positiveInteger" use="optional" default="1"/>
      </xs:complexType>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
      <xs:complexType name="directionType">
        <xs:complexContent>
          <xs:restriction base="QuantityVectorType">
    	<xs:attribute default="mm" type="xs:string" name="unit"/>
    	<xs:attribute default="cartesian" type="xs:string" name="type"/>
          </xs:restriction>
        </xs:complexContent>
      </xs:complexType>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
      <xs:element name="direction" type="directionType"/>
      <xs:element name="width" type="QuantityType"/>
      <xs:element name="offset" type="QuantityType"/>
      <xs:element name="replicavol" type="ReplicaPlacementType"/>
    </xs:schema>