Skip Ribbon Commands
Skip to main content





| |

What is the PV for bunch length?​

Answer Collapse/Expand Text:

At the moment we use pyros as indicators of the bunch length. They are uncalibrated.

Normally we use



This is beam synchronous so you can acquire it on a shot by shot basis.​

How do I see what a PV is reading?​

Answer Collapse/Expand Text:

From a command line on any mcc computer (or signed into facet-srv01) type:


cvget PVNAME


If there are multiple PVs, list them:




You can also "probe". Type probe at a command prompt (on facet-srv01). The video I linked to explains how to use it.


Of course, there are other ways because people have created screens within facethome to look at them...

What is a PV?​

Answer Collapse/Expand Text:

A PV is a Process Variable and is essentially what any other person just calls a variable. The variable is a bit of data and it has other things associated with it like timestamps, physical units, array size, alarm state etc.

My favourite intro to EPICS (which covers this) is here.​

What can I do with PVs?​

Answer Collapse/Expand Text:

caget - see what a PV is reading. caget PVNAME

caput - set a PV to a particular value. caput PVNAME VALUE

camonitor - everytime the PV updates, the value returned is updated. Until you Ctrl-C to stop the monitor. camonitor PVNAME

All accept –h to display usage and options

How do I watch a PV change with time? (aka strip-tool)​

Answer Collapse/Expand Text:

There is a little video here on using the striptool. Basically, open it up from facethome (at the time of writing, it is the fifth button down in the right hand column on facethome). Write the PVs in and go...

Often, operators like to put in the transverse beam size and watch it with time as they tune (hopefully go down!). It can also be used to watch pressures when you vent systems. Useful.​

​What devices can I acquire "beam synchronous" and what is their PV name?

Answer Collapse/Expand Text:

At FACET, we can acquire data on a pulse-by-pulse basis from multiple devices. These devices are specially set up with hardware that allows us to tag the data with a unique pulse id that means that we can collect the data in the DAQ and guarantee that the data collected for a specific pulse really is all related to the same pulse.

Not all devices in the FACET controls system is set up such that this is possible. If the device doesn't have an "event receiver", which is a particular piece of hardware, then it is not possible to get pulse-by-pulse, id tagged data. These devices are often things like pressure gauge controllers and temperature sensors where pulse by pulse information isn't useful anyway.
Devices that are available on a pulse-by-pulse basis tend to be camera images and ADCs. A full list of devices (except for cameras) that can be acquired this way is available here:
The "root_name" relates to the nomenclature used in the control system. For a handy guide to what these mean in a practical sense, you can compare it to the device map:


Please note that if you are not getting data on a pulse by pulse basis with BSA, this is a problem that should be reported. It may indicate a hardware failure.

​How do I acquire BPMs or Toroids or Bunch Length Monitor beam synchronously?

Answer Collapse/Expand Text:

​BLEN:LI20:3014:BRAW is unscaled integrated sum signal from the sector 20 foil+pyro.  BLEN:LI20:3014:BIMAX is nominally the bunch length derived from this number, but in the absence of a calibration, BIMAX = BRAW.

Note that at this moment, the toroid channels available by BSA are only the uncalibrated ones -



For now, these calibration values live here:
SIOC:SYS1:ML00:AO033 %TORO 2452 Slope
SIOC:SYS1:ML00:AO034 %TORO 2452 Offset
SIOC:SYS1:ML00:AO035 %TORO 3163 Slope
SIOC:SYS1:ML00:AO036 %TORO 3163 Offset
SIOC:SYS1:ML00:AO037 %TORO 3255 Slope
SIOC:SYS1:ML00:AO038 %TORO 3255 Offset

Use those calibration numbers to scale the BSA ADC readings to real charge values.

Below is an example of how to do the BSA acquisition, in case people aren't familiar.  Please make sure to release the event definition; if the acquisition bombs, do it manually on the Event/Global panel on facethome.


% define some PV names

blen_root = 'BLEN:LI20:3014';

blen_pvs = strcat(blen_root, {':BRAW'; ':BIMAX'});


toro_root = 'GADC0:LI20:EX01:AI';

toro_pvs = strcat(toro_root, {':CH0:'; ':CH2:'; ':CH3:'});


% reserve and set up an edef

masks = {{'TS5'} {} {'DUMP_2_9' 'NO_EXT_ELEC'} {}}; edef = eDefReserve('Nate BSA example'); eDefParams(edef, 1, -1, masks{:});  % third argument = -1 makes it acquire forever


% start edef



% do other acquisition here....



% stop edef



% retrieve BSA data

blen_data = lcaGetSmart(strcat(blen_pvs, 'HST', num2str(edef))); toro_data = lcaGetSmart(strcat(toro_pvs, 'HST', num2str(edef))); pulseid = lcaGetSmart(strcat('PATT:SYS1:1:PULSEIDHST', num2str(edef)));


% free up edef


SLAC SLAC National Accelerator Laboratory, Menlo Park, CA
Operated by Stanford University for the U.S. Dept. of Energy