FAQ: Control System & EPICS




What is the PV for bunch length?

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?

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?

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?

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

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?

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?

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






How do I use Correlation Plot?​

See this Correlation_Plot_GUI_help.pdf. If this guide gets updated by the author, this particular link won't get updated! He keeps the guide in the CVS repository. If you know how to access that and discover that the guide has been updated, send me the up-to-date version and I will upload it. Thanks, Christine.​

update 2/1/2016:

New help here:

How do I use the Profile Monitor Plot?​

See guide Profmon_GUI_help.pdf. The author keeps the guides in CVS so if it gets updated, the version on this website won't. If you know how to look into CVS and spot that the guide there is a newer version, please send me the new version so I can keep this up-to-date. Thanks, Christine.​


How do I use the emittance GUI?​

See guide Emittance_GUI_help.pdf. The author keeps the help files in CVS so if he updates it, this version here won't be up-to-date. If you know how to look in CVS and you see that the help file has been updated, send me the newest version so I can replace the one here. Thanks, Christine​

How do I do my own programming?​

There is a programmer's guide programming_guide_matlab_facet.pdf. The version that gets updated resides in CVS. If you know that it has been up-dated, please send me the new version.​



​Is there a general page that describes the high level applications?








How do I use the Timing System?

The trigger panel for the experimenter screens has been redesigned to be more User Friendly​ but should you find yourself faced with a different trigger panel or timing issue or you are just looking for more information... This is a presentation by Kukhee Kim that ought to help clarify matters.

How does the timing system work?




​What cameras are present at FACET?

After discussion with various current experiments, we landed on three cameras that will be “standard” at FACET:

 1. Low-resolution camera for laser alignment: AVT Mako G-032B

 2. Medium-resolution camera for beam profile monitors: AVT Mako G-125B

 3. High-resolution camera for specialized diagnostics: AVT Mako G-507B

 We plan to have these cameras in stock at FACET so if one dies we can replace it quickly.

 Other GigE models may be present and in fact, if there is another model that becomes particularly popular, FACET will likely start to stock it.

 Users can also bring their own cameras. User groups can discuss between themselves borrowing cameras.

E.g. E-300 cameras:

ORCA-Flash4.0 CMOS Digital Camera

PCO.Edge Camera


What cameras can be integrated (are supported) at FACET?

Bringing a camera into FACET and integrating it into the control system (for data acquisition) requires support from our controls group.

We have access to the LCLS controls group so we get remarkable expertise, leveraging their experience with the LCLS User Facility. Even if a particular camera has not been used at FACET before, they might have experience with it at LCLS.

If you want to bring in a camera and LCLS supports this camera, it is going to be relatively easy for us to add it to the suite at FACET.

Here are the supported camera Confluence pages for the LCLS Photon hutches:

Supported CamLink Camera Models <https://confluence.slac.stanford.edu/display/PCDS/Supported+CamLink+Camera+Models>
Supported GigE Camera Models <https://confluence.slac.stanford.edu/display/PCDS/Supported+GigE+Camera+Models>
These cameras are supported with EDT framegrabbers, but SLAC has also got its own framegrabbers and most of those models are also supported with the SLAC framegrabber.



​​How do I integrate my camera into the control system at FACET?

1) Check whether FACET has cameras already that you can borrow for your shift time. (See FAQ " What cameras are present at FACET?")

2) If not, check whether SLAC controls groups support a camera that meets your needs. It's relatively little effort for us to bring in a new camera to FACET if there is support already developed at SLAC. (See FAQ "What cameras can be integrated (are supported) at FACET?")

3) Finally, if you need to introduce a camera for which there is no existing support, we can engage our controls group to develop the support. It typically takes 2 weeks (full time) for an engineer to add support for a new Camlink module. If it is a new GigE camera (Allied Vision or Basler), it is usually just a few days work.

How often do cameras die from radiation?

The radiation environment at FACET has been characterized in a study here : see FAQ "How much dose is seen in the FACET tunnel"
Note that the study was with regards photon dose. The shielding does not affect neutron dose. The best method for the protection of equipment from neutrons is to put the camera outside of the accelerator housing and use mirrors. This has been done at SLAC but this is not typical at FACET.
Typically in FACET, available space precludes the use of shielding. Without shielding, our uncooled cameras (
Manta GigEs)  typically last a year (~2000 hours of normal operations, located close to the beamline)  though there are particular "hot spots" where cameras will not last a week. These tend to be on the dump table and have been located both through dose measurement and trial and error. Cameras on the dump table are usually located where doses are found to be low and mirrors used as required. Cooled sensors (E-200 cameras: pco.Edge, Hamamatsu Orca) may have longer lifetimes but have also died from radiation at dump table hotspots on the ~week timescale.
Due to the death-rate of cameras, we keep spares and design mounts such that cameras can be exchanged with minimal disruption.
Care must be taken during beamtime not to cause abnormal conditions that lead to camera damage particularly as cameras for multiple experiments tend to be installed at the same time. Abnormal beam loss can therefore affect other groups. It is important to be aware of the beam orbit. One case where the beam was not on the nominal orbit to the dump, a significant number of  cameras on the dump table died in a single shift.