Add file format initial support

This commit is contained in:
2018-01-11 17:40:42 +01:00
parent 2c7092bd1e
commit 4f51b0f3b3
2 changed files with 778 additions and 0 deletions
+730
View File
@@ -0,0 +1,730 @@
#include "h5_file_format.hpp"
h5_group get_format(){
auto format =
h5_group("entry", {
h5_attribute_val("NX_class", "NXentry"),
h5_dataset("title", "entry/title", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("definition", "entry/definition", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("end_time", "entry/end_time", NX_DATE_TIME, {
h5_attribute_val("NX_class", "NX_DATE_TIME")
}),
h5_dataset("start_time", "entry/start_time", NX_DATE_TIME, {
h5_attribute_val("NX_class", "NX_DATE_TIME")
}),
h5_group("control", {
h5_attribute_val("NX_class", "NXmonitor"),
h5_dataset("integral", "control/integral", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("mode", "control/mode", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("note", "control/note", NXnote, {
h5_attribute_val("NX_class", "NXnote")
})
}),
h5_group("plottable_data", {
h5_attribute_val("NX_class", "NXdata")
}),
h5_group("sample", {
h5_attribute_val("NX_class", "NXsample"),
h5_dataset("aequatorial_angle", "sample/aequatorial_angle", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_ANGLE", "deg")
}),
h5_dataset("description", "sample/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("name", "sample/name", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("y_translation", "sample/y_translation", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("x_translation", "sample/x_translation", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("temperature_log", "sample/temperature_log", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("instrument", {
h5_attribute_val("NX_class", "NXinstrument"),
h5_dataset("name", "instrument/name", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_group("slit_3", {
h5_attribute_val("NX_class", "NXslit"),
h5_dataset("y_gap", "slit_3/y_gap", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("height", "slit_3/height", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "slit_3/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("x_gap", "slit_3/x_gap", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("material", "slit_3/material", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("x_translation", "slit_3/x_translation", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("distance", "slit_3/distance", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("beam_stop_2", {
h5_attribute_val("NX_class", "NX_beamstop"),
h5_dataset("status", "beam_stop_2/status", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("y", "beam_stop_2/y", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("description", "beam_stop_2/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("size_y", "beam_stop_2/size_y", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("data", "beam_stop_2/data", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("distance_to_detector", "beam_stop_2/distance_to_detector", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("x", "beam_stop_2/x", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("size_x", "beam_stop_2/size_x", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("slit_2", {
h5_attribute_val("NX_class", "NXslit"),
h5_dataset("x_translation", "slit_2/x_translation", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("y_gap", "slit_2/y_gap", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("x_gap", "slit_2/x_gap", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("height", "slit_2/height", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("description", "slit_2/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("material", "slit_2/material", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("distance", "slit_2/distance", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("mirror", {
h5_attribute_val("NX_class", "NXmirror"),
h5_dataset("bend_y", "mirror/bend_y", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_ANY", "")
}),
h5_dataset("incident_angle", "mirror/incident_angle", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_ANGLE", "degrees")
}),
h5_dataset("type", "mirror/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("substrate_material", "mirror/substrate_material", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("description", "mirror/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("coating_material", "mirror/coating_material", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("distance", "mirror/distance", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("slit_4", {
h5_attribute_val("NX_class", "NXslit"),
h5_dataset("y_gap", "slit_4/y_gap", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("x_gap", "slit_4/x_gap", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("x_translation", "slit_4/x_translation", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("distance", "slit_4/distance", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("material", "slit_4/material", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("description", "slit_4/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("height", "slit_4/height", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("beam_stop_1", {
h5_attribute_val("NX_class", "NX_beamstop"),
h5_dataset("x", "beam_stop_1/x", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("size", "beam_stop_1/size", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("distance_to_detector", "beam_stop_1/distance_to_detector", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "beam_stop_1/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("y", "beam_stop_1/y", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("status", "beam_stop_1/status", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("XBPM5", {
h5_attribute_val("NX_class", "NXdetector_group"),
h5_dataset("group_parent", "XBPM5/group_parent", NX_INT, {
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("group_names", "XBPM5/group_names", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("group_index", "XBPM5/group_index", NX_INT, {
h5_attribute_val("NX_class", "NX_INT")
}),
h5_group("XBPM5_y", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("data", "XBPM5_y/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM5_y/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("XBPM5_x", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("data", "XBPM5_x/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM5_x/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("XBPM5", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("count_time", "XBPM5/count_time", NX_NUMBER, {
h5_attribute_val("NX_class", "NX_NUMBER"),
h5_attribute_val("NX_TIME", "s")
}),
h5_dataset("type", "XBPM5/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("distance", "XBPM5/distance", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("calibration_date", "XBPM5/calibration_date", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("description", "XBPM5/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("gain_setting", "XBPM5/gain_setting", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("XBPM5_skew", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("description", "XBPM5_skew/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("data", "XBPM5_skew/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("XBPM5_sum", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("saturation_value", "XBPM5_sum/saturation_value", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("data", "XBPM5_sum/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM5_sum/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
})
}),
h5_group("filter_set", {
h5_attribute_val("NX_class", "NXattenuator"),
h5_dataset("type", "filter_set/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("description", "filter_set/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("attenuator_transmission", "filter_set/attenuator_transmission", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("distance", "filter_set/distance", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("slit_1", {
h5_attribute_val("NX_class", "NXslit"),
h5_dataset("distance", "slit_1/distance", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("height", "slit_1/height", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("x_gap", "slit_1/x_gap", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("y_gap", "slit_1/y_gap", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("material", "slit_1/material", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("x_translation", "slit_1/x_translation", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "slit_1/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("XBPM6", {
h5_attribute_val("NX_class", "NXdetector_group"),
h5_dataset("group_parent", "XBPM6/group_parent", NX_INT, {
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("group_index", "XBPM6/group_index", NX_INT, {
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("group_names", "XBPM6/group_names", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_group("XBPM6_y", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("data", "XBPM6_y/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM6_y/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("XBPM6_x", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("description", "XBPM6_x/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("data", "XBPM6_x/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("XBPM6", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("gain_setting", "XBPM6/gain_setting", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("count_time", "XBPM6/count_time", NX_NUMBER, {
h5_attribute_val("NX_class", "NX_NUMBER"),
h5_attribute_val("NX_TIME", "s")
}),
h5_dataset("calibration_date", "XBPM6/calibration_date", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("distance", "XBPM6/distance", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM6/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("type", "XBPM6/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("XBPM6_skew", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("description", "XBPM6_skew/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("data", "XBPM6_skew/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("XBPM6_sum", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("data", "XBPM6_sum/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("saturation_value", "XBPM6_sum/saturation_value", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM6_sum/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
})
}),
h5_group("insertion_device", {
h5_attribute_val("NX_class", "NXinsertion_device"),
h5_dataset("k", "insertion_device/k", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_DIMENSIONLESS", "True")
}),
h5_dataset("type", "insertion_device/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("gap", "insertion_device/gap", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("harmonic", "insertion_device/harmonic", NX_INT, {
h5_attribute_val("NX_UNITLESS", "true"),
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("length", "insertion_device/length", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("slit_0", {
h5_attribute_val("NX_class", "NXslit"),
h5_dataset("x_gap", "slit_0/x_gap", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("distance", "slit_0/distance", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("description", "slit_0/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("x_translation", "slit_0/x_translation", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("material", "slit_0/material", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("monochromator", {
h5_attribute_val("NX_class", "NXmonochromator"),
h5_dataset("type", "monochromator/type", NXnote, {
h5_attribute_val("NX_class", "NXnote")
}),
h5_dataset("wavelength", "monochromator/wavelength", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_WAVELENGTH", "Angstrom")
}),
h5_dataset("distance", "monochromator/distance", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("wavelength_spread", "monochromator/wavelength_spread", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("energy", "monochromator/energy", NX_FLOAT, {
h5_attribute_val("NX_ENERGY", "keV"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_group("crystal_1", {
h5_attribute_val("NX_class", "NXcrystal"),
h5_dataset("bragg_angle", "crystal_1/bragg_angle", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_ANGLE", "degrees")
}),
h5_dataset("temperature", "crystal_1/temperature", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("order_no", "crystal_1/order_no", NX_INT, {
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("reflection", "crystal_1/reflection", NX_INT, {
h5_attribute_val("NX_class", "NX_INT"),
h5_attribute_val("NX_UNITLESS", "")
}),
h5_dataset("type", "crystal_1/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("usage", "crystal_1/usage", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("crystal_2", {
h5_attribute_val("NX_class", "NXcrystal"),
h5_dataset("temperature", "crystal_2/temperature", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("order_no", "crystal_2/order_no", NX_INT, {
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("usage", "crystal_2/usage", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("bragg_angle", "crystal_2/bragg_angle", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_ANGLE", "degrees")
}),
h5_dataset("type", "crystal_2/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("reflection", "crystal_2/reflection", NX_INT, {
h5_attribute_val("NX_UNITLESS", ""),
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("bend_x", "crystal_2/bend_x", NX_FLOAT, {
h5_attribute_val("NX_ANY", ""),
h5_attribute_val("NX_class", "NX_FLOAT")
})
})
}),
h5_group("XBPM4", {
h5_attribute_val("NX_class", "NXdetector_group"),
h5_dataset("group_index", "XBPM4/group_index", NX_INT, {
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("group_parent", "XBPM4/group_parent", NX_INT, {
h5_attribute_val("NX_class", "NX_INT")
}),
h5_dataset("group_names", "XBPM4/group_names", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_group("XBPM4_sum", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("data", "XBPM4_sum/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM4_sum/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("saturation_value", "XBPM4_sum/saturation_value", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("XBPM4", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("type", "XBPM4/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("calibration_date", "XBPM4/calibration_date", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("description", "XBPM4/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("count_time", "XBPM4/count_time", NX_NUMBER, {
h5_attribute_val("NX_TIME", "s"),
h5_attribute_val("NX_class", "NX_NUMBER")
}),
h5_dataset("gain_setting", "XBPM4/gain_setting", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("distance", "XBPM4/distance", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
})
}),
h5_group("XBPM4_skew", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("data", "XBPM4_skew/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM4_skew/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("XBPM4_x", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("data", "XBPM4_x/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("description", "XBPM4_x/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
})
}),
h5_group("XBPM4_y", {
h5_attribute_val("NX_class", "NX_detector"),
h5_dataset("description", "XBPM4_y/description", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("data", "XBPM4_y/data", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
})
})
}),
h5_group("source", {
h5_attribute_val("NX_class", "NXsource"),
h5_dataset("name", "source/name", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("distance", "source/distance", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("sigma_x", "source/sigma_x", NX_FLOAT, {
h5_attribute_val("NX_class", "NX_FLOAT"),
h5_attribute_val("NX_LENGTH", "mm")
}),
h5_dataset("probe", "source/probe", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("current", "source/current", NX_FLOAT, {
h5_attribute_val("NX_CURRENT", "mA"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("sigma_y", "source/sigma_y", NX_FLOAT, {
h5_attribute_val("NX_LENGTH", "mm"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("type", "source/type", NX_CHAR, {
h5_attribute_val("NX_class", "NX_CHAR")
}),
h5_dataset("divergence_x", "source/divergence_x", NX_FLOAT, {
h5_attribute_val("NX_ANGLE", "radians"),
h5_attribute_val("NX_class", "NX_FLOAT")
}),
h5_dataset("divergence_y", "source/divergence_y", NX_FLOAT, {
h5_attribute_val("NX_ANGLE", "radians"),
h5_attribute_val("NX_class", "NX_FLOAT")
})
})
})
});
return format;
}
int main (int argc, char *argv[])
{
}
+48
View File
@@ -0,0 +1,48 @@
#ifndef H5_FILE_FORMAT_H
#define H5_FILE_FORMAT_H
#include <string>
#include <list>
enum DATA_TYPE {
NX_FLOAT,
NX_CHAR,
NX_INT,
NX_DATE_TIME,
NX_NUMBER,
NXnote
};
struct h5_base {
h5_base(std::string name) : name(name), value_alias(name){};
h5_base(std::string name, std::string value_alias) : name(name), value_alias(value_alias){};
std::string name;
std::string value_alias;
};
struct h5_parent{
h5_parent(std::list<h5_base> items) : items(items) {};
std::list<h5_base> items;
};
struct h5_group : public h5_base, public h5_parent {
h5_group(std::string name, std::list<h5_base> items) : h5_base(name), h5_parent(items) {};
};
struct h5_dataset : public h5_base, public h5_parent{
h5_dataset(std::string name, DATA_TYPE type, std::list<h5_base> items={}) : h5_base(name), h5_parent(items), type(type) {};
h5_dataset(std::string name, std::string value_alias, DATA_TYPE type, std::list<h5_base> items={}) : h5_base(name, value_alias), h5_parent(items), type(type) {};
DATA_TYPE type;
};
struct h5_attribute : public h5_base {
h5_attribute(std::string name): h5_base(name){};
h5_attribute(std::string name, std::string value_alias): h5_base(name, value_alias){};
};
struct h5_attribute_val : public h5_attribute {
h5_attribute_val(std::string name, std::string value): h5_attribute(name){};
std::string value;
};
#endif