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->get_all_applications()) {
39 for (
auto d2d_conn_res : ro_app->get_contains()) {
42 if (d2d_conn_res->disabled(*
session)) {
43 TLOG_DEBUG(7) <<
"Ignoring disabled DetectorToDaqConnection " << d2d_conn_res->UID();
47 TLOG() <<
"Processing DetectorToDaqConnection " << d2d_conn_res->UID();
57 for (
auto dros : d2d_conn->get_streams()) {
61 TLOG_DEBUG(7) <<
"Ignoring disabled DetectorStream " << dros->UID();
69 encode_geoid(geoid->get_detector_id(), geoid->get_crate_id(), geoid->get_slot_id(), geoid->get_stream_id());
72 sid.
id = stream->get_source_id();
74 output_map[sid].push_back(geoid_int);
198 const std::string& hdf5_path)
200 source_id_path_map[source_id] = hdf5_path;
208 if (source_id_geo_id_map.count(source_id) == 0) {
209 std::vector<uint64_t> tmp_vec;
210 tmp_vec.push_back(geo_id);
211 source_id_geo_id_map[source_id] = tmp_vec;
213 source_id_geo_id_map[source_id].push_back(geo_id);
222 if (fragment_type_source_id_map.count(fragment_type) == 0) {
223 std::set<daqdataformats::SourceID> tmp_set;
224 tmp_set.insert(source_id);
225 fragment_type_source_id_map[fragment_type] = tmp_set;
227 fragment_type_source_id_map[fragment_type].insert(source_id);
236 if (subdetector_source_id_map.count(subdetector) == 0) {
237 std::set<daqdataformats::SourceID> tmp_set;
238 tmp_set.insert(source_id);
239 subdetector_source_id_map[subdetector] = tmp_set;
241 subdetector_source_id_map[subdetector].insert(source_id);
250 if (subsystem_source_id_map.count(subsystem) == 0) {
251 std::set<daqdataformats::SourceID> tmp_set;
252 tmp_set.insert(source_id);
253 subsystem_source_id_map[subsystem] = tmp_set;
255 subsystem_source_id_map[subsystem].insert(source_id);
262 nlohmann::json json_struct;
263 json_struct[
"subsys"] =
static_cast<uint32_t
>(source_id.
subsystem);
264 json_struct[
"id"] = source_id.
id;
265 return json_struct.dump();
271 nlohmann::json json_struct;
272 for (
auto const& map_element : the_map) {
273 nlohmann::json json_element;
274 json_element[
"subsys"] =
static_cast<uint32_t
>(map_element.first.subsystem);
275 json_element[
"id"] = map_element.first.id;
276 json_element[
"path"] = map_element.second;
277 json_struct[
"map_entries"].push_back(json_element);
279 return json_struct.dump();
285 nlohmann::json json_struct;
286 for (
auto const& map_element : the_map) {
287 nlohmann::json json_geo_id_list;
288 for (
auto const& geo_id_from_map : map_element.second) {
289 json_geo_id_list.push_back(geo_id_from_map);
291 nlohmann::json json_element;
292 json_element[
"subsys"] =
static_cast<uint32_t
>(map_element.first.subsystem);
293 json_element[
"id"] = map_element.first.id;
294 json_element[
"geoids"] = json_geo_id_list;
295 json_struct[
"map_entries"].push_back(json_element);
297 return json_struct.dump();
303 nlohmann::json json_struct;
304 for (
auto const& map_element : the_map) {
305 nlohmann::json json_source_id_list;
306 for (
auto const& source_id_from_map : map_element.second) {
307 nlohmann::json json_source_id;
308 json_source_id[
"subsys"] =
static_cast<uint32_t
>(source_id_from_map.subsystem);
309 json_source_id[
"id"] = source_id_from_map.id;
310 json_source_id_list.push_back(json_source_id);
312 nlohmann::json json_element;
313 json_element[
"fragment_type"] =
static_cast<uint32_t
>(map_element.first);
314 json_element[
"sourceids"] = json_source_id_list;
315 json_struct[
"map_entries"].push_back(json_element);
317 return json_struct.dump();
323 nlohmann::json json_struct;
324 for (
auto const& map_element : the_map) {
325 nlohmann::json json_source_id_list;
326 for (
auto const& source_id_from_map : map_element.second) {
327 nlohmann::json json_source_id;
328 json_source_id[
"subsys"] =
static_cast<uint32_t
>(source_id_from_map.subsystem);
329 json_source_id[
"id"] = source_id_from_map.id;
330 json_source_id_list.push_back(json_source_id);
332 nlohmann::json json_element;
333 json_element[
"subdetector"] =
static_cast<uint32_t
>(map_element.first);
334 json_element[
"sourceids"] = json_source_id_list;
335 json_struct[
"map_entries"].push_back(json_element);
337 return json_struct.dump();
343 nlohmann::json json_struct = nlohmann::json::parse(json_string);
353 nlohmann::json json_struct = nlohmann::json::parse(json_string);
354 for (
auto const& json_element : json_struct[
"map_entries"]) {
359 source_id_path_map[source_id] = json_element[
"path"];
366 nlohmann::json json_struct = nlohmann::json::parse(json_string);
367 for (
auto const& json_element : json_struct[
"map_entries"]) {
372 std::vector<uint64_t> local_geo_id_list;
373 nlohmann::json json_geo_id_list = json_element[
"geoids"];
374 for (nlohmann::json json_geo_id_value : json_geo_id_list) {
375 local_geo_id_list.push_back(json_geo_id_value);
377 source_id_geo_id_map[source_id] = local_geo_id_list;
383 fragment_type_source_id_map_t& fragment_type_source_id_map)
385 nlohmann::json json_struct = nlohmann::json::parse(json_string);
386 for (
auto const& json_element : json_struct[
"map_entries"]) {
389 std::set<daqdataformats::SourceID> local_source_id_list;
390 nlohmann::json json_source_id_list = json_element[
"sourceids"];
391 for (nlohmann::json json_source_id : json_source_id_list) {
396 local_source_id_list.insert(source_id);
398 fragment_type_source_id_map[fragment_type] = local_source_id_list;
404 subdetector_source_id_map_t& subdetector_source_id_map)
406 nlohmann::json json_struct = nlohmann::json::parse(json_string);
407 for (
auto const& json_element : json_struct[
"map_entries"]) {
410 std::set<daqdataformats::SourceID> local_source_id_list;
411 nlohmann::json json_source_id_list = json_element[
"sourceids"];
412 for (nlohmann::json json_source_id : json_source_id_list) {
416 daqdataformats::SourceID source_id(subsys,
id);
417 local_source_id_list.insert(source_id);
419 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)