Table of Contents
- 'initialize'
- 'recordedChannels'
- 'detectorSettings'
- 'updateDetectorSettings'
- 'estimatedTime'
- 'scanRequest'
- 'abortScan'
- 'pauseScan'
- 'resumeScan'
- 'scanStatus'
- 'moveRequest'
- 'moveStatus'
- 'homeRequest'
- 'positionerStatus'
- 'modified positioner definition'
- 'modified zonePlate definition'
- 'zonePlateFocus'
- 'oscilloscopeDefinition'
- 'focusType'
- 'scanTypeArchive'
- 'localFileScanTypeArchive'
- 'allMotorsOff'
- 'resetInterferometer'
- 'OSA_IN'
- 'OSA_OUT'
- 'ZonePlate IN'
- 'ZonePlate OUT'
- 'Sample OUT'
- 'topupMode'
- 'beamShutterMode'
- 'loadFile directory'
- 'loadFile file'
- 'loadDefinition'
- 'change user'
- 'script info'
- 'getSettings'
This page lists the JSON strings that can be sent to the ZMQ REQ/REP port in order to request actions by Pixelator. The ZMQ messages must be sent in the format:
[HEADER, DATA1 (, DATA2)]
where the data can either be an empty string, or a JSON list or structure, e.g.:
["string1","string2","string3"] or {"key1":"value1","key2":"value2","key3":"value3"}
Request messages are typically responded to by a simple ["status", "ok"] response on the REQ/REP port and the publication of further data on the PUB/SUB port.
'initialize'
No data required or used. Lots of data is returned and published with the intended use being to populate a GUI.
Reply Messages:
["status","ok"]- Positioner definitions
- Detector definitions
- Oscilloscope options
- Zone Plate definitions
- File IO config options
Published Messages:
- Positioner status
- Focus status
- Scan status
- Beam shutter status
- Topup status
- User status
- Recorded channels
- Focus type
- Scan type archive attribute
- Beam shutter mode
- Topup mode
'recordedChannels'
Data is a list of strings that correspond to the names of the detectors to be enabled. For example:
msg = ['recordedChannels', '["Counter0", "Counter1"]' ]
Reply Messages:
["status","ok"]
'detectorSettings'
Data is a string that corresponds to the name of a detector. For example:
msg = ['detectorSettings', 'Counter0' ]
Reply Messages:
["status","ok"]- message from specific detector module with a JSON array, but there doesn't seem to be an implementation yet.
'updateDetectorSettings'
Data is a string that corresponds to the name of a detector. Data2 is a JSON array with property, value pairs. For example:
msg = ['updateDetectorSettings', 'Counter0', JSON_string ]
Reply Messages:
["status","ok"]
'estimatedTime'
Data is a JSON scan request (see 'scanRequest' below). For example:
msg = ['estimatedTime', Scan_Request ]
Reply Messages:
["status","ok"]- ['estimatedTime', Time_String ]
A Time_String will have a format like "00h 00m 01s", or "555h 59m 59s".
'scanRequest'
Data is a JSON scan request. For example:
msg = ['estimatedTime', "{
'scanType': 'Sample',
'spatialType': 'Image',
'meander': 1,
'tiling': 1,
'yAxisFast': 0,
'lineMode': 'Constant Velocity',
'accelerationDistance': 0.5,
'tileDelay': 0.05, 'lineDelay': 0.05,
'outerRegions': [{'dwellTime': 0.005,
'axes': [{'nPoints': 2,
'trajectories': [{'start': 900.0,
'end': 320.0,
'range': -580.0,
'step': -580.0,
'positionerName': 'Energy'
}]
}]
}],
'innerRegions': [{'axes': [{'nPoints': 1200,
'trajectories': [{'center': 4282.670215322501,
'range': 12.0,
'step': 0.01,
'positionerName': 'FineY'
}]
},
{'nPoints': 140,
'trajectories': [{'center': 37.8280758446287,
'range': 28.0,
'step': 0.2,
'positionerName': 'FineX'
}]
}]
},
{'axes': [{'nPoints': 10,
'trajectories': [{'center': 5571.33258869908,
'range': 1.0,
'step': 0.1,
'positionerName': 'FineY'
}]
},
{'nPoints': 10,
'trajectories': [{'center': -5400.94023907363,
'range': 1.0,
'step': 0.1,
'positionerName': 'FineX'
}]
}]
}],
'nOuterRegions': 1,
'nInnerRegions': 1,
'singleOuterRegionValue': 1,
'displayedAxes': {'x': {'region': 'inner',
'index': 1
},
'y': {'region': 'inner',
'index': 0
}
},
'positionPrecision': {'precision': 200.0},
'defocus': {'diameter': 0.0}
}"
]
Reply Messages:
["status","ok"]
'abortScan'
Message only needs the header, no data required. For example:
msg = ['abortScan' ]
Reply Messages:
["status","ok"]
'pauseScan'
Message only needs the header, no data required. For example:
msg = ['pauseScan' ]
Reply Messages:
["status","ok"]
'resumeScan'
Message only needs the header, no data required. For example:
msg = ['resumeScan' ]
Reply Messages:
["status","ok"]
'scanStatus'
Message only needs the header, no data required. For example:
msg = ['scanStatus' ]
I don't think this is actually used anymore, or is useful, since Pixelator regularly publishes scanStatus messages.
Reply Messages:
["status","ok"]["scanStatus", '{"current":{"innerRegion":1, "line":3, "lineRepetition":1, "outerRegion":1, "point":582, "polarization":1, "remainingTime":"25h 11m 10s", "time":"00h 01m 01s" }, "scanType":"Sample Scan", "status":"running", "total":{"innerRegion":1, "line":5001,"lineRepetition":1, "outerRegion":1, "point":1000, "polarization":1, "time":"25h 08m 40s" } }' ]
'moveRequest'
'moveStatus'
'homeRequest'
'positionerStatus'
'modified positioner definition'
-
"name": (required) Positioner name. Must exist as a defined positioner.Further optional keys correspond to the positioner base settings.
-
"positionOffset" -
"upperSoftLimit" -
"lowerSoftLimit" -
"autoOff"
Example message contents for modifying the CoarseX positioner:
msg = ['modified positioner definition',
'{
"autoOffMode":"Always",
"lowerSoftLimit":120.0,
"positionOffset":3.456,
"upperSoftLimit":1221.0,
}']
Successful modification of the positioner definition will result in the publication of the new positioner definition in full.
'modified zonePlate definition'
'zonePlateFocus'
'oscilloscopeDefinition'
'focusType'
'scanTypeArchive'
'localFileScanTypeArchive'
'allMotorsOff'
'resetInterferometer'
'OSA_IN'
'OSA_OUT'
'ZonePlate IN'
'ZonePlate OUT'
'Sample OUT'
'topupMode'
'beamShutterMode'
'loadFile directory'
'loadFile file'
'loadDefinition'
'change user'
'script info'
'getSettings'
The getSettings message will return the contents of all .json files referenced in the settings .json file passed to PixelatorController on the command line, the contents of the referenced .json files is placed under the key referencedJsonFiles, example json string returned from the getSettings message:
Example return message
{'Detector_Archive_Default': 'no',
'Focus_Archive_Default': 'no',
'Motor_Archive_Default': 'no',
'NeXusBaseDirectory': '/beamlinedata/SM/operations/STXM-data/ASTXM_upgrade_tmp/tmp/pixelator_data/2026',
'NeXusDiscardSubDirectory': 'discard',
'NeXusLocalBaseDirectory': '/beamlinedata/SM/operations/STXM-data/ASTXM_upgrade_tmp/tmp/pixelator_data/2026',
'NeXusScanDate': '2026-06-05',
'NeXusScanNumber': '003',
'OSA Focus_Archive_Default': 'yes',
'OSA_Archive_Default': 'yes',
'SampleImagePreifx': '.',
'Sample_Archive_Default': 'locked',
'axisConfigFileName': './config/axis.json',
'beamline': 'SLS PolLux X07DA',
'changeUserScript': 'echo',
'compression': 'LZW',
'controllerConfigFileName': './config/controllerNoHardware.json',
'dataPublisherPort': '56563',
'defaultSaveLocal': 'yes',
'defaultUsername': 'stxm',
'detectorConfigFileName': './config/detectorNoHardware.json',
'endOfScanScript': './scripts/endOfScan',
'instrumentConfigFileName': './config/instrument.json',
'log4cppPropertiesFileName': './config/log4cpp.properties',
'microscopeControlConfigFileName': './config/microscopeControl.json',
'missingDataCheckInterval': '0.1',
'missingDataCheckMaxChecks': '5',
'pixelClockConfigFileName': './config/pixelClockNoHardware.json',
'positionerConfigFileName': './config/positionerNoHardware.json',
'publisherPort': '56561',
'referencedJsonFiles': {'axisConfigFileName': {'content': {'SampleX': {'nexus_name': 'sample_x'},
'SampleY': {'nexus_name': 'sample_y'},
'SampleZ': {'nexus_name': 'sample_z'}},
'fileName': './config/axis.json',
'resolvedFileName': './config/axis.json'},
'controllerConfigFileName': {'content': {'NewPort1': {'active': 0,
'serverAddress': '129.129.113.94',
'serverPort': 5001,
'type': 'NewPort'},
'NexLine1': {'active': 0,
'serverAddress': '129.129.113.111',
'serverPort': 50000,
'type': 'NexLine'},
'Orchestra1': {'active': 0,
'type': 'Orchestra'},
'SmarAct1': {'active': 0,
'baudRate': 115200,
'deviceName': '/dev/ttyS0',
'type': 'SmarAct'}},
'fileName': './config/controllerNoHardware.json',
'resolvedFileName': './config/controllerNoHardware.json'},
'detectorConfigFileName': {'content': {'Analog0': {'active': 1,
'nexus_name': 'analog0',
'type': 'Base'},
'Counter0': {'active': 1,
'asynchronous': 1,
'hardwareUnitFactor': 0.001,
'hardwareUnitOffset': 20,
'nexus_name': 'counter0',
'type': 'Base',
'unit': 'kP'},
'Counter1': {'active': 1,
'detailedDataDimensions': [100],
'nexus_name': 'counter1',
'type': 'Base'},
'PHC': {'active': 0,
'autoRecord': 0,
'channel': 'X07DA-PHCAPD:PIXEL-C',
'channeldetails': 'X07DA-PHCAPD:PHC-CTRWF',
'detailedDataDimensions': [212],
'details': 1,
'nexus_name': 'phc',
'setTimeChannel': 'X07DA-PHCAPD:SAMPLE-TIME',
'type': 'Epics'},
'SampleX': {'active': 1,
'autoRecord': 1,
'monitor': 1,
'nexus_name': 'sample_x',
'type': 'Base'},
'SampleY': {'active': 1,
'autoRecord': 1,
'nexus_name': 'sample_y',
'type': 'Base'},
'Time': {'active': 1,
'autoRecord': 1,
'nexus_name': 'time',
'subType': 'time',
'type': 'Base'}},
'fileName': './config/detectorNoHardware.json',
'resolvedFileName': './config/detectorNoHardware.json'},
'instrumentConfigFileName': {'content': {'aperture_1': {'class': 'NXaperture',
'shape': {'class': 'NXshape',
'shape': 'nxbox',
'size': [0.0,
{'factor': 0.0001,
'positioner': 'EntranceSlit'},
0.03]},
'translation': {'class': 'NXtranslation',
'distances': [0.0,
0.0,
-11.0]}},
'aperture_2': {'class': 'NXaperture',
'shape': {'class': 'NXshape',
'shape': 'nxbox',
'size': [0.0,
{'factor': 0.0001,
'positioner': 'ExitSlit_H'},
{'factor': 0.0001,
'positioner': 'ExitSlit_V'}]},
'translation': {'class': 'NXtranslation',
'distances': [0.0,
0.0,
-1]}},
'bendmagnet': {'accepted_photon_beam_divergence': 'unknown',
'bending_radius': {'unit': 'deg',
'value': 1.2345},
'critical_energy': 1.2345,
'divergence_x_minus': -0.00025,
'divergence_x_plus': 0.00025,
'divergence_y_minus': {'offset': -0.00025,
'positioner': 'Ring_yAsym'},
'divergence_y_plus': {'offset': 0.00025,
'positioner': 'Ring_yAsym'},
'geometry': {'class': 'NXgeometry',
'translation': {'class': 'NXtranslation',
'distances': {'unit': 'μm',
'value': [0.0,
0.0,
-35.0]}}},
'magnetic_field': 1.4},
'hos_mirror_1': {'class': 'NXmirror',
'coating_material': 'MgF2',
'condition': {'==': ['IN',
{'epicsChannel': 'EPICS '
'X07DA-OP-HOS:STATE'}]},
'description': 'First '
'mirror '
'in '
'higher '
'order '
'suppression '
'system.',
'geometry': {'class': 'NXgeometry',
'orientation': {'class': 'NXorientation',
'value': [0.0,
0.0,
0.0]},
'translation': {'class': 'NXtranslation',
'distances': [0.0,
0.0,
-5.0]}},
'incident_angle': {'positioner': 'HOS_Angle1'},
'interior_atmosphere': 'vacuum',
'layer_thickness': 3e-08,
'substrate_material': 'SiO2',
'substrate_roughness': 1e-09,
'substrate_thickness': 0.03995},
'mirror': {'class': 'NXmirror',
'coating_material': 'pt',
'coating_roughness': 4.9e-10,
'geometry': {'class': 'NXgeometry',
'translation': {'class': 'NXtranslation',
'distances': [0.0,
0.0,
-23.0]}},
'incident_angle': {'unit': 'deg',
'value': 2.5},
'interior_atmosphere': 'vacuum',
'layer_thickness': 3e-08,
'shape': {'class': 'NXshape',
'direction': 'concave',
'shape': 'nxtoroidal',
'size': [275.05,
0.68]},
'substrate_material': 'Si',
'type': 'single'},
'source': {'current': {'positioner': 'Ring_Current'},
'name': 'Swiss '
'Light '
'Source',
'probe': 'x-ray',
'type': 'Synchrotron '
'X-ray '
'Source'}},
'fileName': './config/instrument.json',
'resolvedFileName': './config/instrument.json'},
'microscopeControlConfigFileName': {'content': {'InOut': {'OSA': [{'positionIn': 0.0,
'positionOut': -3000.0,
'positioner': 'OSAX'},
{'positionIn': 0.0,
'positionOut': 3000.0,
'positioner': 'OSAY'}],
'Sample': [{'positionIn': 5000.0,
'positionOut': 10000.0,
'positioner': 'CoarseZ'}],
'ZonePlate': [{'positionIn': -5000,
'positionOut': -18000.0,
'positioner': 'Zoneplate'}]}},
'fileName': './config/microscopeControl.json',
'resolvedFileName': './config/microscopeControl.json'},
'pixelClockConfigFileName': {'content': {'PixelClock': {'active': 1,
'noHardware': True}},
'fileName': './config/pixelClockNoHardware.json',
'resolvedFileName': './config/pixelClockNoHardware.json'},
'positionerConfigFileName': {'content': {'Auxilliary0': {'active': 0,
'description': 'Auxiliary '
'positioner '
'0',
'nexus_name': 'auxilliary0',
'readOnly': True,
'type': 'Base'},
'Auxilliary1': {'active': 0,
'description': 'Auxiliary '
'positioner '
'1',
'nexus_name': 'auxilliary1',
'readOnly': True,
'type': 'Base'},
'Auxilliary2': {'active': 0,
'description': 'Auxiliary '
'positioner '
'2',
'nexus_name': 'auxilliary2',
'readOnly': True,
'type': 'Base'},
'Baffle': {'active': 0,
'description': 'Translation '
'of '
'the '
'baffle '
'(protecting '
'the '
'side '
'of '
'first '
'mirror)',
'nexus_name': 'baffle',
'readOnly': True,
'type': 'Base'},
'BeamShutter': {'active': 1,
'lowerSoftLimit': 0,
'nexus_name': 'beam_shutter',
'type': 'Base',
'upperSoftLimit': 1},
'CoarseX': {'active': 1,
'axisName': 'SampleX',
'description': 'Coarse '
'translation '
'of '
'the '
'sample '
'along '
'the '
'X-axis',
'distributionMode': 'n',
'finePositioner': 'FineX',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -11000,
'maxVelocity': 300,
'nexus_name': 'coarse_x',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 11000},
'CoarseY': {'active': 1,
'axisName': 'SampleY',
'description': 'Coarse '
'translation '
'of '
'the '
'sample '
'along '
'the '
'Y-axis',
'distributionMode': 'n',
'finePositioner': 'FineY',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -11000,
'maxVelocity': 300,
'nexus_name': 'coarse_y',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 11000},
'CoarseZ': {'active': 0,
'axisName': 'SampleZ',
'description': 'Coarse '
'translation '
'of '
'the '
'sample '
'along '
'the '
'Z-axis',
'distributionMode': 'n',
'finePositioner': 'FineZ',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': 0,
'maxVelocity': 300,
'nexus_name': 'coarse_z',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 11000},
'DetectorX': {'active': 1,
'description': 'Translation '
'of '
'the '
'detector '
'stage '
'along '
'the '
'X-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -11000,
'nexus_name': 'detector_x',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 11000},
'DetectorY': {'active': 1,
'description': 'Translation '
'of '
'the '
'detector '
'stage '
'along '
'the '
'Y-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -11000,
'maxVelocity': 300,
'nexus_name': 'detector_y',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 11000},
'DetectorZ': {'active': 1,
'description': 'Translation '
'of '
'the '
'detector '
'stage '
'along '
'the '
'Z-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -11000,
'maxVelocity': 300,
'nexus_name': 'detector_z',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 11000},
'Energy': {'active': 1,
'beamlineControlPosition': 1,
'description': 'Photon '
'energy '
'currently '
'transmitted '
'by '
'the '
'monochromator',
'distributionMode': 'nPlus1',
'hardwareUnitFactor': 1,
'lowerSoftLimit': 10,
'nexus_name': 'energy',
'positionOffset': 0,
'type': 'Base',
'unit': 'eV',
'upperSoftLimit': 1000},
'EntranceSlit': {'active': 0,
'beamlineControlPosition': 2,
'description': 'Width '
'of '
'the '
'entrance '
'slit '
'aperture',
'distributionMode': 'nPlus1',
'hardwareUnitFactor': 1,
'lowerSoftLimit': -10,
'nexus_name': 'entrance_slit',
'positionOffset': 0,
'type': 'Base',
'unit': 'mm',
'upperSoftLimit': 10},
'ExitSlit_H': {'active': 0,
'beamlineControlPosition': 3,
'description': 'Width '
'of '
'the '
'exit '
'slit '
'aperture',
'distributionMode': 'nPlus1',
'hardwareUnitFactor': 1,
'lowerSoftLimit': -10,
'nexus_name': 'exit_slit_h',
'positionOffset': 0,
'type': 'Base',
'unit': 'mm',
'upperSoftLimit': 10},
'ExitSlit_V': {'active': 0,
'beamlineControlPosition': 4,
'description': 'Height '
'of '
'the '
'exit '
'slit '
'aperture',
'distributionMode': 'nPlus1',
'hardwareUnitFactor': 1,
'lowerSoftLimit': -10,
'nexus_name': 'exit_slit_v',
'positionOffset': 0,
'type': 'Base',
'unit': 'mm',
'upperSoftLimit': 10},
'FineX': {'active': 1,
'axisName': 'SampleX',
'coarsePositioner': 'CoarseX',
'description': 'Fine '
'translation '
'of '
'the '
'sample '
'along '
'the '
'X-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -5,
'maxVelocity': 300,
'nexus_name': 'fine_x',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 5},
'FineY': {'active': 1,
'axisName': 'SampleY',
'coarsePositioner': 'CoarseY',
'description': 'Fine '
'translation '
'of '
'the '
'sample '
'along '
'the '
'Y-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -5,
'maxVelocity': 300,
'nexus_name': 'fine_y',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 5},
'FineZ': {'active': 0,
'axisName': 'SampleZ',
'coarsePositioner': 'CoarseZ',
'description': 'Fine '
'translation '
'of '
'the '
'sample '
'along '
'the '
'Z-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -5,
'maxVelocity': 300,
'nexus_name': 'fine_z',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 5},
'FrontEndSlit_H1': {'active': 0,
'description': 'Translation '
'of '
'the '
'front '
'end '
'slits '
'ring-side '
'blade',
'nexus_name': 'front_end_slit_h1',
'readOnly': True,
'type': 'Base'},
'FrontEndSlit_H2': {'active': 0,
'description': 'Translation '
'of '
'the '
'front '
'end '
'slits '
'wall-side '
'blade',
'nexus_name': 'front_end_slit_h2',
'readOnly': True,
'type': 'Base'},
'FrontEndSlit_V1': {'active': 0,
'description': 'Translation '
'of '
'the '
'front '
'end '
'slits '
'upper '
'blade',
'nexus_name': 'front_end_slit_v1',
'readOnly': True,
'type': 'Base'},
'FrontEndSlit_V2': {'active': 0,
'description': 'Translation '
'of '
'the '
'front '
'end '
'slits '
'lower '
'blade',
'nexus_name': 'front_end_slit_v2',
'readOnly': True,
'type': 'Base'},
'Girder_Rx': {'active': 0,
'description': 'Rotation '
'of '
'the '
'girder-mover '
'about '
'the '
'X-axis',
'nexus_name': 'girder_rx',
'readOnly': True,
'type': 'Base'},
'Girder_Ry': {'active': 0,
'description': 'Rotation '
'of '
'the '
'girder-mover '
'about '
'the '
'Y-axis',
'nexus_name': 'girder_ry',
'readOnly': True,
'type': 'Base'},
'Girder_Rz': {'active': 0,
'description': 'Rotation '
'of '
'the '
'girder-mover '
'about '
'the '
'Z-axis',
'nexus_name': 'girder_rz',
'readOnly': True,
'type': 'Base'},
'Girder_x': {'active': 0,
'description': 'Translation '
'of '
'the '
'girder-mover '
'along '
'the '
'X-axis',
'nexus_name': 'girder_x',
'readOnly': True,
'type': 'Base'},
'Girder_y': {'active': 0,
'description': 'Translation '
'of '
'the '
'girder-mover '
'along '
'the '
'Y-axis',
'nexus_name': 'girder_y',
'readOnly': True,
'type': 'Base'},
'Girder_z': {'active': 0,
'description': 'Translation '
'of '
'the '
'girder-mover '
'along '
'the '
'Z-axis',
'nexus_name': 'girder_z',
'readOnly': True,
'type': 'Base'},
'Grating_Ry': {'active': 0,
'description': 'Rotation '
'of '
'the '
'monochromator '
'grating '
'about '
'the '
'Y-axis',
'nexus_name': 'grating_ry',
'readOnly': True,
'type': 'Base'},
'Grating_y': {'active': 0,
'description': 'Translation '
'of '
'the '
'monochromator '
'grating '
'carriage '
'along '
'the '
'Y-axis',
'nexus_name': 'grating_y',
'readOnly': True,
'type': 'Base'},
'HOS_Rz1': {'active': 0,
'description': 'Rotation '
'of '
'the '
'first '
'higher '
'order '
'suppressor '
'mirror '
'about '
'the '
'X-axis '
'(-Z '
'translation '
'in '
'EPICS)',
'nexus_name': 'hos_rz1',
'readOnly': True,
'type': 'Base'},
'HOS_Rz2': {'active': 0,
'description': 'Rotation '
'of '
'the '
'last '
'higher '
'order '
'suppressor '
'mirror '
'about '
'the '
'X-axis '
'(+Z '
'translation '
'in '
'EPICS)',
'nexus_name': 'hos_rz2',
'readOnly': True,
'type': 'Base'},
'HOS_z': {'active': 0,
'description': 'Translation '
'of '
'the '
'higher '
'order '
'suppressor '
'along '
'the '
'X-axis '
'(-Z '
'in '
'EPICS)',
'nexus_name': 'hos_z',
'readOnly': True,
'type': 'Base'},
'ID1Off': {'active': 1,
'beamlineControlPosition': 2,
'description': 'ID '
'1 '
'Energy '
'Offset',
'distributionMode': 'nPlus1',
'hardwareUnitFactor': 1,
'lowerSoftLimit': -100,
'nexus_name': 'id1_off',
'positionOffset': 0,
'type': 'Base',
'unit': 'eV',
'upperSoftLimit': 100.0},
'ID2Off': {'active': 1,
'beamlineControlPosition': 3,
'description': 'ID '
'2 '
'Energy '
'Offset',
'distributionMode': 'nPlus1',
'hardwareUnitFactor': 1,
'lowerSoftLimit': -100,
'nexus_name': 'id2_off',
'positionOffset': 0,
'type': 'Base',
'unit': 'eV',
'upperSoftLimit': 100.0},
'Mirror1_Rx': {'active': 0,
'description': 'Rotation '
'of '
'the '
'first '
'mirror '
'about '
'the '
'Z-axis '
'(+X '
'in '
'EPICS)',
'nexus_name': 'mirror1_rx',
'readOnly': True,
'type': 'Base'},
'Mirror1_Ry': {'active': 0,
'description': 'Rotation '
'of '
'the '
'first '
'mirror '
'about '
'the '
'Y-axis',
'nexus_name': 'mirror1_ry',
'readOnly': True,
'type': 'Base'},
'Mirror1_Rz': {'active': 0,
'description': 'Rotation '
'of '
'the '
'first '
'mirror '
'about '
'the '
'X-axis '
'(-Z '
'in '
'EPICS)',
'nexus_name': 'mirror1_rz',
'readOnly': True,
'type': 'Base'},
'Mirror1_x': {'active': 0,
'description': 'Translation '
'of '
'the '
'first '
'mirror '
'along '
'the '
'Z-axis '
'(+X '
'in '
'EPICS)',
'nexus_name': 'mirror1_x',
'readOnly': True,
'type': 'Base'},
'Mirror1_y': {'active': 0,
'description': 'Translation '
'of '
'the '
'first '
'mirror '
'along '
'the '
'Y-axis',
'nexus_name': 'mirror1_y',
'readOnly': True,
'type': 'Base'},
'Mirror1_z': {'active': 0,
'description': 'Translation '
'of '
'the '
'first '
'mirror '
'along '
'the '
'X-axis '
'(-Z '
'in '
'EPICS)',
'nexus_name': 'mirror1_z',
'readOnly': True,
'type': 'Base'},
'MoenchNumFrames': {'active': 1,
'beamlineControlPosition': 4,
'description': 'Number '
'of '
'Frames',
'lowerSoftLimit': 0,
'nexus_name': 'moench_num_frames',
'type': 'Base',
'upperSoftLimit': 100000},
'OSAX': {'active': 1,
'description': 'Translation '
'of '
'the '
'order '
'selecting '
'aperture '
'along '
'the '
'X-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -11000,
'maxVelocity': 300,
'nexus_name': 'osa_x',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 11000},
'OSAY': {'active': 1,
'description': 'Translation '
'of '
'the '
'order '
'selecting '
'aperture '
'along '
'the '
'Y-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -11000,
'maxVelocity': 300,
'nexus_name': 'osa_y',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 11000},
'Polarization': {'active': 1,
'description': 'Polarization',
'hardwareUnitFactor': 1,
'lowerSoftLimit': -0.2,
'nexus_name': 'polarization',
'positionOffset': 0,
'type': 'Base',
'upperSoftLimit': 0.2},
'Ring_Current': {'active': 1,
'description': 'Storage '
'ring '
'electron '
'beam '
'current',
'nexus_name': 'ring_current',
'readOnly': True,
'type': 'Base'},
'Ring_Injection': {'active': 0,
'description': 'Storage '
'ring '
'injection '
'mode',
'nexus_name': 'ring_injection',
'readOnly': True,
'type': 'Base'},
'Ring_OFBMode': {'active': 0,
'description': 'Storage '
'ring '
'electron '
'beam '
'orbit '
'feedback '
'mode',
'nexus_name': 'ring_ofb_mode',
'readOnly': True,
'type': 'Base'},
'Ring_xMin': {'active': 0,
'description': 'Width '
'of '
'the '
'storage '
'ring '
'electron '
'beam',
'nexus_name': 'ring_x_min',
'readOnly': True,
'type': 'Base'},
'Ring_xRMS': {'active': 0,
'description': 'Storage '
'ring '
'electron '
'beam '
'orbit '
'variation '
'in '
'X-position',
'nexus_name': 'ring_x_rms',
'readOnly': True,
'type': 'Base'},
'Ring_yAsym': {'active': 1,
'description': 'Vertical '
'offset '
'applied '
'to '
'the '
'orbit '
'of '
'the '
'storage '
'ring '
'electron '
'beam',
'nexus_name': 'ring_y_asym',
'readOnly': True,
'type': 'Base'},
'Ring_yMin': {'active': 0,
'description': 'Height '
'of '
'the '
'storage '
'ring '
'electron '
'beam',
'nexus_name': 'ring_y_min',
'readOnly': True,
'type': 'Base'},
'Ring_yRMS': {'active': 0,
'description': 'Storage '
'ring '
'electron '
'beam '
'orbit '
'variation '
'in '
'Y-position',
'nexus_name': 'ring_y_rms',
'readOnly': True,
'type': 'Base'},
'Zoneplate': {'active': 1,
'description': 'Translation '
'of '
'the '
'zoneplate '
'along '
'the '
'Z-axis',
'distributionMode': 'n',
'hardwareUnitFactor': 1000,
'lowerSoftLimit': -11000,
'maxVelocity': 300,
'nexus_name': 'zone_plate',
'positionOffset': 0,
'type': 'Base',
'unit': 'μm',
'upperSoftLimit': 0}},
'fileName': './config/positionerNoHardware.json',
'resolvedFileName': './config/positionerNoHardware.json'},
'sampleConfigFileName': {'content': {'rotation_angle': {'positioner': 'Auxilliary2'},
'start_position': [{'positioner': 'FineX'},
{'positioner': 'FineY'},
{'positioner': 'FineZ'}]},
'fileName': './config/sample.json',
'resolvedFileName': './config/sample.json'},
'topupConfigFileName': {'content': {'active': 0},
'fileName': './config/topupNoHardware.json',
'resolvedFileName': './config/topupNoHardware.json'},
'zonePlateConfigFileName': {'content': {'OSAs': [{'diameter': {'unit': 'μm',
'value': 50.0},
'name': 'OSA '
'50'},
{'diameter': {'unit': 'μm',
'value': 60.0},
'name': 'OSA '
'60'},
{'diameter': {'unit': 'μm',
'value': 70.0},
'name': 'OSA '
'70'}],
'activeOSA': 'OSA '
'50',
'activeZonePlate': 'ZonePlate '
'B',
'autoFocusDeadBand': 0.5,
'dOsa': 298.0,
'distance_exitSlit_OSA': 1005000,
'zonePlates': [{'NXgeometry': '"Engineering" '
'position '
'of '
'the '
'fresnel '
'zone '
'plate',
'b': [0,
6.875],
'central_stop_diameter': {'unit': 'μm',
'value': 75},
'central_stop_material': 'Pb',
'central_stop_thickness': 500,
'fabrication': 'etched',
'geometry': {'class': 'NXgeometry',
'translation': {'class': 'NXtranslation',
'distances': [0.0,
0.0,
-35.0]}},
'mask_material': 'mask',
'mask_thickness': 400,
'name': 'ZonePlate '
'B',
'outer_diameter': 240,
'outermost_zone_width': 35,
'support_membrane_material': 'membrane',
'support_membrane_thickness': 300,
'zone_height': 200,
'zone_material': 'Pt',
'zone_support_material': 'air '
';)'},
{'NXgeometry': '"Engineering" '
'position '
'of '
'the '
'fresnel '
'zone '
'plate',
'b': [0,
1.795],
'central_stop_diameter': 75,
'central_stop_material': 'Pb',
'central_stop_thickness': 500,
'fabrication': 'etched',
'geometry': {'class': 'NXgeometry',
'translation': {'class': 'NXtranslation',
'distances': [0.0,
0.0,
-35.0]}},
'mask_material': 'mask',
'mask_thickness': 400,
'name': 'ZonePlate '
'A',
'outer_diameter': 150,
'outermost_zone_width': 15,
'support_membrane_material': 'membrane',
'support_membrane_thickness': 300,
'zone_height': 200,
'zone_material': 'Pt',
'zone_support_material': 'air '
';)'},
{'NXgeometry': '"Engineering" '
'position '
'of '
'the '
'fresnel '
'zone '
'plate',
'b': [0,
4.821],
'central_stop_diameter': 75,
'central_stop_material': 'Au',
'central_stop_thickness': 500,
'fabrication': 'etched',
'geometry': {'class': 'NXgeometry',
'translation': {'class': 'NXtranslation',
'distances': [0.0,
0.0,
-35.0]}},
'mask_material': 'mask',
'mask_thickness': 400,
'name': 'ZonePlate '
'C',
'outer_diameter': 240,
'outermost_zone_width': 25,
'support_membrane_material': 'membrane',
'support_membrane_thickness': 300,
'zone_height': 200,
'zone_material': 'Au',
'zone_support_material': 'air '
';)'}]},
'fileName': './config/zonePlate.json',
'resolvedFileName': './config/zonePlate.json'}},
'requestPort': '56562',
'sampleConfigFileName': './config/sample.json',
'topupConfigFileName': './config/topupNoHardware.json',
'zonePlateConfigFileName': './config/zonePlate.json'}