From 4519a0b76e9d1cfda431543a341ecdf70f724e04 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Fri, 6 Feb 2026 18:08:37 +0100 Subject: [PATCH] add more complete dump info for NeXus. --- src/external/nexus/PNeXus.cpp | 394 +++++++++++++++++++++++++++++++++- 1 file changed, 392 insertions(+), 2 deletions(-) diff --git a/src/external/nexus/PNeXus.cpp b/src/external/nexus/PNeXus.cpp index ab193019..21b14e1d 100644 --- a/src/external/nexus/PNeXus.cpp +++ b/src/external/nexus/PNeXus.cpp @@ -979,7 +979,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast program_name data" << std::endl; } + } else { + std::cout << std::endl << " program_name : n/a"; } + if (fDataMap.find("/run/number") != fDataMap.end()) { try { auto number = std::any_cast>(fDataMap["/run/number"]); @@ -987,7 +990,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast number data" << std::endl; } + } else { + std::cout << std::endl << " number : n/a"; } + if (fDataMap.find("/run/title") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/title"]); @@ -995,7 +1001,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast title data" << std::endl; } + } else { + std::cout << std::endl << " title : n/a"; } + if (fDataMap.find("/run/notes") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/notes"]); @@ -1003,7 +1012,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast notes data" << std::endl; } + } else { + std::cout << std::endl << " notes : n/a"; } + if (fDataMap.find("/run/analysis") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/analysis"]); @@ -1011,7 +1023,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast analysis data" << std::endl; } + } else { + std::cout << std::endl << " analysis : n/a"; } + if (fDataMap.find("/run/lab") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/lab"]); @@ -1019,7 +1034,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast lab data" << std::endl; } + } else { + std::cout << std::endl << " lab : n/a"; } + if (fDataMap.find("/run/beamline") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/beamline"]); @@ -1027,7 +1045,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast beamline data" << std::endl; } + } else { + std::cout << std::endl << " beamline : n/a"; } + if (fDataMap.find("/run/start_time") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/start_time"]); @@ -1035,7 +1056,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast start_time data" << std::endl; } + } else { + std::cout << std::endl << " start_time : n/a"; } + if (fDataMap.find("/run/stop_time") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/stop_time"]); @@ -1043,7 +1067,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast stop_time data" << std::endl; } + } else { + std::cout << std::endl << " stop_time : n/a"; } + if (fDataMap.find("/run/switching_state") != fDataMap.end()) { try { auto int_data = std::any_cast>(fDataMap["/run/switching_state"]); @@ -1051,7 +1078,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast switching_state data" << std::endl; } + } else { + std::cout << std::endl << " switching_state : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " user"; std::cout << std::endl << "----"; @@ -1062,7 +1092,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + if (fDataMap.find("/run/user/experiment_number") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/user/experiment_number"]); @@ -1070,7 +1103,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast experiment_number data" << std::endl; } + } else { + std::cout << std::endl << " experiment_number : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " sample"; std::cout << std::endl << "----"; @@ -1081,7 +1117,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + if (fDataMap.find("/run/sample/temperature") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/sample/temperature"]); @@ -1095,11 +1134,16 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast units attribute" << std::endl; } + } else { + std::cout << " units : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast temperature data" << std::endl; } + } else { + std::cout << std::endl << " temperature : n/a"; } + if (fDataMap.find("/run/sample/magnetic_field") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/sample/magnetic_field"]); @@ -1113,11 +1157,16 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast units attribute" << std::endl; } + } else { + std::cout << " units : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast magnetic_field data" << std::endl; } + } else { + std::cout << std::endl << " magnetic_field : n/a"; } + if (fDataMap.find("/run/sample/magnetic_field_vector") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/sample/magnetic_field_vector"]); @@ -1131,7 +1180,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast coordinate_system attribute" << std::endl; } + } else { + std::cout << std::endl << " coordinate_system : n/a" << std::endl; } + if (float_data.HasAttribute("units")) { try { auto units = std::any_cast(float_data.GetAttribute("units")); @@ -1139,7 +1191,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast units attribute" << std::endl; } + } else { + std::cout << " units : n/a" << std::endl; } + if (float_data.HasAttribute("available")) { try { auto available = std::any_cast(float_data.GetAttribute("available")); @@ -1147,11 +1202,16 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast available attribute" << std::endl; } + } else { + std::cout << " available : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast magnetic_field_vector data" << std::endl; } + } else { + std::cout << std::endl << " magnetic_field_vector : n/a"; } + if (fDataMap.find("/run/sample/environment") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/sample/environment"]); @@ -1159,7 +1219,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast environment data" << std::endl; } + } else { + std::cout << std::endl << " environment : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " instrument"; std::cout << std::endl << "----"; @@ -1170,7 +1233,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " detector"; std::cout << std::endl << "----"; @@ -1181,7 +1247,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast number data" << std::endl; } + } else { + std::cout << std::endl << " number : n/a"; } + if (fDataMap.find("/run/instrument/detector/deadtimes") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/instrument/detector/deadtimes"]); @@ -1196,7 +1265,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast deadtimes data" << std::endl; } + } else { + std::cout << std::endl << " deadtimes: n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " beam"; std::cout << std::endl << "----"; @@ -1207,7 +1279,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast good_frames data" << std::endl; } + } else { + std::cout << std::endl << " good_frames : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " collimator"; std::cout << std::endl << "----"; @@ -1218,6 +1293,8 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast type data" << std::endl; } + } else { + std::cout << std::endl << " type : n/a"; } std::cout << std::endl << "----"; @@ -1236,7 +1313,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast units attribute" << std::endl; } + } else { + std::cout << " units : n/a" << std::endl; } + if (counts_data.HasAttribute("signal")) { try { auto signal = std::any_cast(counts_data.GetAttribute("signal")); @@ -1244,7 +1324,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast signal attribute" << std::endl; } + } else { + std::cout << " signal : n/a" << std::endl; } + int noOfHistos{0}; if (counts_data.HasAttribute("number")) { try { @@ -1253,7 +1336,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast number attribute" << std::endl; } + } else { + std::cout << " number : n/a" << std::endl; } + int histoLength{0}; if (counts_data.HasAttribute("length")) { try { @@ -1262,7 +1348,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast length attribute" << std::endl; } + } else { + std::cout << " length : n/a" << std::endl; } + if (counts_data.HasAttribute("t0_bin")) { try { auto t0_bin = std::any_cast(counts_data.GetAttribute("t0_bin")); @@ -1270,7 +1359,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast t0_bin attribute" << std::endl; } + } else { + std::cout << " t0_bin : n/a" << std::endl; } + if (counts_data.HasAttribute("first_good_bin")) { try { first_good_bin = std::any_cast(counts_data.GetAttribute("first_good_bin")); @@ -1278,7 +1370,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast first_good_bin attribute" << std::endl; } + } else { + std::cout << " first_good_bin : n/a" << std::endl; } + if (counts_data.HasAttribute("last_good_bin")) { try { auto last_good_bin = std::any_cast(counts_data.GetAttribute("last_good_bin")); @@ -1286,7 +1381,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast last_good_bin attribute" << std::endl; } + } else { + std::cout << " last_good_bin : n/a" << std::endl; } + if (counts_data.HasAttribute("offset")) { try { auto offset = std::any_cast(counts_data.GetAttribute("offset")); @@ -1294,6 +1392,8 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast offset attribute" << std::endl; } + } else { + std::cout << " offset : n/a" << std::endl; } // dump the first couple of counts of each detector @@ -1324,10 +1424,14 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast units attribute" << std::endl; } + } else { + std::cout << std::endl << " units : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast resolution data" << std::endl; } + } else { + std::cout << std::endl << " resolution : n/a"; } if (fDataMap.find("/run/histogram_data_1/time_zero") != fDataMap.end()) { @@ -1342,7 +1446,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast units attribute" << std::endl; } + } else { + std::cout << std::endl << " units : n/a"; } + if (float_data.HasAttribute("available")) { try { auto available = std::any_cast(float_data.GetAttribute("available")); @@ -1350,10 +1457,14 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast available attribute"; } + } else { + std::cout << std::endl << " available : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast time_zero data" << std::endl; } + } else { + std::cout << std::endl << " time_zero : n/a"; } if (fDataMap.find("/run/histogram_data_1/raw_time") != fDataMap.end()) { @@ -1367,7 +1478,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast axis attribute" << std::endl; } + } else { + std::cout << std::endl << " axis : n/a"; } + if (float_data.HasAttribute("primary")) { try { auto primary = std::any_cast(float_data.GetAttribute("primary")); @@ -1375,7 +1489,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast primary attribute" << std::endl; } + } else { + std::cout << std::endl << " primary : n/a"; } + if (float_data.HasAttribute("units")) { try { auto units = std::any_cast(float_data.GetAttribute("units")); @@ -1383,11 +1500,16 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast units attribute" << std::endl; } + } else { + std::cout << std::endl << " units : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast raw_time data" << std::endl; } + } else { + std::cout << std::endl << " raw_time : n/a"; } + if (fDataMap.find("/run/histogram_data_1/corrected_time") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/histogram_data_1/corrected_time"]); @@ -1399,7 +1521,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast axis attribute" << std::endl; } + } else { + std::cout << std::endl << " axis : n/a"; } + if (float_data.HasAttribute("units")) { try { auto units = std::any_cast(float_data.GetAttribute("units")); @@ -1407,11 +1532,16 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast units attribute" << std::endl; } + } else { + std::cout << std::endl << " units : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast raw_time data" << std::endl; } + } else { + std::cout << std::endl << " corrected_time : n/a"; } + if (fDataMap.find("/run/histogram_data_1/grouping") != fDataMap.end()) { try { auto int_data = std::any_cast>(fDataMap["/run/histogram_data_1/grouping"]); @@ -1430,11 +1560,16 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast available attribute" << std::endl; } + } else { + std::cout << std::endl << " available : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast grouping data" << std::endl; } + } else { + std::cout << std::endl << " grouping : n/a"; } + if (fDataMap.find("/run/histogram_data_1/alpha") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/histogram_data_1/alpha"]); @@ -1453,11 +1588,16 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "**ERROR**: Failed to cast available attribute" << std::endl; } + } else { + std::cout << std::endl << " alpha : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "**ERROR**: Failed to cast alpha data" << std::endl; } + } else { + std::cout << std::endl << " available : n/a"; } + std::cout << std::endl; std::cout << "========================================" << std::endl; std::cout << std::endl; @@ -1481,7 +1621,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast beamline data" << std::endl; } + } else { + std::cout << std::endl << " beamline : n/a"; } + if (fDataMap.find("/raw_data_1/definition") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/definition"]); @@ -1489,7 +1632,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast definition data" << std::endl; } + } else { + std::cout << std::endl << " definition : n/a"; } + if (fDataMap.find("/raw_data_1/run_number") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/run_number"]); @@ -1497,7 +1643,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast run_number data" << std::endl; } + } else { + std::cout << std::endl << " run_number : n/a"; } + if (fDataMap.find("/raw_data_1/title") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/title"]); @@ -1505,7 +1654,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast title data" << std::endl; } + } else { + std::cout << std::endl << " title : n/a"; } + if (fDataMap.find("/raw_data_1/start_time") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/start_time"]); @@ -1513,7 +1665,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast start_time data" << std::endl; } + } else { + std::cout << std::endl << " start_time : n/a"; } + if (fDataMap.find("/raw_data_1/end_time") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/end_time"]); @@ -1521,7 +1676,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast end_time data" << std::endl; } + } else { + std::cout << std::endl << " end_time : n/a"; } + if (fDataMap.find("/raw_data_1/good_frames") != fDataMap.end()) { try { auto good_frames = std::any_cast>(fDataMap["/raw_data_1/good_frames"]); @@ -1529,7 +1687,10 @@ void nxH4::PNeXus::Dump() } catch(const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast good_frames data" << std::endl; } + } else { + std::cout << std::endl << " good_frames: n/a"; } + if (fDataMap.find("/raw_data_1/experiment_identifier") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/experiment_identifier"]); @@ -1537,7 +1698,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast experiment_identifier data" << std::endl; } + } else { + std::cout << std::endl << " experiment_identifier: n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " instrument"; if (fDataMap.find("/raw_data_1/instrument/name") != fDataMap.end()) { @@ -1547,7 +1711,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast instrument/name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " source"; if (fDataMap.find("/raw_data_1/instrument/source/name") != fDataMap.end()) { @@ -1557,7 +1724,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast instrument/source/name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + if (fDataMap.find("/raw_data_1/instrument/source/type") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/instrument/source/type"]); @@ -1565,7 +1735,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast instrument/source/type data" << std::endl; } + } else { + std::cout << std::endl << " type : n/a"; } + if (fDataMap.find("/raw_data_1/instrument/source/probe") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/instrument/source/probe"]); @@ -1573,7 +1746,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast instrument/source/probe data" << std::endl; } + } else { + std::cout << std::endl << " probe : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " detector_1"; std::cout << std::endl << " counts:"; @@ -1593,7 +1769,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast signal attribute" << std::endl; } + } else { + std::cout << std::endl << " signal : n/a"; } + if (counts_data.HasAttribute("axes")) { try { auto axes = std::any_cast(counts_data.GetAttribute("axes")); @@ -1601,7 +1780,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast axes attribute" << std::endl; } + } else { + std::cout << std::endl << " axes : n/a"; } + if (counts_data.HasAttribute("long_name")) { try { auto long_name = std::any_cast(counts_data.GetAttribute("long_name")); @@ -1609,7 +1791,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast long_name attribute" << std::endl; } + } else { + std::cout << std::endl << " long_name : n/a"; } + if (counts_data.HasAttribute("t0_bin")) { try { auto t0_bin = std::any_cast(counts_data.GetAttribute("t0_bin")); @@ -1617,7 +1802,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast t0_bin attribute" << std::endl; } + } else { + std::cout << std::endl << " t0_bin : n/a"; } + if (counts_data.HasAttribute("first_good_bin")) { try { first_good_bin = std::any_cast(counts_data.GetAttribute("first_good_bin")); @@ -1625,7 +1813,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast first_good_bin attribute" << std::endl; } + } else { + std::cout << std::endl << " first_good_bin : n/a"; } + if (counts_data.HasAttribute("last_good_bin")) { try { auto last_good_bin = std::any_cast(counts_data.GetAttribute("last_good_bin")); @@ -1633,7 +1824,10 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast last_good_bin attribute" << std::endl; } + } else { + std::cout << std::endl << " last_good_bin : n/a"; } + if (fDataMap.find("/raw_data_1/instrument/detector_1/resolution") != fDataMap.end()) { try { auto ivalData = std::any_cast>(fDataMap["/raw_data_1/instrument/detector_1/resolution"]); @@ -1645,10 +1839,15 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast units attribute" << std::endl; } + } else { + std::cout << std::endl << " unit : n/a" << std::endl; } + } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast resolution attribute" << std::endl; } + } else { + std::cout << std::endl << " resolution : n/a"; } // dump the first couple of counts of each detector @@ -1682,6 +1881,8 @@ void nxH4::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast units attribute" << std::endl; } + } else { + std::cout << std::endl << " units : n/a" << std::endl; } // dump the first couple of raw_times @@ -1693,6 +1894,7 @@ void nxH4::PNeXus::Dump() std::cerr << "Error: Failed to cast raw_time data" << std::endl; } + std::cout << std::endl; std::cout << std::endl << " spectrum_index:"; std::cout << std::endl; @@ -3351,7 +3553,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast program_name data" << std::endl; } + } else { + std::cout << std::endl << " program_name : n/a"; } + if (fDataMap.find("/run/number") != fDataMap.end()) { try { auto number = std::any_cast>(fDataMap["/run/number"]); @@ -3359,7 +3564,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast number data" << std::endl; } + } else { + std::cout << std::endl << " number : n/a"; } + if (fDataMap.find("/run/title") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/title"]); @@ -3367,7 +3575,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast title data" << std::endl; } + } else { + std::cout << std::endl << " title : n/a"; } + if (fDataMap.find("/run/notes") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/notes"]); @@ -3375,7 +3586,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast notes data" << std::endl; } + } else { + std::cout << std::endl << " notes : n/a"; } + if (fDataMap.find("/run/analysis") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/analysis"]); @@ -3383,7 +3597,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast analysis data" << std::endl; } + } else { + std::cout << std::endl << " analysis : n/a"; } + if (fDataMap.find("/run/lab") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/lab"]); @@ -3391,7 +3608,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast lab data" << std::endl; } + } else { + std::cout << std::endl << " lab : n/a"; } + if (fDataMap.find("/run/beamline") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/beamline"]); @@ -3399,7 +3619,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast beamline data" << std::endl; } + } else { + std::cout << std::endl << " beamline : n/a"; } + if (fDataMap.find("/run/start_time") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/start_time"]); @@ -3407,7 +3630,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast start_time data" << std::endl; } + } else { + std::cout << std::endl << " start_time : n/a"; } + if (fDataMap.find("/run/end_time") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/end_time"]); @@ -3415,7 +3641,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast end_time data" << std::endl; } + } else { + std::cout << std::endl << " end_time : n/a"; } + if (fDataMap.find("/run/switching_state") != fDataMap.end()) { try { auto int_data = std::any_cast>(fDataMap["/run/switching_state"]); @@ -3423,7 +3652,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast switching_state data" << std::endl; } + } else { + std::cout << std::endl << " switching_state : n/a"; } + std::cout << std::endl << " user"; std::cout << std::endl << "----"; if (fDataMap.find("/run/usr/name") != fDataMap.end()) { @@ -3433,7 +3665,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + if (fDataMap.find("/run/usr/experiment_number") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/user/experiment_number"]); @@ -3441,7 +3676,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast experiment_number data" << std::endl; } + } else { + std::cout << std::endl << " experiment_number : n/a"; } + std::cout << std::endl << " sample"; std::cout << std::endl << "----"; if (fDataMap.find("/run/sample/name") != fDataMap.end()) { @@ -3451,13 +3689,16 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + if (fDataMap.find("/run/sample/temperature") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/sample/temperature"]); std::cout << std::endl << " temperature : " << float_data.GetData()[0]; - // Check for attributes + // Check for attributes if (float_data.HasAttribute("units")) { try { auto units = std::any_cast(float_data.GetAttribute("units")); @@ -3469,7 +3710,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast temperature data" << std::endl; } + } else { + std::cout << std::endl << " temperature : n/a"; } + if (fDataMap.find("/run/sample/magnetic_field") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/sample/magnetic_field"]); @@ -3487,7 +3731,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast magnetic_field data" << std::endl; } + } else { + std::cout << std::endl << " magnetic_field : n/a"; } + if (fDataMap.find("/run/sample/magnetic_field_vector") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/sample/magnetic_field_vector"]); @@ -3521,7 +3768,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast magnetic_field_vector data" << std::endl; } + } else { + std::cout << std::endl << " magnetic_field_vector : n/a"; } + if (fDataMap.find("/run/sample/environment") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/sample/environment"]); @@ -3529,7 +3779,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast environment data" << std::endl; } + } else { + std::cout << std::endl << " environment : n/a"; } + std::cout << std::endl << " instrument"; std::cout << std::endl << "----"; if (fDataMap.find("/run/instrument/name") != fDataMap.end()) { @@ -3539,7 +3792,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + std::cout << std::endl << " detector"; std::cout << std::endl << "----"; if (fDataMap.find("/run/instrument/detector/number") != fDataMap.end()) { @@ -3549,7 +3805,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast number data" << std::endl; } + } else { + std::cout << std::endl << " number : n/a"; } + if (fDataMap.find("/run/instrument/detector/deadtimes") != fDataMap.end()) { try { const auto& dead_times = std::any_cast>("/run/instrument/detector/deadtimes").GetData(); @@ -3560,7 +3819,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast dead time data" << std::endl; } + } else { + std::cout << std::endl << " deadtimes: n/a"; } + std::cout << std::endl << " collimator"; std::cout << std::endl << "----"; if (fDataMap.find("/run/instrument/collimator/type") != fDataMap.end()) { @@ -3570,7 +3832,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast type data" << std::endl; } + } else { + std::cout << std::endl << " type : n/a"; } + std::cout << std::endl << " beam"; std::cout << std::endl << "----"; if (fDataMap.find("/run/instrument/beam/beamline") != fDataMap.end()) { @@ -3580,7 +3845,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast beamline data" << std::endl; } + } else { + std::cout << std::endl << " beamline : n/a"; } + if (fDataMap.find("/run/instrument/beam/frames_good") != fDataMap.end()) { try { auto str_data = std::any_cast>(fDataMap["/run/instrument/beam/frames_good"]); @@ -3588,7 +3856,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast frames_good data" << std::endl; } + } else { + std::cout << std::endl << " frames_good : n/a"; } + std::cout << std::endl << " histogram_data_1"; std::cout << std::endl << "----"; std::cout << std::endl << " counts:"; @@ -3604,7 +3875,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast units attribute" << std::endl; } + } else { + std::cout << " units : n/a" << std::endl; } + if (counts_data.HasAttribute("signal")) { try { auto signal = std::any_cast(counts_data.GetAttribute("signal")); @@ -3612,7 +3886,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast signal attribute" << std::endl; } + } else { + std::cout << " signal : n/a" << std::endl; } + int noOfHistos{0}; if (counts_data.HasAttribute("number")) { try { @@ -3621,7 +3898,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast number attribute" << std::endl; } + } else { + std::cout << " number : n/a" << std::endl; } + int histoLength{0}; if (counts_data.HasAttribute("length")) { try { @@ -3630,7 +3910,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast length attribute" << std::endl; } + } else { + std::cout << " length : n/a" << std::endl; } + if (counts_data.HasAttribute("t0_bin")) { try { auto t0_bin = std::any_cast(counts_data.GetAttribute("t0_bin")); @@ -3638,7 +3921,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast t0_bin attribute" << std::endl; } + } else { + std::cout << " t0_bin : n/a" << std::endl; } + if (counts_data.HasAttribute("first_good_bin")) { try { first_good_bin = std::any_cast(counts_data.GetAttribute("first_good_bin")); @@ -3646,7 +3932,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast first_good_bin attribute" << std::endl; } + } else { + std::cout << " first_good_bin : n/a" << std::endl; } + if (counts_data.HasAttribute("last_good_bin")) { try { auto last_good_bin = std::any_cast(counts_data.GetAttribute("last_good_bin")); @@ -3654,7 +3943,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast last_good_bin attribute" << std::endl; } + } else { + std::cout << " last_good_bin : n/a" << std::endl; } + if (counts_data.HasAttribute("offset")) { try { auto offset = std::any_cast(counts_data.GetAttribute("offset")); @@ -3662,9 +3954,11 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast offset attribute" << std::endl; } + } else { + std::cout << " offset : n/a" << std::endl; } - // dump the first couple of counts of each detector + // dump the first couple of counts of each detector const auto& data = counts_data.GetData(); std::cout << std::endl << " first couple of counts of each detector:"; for (unsigned int i=0; i(int_data.GetAttribute("available")); @@ -3718,10 +4019,14 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast available attribute" << std::endl; } + } else { + std::cout << " available : n/a" << std::endl; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast time_zero data" << std::endl; } + } else { + std::cout << std::endl << " time_zero : n/a"; } if (fDataMap.find("/run/histogram_data_1/raw_time") != fDataMap.end()) { @@ -3735,7 +4040,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast axis attribute" << std::endl; } + } else { + std::cout << " axis : n/a" << std::endl; } + if (float_data.HasAttribute("primary")) { try { auto primary = std::any_cast(float_data.GetAttribute("primary")); @@ -3743,7 +4051,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast primary attribute" << std::endl; } + } else { + std::cout << " primary : n/a" << std::endl; } + if (float_data.HasAttribute("units")) { try { auto units = std::any_cast(float_data.GetAttribute("units")); @@ -3751,11 +4062,16 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast units attribute" << std::endl; } + } else { + std::cout << " units : n/a" << std::endl; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast raw_time data" << std::endl; } + } else { + std::cout << std::endl << " raw_time : n/a"; } + if (fDataMap.find("/run/histogram_data_1/corrected_time") != fDataMap.end()) { try { auto float_data = std::any_cast>(fDataMap["/run/histogram_data_1/corrected_time"]); @@ -3767,7 +4083,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast axis attribute" << std::endl; } + } else { + std::cout << " axis : n/a" << std::endl; } + if (float_data.HasAttribute("units")) { try { auto units = std::any_cast(float_data.GetAttribute("units")); @@ -3775,11 +4094,16 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast units attribute" << std::endl; } + } else { + std::cout << " units : n/a" << std::endl; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast raw_time data" << std::endl; } + } else { + std::cout << std::endl << " corrected_time : n/a"; } + if (fDataMap.find("/run/histogram_data_1/grouping") != fDataMap.end()) { try { auto int_data = std::any_cast>(fDataMap["/run/histogram_data_1/grouping"]); @@ -3791,10 +4115,14 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast available attribute" << std::endl; } + } else { + std::cout << std::endl << " available : n/a"; } } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast grouping data" << std::endl; } + } else { + std::cout << std::endl << " grouping : n/a"; } std::cout << std::endl; @@ -3818,7 +4146,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast beamline data" << std::endl; } + } else { + std::cout << std::endl << " beamline : n/a"; } + if (fDataMap.find("/raw_data_1/definition") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/definition"]); @@ -3826,7 +4157,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast definition data" << std::endl; } + } else { + std::cout << std::endl << " definition : n/a"; } + if (fDataMap.find("/raw_data_1/run_number") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/run_number"]); @@ -3834,7 +4168,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast run_number data" << std::endl; } + } else { + std::cout << std::endl << " run_number : n/a"; } + if (fDataMap.find("/raw_data_1/title") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/title"]); @@ -3842,7 +4179,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast title data" << std::endl; } + } else { + std::cout << std::endl << " title : n/a"; } + if (fDataMap.find("/raw_data_1/start_time") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/start_time"]); @@ -3850,7 +4190,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast start_time data" << std::endl; } + } else { + std::cout << std::endl << " start_time : n/a"; } + if (fDataMap.find("/raw_data_1/end_time") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/end_time"]); @@ -3858,7 +4201,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast end_time data" << std::endl; } + } else { + std::cout << std::endl << " end_time : n/a"; } + if (fDataMap.find("/raw_data_1/good_frames") != fDataMap.end()) { try { auto good_frames = std::any_cast>(fDataMap["/raw_data_1/good_frames"]); @@ -3866,7 +4212,10 @@ void nxH5::PNeXus::Dump() } catch(const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast good_frames data" << std::endl; } + } else { + std::cout << std::endl << " good_frames: n/a"; } + if (fDataMap.find("/raw_data_1/experiment_identifier") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/experiment_identifier"]); @@ -3874,7 +4223,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast experiment_identifier data" << std::endl; } + } else { + std::cout << std::endl << " experiment_identifier: n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " instrument"; if (fDataMap.find("/raw_data_1/instrument/name") != fDataMap.end()) { @@ -3884,7 +4236,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast instrument/name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " source"; if (fDataMap.find("/raw_data_1/instrument/source/name") != fDataMap.end()) { @@ -3894,7 +4249,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast instrument/source/name data" << std::endl; } + } else { + std::cout << std::endl << " name : n/a"; } + if (fDataMap.find("/raw_data_1/instrument/source/type") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/instrument/source/type"]); @@ -3902,7 +4260,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast instrument/source/type data" << std::endl; } + } else { + std::cout << std::endl << " type : n/a"; } + if (fDataMap.find("/raw_data_1/instrument/source/probe") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/instrument/source/probe"]); @@ -3910,7 +4271,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << std::endl << "Error: Failed to cast instrument/source/probe data" << std::endl; } + } else { + std::cout << std::endl << " probe : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " sample"; if (fDataMap.find("/raw_data_1/sample/name") != fDataMap.end()) { @@ -3923,6 +4287,7 @@ void nxH5::PNeXus::Dump() } else { std::cout << std::endl << " name : n/a"; } + if (fDataMap.find("/raw_data_1/sample/temperature") != fDataMap.end()) { try { auto temp_ds = std::any_cast>(fDataMap["/raw_data_1/sample/temperature"]); @@ -3943,6 +4308,7 @@ void nxH5::PNeXus::Dump() } else { std::cout << std::endl << " temperature: n/a"; } + if (fDataMap.find("/raw_data_1/sample/magnetic_field") != fDataMap.end()) { try { auto mag_field_ds = std::any_cast>(fDataMap["/raw_data_1/sample/magnetic_field"]); @@ -3963,6 +4329,7 @@ void nxH5::PNeXus::Dump() } else { std::cout << std::endl << " temperature: n/a"; } + if (fDataMap.find("/raw_data_1/sample/shape") != fDataMap.end()) { try { auto str = std::any_cast>(fDataMap["/raw_data_1/sample/shape"]); @@ -3973,6 +4340,7 @@ void nxH5::PNeXus::Dump() } else { std::cout << std::endl << " shape : n/a"; } + std::cout << std::endl << "----"; std::cout << std::endl << " detector_1"; std::cout << std::endl << " counts:"; @@ -3992,7 +4360,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast signal attribute" << std::endl; } + } else { + std::cout << " signal : n/a" << std::endl; } + if (counts_data.HasAttribute("axes")) { try { auto axes = std::any_cast(counts_data.GetAttribute("axes")); @@ -4000,7 +4371,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast axes attribute" << std::endl; } + } else { + std::cout << " axes : n/a" << std::endl; } + if (counts_data.HasAttribute("long_name")) { try { auto long_name = std::any_cast(counts_data.GetAttribute("long_name")); @@ -4008,7 +4382,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast long_name attribute" << std::endl; } + } else { + std::cout << " long_name : n/a" << std::endl; } + if (counts_data.HasAttribute("t0_bin")) { try { auto t0_bin = std::any_cast(counts_data.GetAttribute("t0_bin")); @@ -4016,7 +4393,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast t0_bin attribute" << std::endl; } + } else { + std::cout << " t0_bin : n/a" << std::endl; } + if (counts_data.HasAttribute("first_good_bin")) { try { first_good_bin = std::any_cast(counts_data.GetAttribute("first_good_bin")); @@ -4024,7 +4404,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast first_good_bin attribute" << std::endl; } + } else { + std::cout << " first_good_bin : n/a" << std::endl; } + if (counts_data.HasAttribute("last_good_bin")) { try { auto last_good_bin = std::any_cast(counts_data.GetAttribute("last_good_bin")); @@ -4032,7 +4415,10 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast last_good_bin attribute" << std::endl; } + } else { + std::cout << " last_good_bin : n/a" << std::endl; } + if (fDataMap.find("/raw_data_1/instrument/detector_1/resolution") != fDataMap.end()) { try { auto ivalData = std::any_cast>(fDataMap["/raw_data_1/instrument/detector_1/resolution"]); @@ -4048,6 +4434,8 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast resolution attribute" << std::endl; } + } else { + std::cout << " resolution : n/a"; } // dump the first couple of counts of each detector @@ -4081,6 +4469,8 @@ void nxH5::PNeXus::Dump() } catch (const std::bad_any_cast& e) { std::cerr << "Error: Failed to cast units attribute" << std::endl; } + } else { + std::cout << " units : n/a" << std::endl; } // dump the first couple of raw_times