17#include <nlohmann/json.hpp>
23encode_geoid(
int det_id,
int crate_id,
int slot_id,
int stream_id)
25 return (
static_cast<uint64_t
>(stream_id) << 48) | (
static_cast<uint64_t
>(slot_id) << 32) |
26 (
static_cast<uint64_t
>(crate_id) << 16) |
det_id;
34 for (
auto& app :
session->all_applications()) {
39 for (
auto d2d_conn : ro_app->get_detector_connections()) {
42 if (d2d_conn->is_disabled(*
session)) {
43 TLOG_DEBUG(7) <<
"Ignoring disabled DetectorToDaqConnection " << d2d_conn->UID();
47 TLOG() <<
"Processing DetectorToDaqConnection " << d2d_conn->UID();
52 for (
auto dros : d2d_conn->streams()) {
55 if (dros->is_disabled(*
session)) {
56 TLOG_DEBUG(7) <<
"Ignoring disabled DetectorStream " << dros->UID();
64 encode_geoid(geoid->get_detector_id(), geoid->get_crate_id(), geoid->get_slot_id(), geoid->get_stream_id());
67 sid.
id = stream->get_source_id();
69 output_map[sid].push_back(geoid_int);
193 const std::string& hdf5_path)
195 source_id_path_map[source_id] = hdf5_path;
203 if (source_id_geo_id_map.count(source_id) == 0) {
204 std::vector<uint64_t> tmp_vec;
205 tmp_vec.push_back(geo_id);
206 source_id_geo_id_map[source_id] = tmp_vec;
208 source_id_geo_id_map[source_id].push_back(geo_id);
217 if (fragment_type_source_id_map.count(fragment_type) == 0) {
218 std::set<daqdataformats::SourceID> tmp_set;
219 tmp_set.insert(source_id);
220 fragment_type_source_id_map[fragment_type] = tmp_set;
222 fragment_type_source_id_map[fragment_type].insert(source_id);
231 if (subdetector_source_id_map.count(subdetector) == 0) {
232 std::set<daqdataformats::SourceID> tmp_set;
233 tmp_set.insert(source_id);
234 subdetector_source_id_map[subdetector] = tmp_set;
236 subdetector_source_id_map[subdetector].insert(source_id);
245 if (subsystem_source_id_map.count(subsystem) == 0) {
246 std::set<daqdataformats::SourceID> tmp_set;
247 tmp_set.insert(source_id);
248 subsystem_source_id_map[subsystem] = tmp_set;
250 subsystem_source_id_map[subsystem].insert(source_id);
257 nlohmann::json json_struct;
258 json_struct[
"subsys"] =
static_cast<uint32_t
>(source_id.
subsystem);
259 json_struct[
"id"] = source_id.
id;
260 return json_struct.dump();
266 nlohmann::json json_struct;
267 for (
auto const& map_element : the_map) {
268 nlohmann::json json_element;
269 json_element[
"subsys"] =
static_cast<uint32_t
>(map_element.first.subsystem);
270 json_element[
"id"] = map_element.first.id;
271 json_element[
"path"] = map_element.second;
272 json_struct[
"map_entries"].push_back(json_element);
274 return json_struct.dump();
280 nlohmann::json json_struct;
281 for (
auto const& map_element : the_map) {
282 nlohmann::json json_geo_id_list;
283 for (
auto const& geo_id_from_map : map_element.second) {
284 json_geo_id_list.push_back(geo_id_from_map);
286 nlohmann::json json_element;
287 json_element[
"subsys"] =
static_cast<uint32_t
>(map_element.first.subsystem);
288 json_element[
"id"] = map_element.first.id;
289 json_element[
"geoids"] = json_geo_id_list;
290 json_struct[
"map_entries"].push_back(json_element);
292 return json_struct.dump();
298 nlohmann::json json_struct;
299 for (
auto const& map_element : the_map) {
300 nlohmann::json json_source_id_list;
301 for (
auto const& source_id_from_map : map_element.second) {
302 nlohmann::json json_source_id;
303 json_source_id[
"subsys"] =
static_cast<uint32_t
>(source_id_from_map.subsystem);
304 json_source_id[
"id"] = source_id_from_map.id;
305 json_source_id_list.push_back(json_source_id);
307 nlohmann::json json_element;
308 json_element[
"fragment_type"] =
static_cast<uint32_t
>(map_element.first);
309 json_element[
"sourceids"] = json_source_id_list;
310 json_struct[
"map_entries"].push_back(json_element);
312 return json_struct.dump();
318 nlohmann::json json_struct;
319 for (
auto const& map_element : the_map) {
320 nlohmann::json json_source_id_list;
321 for (
auto const& source_id_from_map : map_element.second) {
322 nlohmann::json json_source_id;
323 json_source_id[
"subsys"] =
static_cast<uint32_t
>(source_id_from_map.subsystem);
324 json_source_id[
"id"] = source_id_from_map.id;
325 json_source_id_list.push_back(json_source_id);
327 nlohmann::json json_element;
328 json_element[
"subdetector"] =
static_cast<uint32_t
>(map_element.first);
329 json_element[
"sourceids"] = json_source_id_list;
330 json_struct[
"map_entries"].push_back(json_element);
332 return json_struct.dump();
338 nlohmann::json json_struct = nlohmann::json::parse(json_string);
348 nlohmann::json json_struct = nlohmann::json::parse(json_string);
349 for (
auto const& json_element : json_struct[
"map_entries"]) {
354 source_id_path_map[source_id] = json_element[
"path"];
361 nlohmann::json json_struct = nlohmann::json::parse(json_string);
362 for (
auto const& json_element : json_struct[
"map_entries"]) {
367 std::vector<uint64_t> local_geo_id_list;
368 nlohmann::json json_geo_id_list = json_element[
"geoids"];
369 for (nlohmann::json json_geo_id_value : json_geo_id_list) {
370 local_geo_id_list.push_back(json_geo_id_value);
372 source_id_geo_id_map[source_id] = local_geo_id_list;
378 fragment_type_source_id_map_t& fragment_type_source_id_map)
380 nlohmann::json json_struct = nlohmann::json::parse(json_string);
381 for (
auto const& json_element : json_struct[
"map_entries"]) {
384 std::set<daqdataformats::SourceID> local_source_id_list;
385 nlohmann::json json_source_id_list = json_element[
"sourceids"];
386 for (nlohmann::json json_source_id : json_source_id_list) {
391 local_source_id_list.insert(source_id);
393 fragment_type_source_id_map[fragment_type] = local_source_id_list;
399 subdetector_source_id_map_t& subdetector_source_id_map)
401 nlohmann::json json_struct = nlohmann::json::parse(json_string);
402 for (
auto const& json_element : json_struct[
"map_entries"]) {
405 std::set<daqdataformats::SourceID> local_source_id_list;
406 nlohmann::json json_source_id_list = json_element[
"sourceids"];
407 for (nlohmann::json json_source_id : json_source_id_list) {
411 daqdataformats::SourceID source_id(subsys,
id);
412 local_source_id_list.insert(source_id);
414 subdetector_source_id_map[subdetector] = local_source_id_list;
const dunedaq::confmodel::GeoId * get_geo_id() const
Get "geo_id" relationship value.
void fetch_source_id_path_info(const HighFive::Group &record_group, source_id_path_map_t &the_map)
static void add_source_id_geo_id_to_map(source_id_geo_id_map_t &source_id_geo_id_map, const daqdataformats::SourceID &source_id, uint64_t geo_id)
std::map< detdataformats::DetID::Subdetector, std::set< daqdataformats::SourceID > > subdetector_source_id_map_t
static void store_record_header_source_id(HighFive::Group &record_group, const daqdataformats::SourceID &source_id)
static T get_attribute(const HighFive::AnnotateTraits< C > &h5annt, const std::string &name)
static void store_file_level_geo_id_info(HighFive::File &h5_file, const source_id_geo_id_map_t &the_map)
static void add_fragment_type_source_id_to_map(fragment_type_source_id_map_t &fragment_type_source_id_map, const daqdataformats::FragmentType fragment_type, const daqdataformats::SourceID &source_id)
static void store_record_level_path_info(HighFive::Group &record_group, const source_id_path_map_t &the_map)
static void write_attribute(HighFive::AnnotateTraits< C > &h5annt, const std::string &name, T value)
static std::string get_json_string(const daqdataformats::SourceID &source_id)
static void parse_json_string(const std::string &json_string, daqdataformats::SourceID &source_id)
HDF5SourceIDHandler(const uint32_t version)
Constructor.
std::map< daqdataformats::SourceID, std::string > source_id_path_map_t
void fetch_subdetector_source_id_info(const HighFive::Group &record_group, subdetector_source_id_map_t &the_map)
uint32_t m_version
version number
static void store_record_level_subdetector_map(HighFive::Group &record_group, const subdetector_source_id_map_t &the_map)
static source_id_geo_id_map_t make_source_id_geo_id_map(const confmodel::Session *session)
std::map< daqdataformats::SourceID, std::vector< uint64_t > > source_id_geo_id_map_t
daqdataformats::SourceID fetch_record_header_source_id(const HighFive::Group &record_group)
static void store_record_level_fragment_type_map(HighFive::Group &record_group, const fragment_type_source_id_map_t &the_map)
void fetch_file_level_geo_id_info(const HighFive::File &h5_file, source_id_geo_id_map_t &the_map)
std::map< daqdataformats::SourceID::Subsystem, std::set< daqdataformats::SourceID > > subsystem_source_id_map_t
static void add_subdetector_source_id_to_map(subdetector_source_id_map_t &subdetector_source_id_map, const detdataformats::DetID::Subdetector subdetector, const daqdataformats::SourceID &source_id)
static void add_source_id_path_to_map(source_id_path_map_t &source_id_path_map, const daqdataformats::SourceID &source_id, const std::string &hdf5_path)
std::map< daqdataformats::FragmentType, std::set< daqdataformats::SourceID > > fragment_type_source_id_map_t
void fetch_record_level_geo_id_info(const HighFive::Group &record_group, source_id_geo_id_map_t &the_map)
static void add_subsystem_source_id_to_map(subsystem_source_id_map_t &subsystem_source_id_map, const daqdataformats::SourceID::Subsystem subsystem, const daqdataformats::SourceID &source_id)
void fetch_fragment_type_source_id_info(const HighFive::Group &record_group, fragment_type_source_id_map_t &the_map)
#define TLOG_DEBUG(lvl,...)
uint64_t encode_geoid(int det_id, int crate_id, int slot_id, int stream_id)