Matts lower-level way of programming a burst with 1 slow andor rate:
export EPICS_PVA_ADDR_LIST=172.21.152.78 (allows rix-daq to talk to the XPM, e.g. to program sequences)
source /cds/group/pcds/dist/pds/rix/scripts/setup_env.sh
traingenerator -s 14000 -b 28 -n 32001 -r 2 -d "burst" -t 910000 >& /tmp/beam.py
periodicgenerator -p 91 91000 -s 0 0 -d '10kHz' '10Hz' --repeat 3 --notify >& /tmp/codes.py
seqprogram --seq 0:/tmp/codes.py 3:/tmp/beam.py --pv DAQ:NEH:XPM:3
Command to view the status of the sequence:
rix-daq:~> pvget DAQ:NEH:XPM:3:SEQCODES DAQ:NEH:XPM:3:SEQCODES 2023-05-22 17:26:52.369 EventCode Description Rate Enabled 272 1 1 273 102 1 274 0 1 275 0 1 276 0 0 277 0 0 278 0 0 279 0 0 280 0 0 281 0 0 282 0 0 283 0 0 284 10206 1 285 0 1 286 0 1 287 0 1 rix-daq:~>
Command to start a sequence that has ended (note that 9=(8<<3) | (1<<0) so sequence engines 3 and 0 are restarted):
pvput DAQ:NEH:XPM:3:SeqReset 9
Matt's higher level way of programming a burst with 2 slow andor rates:
python ~weaver/lcls2-new/psdaq/psdaq/seq/rixgeneratory.py --periods 1.0 0.01 (units in seconds. generates two files beam.py and codes.py in the current directory which should be programmed with "seqprogram")
Running a standalone daq step-scan (no hutch-python). The number "9" corresponds to two bits: 9=8+1, or 9=(1<<3) | (1<<0), where 3 and 0 are the two sequence engines that have been programmed with seqprogram above. The "-g" argument is for the readout groups in the partition (2,5): 36=(1<<5) | (1<<2).
python ~weaver/lcls2-new/psdaq/psdaq/control/rix_bluesky_scan.py -p 2 -C drp-srcf-cmp004 -g 36 --detname andor_vls_0 --seqctl DAQ:NEH:XPM:3:SeqReset 9 DAQ:NEH:XPM:3:SeqDone
A hutch-python scan in "burst mode":
In [4]: daq.configure(motors=[sim.fast_motor1],group_mask=36, events=0, detname='andor_dir_0', seq_ctl=['DAQ:NEH:XPM:3:SeqReset',9,'DAQ:NEH:XPM:3:SeqDone'])
INFO configure - configure: 1 motors
INFO configure - Found readout group 5 for andor_dir_0.
Out[4]: ({}, {})
In [5]: RE(bp.scan([daq], sim.fast_motor1, -10, 10, 5))
matt's new way of setting up bursts (generates beam.py and codes.py)
A hutch-python scan where the sequence runs continuously, recording 1 slow-andor event per step. In this case the start of the DAQ acquisition in each step is asynchronous to the running sequence.
In [8]: daq.configure(motors=[sim.fast_motor1],group_mask=36, events=1, detname='andor_norm_0', record=True)
INFO configure - configure: 1 motors
INFO configure - Found readout group 5 for andor_norm_0.
Out[8]: ({}, {})
In [9]: RE(bp.scan([daq], sim.fast_motor1, -10, 10, 5))