Content
Intro
This page describes mechanism of calibration constants dynamic generation and access for multi-panel jungfrau detector. This is relevant to rarely changed constants of types gain
and offset
, e.g. for single-panel detector
- gain: shape:(3, 1, 512, 1024) size:1572864 dtype:float32
- offset: shape:(3, 1, 512, 1024) size:1572864 dtype:float32
which are combined from 3 per-panel files with shape (512, 1024).
Naming conventions
Since psana.Jungfrau.ConfigV3 Jungfrau provides per-segment access to class ModuleConfigV1 object with three methods
- moduleVersion()
- firmwareVersion()
- serialNumber()
returning 64-bit integer numbers. For better human readability the segment Id name can be formatted as '%d-%d-%d', e.g. "1508613-3997943-22630721062933".
Then, total Jungfrau Id is a variable-length dash separated combination of sequential segment Id names, i.g. for two segments of exp=xcsls3716:run=631, XcsEndstation.0:Jungfrau.0 Id is 1508613-22630721062933-3997872-1508613-22630721062933-3997943.
API
Method returning Jungfrau and its segments' Ids is implemented in Detector/src/UtilsJungfrau.py, and can be used as shown in example:
import psana from Detector.UtilsJungfrau import id_jungfrau ds = psana.DataSource('xpptut15:run=430') env = ds.env() src = 'MfxEndstation.0:Jungfrau.0' # or part of the DetInfo name 'Jung' or 'Jungfrau.1' or alias 'jungfrau1M' print 'id_jungfrau(env, src, 0):', id_jungfrau(env, src, iseg=0) # for segment 0 print 'id_jungfrau(env, src, 1):', id_jungfrau(env, src, iseg=1) # for segment 1 print 'id_jungfrau(env, src) :', id_jungfrau(env, src) # for all segments
prints something like
id_jungfrau(env, src, 0): 1508613-22630721062933-3997872 id_jungfrau(env, src, 1): 1508613-22630721062933-3997943 id_jungfrau(env, src) : 1508613-22630721062933-3997872-1508613-22630721062933-3997943
CLI
A few commands which shed lights on data with jungfrau detector are listed below.
Command line to get jungfrau Id:
jungfrau_id exp=xpptut15:run=430 [Jungfrau.0]
Command line to get jungfrau psana.EventKey objects:
event_keys -d exp=xpptut15:run=430 -m2 -p Jung
Command line to find experiment runs with jungfrau:
find_detector_runs MFX jungfrau
Available data
Calibration production
For now firmware calibration is produced per segment (named as M044, M068, M088, etc.), e.g. directory /reg/g/psdm/detector/gains/jungfrau/M088/ contains:
g0_gain.npy g0_offset.npy g1_gain.npy g1_offset.npy g2_gain.npy g2_offset.npy
For auto-generation of calibration files it is suggested to
- keep segment calibration files under /reg/g/psdm/detector/gains/jungfrau/
- use segment Id names in stead of M088 etc
- keep the same naming conventions for gain range and type (g1_gain.npy, g1_offset.npy, g2_gain.npy, etc.)
- versions?
Calibration file for particular detector can be generated dynamically using names of its segments from configuration data. Thus generated file can be deployed in the calib or "generic" repository.
Content of panel calibration directory
/reg/g/psdm/detector/gains/jungfrau/
1508613-22630721062933-3997872/ 1508613-22630721062933-3997943/ 1511699-23403815178277-3997872/ 1511699-23403815178277-3997943/ 1511699-23403815178277-3997947/ M044/ M068/ M088/
Questions
- prefix zeroes in the name
- calibration versions
References