Jungfraujoch

Jungfraujoch is a FPGA based data backed developed by Filip Leonarski. It started as a project focused on MX at synchrotrons but has evolved to general data backend.

Attention

Jungfraujoch will move to https://gitea.psi.ch in the future, since the PSI gitlab is being phased out.

Installation

The Jungfraujoch FPGA card is mounted in noehter and the detector is directly connected using optical fibers.

The code is compiled locally on noehter /home/psi/nextgendcu and the binaries are stored in /opt/jfjoch.

Installation location:

#installation location
/opt/jfjoch

#Detector configuration
/opt/etc/broker_jf1M.json

#Web frontend
/opt/jfjoch_frontend

#Detector calibration
/opt/cal

Updating Jungfraujoch

Attention

Always check the latest deployment documentation before updating JFJ. https://jungfraujoch.readthedocs.io/en/latest/DEPLOYMENT.html

Update the FPGA firmware

  1. Download the latest firmware from the Jungfraujoch repository.

  2. Make sure the card is not un use by unloading the kernel module [TBC]:

    sudo rmmod jfjoch
    
  3. Flash the firmware to the FPGA card using xbflash.qspi

  4. Server needs a hard reboot sudo ipmitool chassis power cycle

Update the code

# Update the Jungfraujoch code
cd /home/psi/nextgendcu
git pull

# Compile the code
make -j20

# Install JFJ (will need sudo/root access to update the kernel module)
make install

Copy the new frontend

  1. Download the frontend from the Jungfraujoch repository.

  2. Copy the new frontend to the web server directory:

    tar -xvf jfjoch_frontend.tar.gz -C /opt/jfjoch_frontend
    

JFJ hdf5 file content

HDF5 "dark_long2_master.h5" {
FILE_CONTENTS {
group      /
group      /entry
group      /entry/data
ext link   /entry/data/data_000001 -> dark_long2_data_000001.h5 /entry/data/data
ext link   /entry/data/data_000002 -> dark_long2_data_000002.h5 /entry/data/data
ext link   /entry/data/data_000003 -> dark_long2_data_000003.h5 /entry/data/data
ext link   /entry/data/data_000004 -> dark_long2_data_000004.h5 /entry/data/data
ext link   /entry/data/data_000005 -> dark_long2_data_000005.h5 /entry/data/data
ext link   /entry/data/data_000006 -> dark_long2_data_000006.h5 /entry/data/data
ext link   /entry/data/data_000007 -> dark_long2_data_000007.h5 /entry/data/data
ext link   /entry/data/data_000008 -> dark_long2_data_000008.h5 /entry/data/data
ext link   /entry/data/data_000009 -> dark_long2_data_000009.h5 /entry/data/data
ext link   /entry/data/data_000010 -> dark_long2_data_000010.h5 /entry/data/data
dataset    /entry/definition
dataset    /entry/end_time
dataset    /entry/end_time_estimated
group      /entry/instrument
group      /entry/instrument/beam
dataset    /entry/instrument/beam/incident_wavelength
group      /entry/instrument/detector
dataset    /entry/instrument/detector/acquisition_type
dataset    /entry/instrument/detector/beam_center_x
dataset    /entry/instrument/detector/beam_center_y
dataset    /entry/instrument/detector/bit_depth_image
dataset    /entry/instrument/detector/bit_depth_readout
group      /entry/instrument/detector/calibration
dataset    /entry/instrument/detector/calibration/pedestal_g0
dataset    /entry/instrument/detector/calibration/pedestal_g1
dataset    /entry/instrument/detector/calibration/pedestal_g2
dataset    /entry/instrument/detector/calibration/pedestal_rms_g0
dataset    /entry/instrument/detector/calibration/pedestal_rms_g1
dataset    /entry/instrument/detector/calibration/pedestal_rms_g2
dataset    /entry/instrument/detector/count_time
dataset    /entry/instrument/detector/countrate_correction_applied
dataset    /entry/instrument/detector/description
group      /entry/instrument/detector/detectorSpecific
dataset    /entry/instrument/detector/detectorSpecific/data_collection_efficiency
dataset    /entry/instrument/detector/detectorSpecific/data_reduction_factor_serialmx
dataset    /entry/instrument/detector/detectorSpecific/gain_file_names
dataset    /entry/instrument/detector/detectorSpecific/jfjoch_release
dataset    /entry/instrument/detector/detectorSpecific/max_receiver_delay
dataset    /entry/instrument/detector/detectorSpecific/nimages
dataset    /entry/instrument/detector/detectorSpecific/nimages_collected
dataset    /entry/instrument/detector/detectorSpecific/nimages_written
dataset    /entry/instrument/detector/detectorSpecific/ntrigger
dataset    /entry/instrument/detector/detectorSpecific/pixel_mask
dataset    /entry/instrument/detector/detectorSpecific/software_git_commit
dataset    /entry/instrument/detector/detectorSpecific/software_git_date
dataset    /entry/instrument/detector/detectorSpecific/storage_cell_number
dataset    /entry/instrument/detector/detectorSpecific/x_pixels_in_detector
dataset    /entry/instrument/detector/detectorSpecific/y_pixels_in_detector
dataset    /entry/instrument/detector/detector_distance
dataset    /entry/instrument/detector/distance
dataset    /entry/instrument/detector/error_value
dataset    /entry/instrument/detector/flatfield_applied
dataset    /entry/instrument/detector/frame_time
group      /entry/instrument/detector/module
dataset    /entry/instrument/detector/module/data_origin
dataset    /entry/instrument/detector/module/data_size
dataset    /entry/instrument/detector/module/fast_pixel_direction
dataset    /entry/instrument/detector/module/module_offset
dataset    /entry/instrument/detector/module/slow_pixel_direction
dataset    /entry/instrument/detector/number_of_cycles
dataset    /entry/instrument/detector/pixel_mask -> /entry/instrument/detector/detectorSpecific/pixel_mask
dataset    /entry/instrument/detector/pixel_mask_applied
dataset    /entry/instrument/detector/saturation_value
dataset    /entry/instrument/detector/sensor_material
dataset    /entry/instrument/detector/sensor_thickness
group      /entry/instrument/detector/transformations
dataset    /entry/instrument/detector/transformations/translation
dataset    /entry/instrument/detector/x_pixel_size
dataset    /entry/instrument/detector/y_pixel_size
dataset    /entry/instrument/name
group      /entry/result
group      /entry/result/adu_histogram
dataset    /entry/result/adu_histogram/bin_width
dataset    /entry/result/adu_histogram/module0
group      /entry/result/azimIntegration
dataset    /entry/result/azimIntegration/bin_to_q
dataset    /entry/result/azimIntegration/dataset
group      /entry/sample
dataset    /entry/sample/depends_on
group      /entry/source
dataset    /entry/source/name
dataset    /entry/source/type
dataset    /entry/start_time
}
}