F-factor systematics files#

[1]:
import tables
import matplotlib.pyplot as plt
import numpy as np
from lstcam_calib.io import get_dataset_keys

HDF5 format#

[2]:
file = "../../../test_data/real/service/PixelCalibration/Cat-A/ffactor_systematics/20200725/pro/ffactor_systematics_20200725.h5"
hdf5_f=tables.open_file(file, "r")
hdf5_f
[2]:
File(filename=../../../test_data/real/service/PixelCalibration/Cat-A/ffactor_systematics/20200725/pro/ffactor_systematics_20200725.h5, title=np.str_('Fit of filter scan'), mode='r', root_uep='/', filters=Filters(complevel=0, shuffle=False, bitshuffle=False, fletcher32=False, least_significant_digit=None))
/ (RootGroup) np.str_('Fit of filter scan')
/B_term (Array(np.int64(2), np.int64(1855))) np.str_('Quadratic coefficient of F-factor formula, estimated by the fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None
/bad_fit_mask (Array(np.int64(2), np.int64(1855))) np.str_('Mask of pixels with failing fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None
/covariance_matrix (Array(np.int64(2), np.int64(1855), np.int64(4))) np.str_('Covariance matrix of the fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None
/gain (Array(np.int64(2), np.int64(1855))) np.str_('Pixel gain estimated by the fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None
/runs (Array(np.int64(19),)) np.str_('Total list of Runs')
  atom := Int64Atom(shape=(), dflt=np.int64(0))
  maindim := 0
  flavor := np.str_('python')
  byteorder := 'little'
  chunkshape := None
/runs_HG (Array(np.int64(8),)) np.str_('Runs used in HG fit ')
  atom := Int64Atom(shape=(), dflt=np.int64(0))
  maindim := 0
  flavor := np.str_('python')
  byteorder := 'little'
  chunkshape := None
/runs_LG (Array(np.int64(16),)) np.str_('Runs used in LG fit ')
  atom := Int64Atom(shape=(), dflt=np.int64(0))
  maindim := 0
  flavor := np.str_('python')
  byteorder := 'little'
  chunkshape := None
/signal_HG (Array(np.int64(1855), np.int64(8))) np.str_('HG signal charge used in fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None
/signal_LG (Array(np.int64(1855), np.int64(16))) np.str_('LG signal charge used in fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None
/sub_run (Array()) np.str_('Considered sub-run')
  atom := Int64Atom(shape=(), dflt=np.int64(0))
  maindim := 0
  flavor := np.str_('python')
  byteorder := 'little'
  chunkshape := None
/variance_HG (Array(np.int64(1855), np.int64(8))) np.str_('HG signal variance used in fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None
/variance_LG (Array(np.int64(1855), np.int64(16))) np.str_('LG signal variance used in fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None

Data#

[3]:
# Data used for calibration are:
# - B_term : quadratic coefficient in the LST f-factor formula per channel and pixel (2, 1855)

B_term = hdf5_f.root.B_term
B_term

[3]:
/B_term (Array(np.int64(2), np.int64(1855))) np.str_('Quadratic coefficient of F-factor formula, estimated by the fit')
  atom := Float64Atom(shape=(), dflt=np.float64(0.0))
  maindim := 0
  flavor := np.str_('numpy')
  byteorder := 'little'
  chunkshape := None
[4]:
np.array(B_term)
[4]:
array([[0.02021849, 0.03268668, 0.02034296, ..., 0.01992334, 0.01697135,
        0.02660754],
       [0.02565263, 0.03096585, 0.03583796, ..., 0.0349733 , 0.0391724 ,
        0.03184394]], shape=(2, 1855))
[5]:
np.array(hdf5_f.root.runs)
[5]:
array([2308, 2309, 2310, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319,
       2320, 2321, 2323, 2324, 2325, 2326, 2331, 2332])

Meta-data#

[6]:
hdf5_f.root._v_attrs
[6]:
/._v_attrs (AttributeSet), 40 attributes:
   [CLASS := np.str_('GROUP'),
    CTA ACTIVITY ID := np.str_('d77ce9d1-3b2f-4f63-95e4-ad6b06c5ec83'),
    CTA ACTIVITY NAME := np.str_('FitFilterScan'),
    CTA ACTIVITY SOFTWARE NAME := np.str_('lstcam_calib'),
    CTA ACTIVITY SOFTWARE VERSION := np.str_('0.1.dev296+g9bc28ad'),
    CTA ACTIVITY START TIME := np.str_('2024-09-12 15:07:35.212'),
    CTA ACTIVITY STOP TIME := np.str_('2024-09-12 15:08:05.038'),
    CTA ACTIVITY TYPE := np.str_('software'),
    CTA CONTACT EMAIL := np.str_('unknown'),
    CTA CONTACT NAME := np.str_('Franca Cassol'),
    CTA CONTACT ORGANIZATION := np.str_('LST Consortium'),
    CTA INSTRUMENT CLASS := np.str_('Camera'),
    CTA INSTRUMENT ID := np.str_('unspecified'),
    CTA INSTRUMENT SITE := np.str_('CTA-North'),
    CTA INSTRUMENT SUBTYPE := np.str_('unspecified'),
    CTA INSTRUMENT TYPE := np.str_('LST'),
    CTA INSTRUMENT VERSION := np.str_('unspecified'),
    CTA PROCESS ID := np.str_(''),
    CTA PROCESS SUBTYPE := np.str_('Calibration'),
    CTA PROCESS TYPE := np.str_('Observation'),
    CTA PRODUCT CREATION TIME := np.str_('2024-09-12 15:08:05.062'),
    CTA PRODUCT DATA ASSOCIATION := np.str_('Telescope'),
    CTA PRODUCT DATA CATEGORY := np.str_('A'),
    CTA PRODUCT DATA LEVELS := np.str_('R1'),
    CTA PRODUCT DATA MODEL NAME := np.str_('Unofficial monitoring R1'),
    CTA PRODUCT DATA MODEL URL := np.str_('unknown'),
    CTA PRODUCT DATA MODEL VERSION := np.str_('1.0'),
    CTA PRODUCT DESCRIPTION := np.str_('FFactor systematics coefficients'),
    CTA PRODUCT FORMAT := np.str_(''),
    CTA PRODUCT ID := np.str_('eb879a59-4b24-43af-8ccb-828b331165b9'),
    CTA REFERENCE VERSION := np.str_('1'),
    CTAPIPE_IO_LST_VERSION := np.str_('0.22.6'),
    CTAPIPE_VERSION := np.str_('0.19.3'),
    LSTCAM_CALIB_VERSION := np.str_('0.1.dev296+g9bc28ad'),
    PROV_LOG := np.str_('/fefs/aswg/workspace/franca.cassol/data/real/monitoring/PixelCalibration/Cat-A_ctapipe_v0.17/ffactor_systematics/20200725/v0.1.dev296+g9bc28ad/log/scan_fit_20200725.0000_2024-09-12T15:07:26.provenance.log'),
    PYTABLES_FORMAT_VERSION := np.str_('2.1'),
    RUN_START := np.str_('2020-07-26 01:25:53.000'),
    TEL_ID := np.int64(1),
    TITLE := np.str_('Fit of filter scan'),
    VERSION := np.str_('1.0')]