mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 11:20:04 +02:00
122 lines
2.9 KiB
ReStructuredText
Executable File
122 lines
2.9 KiB
ReStructuredText
Executable File
Getting started
|
|
================
|
|
|
|
|
|
------------------------
|
|
Setting up the detector
|
|
------------------------
|
|
|
|
All configuration of the detector can either be done from the Python
|
|
API (including loading config file) or externally. The detector setup is
|
|
discovered from the shared memory when launching a new script. Because the
|
|
detector usually should remain online longer than a specific script it is
|
|
recommended to run the receivers seperate.
|
|
|
|
---------------------------------
|
|
Setting and getting attributes
|
|
---------------------------------
|
|
|
|
Most of the detector and software setting are implemented as attributes
|
|
in the Detector class. When something is assigned it is also set
|
|
in the detector and when the attribute is called using dot notation it
|
|
it looked up from the detector.
|
|
|
|
::
|
|
|
|
#Currently Eiger and Jungfrau but Detector should work for all
|
|
from sls_detector import Eiger()
|
|
d = Eiger()
|
|
|
|
d.file_write = True
|
|
d.vthreshold = 1500
|
|
|
|
d.frame_index
|
|
>> 12
|
|
|
|
d.file_name
|
|
>> 'run'
|
|
|
|
---------------------------------
|
|
Working with DACs
|
|
---------------------------------
|
|
|
|
The following examples assumes an Eiger500k detector. But the same syntax
|
|
works for other detector sizes and models.
|
|
|
|
::
|
|
|
|
d.dacs
|
|
>>
|
|
========== DACS =========
|
|
vsvp : 0, 0
|
|
vtr : 4000, 4000
|
|
vrf : 2000, 2300
|
|
vrs : 1400, 1400
|
|
vsvn : 4000, 4000
|
|
vtgstv : 2556, 2556
|
|
vcmp_ll : 1500, 1500
|
|
vcmp_lr : 1500, 1500
|
|
vcall : 3500, 3600
|
|
vcmp_rl : 1500, 1500
|
|
rxb_rb : 1100, 1100
|
|
rxb_lb : 1100, 1100
|
|
vcmp_rr : 1500, 1500
|
|
vcp : 1500, 1500
|
|
vcn : 2000, 2000
|
|
vis : 1550, 1550
|
|
iodelay : 660, 660
|
|
|
|
#Read dac values to a variable
|
|
vrf = d.dacs.vrf[:]
|
|
|
|
#Set a dac in a module
|
|
d.dacs.vrf[0] = 1500
|
|
d.dacs.vrf[0]
|
|
>> 1500
|
|
|
|
#Set vrf to the same value in all moduels
|
|
d.dacs.vrf = 1500
|
|
|
|
#Set a dac using an iterable
|
|
d.dacs.vrf = [1500, 1600]
|
|
d.dacs.vrf
|
|
>> vrf : 1500, 1600
|
|
|
|
#Set dacs iterating on index and values
|
|
d.dacs.vrf[0,1] = 1300,1400
|
|
|
|
|
|
---------------------------------
|
|
Operating multiple detectors
|
|
---------------------------------
|
|
|
|
Operating multiple detectors is supported by assigning an id when creating the object. If no id is
|
|
set it defaults to 0.
|
|
|
|
::
|
|
|
|
d0 = Eiger() #id is now 0
|
|
d1 = Jungfrau(1)
|
|
|
|
#Or explicitly
|
|
d1 = Jungfrau(id = 0)
|
|
|
|
The detectors now operate independently of each other but can be synchronized using a hardware trigger.
|
|
|
|
::
|
|
|
|
from sls_detector import Eiger
|
|
|
|
d0 = Eiger(0)
|
|
d1 = Eiger(1)
|
|
|
|
d0.load_config('/some/path/T45.config')
|
|
d1.load_config('/some/path/T62.config')
|
|
|
|
d0.n_frames = 1
|
|
d0.exposure_time = 1
|
|
d0.timing_mode = 'trigger'
|
|
|
|
d1.n_frames = 5
|
|
d1.exposure_time = 0.2
|
|
d1.timing_mode = 'trigger' |