You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Burst with 1 Slow Andor

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

The output of "python tools/seqbrowser.py --seq 0:codes.py 3:beam.py --time 2.0" looks like:

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

Or one can add "--start" to the seqprogram command.

Infinite Sequence With 2 Different Slow Andor Rates

The only way to stop a running infinite sequence is to program another sequence.

python ~weaver/lcls2-new/psdaq/psdaq/seq/rixgeneratory.py --periods 1.0 0.01  (units in seconds).  Generates three files beam.py, codes.py and codes2.py in the current directory which should be programmed with "seqprogram".

  • beam.py simulates the beam pattern with gaps left for reading out both the fast and slow andor (eventually programmed on the accelerator side)
  • codes.py generates periodic triggers for a low rate andor and a high rate andor, but the high rate andor continues (needlessly) reading out when the beam is stopped for the low rate andor (see next point for solution)
  • codes2.py generates periodic triggers for the high rate andor, but avoids triggering it when the beam is inhibited for the slow andor readout.  because of this it is called "fast gated andor" in codes2.py 

The output of "python tools/seqbrowser.py --seq 0:codes.py 1:codes2.py 3:beam.py --time 4.0" looks like this:

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" (need to use finite sequences generated by traingenerator.py/burstgenerator.py):

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))

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))

  • No labels