<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="DetectorSchema">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="CCDgeom"/>
        <xs:element maxOccurs="unbounded" ref="CCDtype"/>
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="AmpType"/>
          <xs:element ref="wcs"/>
        </xs:sequence>
        <xs:element maxOccurs="unbounded" ref="CCD"/>
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="MosaicDesign"/>
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="CCDloc"/>
            <xs:element ref="wcs"/>
          </xs:sequence>
          <xs:element maxOccurs="unbounded" ref="AmpLoc"/>
        </xs:sequence>
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="AmpWiring"/>
          <xs:element maxOccurs="unbounded" ref="AmpWire"/>
        </xs:sequence>
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="BuiltMosaic"/>
          <xs:sequence maxOccurs="unbounded">
            <xs:element ref="CCDpos"/>
            <xs:element minOccurs="0" maxOccurs="unbounded" ref="wcs"/>
          </xs:sequence>
        </xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Controller"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CCDgeom">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
      <xs:attribute name="NumImgPix1" type="xs:string" use="required"/>
      <xs:attribute name="NumImgPix2" type="xs:string" use="required"/>
      <xs:attribute name="SizImgPix1" type="xs:string" use="required"/>
      <xs:attribute name="SizImgPix2" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="CCDtype">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AmpType">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
      <xs:attribute name="NumPrePix1" type="xs:string" use="required"/>
      <xs:attribute name="NumPrePix2" type="xs:string" use="required"/>
      <xs:attribute name="CCDgeomId" type="xs:IDREF" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="CCD">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
      <xs:attribute name="CCDgeomId" type="xs:IDREF" use="required"/>
      <xs:attribute name="CCDtypeId" type="xs:IDREF" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="MosaicDesign">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
      <xs:attribute name="NumCCD" type="xs:string" default="1"/>
      <xs:attribute name="NumAmp" type="xs:string" default="1"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="CCDloc">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
      <xs:attribute name="CCDgeomId" type="xs:IDREF" use="required"/>
      <xs:attribute name="MosaicDesignId" type="xs:IDREF" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AmpLoc">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
      <xs:attribute name="AmpTypeId" type="xs:IDREF" use="required"/>
      <xs:attribute name="CCDlocId" type="xs:IDREF" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AmpWiring">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="AmpWire">
    <xs:complexType>
      <xs:attribute name="VideoInputEnum" type="xs:string" use="required"/>
      <xs:attribute name="AmpLocId" type="xs:IDREF" use="required"/>
      <xs:attribute name="AmpWiringId" type="xs:IDREF" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="BuiltMosaic">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="Name" type="xs:string" use="required"/>
      <xs:attribute name="MosaicDesignId" type="xs:IDREF" use="required"/>
      <xs:attribute name="NumCCD" type="xs:string" default="1"/>
      <xs:attribute name="NumAmp" type="xs:string" default="1"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="CCDpos">
    <xs:complexType>
      <xs:attribute name="Id" type="xs:ID" use="required"/>
      <xs:attribute name="CCDlocId" type="xs:IDREF" use="required"/>
      <xs:attribute name="CCDid" type="xs:IDREF" use="required"/>
      <xs:attribute name="BuiltMosaicId" type="xs:IDREF" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Controller">
    <xs:complexType>
      <xs:attribute name="Name" type="xs:string" use="required"/>
      <xs:attribute name="Macro" type="xs:string" use="required"/>
      <xs:attribute name="MacroValue" type="xs:string" use="required"/>
      <xs:attribute name="BuiltMosaicId" type="xs:IDREF" use="required"/>
      <xs:attribute name="AmpWiringId" type="xs:IDREF" use="required"/>
      <xs:attribute name="NumAmp" type="xs:string" default="1"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
