Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
Introduction

LCLS2 DAQ supports three types of scans:

  • epics PV step-scans using bluesky.
  • "on-the-fly" scans of epics PVs
  • detector configuration scans

On-The-Fly Scans

These are the simplest scans to run where the DAQ is free-running and a PV is changed while taking data.  It's advantages are that it is simpler to run and sometimes quicker (since one does not pause the DAQ to move a motor, for example).  A disadvantage is that on a per-shot basis one does not know the precise value of the PV, since the PV is typically only recorded at 1Hz in epicsArch.  An example script to move a PV while the DAQ is taking data:

Code Block
languagepy
from epics import caget, caput, cainfo
val = 790000
delta = 7000
import time
while 1:
    val += delta
    caput('IM3K4:PPM:CAM:EVR:TRIG4:TDES',val)
    print(caget('IM3K4:PPM:CAM:EVR:TRIG4:TDES'))
    time.sleep(5)

EPICS PV Step-Scans

EPICS PV step scans use the BlueSky software from BNL (https://nsls-ii.github.io/bluesky/).  In this mode one or more PV's are modified while the DAQ is paused, then data is acquired (either for a fixed number of shots or a fixed time) then the DAQ is paused again and the PV is modified again for the next "step".  BlueSky supports complex coordinated motion of multiple PV's.

...

Code Block
languagetext
titlebluesky_rix.py demo
$ python bluesky_rix.py 

Transient Scan ID: 1     Time: 2020-12-10 18:24:53
Persistent Unique Scan ID: '2092a9ca-160c-4b52-8683-256f699e1e01'
New stream: 'primary'
+-----------+------------+------------+
|   seq_num |       time |     motor1 |
+-----------+------------+------------+
|         1 | 18:24:58.5 |    -10.000 |
|         2 | 18:24:59.6 |     -8.571 |
|         3 | 18:25:00.6 |     -7.143 |
|         4 | 18:25:01.6 |     -5.714 |
|         5 | 18:25:02.7 |     -4.286 |
|         6 | 18:25:03.7 |     -2.857 |
|         7 | 18:25:04.8 |     -1.429 |
|         8 | 18:25:05.8 |      0.000 |
|         9 | 18:25:06.8 |      1.429 |
|        10 | 18:25:07.9 |      2.857 |
|        11 | 18:25:08.9 |      4.286 |
|        12 | 18:25:10.0 |      5.714 |
|        13 | 18:25:11.0 |      7.143 |
|        14 | 18:25:12.0 |      8.571 |
|        15 | 18:25:13.1 |     10.000 |
+-----------+------------+------------+
generator scan ['2092a9ca'] (scan num: 1)

Preparing for a PV Scan

As a general rule, one should always verify that the DAQ is running well in "normal" mode before attempting to run a scan.

...

Code Block
languagetext
titlebluesky_rix.py help
$ python bluesky_rix.py -h
usage: bluesky_rix.py [-h] [-B PVBASE] [-p {0,1,2,3,4,5,6,7}] [-x XPM]
                      [-C COLLECT_HOST] [-t TIMEOUT] [-c READOUT_COUNT]
                      [-g GROUP_MASK] [--config ALIAS] [-v]

optional arguments:
  -h, --help            show this help message and exit
  -B PVBASE             PV base (default DAQ:NEH)
  -p {0,1,2,3,4,5,6,7}  platform (default 2)
  -x XPM                master XPM (default 0)
  -C COLLECT_HOST       collection host (default drp-neh-ctl001)
  -t TIMEOUT            timeout msec (default 10000)
  -c READOUT_COUNT      # of events to aquire at each step (default 120)
  -g GROUP_MASK         bit mask of readout groups (default 36)
  --config ALIAS        configuration alias (default BEAM)
  -v                    be verbose

Detector Configuration Scans

These scans use the same "step" idea described above for EPICS PV step-scans, but instead alter a detector configuration object on each step.  Currently this has been done for the EPIX area detector to take data in the various gain ranges.