aboutsummaryrefslogtreecommitdiff
path: root/src/hdf5_utils.c
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2019-09-30 11:10:20 -0500
committertlatorre <tlatorre@uchicago.edu>2019-09-30 11:10:20 -0500
commit76006218bdb36fc1f11a33678b83ec0776cc6228 (patch)
tree2c87cfd51bcd4dfdde6d82b77abf6a8a57ed9cfc /src/hdf5_utils.c
parente41bc169e213bbb2fb1c132150736e3ad8760dd4 (diff)
downloadsddm-76006218bdb36fc1f11a33678b83ec0776cc6228.tar.gz
sddm-76006218bdb36fc1f11a33678b83ec0776cc6228.tar.bz2
sddm-76006218bdb36fc1f11a33678b83ec0776cc6228.zip
write out run header info to the hdf5 file
Diffstat (limited to 'src/hdf5_utils.c')
-rw-r--r--src/hdf5_utils.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/hdf5_utils.c b/src/hdf5_utils.c
index 2a8f396..2da7d58 100644
--- a/src/hdf5_utils.c
+++ b/src/hdf5_utils.c
@@ -30,7 +30,7 @@ char *GitDirty(void);
* chunked and extensible to allow the cat-grid-jobs script to work.
*
*/
-int save_output(const char *output, HDF5Event *hdf5_events, size_t nevents, HDF5MCGN *hdf5_mcgn, size_t nmcgn, HDF5Fit *hdf5_fits, size_t nfits)
+int save_output(const char *output, HDF5Event *hdf5_events, size_t nevents, HDF5MCGN *hdf5_mcgn, size_t nmcgn, HDF5Fit *hdf5_fits, size_t nfits, HDF5RHDR *hdf5_rhdr, size_t nrhdr)
{
hid_t hdf5_events_tid; /* File datatype identifier */
hid_t file, dataset, space; /* Handles */
@@ -39,6 +39,9 @@ int save_output(const char *output, HDF5Event *hdf5_events, size_t nevents, HDF5
hid_t hdf5_mcgn_tid; /* File datatype identifier */
hid_t dataset_mcgn, space_mcgn; /* Handles */
hsize_t dim_mcgn[1]; /* Dataspace dimensions */
+ hid_t hdf5_rhdr_tid; /* File datatype identifier */
+ hid_t dataset_rhdr, space_rhdr; /* Handles */
+ hsize_t dim_rhdr[1]; /* Dataspace dimensions */
hid_t hdf5_fits_tid; /* File datatype identifier */
hid_t dataset_fits, space_fits; /* Handles */
hsize_t dim_fits[1]; /* Dataspace dimensions */
@@ -53,6 +56,8 @@ int save_output(const char *output, HDF5Event *hdf5_events, size_t nevents, HDF5
space = H5Screate_simple(1, dim, NULL);
dim_mcgn[0] = nmcgn;
space_mcgn = H5Screate_simple(1, dim_mcgn, NULL);
+ dim_rhdr[0] = nrhdr;
+ space_rhdr = H5Screate_simple(1, dim_rhdr, NULL);
dim_fits[0] = nfits;
space_fits = H5Screate_simple(1, dim_fits, maxdims);
chunk_dims[0] = 10;
@@ -100,6 +105,11 @@ int save_output(const char *output, HDF5Event *hdf5_events, size_t nevents, HDF5
/*
* Create the memory data type.
*/
+ hdf5_rhdr_tid = H5Tcreate(H5T_COMPOUND, sizeof(HDF5RHDR));
+ H5Tinsert(hdf5_rhdr_tid, "run", HOFFSET(HDF5RHDR, run), H5T_NATIVE_INT);
+ H5Tinsert(hdf5_rhdr_tid, "run_mask", HOFFSET(HDF5RHDR, run_mask), H5T_NATIVE_UINT32);
+ H5Tinsert(hdf5_rhdr_tid, "first_gtid", HOFFSET(HDF5RHDR, first_gtid), H5T_NATIVE_UINT32);
+
hdf5_events_tid = H5Tcreate(H5T_COMPOUND, sizeof(HDF5Event));
H5Tinsert(hdf5_events_tid, "run", HOFFSET(HDF5Event, run), H5T_NATIVE_INT);
H5Tinsert(hdf5_events_tid, "sub_run", HOFFSET(HDF5Event, sub_run), H5T_NATIVE_INT);
@@ -156,6 +166,7 @@ int save_output(const char *output, HDF5Event *hdf5_events, size_t nevents, HDF5
* Create the dataset.
*/
dataset = H5Dcreate2(file, "ev", hdf5_events_tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ dataset_rhdr = H5Dcreate2(file, "rhdr", hdf5_rhdr_tid, space_rhdr, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
dataset_mcgn = H5Dcreate2(file, "mcgn", hdf5_mcgn_tid, space_mcgn, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
dataset_fits = H5Dcreate2(file, "fits", hdf5_fits_tid, space_fits, H5P_DEFAULT, dcpl_id, H5P_DEFAULT);
@@ -166,6 +177,8 @@ int save_output(const char *output, HDF5Event *hdf5_events, size_t nevents, HDF5
status = H5Dwrite(dataset, hdf5_events_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, hdf5_events);
if (nmcgn)
status = H5Dwrite(dataset_mcgn, hdf5_mcgn_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, hdf5_mcgn);
+ if (nrhdr)
+ status = H5Dwrite(dataset_rhdr, hdf5_rhdr_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, hdf5_rhdr);
if (nfits)
status = H5Dwrite(dataset_fits, hdf5_fits_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, hdf5_fits);
@@ -180,13 +193,16 @@ int save_output(const char *output, HDF5Event *hdf5_events, size_t nevents, HDF5
H5Aclose(attr2);
H5Tclose(hdf5_events_tid);
H5Tclose(hdf5_mcgn_tid);
+ H5Tclose(hdf5_rhdr_tid);
H5Tclose(hdf5_fits_tid);
H5Sclose(space);
H5Sclose(space_mcgn);
+ H5Sclose(space_rhdr);
H5Sclose(space_fits);
H5Pclose(dcpl_id);
H5Dclose(dataset);
H5Dclose(dataset_mcgn);
+ H5Dclose(dataset_rhdr);
H5Dclose(dataset_fits);
H5Fclose(file);