[1]:
import tables
import numpy as np
import matplotlib.pyplot as plt
DRS4 time sampling files#
HDF5 format#
[2]:
file = "../../../test_data/real/service/PixelCalibration/Cat-A/drs4_time_sampling_from_FF/20191124/pro/time_calibration.Run01625.0000.h5"
hdf5_f=tables.open_file(file, "r")
hdf5_f
[2]:
File(filename=../../../test_data/real/service/PixelCalibration/Cat-A/drs4_time_sampling_from_FF/20191124/pro/time_calibration.Run01625.0000.h5, title=np.str_('DRS4 time correction file'), mode='r', root_uep='/', filters=Filters(complevel=0, shuffle=False, bitshuffle=False, fletcher32=False, least_significant_digit=None))
/ (RootGroup) np.str_('DRS4 time correction file')
/fan (Array(np.int64(2), np.int64(1855), np.int64(16))) np.str_('')
atom := Float64Atom(shape=(), dflt=np.float64(0.0))
maindim := 0
flavor := np.str_('numpy')
byteorder := 'little'
chunkshape := None
/fbn (Array(np.int64(2), np.int64(1855), np.int64(16))) np.str_('')
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:
# - fan : baseline to be subtracted per channel/pixel/capacitor (2, 1855, 4096)
# - fbn : spike to be subtracted, per channel/pixel/spike-type (2, 1855, 3)
fan = hdf5_f.root.fan
fbn = hdf5_f.root.fbn
print(fan.shape)
np.array(fan)
(np.int64(2), np.int64(1855), np.int64(16))
[3]:
array([[[ 4.66838366e+01, 7.84005347e-01, -1.24891142e-01, ...,
-7.70001014e-03, -2.68429155e-02, 2.37796146e-02],
[ 4.62239672e+01, 3.77843085e-01, 1.65900728e-01, ...,
5.51706957e-02, 1.70310565e-02, 5.49935283e-02],
[ 4.78149744e+01, 4.38758590e-01, 9.55097829e-02, ...,
-1.58118562e-02, 1.24440432e-02, -6.88512574e-03],
...,
[ 4.46634307e+01, 4.00128871e-01, 1.88213911e-01, ...,
1.28111119e-02, -2.76051794e-03, -1.13856743e-03],
[ 4.28549040e+01, 5.25075495e-01, 3.27044193e-01, ...,
4.47137227e-02, -1.28659908e-02, 1.17646827e-02],
[ 4.37697422e+01, 9.66917458e-01, 1.23332897e-01, ...,
-5.96123847e-02, -3.70436398e-02, 2.10753446e-02]],
[[ 4.72300334e+01, -6.94735345e-03, 3.03494670e-01, ...,
-2.14449456e-02, 1.10874097e-02, -6.24232806e-02],
[ 4.76021422e+01, -1.55636421e-01, 2.19632759e-01, ...,
-1.01534066e-02, -1.38361747e-03, 3.77441866e-02],
[ 4.91503845e+01, -1.06240950e+00, -7.06074140e-02, ...,
1.25076451e-02, -2.90852626e-02, -1.71207132e-02],
...,
[ 4.52552690e+01, -9.60023808e-01, 5.77178740e-02, ...,
2.16251338e-02, 3.26090790e-03, 4.03090129e-02],
[ 4.38629100e+01, 2.04322195e+00, 2.00060760e-01, ...,
-2.40326456e-02, 6.85995403e-03, -6.11115694e-02],
[ 4.42727855e+01, 4.23063488e-01, 5.65776218e-01, ...,
4.05171738e-02, -4.02163240e-03, -4.61417993e-02]]],
shape=(2, 1855, 16))
[4]:
_=plt.hist(np.median(fan,axis=2)[0],bins=50,alpha=0.5,range=[-0.13,0.13], label="fan HG")
_=plt.hist(np.median(fbn,axis=2)[0],bins=50,alpha=0.5,range=[-0.13,0.13], label="fbn LG")
plt.yscale('log')
plt.legend()
[4]:
<matplotlib.legend.Legend at 0x7f45869d0fd0>

meta-data#
[5]:
hdf5_f.root._v_attrs
[5]:
/._v_attrs (AttributeSet), 42 attributes:
[CLASS := np.str_('GROUP'),
CTA ACTIVITY ID := np.str_('a982ebbd-9ca3-49a6-ace3-6f8f03bd33e7'),
CTA ACTIVITY NAME := np.str_('create_drs4_time_file'),
CTA ACTIVITY SOFTWARE NAME := np.str_('lstcam_calib'),
CTA ACTIVITY SOFTWARE VERSION := np.str_('0.1.dev217+g01a60dd'),
CTA ACTIVITY START TIME := np.str_('2024-07-15 13:28:22.665'),
CTA ACTIVITY STOP TIME := np.str_('2024-07-15 13:34:48.514'),
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-07-15 13:34:48.538'),
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_('DRS4 sampling time coefficients'),
CTA PRODUCT FORMAT := np.str_(''),
CTA PRODUCT ID := np.str_('a25b28a5-71a0-4828-8073-92973a30b9e6'),
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.dev217+g01a60dd'),
PROV_LOG := np.str_('/fefs/aswg/workspace/franca.cassol/data/real/monitoring/PixelCalibration/Cat-A_ctapipe_v0.17/drs4_time_sampling_from_FF/20191124/v0.1.dev217+g01a60dd/log/time_calibration.Run01625.0000_2024-07-15T13:28:12.provenance.log'),
PYTABLES_FORMAT_VERSION := np.str_('2.1'),
RUN_START := np.str_('2019-11-24 22:04:03.000'),
TEL_ID := np.int64(1),
TITLE := np.str_('DRS4 time correction file'),
VERSION := np.str_('1.0'),
n_events := np.int64(9270),
n_harm := np.int64(16)]
Fits format#
[6]:
from astropy.io import fits
file = "../../../test_data/real/service/PixelCalibration/Cat-A/drs4_time_sampling_from_FF/20191124/pro/time_calibration.Run01625.0000.fits.gz"
fits_f = fits.open(file)
HDU#
[7]:
fits_f.info()
Filename: ../../../test_data/real/service/PixelCalibration/Cat-A/drs4_time_sampling_from_FF/20191124/pro/time_calibration.Run01625.0000.fits.gz
No. Name Ver Type Cards Dimensions Format
0 PRIMARY 1 PrimaryHDU 40 ()
1 FAN 1 ImageHDU 11 (16, 1855, 2) float64
2 FBN 1 ImageHDU 11 (16, 1855, 2) float64
data#
[8]:
fits_f["FAN"].data
[8]:
array([[[ 4.66838366e+01, 7.84005347e-01, -1.24891142e-01, ...,
-7.70001014e-03, -2.68429155e-02, 2.37796146e-02],
[ 4.62239672e+01, 3.77843085e-01, 1.65900728e-01, ...,
5.51706957e-02, 1.70310565e-02, 5.49935283e-02],
[ 4.78149744e+01, 4.38758590e-01, 9.55097829e-02, ...,
-1.58118562e-02, 1.24440432e-02, -6.88512574e-03],
...,
[ 4.46634307e+01, 4.00128871e-01, 1.88213911e-01, ...,
1.28111119e-02, -2.76051794e-03, -1.13856743e-03],
[ 4.28549040e+01, 5.25075495e-01, 3.27044193e-01, ...,
4.47137227e-02, -1.28659908e-02, 1.17646827e-02],
[ 4.37697422e+01, 9.66917458e-01, 1.23332897e-01, ...,
-5.96123847e-02, -3.70436398e-02, 2.10753446e-02]],
[[ 4.72300334e+01, -6.94735345e-03, 3.03494670e-01, ...,
-2.14449456e-02, 1.10874097e-02, -6.24232806e-02],
[ 4.76021422e+01, -1.55636421e-01, 2.19632759e-01, ...,
-1.01534066e-02, -1.38361747e-03, 3.77441866e-02],
[ 4.91503845e+01, -1.06240950e+00, -7.06074140e-02, ...,
1.25076451e-02, -2.90852626e-02, -1.71207132e-02],
...,
[ 4.52552690e+01, -9.60023808e-01, 5.77178740e-02, ...,
2.16251338e-02, 3.26090790e-03, 4.03090129e-02],
[ 4.38629100e+01, 2.04322195e+00, 2.00060760e-01, ...,
-2.40326456e-02, 6.85995403e-03, -6.11115694e-02],
[ 4.42727855e+01, 4.23063488e-01, 5.65776218e-01, ...,
4.05171738e-02, -4.02163240e-03, -4.61417993e-02]]],
shape=(2, 1855, 16), dtype='>f8')
meta-data#
[9]:
fits_f["PRIMARY"].header
[9]:
SIMPLE = T / conforms to FITS standard
BITPIX = 8 / array data type
NAXIS = 0 / number of array dimensions
EXTEND = T
HIERARCH CTA REFERENCE VERSION = '1 '
HIERARCH CTA CONTACT EMAIL = 'unknown '
HIERARCH CTA CONTACT NAME = 'Franca Cassol'
HIERARCH CTA CONTACT ORGANIZATION = 'LST Consortium'
HIERARCH CTA PRODUCT CREATION TIME = '2024-09-10 15:47:01.203'
HIERARCH CTA PRODUCT DATA ASSOCIATION = 'Telescope'
HIERARCH CTA PRODUCT DATA CATEGORY = 'A '
HIERARCH CTA PRODUCT DATA LEVELS = 'R1 '
HIERARCH CTA PRODUCT DATA MODEL NAME = 'Unofficial monitoring R1'
HIERARCH CTA PRODUCT DATA MODEL URL = 'unknown '
HIERARCH CTA PRODUCT DATA MODEL VERSION = '1.0 '
HIERARCH CTA PRODUCT DESCRIPTION = 'DRS4 sampling time coefficients'
HIERARCH CTA PRODUCT FORMAT = ''
HIERARCH CTA PRODUCT ID = '4ffe0465-c8bd-4492-85a1-5238b99bb449'
HIERARCH CTA PROCESS ID = ''
HIERARCH CTA PROCESS SUBTYPE = 'Calibration'
HIERARCH CTA PROCESS TYPE = 'Observation'
HIERARCH CTA ACTIVITY ID = '3e631709-192a-4684-aada-fe80e95a60bc'
HIERARCH CTA ACTIVITY NAME = 'create_drs4_time_file'
HIERARCH CTA ACTIVITY SOFTWARE NAME = 'lstcam_calib'
HIERARCH CTA ACTIVITY SOFTWARE VERSION = '0.1.dev292+g60dda5e'
HIERARCH CTA ACTIVITY START TIME = '2024-09-10 15:41:35.611'
HIERARCH CTA ACTIVITY STOP TIME = '2024-09-10 15:47:01.193'
HIERARCH CTA ACTIVITY TYPE = 'software'
HIERARCH CTA INSTRUMENT CLASS = 'Camera '
HIERARCH CTA INSTRUMENT ID = 'unspecified'
HIERARCH CTA INSTRUMENT SITE = 'CTA-North'
HIERARCH CTA INSTRUMENT SUBTYPE = 'unspecified'
HIERARCH CTA INSTRUMENT TYPE = 'LST '
HIERARCH CTA INSTRUMENT VERSION = 'unspecified'
HIERARCH LSTCAM_CALIB_VERSION = '0.1.dev292+g60dda5e'
HIERARCH CTAPIPE_VERSION = '0.19.3 '
HIERARCH CTAPIPE_IO_LST_VERSION = '0.22.6 '
TEL_ID = 1
PROV_LOG= '/fefs/aswg/workspace/franca.cassol/data/real/monitoring/PixelCalibr&'
CONTINUE 'ation/Cat-A_ctapipe_v0.17/drs4_time_sampling_from_FF/20191124/v0.1.&'
CONTINUE 'dev292+g60dda5e/log/time_calibration.Run01625.0000_2024-09-10T15:41&'
CONTINUE ':28.provenance.log'
HIERARCH RUN_START = '2019-11-24 22:04:03.000'
[10]:
fits_f["FAN"].header
[10]:
XTENSION= 'IMAGE ' / Image extension
BITPIX = -64 / array data type
NAXIS = 3 / number of array dimensions
NAXIS1 = 16
NAXIS2 = 1855
NAXIS3 = 2
PCOUNT = 0 / number of parameters
GCOUNT = 1 / number of groups
EXTNAME = 'FAN ' / extension name
N_EVENTS= 9270
N_HARM = 16