Pixel size 8 x 4 mm2
       Low resolution:
            128 x 128
            Pixel size 8 x 8 mm2

       Right detector:
       Same orientation of tubes, same size of pixels
       Only 96 tubes instead of 128 tubes in the main detector

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/d22/characteristics/
       """
d22 = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
d22.addSnsDefaults(default_view='3D',axis_view_3d='z-')
d22.addComment("SOURCE")
d22.addComponentILL("moderator", 0., 0., moderator_source, "Source")
d22.addComment("Sample position")
d22.addComponentILL("sample_position", 0., 0., 0., "SamplePos")
d22.addComment("MONITORS")
d22.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
d22.addComment("MONITOR SHAPE")
d22.addDummyMonitor(0.01, 0.03)
d22.addComment("MONITOR IDs")
d22.addMonitorIds([repr(100000), repr(100001)])
d22.addComment("DETECTOR")
d22.addComponentILL("detector", 0., 0., 0.)
detector = d22.makeTypeElement("detector")
d22.addComponentRectangularDetector(detector0, 0., 0., zPos, idstart=id0, idfillbyfirst=FF, idstepbyrow=SR, root=detector)
d22.addComponentRectangularDetector(detector1, -right_center_offset, 0., zPos-z_gap, idstart=id1, idfillbyfirst=FF, idstepbyrow=SR, root=detector)
d22.addRectangularDetector(detector0, pixelName, xstart, xstep, xpixels, ystart, ystep, ypixels)
d22.addRectangularDetector(detector1, pixelName, xstart_right, xstep, xpixels_right, ystart, ystep, ypixels)
       It consists of 64 horizontal tubes, each has a height of 7.4 mm
       It consists of 256 pixels, each about 1.2 mm wide

       Beam area at sample position 40 mm x 10 mm (width x height)
       Scattering plane is vertical
       Q-range, up   0.0045 - 0.42 A-1
       Q-range, down 0.0045 - 0.27 A-1

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/figaro/characteristics/
       """
figaro = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
figaro.addSnsDefaults(theta_sign_axis='y')
figaro.addComment("SOURCE")
figaro.addComponentILL("chopper1", 0.0, 0.0, zSource, "Source")
figaro.addComment("Sample position")
figaro.addComponentILL("sample_position", 0.0, 0.0, 0.0, "SamplePos")
figaro.addComment("MONITORS")
figaro.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
figaro.addComment("MONITOR SHAPE")
figaro.addComment("FIXME: Do something real here.")
figaro.addDummyMonitor(0.01, 0.03)
figaro.addComment("MONITOR IDs")
figaro.addMonitorIds(["100000", "100001"])
figaro.addComment("2 Slits")
figaro.addComponentILL("slit2", 0.0, 0.0, slit2Centre)
figaro.makeTypeElement("slit2")
figaro.addComponentILL("slit3", 0.0, 0.0, slit3Centre)
figaro.makeTypeElement("slit3")
figaro.addComment("DETECTORS")
示例#3
0
       Two detector multi-tube detectors
       Sample-detector distances range from 1.2 m to 12.8 m
       Detector 1 (rear):
       Single panel mono-block size 640 x 640 mm
       Pixel size 5 x 5 mm^2 ( 128 x 128 pixels )
       Detector 2 (front):
       4-panel mono-block, size 160 x 640 mm per panel
       Pixel size 5 x 5 mm^2 ( 32 x 128 pixels )

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/d33/characteristics/
       """
d33 = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
d33.addSnsDefaults(default_view='3D', axis_view_3d='z-')
d33.addComment("SOURCE")
d33.addComponentILL("moderator", 0., 0., moderator_source, "Source")
d33.addComment("Sample position")
d33.addComponentILL("sample_position", 0., 0., 0., "SamplePos")
d33.addComment("MONITORS")
d33.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
d33.addComment("MONITOR SHAPE")
d33.addComment("FIXME: Do something real here.")
d33.addDummyMonitor(0.01, 0.03)
d33.addComment("MONITOR IDs")
d33.addMonitorIds([repr(500000), repr(500001)])
d33.addComment("DETECTORS")
d33.addComponentILL("detector", 0., 0., 0.)
detector = d33.makeTypeElement("detector")
d33.addComponentRectangularDetector(detector0,
                                    0.,
                                    0.,
boxGapAngle = 1.03
boxAngleWidth = 16.06
tubeAngleStep = boxAngleWidth / (numberOfTubesPerBox - 1)

boxAngles = list()
firstBoxCenterAngle = -0.5 * (boxAngleWidth + boxGapAngle)
for i in range(numberOfBoxes):
    boxAngles.append(firstBoxCenterAngle + i * (boxAngleWidth + boxGapAngle))

comment = """ This is the instrument definition file of the PANTHER spectrometer at the ILL.
       This file was automatically generated by mantidgeometry/ILL/IDF/panther_generateIDF.py
       """
validFrom = '1900-01-31 23:59:59'
geometry = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
geometry.addSnsDefaults(theta_sign_axis='x')
geometry.addComponentILL('fermi_chopper', 0.0, 0.0, -l1, 'Source')
geometry.addComponentILL('sample-position', 0.0, 0.0, 0.0, 'SamplePos')
geometry.addMonitors(names=['monitor'], distance=[monitorZ])
geometry.addDummyMonitor(0.01, 0.03)
geometry.addMonitorIds(['100000'])
geometry.addCylinderPixelAdvanced(
    'pixel', center_bottom_base={'x': 0., 'y': 0., 'z': -pixelHeight / 2.},
    axis={'x': 0., 'y': 1., 'z': 0.}, pixel_radius=pixelRadius,
    pixel_height=pixelHeight,
    algebra='pixel_shape')
root = geometry.getRoot()
bank = le.SubElement(root, 'type', name='bank')
tubes = le.SubElement(bank, 'component', type='tube')
for boxIndex, boxAngle in enumerate(boxAngles):
    for tubeIndex in range(numberOfTubesPerBox):
        tubeAngle = boxAngle - boxAngleWidth / 2. + tubeIndex * tubeAngleStep
       It consists of 64 horizontal tubes, each has a height of 7.4 mm
       It consists of 256 pixels, each about 1.2 mm wide

       Beam area at sample position 40 mm x 10 mm (width x height)
       Scattering plane is vertical
       Q-range, up   0.0045 - 0.42 A-1
       Q-range, down 0.0045 - 0.27 A-1

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/figaro/characteristics/
       """
figaro = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
figaro.addSnsDefaults(theta_sign_axis='y')
figaro.addComment("SOURCE")
figaro.addComponentILL("chopper1", 0.0, 0.0, zSource, "Source")
figaro.addComment("Sample position")
figaro.addComponentILL("sample_position", 0.0, 0.0, 0.0, "SamplePos")
figaro.addComment("MONITORS")
figaro.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
figaro.addComment("MONITOR SHAPE")
figaro.addComment("FIXME: Do something real here.")
figaro.addDummyMonitor(0.01, 0.03)
figaro.addComment("MONITOR IDs")
figaro.addMonitorIds(["100000", "100001"])
figaro.addComment("2 Slits")
figaro.addComponentILL("slit2", 0.0, 0.0, slit2Centre)
figaro.makeTypeElement("slit2")
figaro.addComponentILL("slit3", 0.0, 0.0, slit3Centre)
figaro.makeTypeElement("slit3")
figaro.addComment("DETECTORS")
       Multi-detector:
       Size 1024 mm x 1024 mm
       Nominal resolution:
            128 x 256
            Pixel size 8 x 4 mm2
       Low resolution:
            128 x 128
            Pixel size 8 x 8 mm2

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/d22/characteristics/
       """
d22 = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
d22.addSnsDefaults()
d22.addComment("SOURCE")
d22.addComponentILL("moderator", 0., 0., moderator_source, "Source")
d22.addComment("Sample position")
d22.addComponentILL("sample_position", 0., 0., 0., "SamplePos")
d22.addComment("MONITORS")
d22.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
d22.addComment("MONITOR SHAPE")
d22.addComment("FIXME: Do something real here.")
d22.addDummyMonitor(0.01, 0.03)
d22.addComment("MONITOR IDs")
d22.addMonitorIds([repr(100000), repr(100001)])
d22.addComment("DETECTOR")
d22.addComponentRectangularDetector(detector0, 0., 0., zPos, idstart=id0, idfillbyfirst=FF, idstepbyrow=SR)
d22.addRectangularDetector(detector0, pixelName, xstart, xstep, xpixels, ystart, ystep, ypixels)
d22.addComment("PIXEL, EACH PIXEL IS A DETECTOR")
d22.addCuboidPixel(pixelName, [-x, -y, z], [x, y, z], [-x, -y, thickness], [x, -y, z], shape_id="pixel-shape")
d22.writeGeom("./ILL/IDF/" + instrumentName + "_Definition.xml")
示例#7
0
       This is the instrument definition file of the 
       Generated file, PLEASE DO NOT EDIT THIS FILE!
       This file was automatically generated by mantidgeometry/ILL/IDF/salsa_generateIDF.py

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/salsa/characteristics/
       """

# Instrument creation
salsa = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
salsa.addSnsDefaults(default_view='spherical_y',
                     axis_view_3d='z-',
                     theta_sign_axis="x")

salsa.addComment("SOURCE")
salsa.addComponentILL("monochromator", 0., 0., zSource, "Source")

# Sample is set as the origin
salsa.addComment("Sample position")
salsa.addComponentILL("sample_position", 0., 0., 0., "SamplePos")

salsa.addComment("MONITORS")
salsa.addMonitors(names=["monitor"], distance=[zMonitor])
salsa.addComment("MONITOR SHAPE")
salsa.addDummyMonitor(0.01, 0.01)
salsa.addComment("MONITOR IDs")
salsa.addMonitorIds([repr(256 * 256)])

salsa.addComment("DETECTOR")
salsa.addRectangularDetector(detector0, pixelName, xstart, xstep, xpixels,
                             ystart, ystep, ypixels)
in16b = MantidGeom(instrument_name, comment=comment, valid_from=valid_from)
in16b.addSnsDefaults(default_view='3D', axis_view_3d='z-', theta_sign_axis="x")

in16b.addComment("Sample position")
in16b.addSamplePosition()

in16b.addComment("Chopper position")
in16b.addModerator(distance=chopper_to_sample, name="chopper")

in16b.addComment("MONITOR")
in16b.addMonitors(names=["monitor"], distance=[monitor_to_sample])
in16b.addDummyMonitor(0.001, 0.001)
in16b.addMonitorIds([0])

in16b.addComment("Detector")
in16b.addComponentILL("detector", 0, 0, 0)
detector = in16b.makeTypeElement("detector")

# create tubes id lists
for i in range(number_of_tubes):
    in16b.addDetectorIds("tube_{0}_ids".format(i + 1),
                         [pixel_per_tube * i + 1, pixel_per_tube * (i + 1), 1])

# create standard tube component and place them
tube = in16b.makeTypeElement("tube")
for i in range(number_of_tubes):
    current_tube = in16b.addComponent('tube',
                                      idlist="tube_{0}_ids".format(i + 1),
                                      root=detector)
    in16b.addLocation(root=current_tube,
                      x=0,
示例#9
0
       Beam area at sample position 10 mm x 50 mm (width x height)
       Q-range 0.002 - 2 A-1

       Collimation
       Slits generally do not move (no motor attached)
       Slit separation 3.4 m
       Slit 2 to sample distance: 3.605 m
       Slit 3 to sample distance: 0.205 m

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/d17/characteristics/
       """
d17 = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
d17.addSnsDefaults(theta_sign_axis='x')
d17.addComment("SOURCE")
d17.addComponentILL("chopper1", 0.0, 0.0, chop1_source, "Source")
d17.addComment("Sample position")
d17.addComponentILL("sample_position", 0.0, 0.0, 0.0, "SamplePos")
d17.addComment("MONITORS")
d17.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
d17.addComment("MONITOR SHAPE")
d17.addComment("FIXME: Do something real here.")
d17.addDummyMonitor(0.01, 0.03)
d17.addComment("MONITOR IDs")
d17.addMonitorIds(["100000", "100001"])
d17.addComment("2 Slits")
d17.addComponentILL("slit2", 0.0, 0.0, slit2Centre)
d17.makeTypeElement("slit2")
d17.addComponentILL("slit3", 0.0, 0.0, slit3Centre)
d17.makeTypeElement("slit3")
d17.addComment("DETECTORS")
equator = float(args.EquatorialPixel)
pixelHeight = tubeHeight / numberOfPixelsPerTube
tubeVerticalShift = (numberOfPixelsPerTube / 2 - equator) * pixelHeight
monitorZ = -0.362

pixelSpacingDegrees = 0.605
tubeAngles = np.linspace(0., (numberOfTubes - 1) * pixelSpacingDegrees,
                         numberOfTubes)

comment = """ This is the instrument definition file of the SHARP spectrometer at the ILL.
       Generated file, PLEASE DO NOT EDIT THIS FILE!
       This file was automatically generated by mantidgeometry/ILL/IDF/sharp_generateIDF.py
       """
geometry = MantidGeom(instrumentName, comment=comment, valid_from=valid_from)
geometry.addSnsDefaults(theta_sign_axis='x')
geometry.addComponentILL('fermi_chopper', 0.0, 0.0, -l1, 'Source')
geometry.addComponentILL('sample-position', 0.0, 0.0, 0.0, 'SamplePos')
geometry.addMonitors(names=['monitor'], distance=[monitorZ])
geometry.addDummyMonitor(0.009, 0.036)  # the real radius is 0.09
geometry.addMonitorIds(['100000'])
geometry.addCylinderPixelAdvanced('pixel',
                                  center_bottom_base={
                                      'x': 0.,
                                      'y': -pixelHeight / 2.,
                                      'z': 0.
                                  },
                                  axis={
                                      'x': 0.,
                                      'y': 1.,
                                      'z': 0.
                                  },
       Two detector multi-tube detectors
       Sample-detector distances range from 1.2 m to 12.8 m
       Detector 1 (rear):
       Single panel mono-block size 640 x 640 mm
       Pixel size 5 x 5 mm^2 ( 128 x 128 pixels )
       Detector 2 (front):
       4-panel mono-block, size 160 x 640 mm per panel
       Pixel size 5 x 5 mm^2 ( 32 x 128 pixels )

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/d33/characteristics/
       """
d33 = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
d33.addSnsDefaults()
d33.addComment("SOURCE")
d33.addComponentILL("moderator", 0., 0., moderator_source, "Source")
d33.addComment("Sample position")
d33.addComponentILL("sample_position", 0., 0., 0., "SamplePos")
d33.addComment("MONITORS")
d33.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
d33.addComment("MONITOR SHAPE")
d33.addComment("FIXME: Do something real here.")
d33.addDummyMonitor(0.01, 0.03)
d33.addComment("MONITOR IDs")
d33.addMonitorIds([repr(500000), repr(500001)])
d33.addComment("DETECTORS")
d33.addComponentILL("detector", 0., 0., 0.)
detector = d33.makeTypeElement("detector")
d33.addComponentRectangularDetector(detector0, 0., 0., zPosRear, idstart=id0, idfillbyfirst=FF, idstepbyrow=SR, root=detector)
d33.addComponentILL("front_detector", 0., 0., 0., root=detector)
front_detector = d33.makeTypeElement("front_detector")
示例#12
0
                    x_gap)
xstep_right = xstep_left
xpixels_right = xpixels_left
ystart_right = ystart_left
ystep_right = ystep_left
ypixels_right = ypixels_left

comment = """ This is the instrument definition file of the D11B SANS instrument at the ILL.
       Generated file, PLEASE DO NOT EDIT THIS FILE!
       This file was automatically generated by mantidgeometry/ILL/IDF/d11b_generateIDF.py
       > python3 ./ILL/IDF/d11b_generateIDF.py
       """
d11b = MantidGeom(instrument_name, comment=comment, valid_from=valid_from)
d11b.addSnsDefaults(default_view='3D', axis_view_3d='z-')
d11b.addComment("SOURCE")
d11b.addComponentILL("monochromator", 0., 0., monochromator_source, "source")
d11b.addComment("Sample position")
d11b.addComponentILL("sample_position", 0., 0., 0., "SamplePos")
d11b.addComment("MONITORS")
d11b.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
d11b.addComment("MONITOR SHAPE")
d11b.addDummyMonitor(0.01, 0.03)
d11b.addComment("MONITOR IDs")
d11b.addMonitorIds([repr(100000), repr(100001)])
d11b.addComment("DETECTORS")
d11b.addComponentILL("detector", 0., 0., 0.)
detector = d11b.makeTypeElement("detector")
d11b.addComponentRectangularDetector(detector0,
                                     0.,
                                     0.,
                                     distance,
# Don't touch!
azimuthalAngle = [ -11.9175,     -11.5451,     -11.1727,     -10.8003,     -10.4279,     -10.0554,     -9.68300,     -9.31058,     -8.93816,     -8.56573,     -8.19331,     -7.82089,     -7.44846,     -7.07604,     -6.70362,     -6.33119,     -5.95877,     -5.58635,     -5.21393,     -4.84150,     -4.46908,     -4.09666,     -3.72423,     -3.35181,     -2.97939,     -2.60696,     -2.23454,     -1.86212,     -1.48969,     -1.11727,    -0.744846,    -0.372423,    0.372423,     0.744847,      1.11727,      1.48969,      1.86212,      2.23454,      2.60696,      2.97939,      3.35181,      3.72423,      4.09666,      4.46908,      4.84150,      5.21393,      5.58635,      5.95877,     6.33119,      6.70362,      7.07604,      7.44846,      7.82089,      8.19331,      8.56573,      8.93816,      9.31058,      9.68300,      10.0554,      10.4279,      10.8003,      11.1727,      11.5451,      11.9175,     12.6624,      13.0348,      13.4072,      13.7797,      14.1521,      14.5245,      14.8969,      15.2694,      15.6418,      16.0142,      16.3866,      16.7590,      17.1315,      17.5039,      17.8763,      18.2487,     18.6212,      18.9936,      19.3660,      19.7384,      20.1109,      20.4833,      20.8557,      21.2281,      21.6005,      21.9730,      22.3454,      22.7178,      23.0902,      23.4627,      23.8351,      24.2075,     24.9524,      25.3248,      25.6972,      26.0696,      26.4420,      26.8145,      27.1869,      27.5593,      27.9317,      28.3042,      28.6766,      29.0490,      29.4214,      29.7939,      30.1663,      30.5387,     30.9111,      31.2836,      31.6560,      32.0284,      32.4008,      32.7732,      33.1457,      33.5181,      33.8905,      34.2629,      34.6354,      35.0078,      35.3802,      35.7526,      36.1251,      36.4975,     37.2423,      37.6147,      37.9872,      38.3596,      38.7320,      39.1044,      39.4769,      39.8493,      40.2217,      40.5941,      40.9666,      41.3390,      41.7114,      42.0838,      42.4562,      42.8287,     43.2011,      43.5735,      43.9459,      44.3184,      44.6908,      45.0632,      45.4356,      45.8081,      46.1805,      46.5529,      46.9253,      47.2978,      47.6702,      48.0426,      48.4150,      48.7874,     49.5323,      49.9047,      50.2771,      50.6496,      51.0220,      51.3944,      51.7668,      52.1393,      52.5117,      52.8841,      53.2565,      53.6289,      54.0014,      54.3738,      54.7462,      55.1186,     55.4911,      55.8635,      56.2359,      56.6083,      56.9808,      57.3532,      57.7256,      58.0980,      58.4704,      58.8429,      59.2153,      59.5877,      59.9601,      60.3326,      60.7050,      61.0774,     61.8223,      62.1947,      62.5671,      62.9395,      63.3120,      63.6844,      64.0568,      64.4292,      64.8017,      65.1741,      65.5465,      65.9189,      66.2913,      66.6638,      67.0362,      67.4086,     67.7810,      68.1535,      68.5259,      68.8983,      69.2707,      69.6432,      70.0156,      70.3880,      70.7604,      71.1328,      71.5053,      71.8777,      72.2501,      72.6225,      72.9950,      73.3674,     74.1122,      74.4846,      74.8571,      75.2295,      75.6019,      75.9743,      76.3468,      76.7192,      77.0916,      77.4640,      77.8365,      78.2089,      78.5813,      78.9537,      79.3262,      79.6986,     80.0710,      80.4434,      80.8158,      81.1883,      81.5607,      81.9331,      82.3055,      82.6780,      83.0504,      83.4228,      83.7952,      84.1677,      84.5401,      84.9125,      85.2849,      85.6573,     86.4022,      86.7746,      87.1470,      87.5195,      87.8919,      88.2643,      88.6367,      89.0092,      89.3816,      89.7540,      90.1264,      90.4989,      90.8713,      91.2437,      91.6161,      91.9885,     92.3610,      92.7334,      93.1058,      93.4782,      93.8507,      94.2231,      94.5955,      94.9679,      95.3404,      95.7128,      96.0852,      96.4576,      96.8300,      97.2025,      97.5749,      97.9473,     98.6922,      99.0646,      99.4370,      99.8094,      100.182,      100.554,      100.927,      101.299,      101.672,      102.044,      102.416,      102.789,      103.161,      103.534,      103.906,      104.279,     104.651,      105.023,      105.396,      105.768,      106.141,      106.513,      106.885,      107.258,      107.630,      108.003,      108.375,      108.748,      109.120,      109.492,      109.865,      110.237,     110.982,      111.355,      111.727,      112.099,      112.472,      112.844,      113.217,      113.589,      113.962,      114.334,      114.706,      115.079,      115.451,      115.824,      116.196,      116.568,     116.941,      117.313,      117.686,      118.058,      118.431,      118.803,      119.175,      119.548,      119.920,      120.293,      120.665,      121.038,      121.410,      121.782,      122.155,      122.527,     123.272,      123.645,      124.017,      124.389,      124.762,      125.134,      125.507,      125.879,      126.251,      126.624,      126.996,      127.369,      127.741,      128.114,      128.486,      128.858,     129.231,      129.603,      129.976,      130.348,      130.721,      131.093,      131.465,      131.838,      132.210,      132.583,      132.955,      133.328,      133.700,      134.072,      134.445,      134.817]
azimuthalAngle.reverse()
numberOfTubes = len(azimuthalAngle)     
numberOfDetectors = numberOfPixelsPerTube * numberOfTubes

frameOverlapChopperZ = -2.10945
monitorZ = -0.5

comment = """ This is the instrument definition file of the IN5 spectrometer at the ILL.
       This file was automatically generated by mantidgeometry/ILL/IDF/in5_generateIDF.py
       """
validFrom = '1900-01-31 23:59:59'
geometry = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
geometry.addSnsDefaults(theta_sign_axis='x')
geometry.addComponentILL('frame-overlap_chopper', 0.0, 0.0, frameOverlapChopperZ, 'Source')
geometry.addComponentILL('sample-position', 0.0, 0.0, 0.0, 'SamplePos')
geometry.addMonitors(names=['monitor'], distance=[monitorZ])
geometry.addDummyMonitor(0.01, 0.03)
geometry.addMonitorIds(['100000'])
pixelBase = {'x': 0., 'y': -tubePixelStep / 2., 'z': 0.}
geometry.addCylinderPixelAdvanced(
    'standard_pixel', center_bottom_base=pixelBase,
    axis={'x': 0., 'y': 1., 'z': 0.}, pixel_radius=pixelRadius,
    pixel_height=tubePixelStep,
    algebra='pixel_shape')
root = geometry.getRoot()
bank = le.SubElement(root, 'type', name='bank_uniq')
tubes = le.SubElement(bank, 'component', type='standard_tube')
for index, angle in enumerate(azimuthalAngle):
    attributes = {
          - wavelength 5.7 A, qmin = 0.2, qmax = 2.1
       - Spectroscopy time-of-flight 
          - using Fermi chopper, with the same possible wavelengths

       Source-to-sample distance is 0.48 m
       Three detector banks with 44 position-insensitive He3 detectors each
       Each detector located 1.5 m from the sample
       covering 2 Theta range from about 10 to 155 degrees
       Detector tubes have 25 mm in diameter and are 250 mm in height
       For more information, please visit 
       https://www.ill.eu/instruments-support/instruments-groups/instruments/d7/characteristics/
       """
d7 = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
d7.addSnsDefaults(default_view='3D', axis_view_3d='z-', theta_sign_axis="x")
d7.addComment("SOURCE")
d7.addComponentILL('SOURCE', 0.0, 0.0, source, 'Source')
d7.addComment("Sample position")
d7.addComponentILL("sample_position", 0., 0., 0., "SamplePos")
d7.addComment("MONITORS")
d7.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
d7.addComment("MONITOR SHAPE")
d7.addComment("FIXME: Do something real here.")
d7.addDummyMonitor(0.01, 0.03)
d7.addComment("MONITOR IDs")
d7.addMonitorIds([repr(100000), repr(100001)])
d7.addComment("DETECTORS")
d7.addComponentILL("detector", 0., 0., 0.)
detector = d7.makeTypeElement("detector")

# define detector banks
d7.addDetectorIds("bank2_ids", [1, 44, 1])
       Distance to sample: 0.3 to 1 m
       Single panel mono-block: 320 mm x 320 mm
       Rotation: -5 < 2*theta < 125
       Pixel size 1 x 1 mm^2 ( 320 x 320 pixels )

       For more information, please visit
       https://www.ill.eu/instruments-support/instruments-groups/instruments/d16/characteristics/
       """


# Instrument creation
d16 = MantidGeom(instrumentName, comment=comment, valid_from=validFrom)
d16.addSnsDefaults(default_view='3D', axis_view_3d='z-', theta_sign_axis="x")

d16.addComment("SOURCE")
d16.addComponentILL("monochromator", 0., 0., monochromator_source, "Source")

# Sample is set as the origin
d16.addComment("Sample position")
d16.addComponentILL("sample_position", 0., 0., 0., "SamplePos")

d16.addComment("MONITORS")
d16.addMonitors(names=["monitor1", "monitor2"], distance=[zMon1, zMon2])
d16.addComment("MONITOR SHAPE")
d16.addDummyMonitor(0.01, 0.01)
d16.addComment("MONITOR IDs")
d16.addMonitorIds([repr(500000), repr(500001)])

d16.addComment("DETECTOR")
d16.addComponentRectangularDetector(detector0, 0., 0., -zPosDetector, idstart=id0, idfillbyfirst=FF, idstepbyrow=SR)
d16.addRectangularDetector(detector0, pixelName, xstart, xstep, xpixels, ystart, ystep, ypixels)