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 software provides per-segment access to the class ModuleConfigV1 object with three methods
- moduleVersion()
- firmwareVersion()
- serialNumber()
which return 64-bit integer numbers like 1511699, 23403815178277, 3997947, respectively. However, some of these numbers in hexadecimal format looks as dates and times. For better readability the panel Id name can be formatted as '%s-%s-%s', for hexadecimal values with dropped '0x' (hex(v).lsplit('0x'), e.g. "171113-154920171025-3d00fb".
Then, total Jungfrau Id is a variable-length underscore-separated concatenation of sequential segment Id names, i.g. for two segments of exp=xcsls3716:run=631, XcsEndstation.0:Jungfrau.0 Id is 170505-149520170815-3d00b0_170505-149520170815-3d00f7.
API
Method returning Jungfrau and its segments' Ids is implemented in Detector/src/UtilsJungfrau.py and can be used as 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
which prints
id_jungfrau(env, src, 0): 171113-154920171025-3d00b0 id_jungfrau(env, src, 1): 171113-154920171025-3d00f7 id_jungfrau(env, src) : 171113-154920171025-3d00b0_171113-154920171025-3d00f7
CLI
A few commands which shed light 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
Summary of experiments/runs with jungfrau data on 2018-04-19 is listed below.
Dataset Runs DetInfo name Panel/detector Id or configuration object version ----------------------------------------------------------------------------------------------------------------------------- exp=mfx00616:run=8 1-8 MfxEndstation.0:Jungfrau.0 psana.Jungfrau.ConfigV1 exp=mfx05516:run=16 16 MfxEndstation.0:Jungfrau.0 171113-154920171025-3d00b0_171113-154920171025-3d00f7 exp=mfxlr1716:run=295 1-295 MfxEndstation.0:Jungfrau.0 171113-154920171025-3d00b0_171113-154920171025-3d00f7 exp=mfxlr5016:run=197 194-197 MfxEndstation.0:Jungfrau.0 171113-154920171025-3d00b0_171113-154920171025-3d00f7 exp=mfxx20515:run=2 1-2 MfxEndstation.0:Jungfrau.0 170505-149520170815-3d00b0_170505-149520170815-3d00f7 exp=mfx11116:run=697 563-697 MfxEndstation.0:Jungfrau.1 171113-154920171025-3d00fb exp=mfxls0816:run=193 1-193 MfxEndstation.0:Jungfrau.1 171113-154920171025-3d00fb exp=xcs11116:run=18 4-18 XcsEndstation.0:Jungfrau.0 psana.Jungfrau.ConfigV2 exp=xcsx22015:run=555 503-555 XcsEndstation.0:Jungfrau.0 psana.Jungfrau.ConfigV2 exp=xcsls3716:run=631 1-631 XcsEndstation.0:Jungfrau.0 170505-149520170815-3d00b0_170505-149520170815-3d00f7 exp=xcslr6316:run=17 4-17 XcsEndstation.0:Jungfrau.1 171113-154920171025-3d00fb exp=cxi11216:run=54 4-54 CxiEndstation.0:Jungfrau.0 psana.Jungfrau.ConfigV1 exp=detdaq17:run=68 3-68 DetLab.0:Jungfrau.0 171113-154920171025-3d00fb exp=xppls2416:run=247 1-247 XppEndstation.0:Jungfrau.1 171113-154920171025-3d00b0_171113-154920171025-3d00f7 exp=mecls3216:run=226 2-226 MecTargetChamber.0:Jungfrau.0 170505-149520170815-3d00b0_170505-149520170815-3d00f7
Calibration production
For now, firmware calibration for offset
and gain
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 with possible referencing
- 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 calibration directory for panels
Panel calibration files are collected under the directory
/reg/g/psdm/detector/gains/jungfrau/
To distinguish calibration versions the time-stamp in format YYYYMMDDHHMMSS is dash-concatenated at the end of the panel Id name. This time stamp stands for start time of the constants validity range.
Assignment of panel ids to directories with calibration files can be listed by the command:
ls -l /reg/g/psdm/detector/gains/jungfrau
lrwxrwxrwx 1 dubrovin ps-data 4 Apr 30 11:56 170505-149520170815-3d00b0-20171025000000 -> M068 lrwxrwxrwx 1 dubrovin ps-data 4 Apr 30 11:56 170505-149520170815-3d00f7-20171025000000 -> M088 drwxr-sr-x 2 dubrovin ps-data 2 Apr 30 12:01 171113-154920171025-3d00b0 drwxr-sr-x 2 dubrovin ps-data 2 Apr 30 12:01 171113-154920171025-3d00f7 lrwxrwxrwx 1 dubrovin ps-data 4 Apr 30 11:55 171113-154920171025-3d00fb-20180306000000 -> M044 drwxr-sr-x 2 dubrovin ps-data 12 Mar 27 12:11 M044 drwxr-sr-x 2 dubrovin ps-data 11 Mar 27 12:10 M068 drwxr-sr-x 2 dubrovin ps-data 11 Mar 27 12:10 M088
Questions
- prefix zeroes in the name
- calibration versions
References