1005 int first_good_bin{0};
1008 std::cout << std::endl;
1009 std::cout <<
"========================================" << std::endl;
1010 std::cout <<
"NeXus File Dump" << std::endl;
1011 std::cout <<
"========================================" << std::endl;
1012 std::cout <<
"Filename: " <<
fFileName << std::endl;
1013 std::cout <<
"HDF4 Version: " <<
fHdf4Version << std::endl;
1014 std::cout <<
"NeXus Version: " <<
fNeXusVersion << std::endl;
1015 std::cout <<
"IDF Version: " <<
fIdfVersion << std::endl;
1016 std::cout <<
"----------------------------------------" << std::endl;
1018 std::cout << std::endl <<
"++++";
1019 std::cout << std::endl <<
"run";
1020 std::cout << std::endl <<
"----";
1021 std::cout << std::endl <<
" IDF_version: " <<
fIdfVersion;
1024 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/program_name"]);
1025 std::cout << std::endl <<
" program_name : " << str_data.GetData()[0];
1028 if (str_data.HasAttribute(
"version")) {
1030 auto version = std::any_cast<std::string>(str_data.GetAttribute(
"version"));
1031 std::cout <<
" version : " << version;
1032 }
catch (
const std::bad_any_cast& e) {
1033 std::cerr << std::endl <<
"**ERROR**: Failed to cast version attribute" << std::endl;
1036 }
catch (
const std::bad_any_cast& e) {
1037 std::cerr << std::endl <<
"**ERROR**: Failed to cast program_name data" << std::endl;
1040 std::cout << std::endl <<
" program_name : n/a";
1045 auto number = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/number"]);
1046 std::cout << std::endl <<
" number : " << number.GetData()[0];
1047 }
catch (
const std::bad_any_cast& e) {
1048 std::cerr << std::endl <<
"**ERROR**: Failed to cast number data" << std::endl;
1051 std::cout << std::endl <<
" number : n/a";
1056 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/title"]);
1057 std::cout << std::endl <<
" title : " << str_data.GetData()[0];
1058 }
catch (
const std::bad_any_cast& e) {
1059 std::cerr << std::endl <<
"**ERROR**: Failed to cast title data" << std::endl;
1062 std::cout << std::endl <<
" title : n/a";
1067 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/notes"]);
1068 std::cout << std::endl <<
" notes : " << str_data.GetData()[0];
1069 }
catch (
const std::bad_any_cast& e) {
1070 std::cerr << std::endl <<
"**ERROR**: Failed to cast notes data" << std::endl;
1073 std::cout << std::endl <<
" notes : n/a";
1078 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/analysis"]);
1079 std::cout << std::endl <<
" analysis : " << str_data.GetData()[0];
1080 }
catch (
const std::bad_any_cast& e) {
1081 std::cerr << std::endl <<
"**ERROR**: Failed to cast analysis data" << std::endl;
1084 std::cout << std::endl <<
" analysis : n/a";
1089 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/lab"]);
1090 std::cout << std::endl <<
" lab : " << str_data.GetData()[0];
1091 }
catch (
const std::bad_any_cast& e) {
1092 std::cerr << std::endl <<
"**ERROR**: Failed to cast lab data" << std::endl;
1095 std::cout << std::endl <<
" lab : n/a";
1100 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/beamline"]);
1101 std::cout << std::endl <<
" beamline : " << str_data.GetData()[0];
1102 }
catch (
const std::bad_any_cast& e) {
1103 std::cerr << std::endl <<
"**ERROR**: Failed to cast beamline data" << std::endl;
1106 std::cout << std::endl <<
" beamline : n/a";
1111 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/start_time"]);
1112 std::cout << std::endl <<
" start_time : " << str_data.GetData()[0];
1113 }
catch (
const std::bad_any_cast& e) {
1114 std::cerr << std::endl <<
"**ERROR**: Failed to cast start_time data" << std::endl;
1117 std::cout << std::endl <<
" start_time : n/a";
1122 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/stop_time"]);
1123 std::cout << std::endl <<
" stop_time : " << str_data.GetData()[0];
1124 }
catch (
const std::bad_any_cast& e) {
1125 std::cerr << std::endl <<
"**ERROR**: Failed to cast stop_time data" << std::endl;
1128 std::cout << std::endl <<
" stop_time : n/a";
1133 auto int_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/switching_state"]);
1134 std::cout << std::endl <<
" switching_state : " << int_data.GetData()[0];
1135 }
catch (
const std::bad_any_cast& e) {
1136 std::cerr << std::endl <<
"**ERROR**: Failed to cast switching_state data" << std::endl;
1139 std::cout << std::endl <<
" switching_state : n/a";
1142 std::cout << std::endl <<
"----";
1143 std::cout << std::endl <<
" user";
1144 std::cout << std::endl <<
"----";
1147 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/user/name"]);
1148 std::cout << std::endl <<
" name : '" << str_data.GetData()[0] <<
"'";
1149 }
catch (
const std::bad_any_cast& e) {
1150 std::cerr << std::endl <<
"**ERROR**: Failed to cast name data" << std::endl;
1153 std::cout << std::endl <<
" name : n/a";
1158 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/user/experiment_number"]);
1159 std::cout << std::endl <<
" experiment_number : " << str_data.GetData()[0];
1160 }
catch (
const std::bad_any_cast& e) {
1161 std::cerr << std::endl <<
"**ERROR**: Failed to cast experiment_number data" << std::endl;
1164 std::cout << std::endl <<
" experiment_number : n/a";
1167 std::cout << std::endl <<
"----";
1168 std::cout << std::endl <<
" sample";
1169 std::cout << std::endl <<
"----";
1172 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/sample/name"]);
1173 std::cout << std::endl <<
" name : '" << str_data.GetData()[0] <<
"'";
1174 }
catch (
const std::bad_any_cast& e) {
1175 std::cerr << std::endl <<
"**ERROR**: Failed to cast name data" << std::endl;
1178 std::cout << std::endl <<
" name : n/a";
1183 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/temperature"]);
1184 std::cout << std::endl <<
" temperature : " << float_data.GetData()[0];
1187 if (float_data.HasAttribute(
"units")) {
1189 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1190 std::cout <<
" units : " << units;
1191 }
catch (
const std::bad_any_cast& e) {
1192 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1195 std::cout <<
" units : n/a";
1197 }
catch (
const std::bad_any_cast& e) {
1198 std::cerr << std::endl <<
"**ERROR**: Failed to cast temperature data" << std::endl;
1201 std::cout << std::endl <<
" temperature : n/a";
1206 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/magnetic_field"]);
1207 std::cout << std::endl <<
" magnetic_field : " << float_data.GetData()[0];
1210 if (float_data.HasAttribute(
"units")) {
1212 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1213 std::cout <<
" units : " << units;
1214 }
catch (
const std::bad_any_cast& e) {
1215 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1218 std::cout <<
" units : n/a";
1220 }
catch (
const std::bad_any_cast& e) {
1221 std::cerr << std::endl <<
"**ERROR**: Failed to cast magnetic_field data" << std::endl;
1224 std::cout << std::endl <<
" magnetic_field : n/a";
1227 if (
fDataMap.find(
"/run/sample/magnetic_field_vector") !=
fDataMap.end()) {
1229 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/magnetic_field_vector"]);
1230 std::cout << std::endl <<
" magnetic_field_vector : " << float_data.GetData()[0];
1233 if (float_data.HasAttribute(
"coordinate_system")) {
1235 auto coordinate_system = std::any_cast<std::string>(float_data.GetAttribute(
"coordinate_system"));
1236 std::cout << std::endl <<
" coordinate_system : " << coordinate_system << std::endl;
1237 }
catch (
const std::bad_any_cast& e) {
1238 std::cerr <<
"**ERROR**: Failed to cast coordinate_system attribute" << std::endl;
1241 std::cout << std::endl <<
" coordinate_system : n/a" << std::endl;
1244 if (float_data.HasAttribute(
"units")) {
1246 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1247 std::cout <<
" units : " << units << std::endl;
1248 }
catch (
const std::bad_any_cast& e) {
1249 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1252 std::cout <<
" units : n/a" << std::endl;
1255 if (float_data.HasAttribute(
"available")) {
1257 auto available = std::any_cast<int>(float_data.GetAttribute(
"available"));
1258 std::cout <<
" available : " << available;
1259 }
catch (
const std::bad_any_cast& e) {
1260 std::cerr <<
"**ERROR**: Failed to cast available attribute" << std::endl;
1263 std::cout <<
" available : n/a";
1265 }
catch (
const std::bad_any_cast& e) {
1266 std::cerr << std::endl <<
"**ERROR**: Failed to cast magnetic_field_vector data" << std::endl;
1269 std::cout << std::endl <<
" magnetic_field_vector : n/a";
1274 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/sample/environment"]);
1275 std::cout << std::endl <<
" environment : " << str_data.GetData()[0];
1276 }
catch (
const std::bad_any_cast& e) {
1277 std::cerr << std::endl <<
"**ERROR**: Failed to cast environment data" << std::endl;
1280 std::cout << std::endl <<
" environment : n/a";
1283 std::cout << std::endl <<
"----";
1284 std::cout << std::endl <<
" instrument";
1285 std::cout << std::endl <<
"----";
1288 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/name"]);
1289 std::cout << std::endl <<
" name : '" << str_data.GetData()[0] <<
"'";
1290 }
catch (
const std::bad_any_cast& e) {
1291 std::cerr << std::endl <<
"**ERROR**: Failed to cast name data" << std::endl;
1294 std::cout << std::endl <<
" name : n/a";
1297 std::cout << std::endl <<
"----";
1298 std::cout << std::endl <<
" detector";
1299 std::cout << std::endl <<
"----";
1302 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/instrument/detector/number"]);
1303 std::cout << std::endl <<
" number : " << int_data.GetData()[0];
1304 }
catch (
const std::bad_any_cast& e) {
1305 std::cerr << std::endl <<
"**ERROR**: Failed to cast number data" << std::endl;
1308 std::cout << std::endl <<
" number : n/a";
1311 if (
fDataMap.find(
"/run/instrument/detector/deadtimes") !=
fDataMap.end()) {
1313 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/instrument/detector/deadtimes"]);
1314 auto data = float_data.GetData();
1315 unsigned int end{15};
1316 if (data.size() < end)
1318 std::cout << std::endl <<
" deadtimes: ";
1319 for (
unsigned int i=0; i<end; i++)
1320 std::cout << data[i] <<
", ";
1322 }
catch (
const std::bad_any_cast& e) {
1323 std::cerr << std::endl <<
"**ERROR**: Failed to cast deadtimes data" << std::endl;
1326 std::cout << std::endl <<
" deadtimes: n/a";
1329 std::cout << std::endl <<
"----";
1330 std::cout << std::endl <<
" beam";
1331 std::cout << std::endl <<
"----";
1334 auto fg = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/instrument/beam/frames_good"]);
1335 std::cout << std::endl <<
" good_frames : " << fg.GetData()[0];
1336 }
catch (
const std::bad_any_cast& e) {
1337 std::cerr << std::endl <<
"**ERROR**: Failed to cast good_frames data" << std::endl;
1340 std::cout << std::endl <<
" good_frames : n/a";
1343 std::cout << std::endl <<
"----";
1344 std::cout << std::endl <<
" collimator";
1345 std::cout << std::endl <<
"----";
1348 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/collimator/type"]);
1349 std::cout << std::endl <<
" type : " << str_data.GetData()[0];
1350 }
catch (
const std::bad_any_cast& e) {
1351 std::cerr << std::endl <<
"**ERROR**: Failed to cast type data" << std::endl;
1354 std::cout << std::endl <<
" type : n/a";
1357 std::cout << std::endl <<
"----";
1358 std::cout << std::endl <<
" histogram_data_1";
1359 std::cout << std::endl <<
"----";
1360 std::cout << std::endl <<
" counts:";
1361 std::cout << std::endl;
1363 auto counts_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/counts"]);
1366 if (counts_data.HasAttribute(
"units")) {
1368 auto units = std::any_cast<std::string>(counts_data.GetAttribute(
"units"));
1369 std::cout <<
" units : " << units << std::endl;
1370 }
catch (
const std::bad_any_cast& e) {
1371 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1374 std::cout <<
" units : n/a" << std::endl;
1377 if (counts_data.HasAttribute(
"signal")) {
1379 auto signal = std::any_cast<int>(counts_data.GetAttribute(
"signal"));
1380 std::cout <<
" signal : " << signal << std::endl;
1381 }
catch (
const std::bad_any_cast& e) {
1382 std::cerr <<
"**ERROR**: Failed to cast signal attribute" << std::endl;
1385 std::cout <<
" signal : n/a" << std::endl;
1389 if (counts_data.HasAttribute(
"number")) {
1391 noOfHistos = std::any_cast<int>(counts_data.GetAttribute(
"number"));
1392 std::cout <<
" number : " << noOfHistos << std::endl;
1393 }
catch (
const std::bad_any_cast& e) {
1394 std::cerr <<
"**ERROR**: Failed to cast number attribute" << std::endl;
1397 std::cout <<
" number : n/a" << std::endl;
1401 if (counts_data.HasAttribute(
"length")) {
1403 histoLength = std::any_cast<int>(counts_data.GetAttribute(
"length"));
1404 std::cout <<
" length : " << histoLength << std::endl;
1405 }
catch (
const std::bad_any_cast& e) {
1406 std::cerr <<
"**ERROR**: Failed to cast length attribute" << std::endl;
1409 std::cout <<
" length : n/a" << std::endl;
1412 if (counts_data.HasAttribute(
"t0_bin")) {
1414 auto t0_bin = std::any_cast<int>(counts_data.GetAttribute(
"t0_bin"));
1415 std::cout <<
" t0_bin : " << t0_bin << std::endl;
1416 }
catch (
const std::bad_any_cast& e) {
1417 std::cerr <<
"**ERROR**: Failed to cast t0_bin attribute" << std::endl;
1420 std::cout <<
" t0_bin : n/a" << std::endl;
1423 if (counts_data.HasAttribute(
"first_good_bin")) {
1425 first_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"first_good_bin"));
1426 std::cout <<
" first_good_bin : " << first_good_bin << std::endl;
1427 }
catch (
const std::bad_any_cast& e) {
1428 std::cerr <<
"**ERROR**: Failed to cast first_good_bin attribute" << std::endl;
1431 std::cout <<
" first_good_bin : n/a" << std::endl;
1434 if (counts_data.HasAttribute(
"last_good_bin")) {
1436 auto last_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"last_good_bin"));
1437 std::cout <<
" last_good_bin : " << last_good_bin << std::endl;
1438 }
catch (
const std::bad_any_cast& e) {
1439 std::cerr <<
"**ERROR**: Failed to cast last_good_bin attribute" << std::endl;
1442 std::cout <<
" last_good_bin : n/a" << std::endl;
1445 if (counts_data.HasAttribute(
"offset")) {
1447 auto offset = std::any_cast<float>(counts_data.GetAttribute(
"offset"));
1448 std::cout <<
" offset : " << offset << std::endl;
1449 }
catch (
const std::bad_any_cast& e) {
1450 std::cerr <<
"**ERROR**: Failed to cast offset attribute" << std::endl;
1453 std::cout <<
" offset : n/a" << std::endl;
1457 const auto& data = counts_data.GetData();
1458 std::cout << std::endl <<
" first couple of counts of each detector:";
1459 for (
unsigned int i=0; i<noOfHistos; i++) {
1461 std::cout << std::endl <<
" " << i+1 <<
": ";
1463 std::cout << std::endl <<
" " << i+1 <<
": ";
1464 for (
unsigned int j=0; j<first_good_bin+5; j++)
1465 std::cout << data[i*histoLength+j] <<
", ";
1468 }
catch (
const std::bad_any_cast& e) {
1469 std::cerr <<
"**ERROR**: Failed to cast counts data" << std::endl;
1474 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/resolution"]);
1475 std::cout << std::endl <<
" resolution : " << int_data.GetData()[0];
1477 if (int_data.HasAttribute(
"units")) {
1479 auto units = std::any_cast<std::string>(int_data.GetAttribute(
"units"));
1480 std::cout <<
" units : " << units;
1481 }
catch (
const std::bad_any_cast& e) {
1482 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1485 std::cout << std::endl <<
" units : n/a";
1487 }
catch (
const std::bad_any_cast& e) {
1488 std::cerr << std::endl <<
"**ERROR**: Failed to cast resolution data" << std::endl;
1491 std::cout << std::endl <<
" resolution : n/a";
1496 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/time_zero"]);
1497 std::cout << std::endl <<
" time_zero : " << float_data.GetData()[0];
1499 if (float_data.HasAttribute(
"units")) {
1501 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1502 std::cout << std::endl <<
" units : " << units;
1503 }
catch (
const std::bad_any_cast& e) {
1504 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1507 std::cout << std::endl <<
" units : n/a";
1510 if (float_data.HasAttribute(
"available")) {
1512 auto available = std::any_cast<int>(float_data.GetAttribute(
"available"));
1513 std::cout << std::endl <<
" available : " << available;
1514 }
catch (
const std::bad_any_cast& e) {
1515 std::cerr <<
"**ERROR**: Failed to cast available attribute";
1518 std::cout << std::endl <<
" available : n/a";
1520 }
catch (
const std::bad_any_cast& e) {
1521 std::cerr << std::endl <<
"**ERROR**: Failed to cast time_zero data" << std::endl;
1524 std::cout << std::endl <<
" time_zero : n/a";
1529 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/raw_time"]);
1530 std::cout << std::endl <<
" raw_time : " << float_data.GetData()[0];
1531 if (float_data.HasAttribute(
"axis")) {
1533 auto axis = std::any_cast<int>(float_data.GetAttribute(
"axis"));
1534 std::cout << std::endl <<
" axis : " << axis;
1535 }
catch (
const std::bad_any_cast& e) {
1536 std::cerr <<
"**ERROR**: Failed to cast axis attribute" << std::endl;
1539 std::cout << std::endl <<
" axis : n/a";
1542 if (float_data.HasAttribute(
"primary")) {
1544 auto primary = std::any_cast<int>(float_data.GetAttribute(
"primary"));
1545 std::cout << std::endl <<
" primary : " << primary;
1546 }
catch (
const std::bad_any_cast& e) {
1547 std::cerr <<
"**ERROR**: Failed to cast primary attribute" << std::endl;
1550 std::cout << std::endl <<
" primary : n/a";
1553 if (float_data.HasAttribute(
"units")) {
1555 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1556 std::cout << std::endl <<
" units : " << units;
1557 }
catch (
const std::bad_any_cast& e) {
1558 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1561 std::cout << std::endl <<
" units : n/a";
1563 }
catch (
const std::bad_any_cast& e) {
1564 std::cerr << std::endl <<
"**ERROR**: Failed to cast raw_time data" << std::endl;
1567 std::cout << std::endl <<
" raw_time : n/a";
1570 if (
fDataMap.find(
"/run/histogram_data_1/corrected_time") !=
fDataMap.end()) {
1572 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/corrected_time"]);
1573 std::cout << std::endl <<
" corrected_time : " << float_data.GetData()[0];
1574 if (float_data.HasAttribute(
"axis")) {
1576 auto axis = std::any_cast<int>(float_data.GetAttribute(
"axis"));
1577 std::cout << std::endl <<
" axis : " << axis;
1578 }
catch (
const std::bad_any_cast& e) {
1579 std::cerr <<
"**ERROR**: Failed to cast axis attribute" << std::endl;
1582 std::cout << std::endl <<
" axis : n/a";
1585 if (float_data.HasAttribute(
"units")) {
1587 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1588 std::cout << std::endl <<
" units : " << units;
1589 }
catch (
const std::bad_any_cast& e) {
1590 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1593 std::cout << std::endl <<
" units : n/a";
1595 }
catch (
const std::bad_any_cast& e) {
1596 std::cerr << std::endl <<
"**ERROR**: Failed to cast raw_time data" << std::endl;
1599 std::cout << std::endl <<
" corrected_time : n/a";
1604 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/grouping"]);
1605 auto data = int_data.GetData();
1606 unsigned int end{15};
1607 if (data.size() < end)
1609 std::cout << std::endl <<
" grouping : ";
1610 for (
unsigned int i=0; i<end; i++)
1611 std::cout << data[i] <<
", ";
1613 if (int_data.HasAttribute(
"available")) {
1615 auto available = std::any_cast<int>(int_data.GetAttribute(
"available"));
1616 std::cout << std::endl <<
" available : " << available;
1617 }
catch (
const std::bad_any_cast& e) {
1618 std::cerr <<
"**ERROR**: Failed to cast available attribute" << std::endl;
1621 std::cout << std::endl <<
" available : n/a";
1623 }
catch (
const std::bad_any_cast& e) {
1624 std::cerr << std::endl <<
"**ERROR**: Failed to cast grouping data" << std::endl;
1627 std::cout << std::endl <<
" grouping : n/a";
1632 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/alpha"]);
1633 auto data = float_data.GetData();
1634 unsigned int end{15};
1635 if (data.size() < end)
1637 std::cout << std::endl <<
" alpha : ";
1638 for (
unsigned int i=0; i<end; i++)
1639 std::cout << data[i] <<
", ";
1641 if (float_data.HasAttribute(
"available")) {
1643 auto available = std::any_cast<int>(float_data.GetAttribute(
"available"));
1644 std::cout << std::endl <<
" available : " << available;
1645 }
catch (
const std::bad_any_cast& e) {
1646 std::cerr <<
"**ERROR**: Failed to cast available attribute" << std::endl;
1649 std::cout << std::endl <<
" alpha : n/a";
1651 }
catch (
const std::bad_any_cast& e) {
1652 std::cerr << std::endl <<
"**ERROR**: Failed to cast alpha data" << std::endl;
1655 std::cout << std::endl <<
" available : n/a";
1658 std::cout << std::endl;
1659 std::cout <<
"========================================" << std::endl;
1660 std::cout << std::endl;
1662 std::cout << std::endl;
1663 std::cout << std::endl <<
"hdf5-NeXus file content of file:' " <<
fFileName <<
"'";
1664 std::cout << std::endl <<
"****";
1665 std::cout << std::endl <<
"Top Level Attributes:";
1666 std::cout << std::endl <<
" HDF4 Version : " <<
fHdf4Version;
1667 std::cout << std::endl <<
" NeXus Version: " <<
fNeXusVersion;
1668 std::cout << std::endl <<
" file_name : " <<
fFileNameNxs;
1669 std::cout << std::endl <<
" file_time : " <<
fFileTimeNxs;
1670 std::cout << std::endl <<
"++++";
1671 std::cout << std::endl <<
"raw_data_1";
1672 std::cout << std::endl <<
"----";
1673 std::cout << std::endl <<
" IDF_version: " <<
fIdfVersion;
1676 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/beamline"]);
1677 std::cout << std::endl <<
" beamline : " << str.GetData()[0];
1678 }
catch (
const std::bad_any_cast& e) {
1679 std::cerr << std::endl <<
"Error: Failed to cast beamline data" << std::endl;
1682 std::cout << std::endl <<
" beamline : n/a";
1687 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/definition"]);
1688 std::cout << std::endl <<
" definition : " << str.GetData()[0];
1689 }
catch (
const std::bad_any_cast& e) {
1690 std::cerr << std::endl <<
"Error: Failed to cast definition data" << std::endl;
1693 std::cout << std::endl <<
" definition : n/a";
1698 auto str = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/run_number"]);
1699 std::cout << std::endl <<
" run_number : " << str.GetData()[0];
1700 }
catch (
const std::bad_any_cast& e) {
1701 std::cerr << std::endl <<
"Error: Failed to cast run_number data" << std::endl;
1704 std::cout << std::endl <<
" run_number : n/a";
1709 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/title"]);
1710 std::cout << std::endl <<
" title : " << str.GetData()[0];
1711 }
catch (
const std::bad_any_cast& e) {
1712 std::cerr << std::endl <<
"Error: Failed to cast title data" << std::endl;
1715 std::cout << std::endl <<
" title : n/a";
1720 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/start_time"]);
1721 std::cout << std::endl <<
" start_time : " << str.GetData()[0];
1722 }
catch (
const std::bad_any_cast& e) {
1723 std::cerr << std::endl <<
"Error: Failed to cast start_time data" << std::endl;
1726 std::cout << std::endl <<
" start_time : n/a";
1731 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/end_time"]);
1732 std::cout << std::endl <<
" end_time : " << str.GetData()[0];
1733 }
catch (
const std::bad_any_cast& e) {
1734 std::cerr << std::endl <<
"Error: Failed to cast end_time data" << std::endl;
1737 std::cout << std::endl <<
" end_time : n/a";
1742 auto good_frames = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/good_frames"]);
1743 std::cout << std::endl <<
" good_frames: " << good_frames.GetData()[0];
1744 }
catch(
const std::bad_any_cast& e) {
1745 std::cerr << std::endl <<
"Error: Failed to cast good_frames data" << std::endl;
1748 std::cout << std::endl <<
" good_frames: n/a";
1751 if (
fDataMap.find(
"/raw_data_1/experiment_identifier") !=
fDataMap.end()) {
1753 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/experiment_identifier"]);
1754 std::cout << std::endl <<
" experiment_identifier: " << str.GetData()[0];
1755 }
catch (
const std::bad_any_cast& e) {
1756 std::cerr << std::endl <<
"Error: Failed to cast experiment_identifier data" << std::endl;
1759 std::cout << std::endl <<
" experiment_identifier: n/a";
1762 std::cout << std::endl <<
"----";
1763 std::cout << std::endl <<
" instrument";
1766 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/name"]);
1767 std::cout << std::endl <<
" name : " << str.GetData()[0];
1768 }
catch (
const std::bad_any_cast& e) {
1769 std::cerr << std::endl <<
"Error: Failed to cast instrument/name data" << std::endl;
1772 std::cout << std::endl <<
" name : n/a";
1775 std::cout << std::endl <<
"----";
1776 std::cout << std::endl <<
" source";
1777 if (
fDataMap.find(
"/raw_data_1/instrument/source/name") !=
fDataMap.end()) {
1779 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/name"]);
1780 std::cout << std::endl <<
" name : " << str.GetData()[0];
1781 }
catch (
const std::bad_any_cast& e) {
1782 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/name data" << std::endl;
1785 std::cout << std::endl <<
" name : n/a";
1788 if (
fDataMap.find(
"/raw_data_1/instrument/source/type") !=
fDataMap.end()) {
1790 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/type"]);
1791 std::cout << std::endl <<
" type : " << str.GetData()[0];
1792 }
catch (
const std::bad_any_cast& e) {
1793 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/type data" << std::endl;
1796 std::cout << std::endl <<
" type : n/a";
1799 if (
fDataMap.find(
"/raw_data_1/instrument/source/probe") !=
fDataMap.end()) {
1801 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/probe"]);
1802 std::cout << std::endl <<
" probe : " << str.GetData()[0];
1803 }
catch (
const std::bad_any_cast& e) {
1804 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/probe data" << std::endl;
1807 std::cout << std::endl <<
" probe : n/a";
1810 std::cout << std::endl <<
"----";
1811 std::cout << std::endl <<
" detector_1";
1812 std::cout << std::endl <<
" counts:";
1813 std::cout << std::endl;
1815 auto counts_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/counts"]);
1816 auto dims = counts_data.GetDimensions();
1817 std::cout <<
" counts dimensions: " << dims[0] <<
" x "
1818 << dims[1] <<
" x " << dims[2] << std::endl;
1819 std::cout <<
" total elements: " << counts_data.GetNumElements() << std::endl;
1822 if (counts_data.HasAttribute(
"signal")) {
1824 auto signal = std::any_cast<int>(counts_data.GetAttribute(
"signal"));
1825 std::cout <<
" signal : " << signal << std::endl;
1826 }
catch (
const std::bad_any_cast& e) {
1827 std::cerr <<
"Error: Failed to cast signal attribute" << std::endl;
1830 std::cout << std::endl <<
" signal : n/a";
1833 if (counts_data.HasAttribute(
"axes")) {
1835 auto axes = std::any_cast<std::string>(counts_data.GetAttribute(
"axes"));
1836 std::cout <<
" axes : " << axes << std::endl;
1837 }
catch (
const std::bad_any_cast& e) {
1838 std::cerr <<
"Error: Failed to cast axes attribute" << std::endl;
1841 std::cout << std::endl <<
" axes : n/a";
1844 if (counts_data.HasAttribute(
"long_name")) {
1846 auto long_name = std::any_cast<std::string>(counts_data.GetAttribute(
"long_name"));
1847 std::cout <<
" long_name : " << long_name << std::endl;
1848 }
catch (
const std::bad_any_cast& e) {
1849 std::cerr <<
"Error: Failed to cast long_name attribute" << std::endl;
1852 std::cout << std::endl <<
" long_name : n/a";
1855 if (counts_data.HasAttribute(
"t0_bin")) {
1857 auto t0_bin = std::any_cast<int>(counts_data.GetAttribute(
"t0_bin"));
1858 std::cout <<
" t0_bin : " << t0_bin << std::endl;
1859 }
catch (
const std::bad_any_cast& e) {
1860 std::cerr <<
"Error: Failed to cast t0_bin attribute" << std::endl;
1863 std::cout << std::endl <<
" t0_bin : n/a";
1866 if (counts_data.HasAttribute(
"first_good_bin")) {
1868 first_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"first_good_bin"));
1869 std::cout <<
" first_good_bin : " << first_good_bin << std::endl;
1870 }
catch (
const std::bad_any_cast& e) {
1871 std::cerr <<
"Error: Failed to cast first_good_bin attribute" << std::endl;
1874 std::cout << std::endl <<
" first_good_bin : n/a";
1877 if (counts_data.HasAttribute(
"last_good_bin")) {
1879 auto last_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"last_good_bin"));
1880 std::cout <<
" last_good_bin : " << last_good_bin << std::endl;
1881 }
catch (
const std::bad_any_cast& e) {
1882 std::cerr <<
"Error: Failed to cast last_good_bin attribute" << std::endl;
1885 std::cout << std::endl <<
" last_good_bin : n/a";
1888 if (
fDataMap.find(
"/raw_data_1/instrument/detector_1/resolution") !=
fDataMap.end()) {
1890 auto ivalData = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/resolution"]);
1891 std::cout <<
" resolution : " << ivalData.GetData()[0];
1892 if (ivalData.HasAttribute(
"units")) {
1894 auto units = std::any_cast<std::string>(ivalData.GetAttribute(
"units"));
1895 std::cout <<
" " << units << std::endl;
1896 }
catch (
const std::bad_any_cast& e) {
1897 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
1900 std::cout << std::endl <<
" unit : n/a" << std::endl;
1903 }
catch (
const std::bad_any_cast& e) {
1904 std::cerr <<
"Error: Failed to cast resolution attribute" << std::endl;
1907 std::cout << std::endl <<
" resolution : n/a";
1911 const auto& data = counts_data.GetData();
1912 std::cout << std::endl <<
" first couple of counts of each detector:";
1913 for (
unsigned int i=0; i<dims[1]; i++) {
1915 std::cout << std::endl <<
" " << i+1 <<
": ";
1917 std::cout << std::endl <<
" " << i+1 <<
": ";
1918 for (
unsigned int j=0; j<first_good_bin+5; j++)
1919 std::cout << data[i*dims[2]+j] <<
", ";
1922 }
catch (
const std::bad_any_cast& e) {
1923 std::cerr <<
"Error: Failed to cast counts data" << std::endl;
1926 std::cout << std::endl;
1927 std::cout << std::endl <<
" raw_time:";
1928 std::cout << std::endl;
1930 auto raw_time = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/instrument/detector_1/raw_time"]);
1931 const auto& data = raw_time.GetData();
1934 if (raw_time.HasAttribute(
"units")) {
1936 auto units = std::any_cast<std::string>(raw_time.GetAttribute(
"units"));
1937 std::cout <<
" units : " << units << std::endl;
1938 }
catch (
const std::bad_any_cast& e) {
1939 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
1942 std::cout << std::endl <<
" units : n/a" << std::endl;
1947 for (
unsigned int i=0; i<first_good_bin+5; i++)
1948 std::cout << data[i] <<
", ";
1950 }
catch (
const std::bad_any_cast& e) {
1951 std::cerr <<
"Error: Failed to cast raw_time data" << std::endl;
1955 std::cout << std::endl;
1956 std::cout << std::endl <<
" spectrum_index:";
1957 std::cout << std::endl;
1959 auto spectrum_index = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/spectrum_index"]);
1960 const auto& data = spectrum_index.GetData();
1964 for (
unsigned int i=0; i<first_good_bin+5; i++)
1965 std::cout << data[i] <<
", ";
1967 }
catch (
const std::bad_any_cast& e) {
1968 std::cerr <<
"Error: Failed to cast spectrum_index data" << std::endl;
1971 std::cout << std::endl;
1972 std::cout << std::endl <<
" dead_time:";
1973 std::cout << std::endl;
1975 auto dead_time = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/instrument/detector_1/dead_time"]);
1976 const auto& data = dead_time.GetData();
1980 for (
unsigned int i=0; i<first_good_bin+5; i++)
1981 std::cout << data[i] <<
", ";
1983 }
catch (
const std::bad_any_cast& e) {
1984 std::cerr <<
"Error: Failed to cast spectrum_index data" << std::endl;
1987 std::cout << std::endl;
3785 int first_good_bin{0};
3788 std::cout << std::endl;
3789 std::cout << std::endl <<
"hdf5-NeXus file content of file:' " <<
fFileName <<
"'"; std::cout << std::endl <<
"****";
3790 std::cout << std::endl <<
"****";
3791 std::cout << std::endl <<
"Top Level Attributes:";
3792 std::cout << std::endl <<
" NeXus Version: " <<
fNeXusVersion;
3793 std::cout << std::endl <<
" user: " <<
fUserV1;
3794 std::cout << std::endl <<
"++++";
3795 std::cout << std::endl <<
"run";
3796 std::cout << std::endl <<
"----";
3797 std::cout << std::endl <<
" IDF_version: " <<
fIdfVersion;
3800 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/program_name"]);
3801 std::cout << std::endl <<
" program_name : " << str_data.GetData()[0];
3804 if (str_data.HasAttribute(
"version")) {
3806 auto version = std::any_cast<std::string>(str_data.GetAttribute(
"version"));
3807 std::cout <<
" version : " << version << std::endl;
3808 }
catch (
const std::bad_any_cast& e) {
3809 std::cerr <<
"Error: Failed to cast version attribute" << std::endl;
3812 }
catch (
const std::bad_any_cast& e) {
3813 std::cerr << std::endl <<
"Error: Failed to cast program_name data" << std::endl;
3816 std::cout << std::endl <<
" program_name : n/a";
3821 auto number = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/number"]);
3822 std::cout << std::endl <<
" number : " << number.GetData()[0];
3823 }
catch (
const std::bad_any_cast& e) {
3824 std::cerr << std::endl <<
"Error: Failed to cast number data" << std::endl;
3827 std::cout << std::endl <<
" number : n/a";
3832 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/title"]);
3833 std::cout << std::endl <<
" title : " << str_data.GetData()[0];
3834 }
catch (
const std::bad_any_cast& e) {
3835 std::cerr << std::endl <<
"Error: Failed to cast title data" << std::endl;
3838 std::cout << std::endl <<
" title : n/a";
3843 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/notes"]);
3844 std::cout << std::endl <<
" notes : " << str_data.GetData()[0];
3845 }
catch (
const std::bad_any_cast& e) {
3846 std::cerr << std::endl <<
"Error: Failed to cast notes data" << std::endl;
3849 std::cout << std::endl <<
" notes : n/a";
3854 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/analysis"]);
3855 std::cout << std::endl <<
" analysis : " << str_data.GetData()[0];
3856 }
catch (
const std::bad_any_cast& e) {
3857 std::cerr << std::endl <<
"Error: Failed to cast analysis data" << std::endl;
3860 std::cout << std::endl <<
" analysis : n/a";
3865 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/lab"]);
3866 std::cout << std::endl <<
" lab : " << str_data.GetData()[0];
3867 }
catch (
const std::bad_any_cast& e) {
3868 std::cerr << std::endl <<
"Error: Failed to cast lab data" << std::endl;
3871 std::cout << std::endl <<
" lab : n/a";
3876 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/beamline"]);
3877 std::cout << std::endl <<
" beamline : " << str_data.GetData()[0];
3878 }
catch (
const std::bad_any_cast& e) {
3879 std::cerr << std::endl <<
"Error: Failed to cast beamline data" << std::endl;
3882 std::cout << std::endl <<
" beamline : n/a";
3887 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/start_time"]);
3888 std::cout << std::endl <<
" start_time : " << str_data.GetData()[0];
3889 }
catch (
const std::bad_any_cast& e) {
3890 std::cerr << std::endl <<
"Error: Failed to cast start_time data" << std::endl;
3893 std::cout << std::endl <<
" start_time : n/a";
3898 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/end_time"]);
3899 std::cout << std::endl <<
" end_time : " << str_data.GetData()[0];
3900 }
catch (
const std::bad_any_cast& e) {
3901 std::cerr << std::endl <<
"Error: Failed to cast end_time data" << std::endl;
3904 std::cout << std::endl <<
" end_time : n/a";
3909 auto int_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/switching_state"]);
3910 std::cout << std::endl <<
" switching_state : " << int_data.GetData()[0];
3911 }
catch (
const std::bad_any_cast& e) {
3912 std::cerr << std::endl <<
"Error: Failed to cast switching_state data" << std::endl;
3915 std::cout << std::endl <<
" switching_state : n/a";
3918 std::cout << std::endl <<
" user";
3919 std::cout << std::endl <<
"----";
3922 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/user/name"]);
3923 std::cout << std::endl <<
" name : " << str_data.GetData()[0];
3924 }
catch (
const std::bad_any_cast& e) {
3925 std::cerr << std::endl <<
"Error: Failed to cast name data" << std::endl;
3928 std::cout << std::endl <<
" name : n/a";
3933 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/user/experiment_number"]);
3934 std::cout << std::endl <<
" experiment_number : " << str_data.GetData()[0];
3935 }
catch (
const std::bad_any_cast& e) {
3936 std::cerr << std::endl <<
"Error: Failed to cast experiment_number data" << std::endl;
3939 std::cout << std::endl <<
" experiment_number : n/a";
3942 std::cout << std::endl <<
" sample";
3943 std::cout << std::endl <<
"----";
3946 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/sample/name"]);
3947 std::cout << std::endl <<
" name : " << str_data.GetData()[0];
3948 }
catch (
const std::bad_any_cast& e) {
3949 std::cerr << std::endl <<
"Error: Failed to cast name data" << std::endl;
3952 std::cout << std::endl <<
" name : n/a";
3957 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/temperature"]);
3958 std::cout << std::endl <<
" temperature : " << float_data.GetData()[0];
3961 if (float_data.HasAttribute(
"units")) {
3963 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
3964 std::cout <<
" units : " << units << std::endl;
3965 }
catch (
const std::bad_any_cast& e) {
3966 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
3969 }
catch (
const std::bad_any_cast& e) {
3970 std::cerr << std::endl <<
"Error: Failed to cast temperature data" << std::endl;
3973 std::cout << std::endl <<
" temperature : n/a";
3978 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/magnetic_field"]);
3979 std::cout << std::endl <<
" magnetic_field : " << float_data.GetData()[0];
3982 if (float_data.HasAttribute(
"units")) {
3984 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
3985 std::cout <<
" units : " << units << std::endl;
3986 }
catch (
const std::bad_any_cast& e) {
3987 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
3990 }
catch (
const std::bad_any_cast& e) {
3991 std::cerr << std::endl <<
"Error: Failed to cast magnetic_field data" << std::endl;
3994 std::cout << std::endl <<
" magnetic_field : n/a";
3997 if (
fDataMap.find(
"/run/sample/magnetic_field_vector") !=
fDataMap.end()) {
3999 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/magnetic_field_vector"]);
4000 std::cout << std::endl <<
" magnetic_field_vector : " << float_data.GetData()[0];
4003 if (float_data.HasAttribute(
"coordinate_system")) {
4005 auto coordinate_system = std::any_cast<std::string>(float_data.GetAttribute(
"coordinate_system"));
4006 std::cout <<
" coordinate_system : " << coordinate_system << std::endl;
4007 }
catch (
const std::bad_any_cast& e) {
4008 std::cerr <<
"Error: Failed to cast coordinate_system attribute" << std::endl;
4011 if (float_data.HasAttribute(
"units")) {
4013 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
4014 std::cout <<
" units : " << units << std::endl;
4015 }
catch (
const std::bad_any_cast& e) {
4016 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4019 if (float_data.HasAttribute(
"available")) {
4021 auto available = std::any_cast<int>(float_data.GetAttribute(
"available"));
4022 std::cout <<
" available : " << available << std::endl;
4023 }
catch (
const std::bad_any_cast& e) {
4024 std::cerr <<
"Error: Failed to cast available attribute" << std::endl;
4027 }
catch (
const std::bad_any_cast& e) {
4028 std::cerr << std::endl <<
"Error: Failed to cast magnetic_field_vector data" << std::endl;
4031 std::cout << std::endl <<
" magnetic_field_vector : n/a";
4036 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/sample/environment"]);
4037 std::cout << std::endl <<
" environment : " << str_data.GetData()[0];
4038 }
catch (
const std::bad_any_cast& e) {
4039 std::cerr << std::endl <<
"Error: Failed to cast environment data" << std::endl;
4042 std::cout << std::endl <<
" environment : n/a";
4045 std::cout << std::endl <<
" instrument";
4046 std::cout << std::endl <<
"----";
4049 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/name"]);
4050 std::cout << std::endl <<
" name : " << str_data.GetData()[0];
4051 }
catch (
const std::bad_any_cast& e) {
4052 std::cerr << std::endl <<
"Error: Failed to cast name data" << std::endl;
4055 std::cout << std::endl <<
" name : n/a";
4058 std::cout << std::endl <<
" detector";
4059 std::cout << std::endl <<
"----";
4062 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/instrument/detector/number"]);
4063 std::cout << std::endl <<
" number : " << int_data.GetData()[0];
4064 }
catch (
const std::bad_any_cast& e) {
4065 std::cerr << std::endl <<
"Error: Failed to cast number data" << std::endl;
4068 std::cout << std::endl <<
" number : n/a";
4071 if (
fDataMap.find(
"/run/instrument/detector/deadtimes") !=
fDataMap.end()) {
4073 const auto& dead_times = std::any_cast<PNXdata<float>>(
"/run/instrument/detector/deadtimes").GetData();
4074 std::cout << std::endl <<
" deadtimes: ";
4075 for (
unsigned int i=0; i<10; i++)
4076 std::cout << dead_times[i] <<
", ";
4078 }
catch (
const std::bad_any_cast& e) {
4079 std::cerr << std::endl <<
"Error: Failed to cast dead time data" << std::endl;
4082 std::cout << std::endl <<
" deadtimes: n/a";
4085 std::cout << std::endl <<
" collimator";
4086 std::cout << std::endl <<
"----";
4089 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/collimator/type"]);
4090 std::cout << std::endl <<
" type : " << str_data.GetData()[0];
4091 }
catch (
const std::bad_any_cast& e) {
4092 std::cerr << std::endl <<
"Error: Failed to cast type data" << std::endl;
4095 std::cout << std::endl <<
" type : n/a";
4098 std::cout << std::endl <<
" beam";
4099 std::cout << std::endl <<
"----";
4102 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/beam/beamline"]);
4103 std::cout << std::endl <<
" beamline : " << str_data.GetData()[0];
4104 }
catch (
const std::bad_any_cast& e) {
4105 std::cerr << std::endl <<
"Error: Failed to cast beamline data" << std::endl;
4108 std::cout << std::endl <<
" beamline : n/a";
4113 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/beam/frames_good"]);
4114 std::cout << std::endl <<
" frames_good : " << str_data.GetData()[0];
4115 }
catch (
const std::bad_any_cast& e) {
4116 std::cerr << std::endl <<
"Error: Failed to cast frames_good data" << std::endl;
4119 std::cout << std::endl <<
" frames_good : n/a";
4122 std::cout << std::endl <<
" histogram_data_1";
4123 std::cout << std::endl <<
"----";
4124 std::cout << std::endl <<
" counts:";
4125 std::cout << std::endl;
4127 auto counts_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/counts"]);
4130 if (counts_data.HasAttribute(
"units")) {
4132 auto units = std::any_cast<std::string>(counts_data.GetAttribute(
"units"));
4133 std::cout <<
" units : " << units << std::endl;
4134 }
catch (
const std::bad_any_cast& e) {
4135 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4138 std::cout <<
" units : n/a" << std::endl;
4141 if (counts_data.HasAttribute(
"signal")) {
4143 auto signal = std::any_cast<int>(counts_data.GetAttribute(
"signal"));
4144 std::cout <<
" signal : " << signal << std::endl;
4145 }
catch (
const std::bad_any_cast& e) {
4146 std::cerr <<
"Error: Failed to cast signal attribute" << std::endl;
4149 std::cout <<
" signal : n/a" << std::endl;
4153 if (counts_data.HasAttribute(
"number")) {
4155 noOfHistos = std::any_cast<int>(counts_data.GetAttribute(
"number"));
4156 std::cout <<
" number : " << noOfHistos << std::endl;
4157 }
catch (
const std::bad_any_cast& e) {
4158 std::cerr <<
"Error: Failed to cast number attribute" << std::endl;
4161 std::cout <<
" number : n/a" << std::endl;
4165 if (counts_data.HasAttribute(
"length")) {
4167 histoLength = std::any_cast<int>(counts_data.GetAttribute(
"length"));
4168 std::cout <<
" length : " << noOfHistos << std::endl;
4169 }
catch (
const std::bad_any_cast& e) {
4170 std::cerr <<
"Error: Failed to cast length attribute" << std::endl;
4173 std::cout <<
" length : n/a" << std::endl;
4176 if (counts_data.HasAttribute(
"t0_bin")) {
4178 auto t0_bin = std::any_cast<int>(counts_data.GetAttribute(
"t0_bin"));
4179 std::cout <<
" t0_bin : " << t0_bin << std::endl;
4180 }
catch (
const std::bad_any_cast& e) {
4181 std::cerr <<
"Error: Failed to cast t0_bin attribute" << std::endl;
4184 std::cout <<
" t0_bin : n/a" << std::endl;
4187 if (counts_data.HasAttribute(
"first_good_bin")) {
4189 first_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"first_good_bin"));
4190 std::cout <<
" first_good_bin : " << first_good_bin << std::endl;
4191 }
catch (
const std::bad_any_cast& e) {
4192 std::cerr <<
"Error: Failed to cast first_good_bin attribute" << std::endl;
4195 std::cout <<
" first_good_bin : n/a" << std::endl;
4198 if (counts_data.HasAttribute(
"last_good_bin")) {
4200 auto last_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"last_good_bin"));
4201 std::cout <<
" last_good_bin : " << last_good_bin << std::endl;
4202 }
catch (
const std::bad_any_cast& e) {
4203 std::cerr <<
"Error: Failed to cast last_good_bin attribute" << std::endl;
4206 std::cout <<
" last_good_bin : n/a" << std::endl;
4209 if (counts_data.HasAttribute(
"offset")) {
4211 auto offset = std::any_cast<float>(counts_data.GetAttribute(
"offset"));
4212 std::cout <<
" offset : " << offset << std::endl;
4213 }
catch (
const std::bad_any_cast& e) {
4214 std::cerr <<
"Error: Failed to cast offset attribute" << std::endl;
4217 std::cout <<
" offset : n/a" << std::endl;
4221 const auto& data = counts_data.GetData();
4222 std::cout << std::endl <<
" first couple of counts of each detector:";
4223 for (
unsigned int i=0; i<noOfHistos; i++) {
4225 std::cout << std::endl <<
" " << i+1 <<
": ";
4227 std::cout << std::endl <<
" " << i+1 <<
": ";
4228 for (
unsigned int j=0; j<first_good_bin+5; j++)
4229 std::cout << data[i*histoLength+j] <<
", ";
4232 }
catch (
const std::bad_any_cast& e) {
4233 std::cerr <<
"Error: Failed to cast counts data" << std::endl;
4238 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/resolution"]);
4239 std::cout << std::endl <<
" resolution : " << int_data.GetData()[0];
4241 if (int_data.HasAttribute(
"units")) {
4243 auto units = std::any_cast<std::string>(int_data.GetAttribute(
"units"));
4244 std::cout <<
" units : " << units << std::endl;
4245 }
catch (
const std::bad_any_cast& e) {
4246 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4249 std::cout <<
" units : n/a" << std::endl;
4251 }
catch (
const std::bad_any_cast& e) {
4252 std::cerr << std::endl <<
"Error: Failed to cast resolution data" << std::endl;
4255 std::cout << std::endl <<
" resolution : n/a";
4260 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/time_zero"]);
4261 std::cout << std::endl <<
" time_zero : " << int_data.GetData()[0];
4263 if (int_data.HasAttribute(
"units")) {
4265 auto units = std::any_cast<std::string>(int_data.GetAttribute(
"units"));
4266 std::cout <<
" units : " << units << std::endl;
4267 }
catch (
const std::bad_any_cast& e) {
4268 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4271 std::cout <<
" units : n/a" << std::endl;
4274 if (int_data.HasAttribute(
"available")) {
4276 auto available = std::any_cast<int>(int_data.GetAttribute(
"available"));
4277 std::cout <<
" available : " << available << std::endl;
4278 }
catch (
const std::bad_any_cast& e) {
4279 std::cerr <<
"Error: Failed to cast available attribute" << std::endl;
4282 std::cout <<
" available : n/a" << std::endl;
4284 }
catch (
const std::bad_any_cast& e) {
4285 std::cerr << std::endl <<
"Error: Failed to cast time_zero data" << std::endl;
4288 std::cout << std::endl <<
" time_zero : n/a";
4293 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/raw_time"]);
4294 std::cout << std::endl <<
" raw_time : " << float_data.GetData()[0];
4295 if (float_data.HasAttribute(
"axis")) {
4297 auto axis = std::any_cast<int>(float_data.GetAttribute(
"axis"));
4298 std::cout <<
" axis : " << axis << std::endl;
4299 }
catch (
const std::bad_any_cast& e) {
4300 std::cerr <<
"Error: Failed to cast axis attribute" << std::endl;
4303 std::cout <<
" axis : n/a" << std::endl;
4306 if (float_data.HasAttribute(
"primary")) {
4308 auto primary = std::any_cast<int>(float_data.GetAttribute(
"primary"));
4309 std::cout <<
" primary : " << primary << std::endl;
4310 }
catch (
const std::bad_any_cast& e) {
4311 std::cerr <<
"Error: Failed to cast primary attribute" << std::endl;
4314 std::cout <<
" primary : n/a" << std::endl;
4317 if (float_data.HasAttribute(
"units")) {
4319 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
4320 std::cout <<
" units : " << units << std::endl;
4321 }
catch (
const std::bad_any_cast& e) {
4322 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4325 std::cout <<
" units : n/a" << std::endl;
4327 }
catch (
const std::bad_any_cast& e) {
4328 std::cerr << std::endl <<
"Error: Failed to cast raw_time data" << std::endl;
4331 std::cout << std::endl <<
" raw_time : n/a";
4334 if (
fDataMap.find(
"/run/histogram_data_1/corrected_time") !=
fDataMap.end()) {
4336 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/corrected_time"]);
4337 std::cout << std::endl <<
" corrected_time : " << float_data.GetData()[0];
4338 if (float_data.HasAttribute(
"axis")) {
4340 auto axis = std::any_cast<int>(float_data.GetAttribute(
"axis"));
4341 std::cout <<
" axis : " << axis << std::endl;
4342 }
catch (
const std::bad_any_cast& e) {
4343 std::cerr <<
"Error: Failed to cast axis attribute" << std::endl;
4346 std::cout <<
" axis : n/a" << std::endl;
4349 if (float_data.HasAttribute(
"units")) {
4351 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
4352 std::cout <<
" units : " << units << std::endl;
4353 }
catch (
const std::bad_any_cast& e) {
4354 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4357 std::cout <<
" units : n/a" << std::endl;
4359 }
catch (
const std::bad_any_cast& e) {
4360 std::cerr << std::endl <<
"Error: Failed to cast raw_time data" << std::endl;
4363 std::cout << std::endl <<
" corrected_time : n/a";
4368 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/grouping"]);
4369 std::cout << std::endl <<
" grouping : " << int_data.GetData()[0];
4370 if (int_data.HasAttribute(
"available")) {
4372 auto available = std::any_cast<int>(int_data.GetAttribute(
"available"));
4373 std::cout <<
" available : " << available << std::endl;
4374 }
catch (
const std::bad_any_cast& e) {
4375 std::cerr <<
"Error: Failed to cast available attribute" << std::endl;
4378 std::cout << std::endl <<
" available : n/a";
4380 }
catch (
const std::bad_any_cast& e) {
4381 std::cerr << std::endl <<
"Error: Failed to cast grouping data" << std::endl;
4384 std::cout << std::endl <<
" grouping : n/a";
4387 std::cout << std::endl;
4389 std::cout << std::endl;
4390 std::cout << std::endl <<
"hdf5-NeXus file content of file:' " <<
fFileName <<
"'";
4391 std::cout << std::endl <<
"****";
4392 std::cout << std::endl <<
"Top Level Attributes:";
4393 std::cout << std::endl <<
" HDF5 Version : " <<
fHdf5Version;
4394 std::cout << std::endl <<
" NeXus Version: " <<
fNeXusVersion;
4395 std::cout << std::endl <<
" file_name : " <<
fFileNameNxs;
4396 std::cout << std::endl <<
" file_time : " <<
fFileTimeNxs;
4397 std::cout << std::endl <<
"++++";
4398 std::cout << std::endl <<
"raw_data_1";
4399 std::cout << std::endl <<
"----";
4400 std::cout << std::endl <<
" IDF_version: " <<
fIdfVersion;
4403 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/beamline"]);
4404 std::cout << std::endl <<
" beamline : " << str.GetData()[0];
4405 }
catch (
const std::bad_any_cast& e) {
4406 std::cerr << std::endl <<
"Error: Failed to cast beamline data" << std::endl;
4409 std::cout << std::endl <<
" beamline : n/a";
4414 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/definition"]);
4415 std::cout << std::endl <<
" definition : " << str.GetData()[0];
4416 }
catch (
const std::bad_any_cast& e) {
4417 std::cerr << std::endl <<
"Error: Failed to cast definition data" << std::endl;
4420 std::cout << std::endl <<
" definition : n/a";
4425 auto str = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/run_number"]);
4426 std::cout << std::endl <<
" run_number : " << str.GetData()[0];
4427 }
catch (
const std::bad_any_cast& e) {
4428 std::cerr << std::endl <<
"Error: Failed to cast run_number data" << std::endl;
4431 std::cout << std::endl <<
" run_number : n/a";
4436 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/title"]);
4437 std::cout << std::endl <<
" title : " << str.GetData()[0];
4438 }
catch (
const std::bad_any_cast& e) {
4439 std::cerr << std::endl <<
"Error: Failed to cast title data" << std::endl;
4442 std::cout << std::endl <<
" title : n/a";
4447 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/start_time"]);
4448 std::cout << std::endl <<
" start_time : " << str.GetData()[0];
4449 }
catch (
const std::bad_any_cast& e) {
4450 std::cerr << std::endl <<
"Error: Failed to cast start_time data" << std::endl;
4453 std::cout << std::endl <<
" start_time : n/a";
4458 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/end_time"]);
4459 std::cout << std::endl <<
" end_time : " << str.GetData()[0];
4460 }
catch (
const std::bad_any_cast& e) {
4461 std::cerr << std::endl <<
"Error: Failed to cast end_time data" << std::endl;
4464 std::cout << std::endl <<
" end_time : n/a";
4469 auto good_frames = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/good_frames"]);
4470 std::cout << std::endl <<
" good_frames: " << good_frames.GetData()[0];
4471 }
catch(
const std::bad_any_cast& e) {
4472 std::cerr << std::endl <<
"Error: Failed to cast good_frames data" << std::endl;
4475 std::cout << std::endl <<
" good_frames: n/a";
4478 if (
fDataMap.find(
"/raw_data_1/experiment_identifier") !=
fDataMap.end()) {
4480 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/experiment_identifier"]);
4481 std::cout << std::endl <<
" experiment_identifier: " << str.GetData()[0];
4482 }
catch (
const std::bad_any_cast& e) {
4483 std::cerr << std::endl <<
"Error: Failed to cast experiment_identifier data" << std::endl;
4486 std::cout << std::endl <<
" experiment_identifier: n/a";
4489 std::cout << std::endl <<
"----";
4490 std::cout << std::endl <<
" instrument";
4493 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/name"]);
4494 std::cout << std::endl <<
" name : " << str.GetData()[0];
4495 }
catch (
const std::bad_any_cast& e) {
4496 std::cerr << std::endl <<
"Error: Failed to cast instrument/name data" << std::endl;
4499 std::cout << std::endl <<
" name : n/a";
4502 std::cout << std::endl <<
"----";
4503 std::cout << std::endl <<
" source";
4504 if (
fDataMap.find(
"/raw_data_1/instrument/source/name") !=
fDataMap.end()) {
4506 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/name"]);
4507 std::cout << std::endl <<
" name : " << str.GetData()[0];
4508 }
catch (
const std::bad_any_cast& e) {
4509 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/name data" << std::endl;
4512 std::cout << std::endl <<
" name : n/a";
4515 if (
fDataMap.find(
"/raw_data_1/instrument/source/type") !=
fDataMap.end()) {
4517 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/type"]);
4518 std::cout << std::endl <<
" type : " << str.GetData()[0];
4519 }
catch (
const std::bad_any_cast& e) {
4520 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/type data" << std::endl;
4523 std::cout << std::endl <<
" type : n/a";
4526 if (
fDataMap.find(
"/raw_data_1/instrument/source/probe") !=
fDataMap.end()) {
4528 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/probe"]);
4529 std::cout << std::endl <<
" probe : " << str.GetData()[0];
4530 }
catch (
const std::bad_any_cast& e) {
4531 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/probe data" << std::endl;
4534 std::cout << std::endl <<
" probe : n/a";
4537 std::cout << std::endl <<
"----";
4538 std::cout << std::endl <<
" sample";
4541 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/sample/name"]);
4542 std::cout << std::endl <<
" name : " << str.GetData()[0];
4543 }
catch (
const std::bad_any_cast& e) {
4544 std::cerr << std::endl <<
"Error: Failed to cast sample/name data" << std::endl;
4547 std::cout << std::endl <<
" name : n/a";
4552 auto temp_ds = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/sample/temperature"]);
4553 float temp = temp_ds.GetData()[0];
4554 if (temp_ds.HasAttribute(
"units")) {
4556 auto units = std::any_cast<std::string>(temp_ds.GetAttribute(
"units"));
4557 if (units ==
"Celsius")
4559 }
catch (
const std::bad_any_cast& e) {
4560 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4563 std::cout << std::endl <<
" temperature: " << temp <<
" K";
4564 }
catch (
const std::bad_any_cast& e) {
4565 std::cerr << std::endl <<
"Error: Failed to cast sample/temperature data" << std::endl;
4568 std::cout << std::endl <<
" temperature: n/a";
4571 if (
fDataMap.find(
"/raw_data_1/sample/magnetic_field") !=
fDataMap.end()) {
4573 auto mag_field_ds = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/sample/magnetic_field"]);
4574 float mag_field = mag_field_ds.GetData()[0];
4575 if (mag_field_ds.HasAttribute(
"units")) {
4577 auto units = std::any_cast<std::string>(mag_field_ds.GetAttribute(
"units"));
4578 if (units ==
"Tesla")
4580 }
catch (
const std::bad_any_cast& e) {
4581 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4584 std::cout << std::endl <<
" mag. field: " << mag_field <<
" G";
4585 }
catch (
const std::bad_any_cast& e) {
4586 std::cerr << std::endl <<
"Error: Failed to cast sample/magnetic_field data" << std::endl;
4589 std::cout << std::endl <<
" temperature: n/a";
4594 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/sample/shape"]);
4595 std::cout << std::endl <<
" shape : " << str.GetData()[0];
4596 }
catch (
const std::bad_any_cast& e) {
4597 std::cerr << std::endl <<
"Error: Failed to cast sample/shape data" << std::endl;
4600 std::cout << std::endl <<
" shape : n/a";
4603 std::cout << std::endl <<
"----";
4604 std::cout << std::endl <<
" detector_1";
4605 std::cout << std::endl <<
" counts:";
4606 std::cout << std::endl;
4608 auto counts_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/counts"]);
4609 auto dims = counts_data.GetDimensions();
4610 std::cout <<
" counts dimensions: " << dims[0] <<
" x "
4611 << dims[1] <<
" x " << dims[2] << std::endl;
4612 std::cout <<
" total elements: " << counts_data.GetNumElements() << std::endl;
4615 if (counts_data.HasAttribute(
"signal")) {
4617 auto signal = std::any_cast<int>(counts_data.GetAttribute(
"signal"));
4618 std::cout <<
" signal : " << signal << std::endl;
4619 }
catch (
const std::bad_any_cast& e) {
4620 std::cerr <<
"Error: Failed to cast signal attribute" << std::endl;
4623 std::cout <<
" signal : n/a" << std::endl;
4626 if (counts_data.HasAttribute(
"axes")) {
4628 auto axes = std::any_cast<std::string>(counts_data.GetAttribute(
"axes"));
4629 std::cout <<
" axes : " << axes << std::endl;
4630 }
catch (
const std::bad_any_cast& e) {
4631 std::cerr <<
"Error: Failed to cast axes attribute" << std::endl;
4634 std::cout <<
" axes : n/a" << std::endl;
4637 if (counts_data.HasAttribute(
"long_name")) {
4639 auto long_name = std::any_cast<std::string>(counts_data.GetAttribute(
"long_name"));
4640 std::cout <<
" long_name : " << long_name << std::endl;
4641 }
catch (
const std::bad_any_cast& e) {
4642 std::cerr <<
"Error: Failed to cast long_name attribute" << std::endl;
4645 std::cout <<
" long_name : n/a" << std::endl;
4648 if (counts_data.HasAttribute(
"t0_bin")) {
4650 auto t0_bin = std::any_cast<int>(counts_data.GetAttribute(
"t0_bin"));
4651 std::cout <<
" t0_bin : " << t0_bin << std::endl;
4652 }
catch (
const std::bad_any_cast& e) {
4653 std::cerr <<
"Error: Failed to cast t0_bin attribute" << std::endl;
4656 std::cout <<
" t0_bin : n/a" << std::endl;
4659 if (counts_data.HasAttribute(
"first_good_bin")) {
4661 first_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"first_good_bin"));
4662 std::cout <<
" first_good_bin : " << first_good_bin << std::endl;
4663 }
catch (
const std::bad_any_cast& e) {
4664 std::cerr <<
"Error: Failed to cast first_good_bin attribute" << std::endl;
4667 std::cout <<
" first_good_bin : n/a" << std::endl;
4670 if (counts_data.HasAttribute(
"last_good_bin")) {
4672 auto last_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"last_good_bin"));
4673 std::cout <<
" last_good_bin : " << last_good_bin << std::endl;
4674 }
catch (
const std::bad_any_cast& e) {
4675 std::cerr <<
"Error: Failed to cast last_good_bin attribute" << std::endl;
4678 std::cout <<
" last_good_bin : n/a" << std::endl;
4681 if (
fDataMap.find(
"/raw_data_1/instrument/detector_1/resolution") !=
fDataMap.end()) {
4683 auto ivalData = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/resolution"]);
4684 std::cout <<
" resolution : " << ivalData.GetData()[0];
4685 if (ivalData.HasAttribute(
"units")) {
4687 auto units = std::any_cast<std::string>(ivalData.GetAttribute(
"units"));
4688 std::cout <<
" " << units << std::endl;
4689 }
catch (
const std::bad_any_cast& e) {
4690 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4693 }
catch (
const std::bad_any_cast& e) {
4694 std::cerr <<
"Error: Failed to cast resolution attribute" << std::endl;
4697 std::cout <<
" resolution : n/a";
4701 const auto& data = counts_data.GetData();
4702 std::cout << std::endl <<
" first couple of counts of each detector:";
4703 for (
unsigned int i=0; i<dims[1]; i++) {
4705 std::cout << std::endl <<
" " << i+1 <<
": ";
4707 std::cout << std::endl <<
" " << i+1 <<
": ";
4708 for (
unsigned int j=0; j<first_good_bin+5; j++)
4709 std::cout << data[i*dims[2]+j] <<
", ";
4712 }
catch (
const std::bad_any_cast& e) {
4713 std::cerr <<
"Error: Failed to cast counts data" << std::endl;
4716 std::cout << std::endl;
4717 std::cout << std::endl <<
" raw_time:";
4718 std::cout << std::endl;
4720 auto raw_time = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/instrument/detector_1/raw_time"]);
4721 const auto& data = raw_time.GetData();
4724 if (raw_time.HasAttribute(
"units")) {
4726 auto units = std::any_cast<std::string>(raw_time.GetAttribute(
"units"));
4727 std::cout <<
" units : " << units << std::endl;
4728 }
catch (
const std::bad_any_cast& e) {
4729 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4732 std::cout <<
" units : n/a" << std::endl;
4737 for (
unsigned int i=0; i<first_good_bin+5; i++)
4738 std::cout << data[i] <<
", ";
4740 }
catch (
const std::bad_any_cast& e) {
4741 std::cerr <<
"Error: Failed to cast raw_time data" << std::endl;
4744 std::cout << std::endl;
4745 std::cout << std::endl <<
" spectrum_index:";
4746 std::cout << std::endl;
4748 auto spectrum_index = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/spectrum_index"]);
4749 const auto& data = spectrum_index.GetData();
4753 for (
unsigned int i=0; i<first_good_bin+5; i++)
4754 std::cout << data[i] <<
", ";
4756 }
catch (
const std::bad_any_cast& e) {
4757 std::cerr <<
"Error: Failed to cast spectrum_index data" << std::endl;
4760 std::cout << std::endl;
4761 std::cout << std::endl <<
" dead_time:";
4762 std::cout << std::endl;
4764 auto dead_time = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/instrument/detector_1/dead_time"]);
4765 const auto& data = dead_time.GetData();
4769 for (
unsigned int i=0; i<first_good_bin+5; i++)
4770 std::cout << data[i] <<
", ";
4772 }
catch (
const std::bad_any_cast& e) {
4773 std::cerr <<
"Error: Failed to cast spectrum_index data" << std::endl;
4776 std::cout << std::endl;