## Channel & device list

A standard channel naming is applied to the following devices:

- SARFE10-PSSS059
- SARFE10-PSSS059-LB
- SATOP21-PMOS127-1D
- SATOP21-PMOS127-2D
- SATOP31-PMOS132-1D
- SATOP31-PMOS132-2D
- SATOP11-PSAS079
- SATOP31-PSRD132
- SATOP31-PSRD175


All spectrometer data channels are listed in the following sheet:

[Sheet of spectrometer data channels](https://docs.google.com/spreadsheets/d/16Hz7MZR3E7-OmLHfakkT2K6yPMFUzp4eIFZxrzXWjFk/edit?usp=sharing)

## Nomenclature

| Style | Meaning |
|-------|---------|
| \<device name\>:**SPECTRUM**\* | Raw spectral data |
| \<device name\>:**FIT**\* | Results of Gaussian fit |
| \<device name\>:**SPECT**\* | Statistics from the raw (without fit) spectrum |
| \<device name\>:**AVG**\* | Data calculated from average (not single shot) spectra |

## Concepts

**Width and center**

Spectral width and central energy are calculated by both a Gaussian fit and directly from the spectra. Depending on the spectral intensity profile, the Gaussian may return a poor representation of the spectra, for example for a spectral with a long tail. Before both fitting and calculation the spiky single shot spectra are smoothed with a savgol filter:

```plaintext
# smooth the spectrum with savgol filter with 51 window size and 3rd order polynomial
smoothed_spectrum = scipy.signal.savgol_filter(spectrum, 51, 3)
```

The standard deviation and center of mass for the spectra are calculated as:

```plaintext
smoothed_spectrum_normed = smoothed_spectrum / np.sum(smoothed_spectrum)
spectrum_com = np.sum(axis * smoothed_spectrum_normed)
spectrum_std = np.sqrt(np.sum((axis - spectrum_com) ** 2 * smoothed_spectrum_normed))
```

**Relative energy spread**

Channels ending in **RES** are a measure of the relative energy spread in units of ‰. For **FIT** data the relative energy spread is calculated as:

$`\frac{2.355*\sigma}{\mu}`$

and for directly calculated values (**SPECT**):

$`\frac{2.355*RMS}{\text{Center of mass}}`$

where the factor or 2.355 is included to allow these values to be comparable.

**Spectral brightness**

To quantify an increase in the spectral intensity in a narrowing bandwidth, the so called Spectral brightness is calculated:

$`\text{Spectral brightness} = \frac{\text{Single shot intensity [uJ]}}{\text{Single shot spectral FWHM [eV]}}`$

At Aramis, the current channel used for the single shot pulse intensity is:  
`SARFE10-PBPG050:FAST-PULSE-ENERGY`

and the spectral FWHM uses the single-shot spectral width.  The result channel name is:  
`<device name>:FIT-BRT`  
indicating the data uses a Gaussian fit.  Be aware that this data is only meaningful if the spectral intensity distribution is near Gaussian.

## Data flow schematic

![](https://docs.google.com/drawings/d/e/2PACX-1vRShOtDRMpQTAY1p5oZKvRcuyLToMvmgzTQHOS_JrdQArvqcul-RoMcIobmKFc8RPgJVjGzULKczS5-/pub?w=1440&h=1080)

## CamServer setup

The PSSS has a dedicated server - sf-daqsync-11.psi.ch

### Store pipeline

- SARFE10-PSSS059_store
- 4 clients

This pipeline sends the camera image directly to the image buffer.

**Channels**

- SARFE10-PSSS059:FPICTURE

### PSSS pipeline

- SARFE10-PSSS059_psss
- 13 clients

This pipeline extracts the spectra, fits and produces the statistics.

**Channels**

- SARFE10-PSSS059:FIT-BRT
- SARFE10-PSSS059:FIT-COM
- SARFE10-PSSS059:FIT-FWHM
- SARFE10-PSSS059:FIT-RES
- SARFE10-PSSS059:FIT-RMS
- SARFE10-PSSS059:SPECT-COM
- SARFE10-PSSS059:SPECT-RES
- SARFE10-PSSS059:SPECT-RMS
- SARFE10-PSSS059:SPECTRUM_X
- SARFE10-PSSS059:SPECTRUM_Y
- SARFE10-PSSS059:SPECTRUM_Y_SUM
- SARFE10-PSSS059:processing_parameters