983 int first_good_bin{0};
986 std::cout << std::endl;
987 std::cout <<
"========================================" << std::endl;
988 std::cout <<
"NeXus File Dump" << std::endl;
989 std::cout <<
"========================================" << std::endl;
990 std::cout <<
"Filename: " <<
fFileName << std::endl;
991 std::cout <<
"HDF4 Version: " <<
fHdf4Version << std::endl;
992 std::cout <<
"NeXus Version: " <<
fNeXusVersion << std::endl;
993 std::cout <<
"IDF Version: " <<
fIdfVersion << std::endl;
994 std::cout <<
"----------------------------------------" << std::endl;
996 std::cout << std::endl <<
"++++";
997 std::cout << std::endl <<
"run";
998 std::cout << std::endl <<
"----";
999 std::cout << std::endl <<
" IDF_version: " <<
fIdfVersion;
1002 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/program_name"]);
1003 std::cout << std::endl <<
" program_name : " << str_data.GetData()[0];
1006 if (str_data.HasAttribute(
"version")) {
1008 auto version = std::any_cast<std::string>(str_data.GetAttribute(
"version"));
1009 std::cout <<
" version : " << version;
1010 }
catch (
const std::bad_any_cast& e) {
1011 std::cerr << std::endl <<
"**ERROR**: Failed to cast version attribute" << std::endl;
1014 }
catch (
const std::bad_any_cast& e) {
1015 std::cerr << std::endl <<
"**ERROR**: Failed to cast program_name data" << std::endl;
1018 std::cout << std::endl <<
" program_name : n/a";
1023 auto number = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/number"]);
1024 std::cout << std::endl <<
" number : " << number.GetData()[0];
1025 }
catch (
const std::bad_any_cast& e) {
1026 std::cerr << std::endl <<
"**ERROR**: Failed to cast number data" << std::endl;
1029 std::cout << std::endl <<
" number : n/a";
1034 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/title"]);
1035 std::cout << std::endl <<
" title : " << str_data.GetData()[0];
1036 }
catch (
const std::bad_any_cast& e) {
1037 std::cerr << std::endl <<
"**ERROR**: Failed to cast title data" << std::endl;
1040 std::cout << std::endl <<
" title : n/a";
1045 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/notes"]);
1046 std::cout << std::endl <<
" notes : " << str_data.GetData()[0];
1047 }
catch (
const std::bad_any_cast& e) {
1048 std::cerr << std::endl <<
"**ERROR**: Failed to cast notes data" << std::endl;
1051 std::cout << std::endl <<
" notes : n/a";
1056 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/analysis"]);
1057 std::cout << std::endl <<
" analysis : " << str_data.GetData()[0];
1058 }
catch (
const std::bad_any_cast& e) {
1059 std::cerr << std::endl <<
"**ERROR**: Failed to cast analysis data" << std::endl;
1062 std::cout << std::endl <<
" analysis : n/a";
1067 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/lab"]);
1068 std::cout << std::endl <<
" lab : " << str_data.GetData()[0];
1069 }
catch (
const std::bad_any_cast& e) {
1070 std::cerr << std::endl <<
"**ERROR**: Failed to cast lab data" << std::endl;
1073 std::cout << std::endl <<
" lab : n/a";
1078 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/beamline"]);
1079 std::cout << std::endl <<
" beamline : " << str_data.GetData()[0];
1080 }
catch (
const std::bad_any_cast& e) {
1081 std::cerr << std::endl <<
"**ERROR**: Failed to cast beamline data" << std::endl;
1084 std::cout << std::endl <<
" beamline : n/a";
1089 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/start_time"]);
1090 std::cout << std::endl <<
" start_time : " << str_data.GetData()[0];
1091 }
catch (
const std::bad_any_cast& e) {
1092 std::cerr << std::endl <<
"**ERROR**: Failed to cast start_time data" << std::endl;
1095 std::cout << std::endl <<
" start_time : n/a";
1100 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/stop_time"]);
1101 std::cout << std::endl <<
" stop_time : " << str_data.GetData()[0];
1102 }
catch (
const std::bad_any_cast& e) {
1103 std::cerr << std::endl <<
"**ERROR**: Failed to cast stop_time data" << std::endl;
1106 std::cout << std::endl <<
" stop_time : n/a";
1111 auto int_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/switching_state"]);
1112 std::cout << std::endl <<
" switching_state : " << int_data.GetData()[0];
1113 }
catch (
const std::bad_any_cast& e) {
1114 std::cerr << std::endl <<
"**ERROR**: Failed to cast switching_state data" << std::endl;
1117 std::cout << std::endl <<
" switching_state : n/a";
1120 std::cout << std::endl <<
"----";
1121 std::cout << std::endl <<
" user";
1122 std::cout << std::endl <<
"----";
1125 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/user/name"]);
1126 std::cout << std::endl <<
" name : '" << str_data.GetData()[0] <<
"'";
1127 }
catch (
const std::bad_any_cast& e) {
1128 std::cerr << std::endl <<
"**ERROR**: Failed to cast name data" << std::endl;
1131 std::cout << std::endl <<
" name : n/a";
1136 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/user/experiment_number"]);
1137 std::cout << std::endl <<
" experiment_number : " << str_data.GetData()[0];
1138 }
catch (
const std::bad_any_cast& e) {
1139 std::cerr << std::endl <<
"**ERROR**: Failed to cast experiment_number data" << std::endl;
1142 std::cout << std::endl <<
" experiment_number : n/a";
1145 std::cout << std::endl <<
"----";
1146 std::cout << std::endl <<
" sample";
1147 std::cout << std::endl <<
"----";
1150 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/sample/name"]);
1151 std::cout << std::endl <<
" name : '" << str_data.GetData()[0] <<
"'";
1152 }
catch (
const std::bad_any_cast& e) {
1153 std::cerr << std::endl <<
"**ERROR**: Failed to cast name data" << std::endl;
1156 std::cout << std::endl <<
" name : n/a";
1161 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/temperature"]);
1162 std::cout << std::endl <<
" temperature : " << float_data.GetData()[0];
1165 if (float_data.HasAttribute(
"units")) {
1167 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1168 std::cout <<
" units : " << units;
1169 }
catch (
const std::bad_any_cast& e) {
1170 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1173 std::cout <<
" units : n/a";
1175 }
catch (
const std::bad_any_cast& e) {
1176 std::cerr << std::endl <<
"**ERROR**: Failed to cast temperature data" << std::endl;
1179 std::cout << std::endl <<
" temperature : n/a";
1184 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/magnetic_field"]);
1185 std::cout << std::endl <<
" magnetic_field : " << float_data.GetData()[0];
1188 if (float_data.HasAttribute(
"units")) {
1190 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1191 std::cout <<
" units : " << units;
1192 }
catch (
const std::bad_any_cast& e) {
1193 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1196 std::cout <<
" units : n/a";
1198 }
catch (
const std::bad_any_cast& e) {
1199 std::cerr << std::endl <<
"**ERROR**: Failed to cast magnetic_field data" << std::endl;
1202 std::cout << std::endl <<
" magnetic_field : n/a";
1205 if (
fDataMap.find(
"/run/sample/magnetic_field_vector") !=
fDataMap.end()) {
1207 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/magnetic_field_vector"]);
1208 std::cout << std::endl <<
" magnetic_field_vector : " << float_data.GetData()[0];
1211 if (float_data.HasAttribute(
"coordinate_system")) {
1213 auto coordinate_system = std::any_cast<std::string>(float_data.GetAttribute(
"coordinate_system"));
1214 std::cout << std::endl <<
" coordinate_system : " << coordinate_system << std::endl;
1215 }
catch (
const std::bad_any_cast& e) {
1216 std::cerr <<
"**ERROR**: Failed to cast coordinate_system attribute" << std::endl;
1219 std::cout << std::endl <<
" coordinate_system : n/a" << std::endl;
1222 if (float_data.HasAttribute(
"units")) {
1224 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1225 std::cout <<
" units : " << units << std::endl;
1226 }
catch (
const std::bad_any_cast& e) {
1227 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1230 std::cout <<
" units : n/a" << std::endl;
1233 if (float_data.HasAttribute(
"available")) {
1235 auto available = std::any_cast<int>(float_data.GetAttribute(
"available"));
1236 std::cout <<
" available : " << available;
1237 }
catch (
const std::bad_any_cast& e) {
1238 std::cerr <<
"**ERROR**: Failed to cast available attribute" << std::endl;
1241 std::cout <<
" available : n/a";
1243 }
catch (
const std::bad_any_cast& e) {
1244 std::cerr << std::endl <<
"**ERROR**: Failed to cast magnetic_field_vector data" << std::endl;
1247 std::cout << std::endl <<
" magnetic_field_vector : n/a";
1252 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/sample/environment"]);
1253 std::cout << std::endl <<
" environment : " << str_data.GetData()[0];
1254 }
catch (
const std::bad_any_cast& e) {
1255 std::cerr << std::endl <<
"**ERROR**: Failed to cast environment data" << std::endl;
1258 std::cout << std::endl <<
" environment : n/a";
1261 std::cout << std::endl <<
"----";
1262 std::cout << std::endl <<
" instrument";
1263 std::cout << std::endl <<
"----";
1266 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/name"]);
1267 std::cout << std::endl <<
" name : '" << str_data.GetData()[0] <<
"'";
1268 }
catch (
const std::bad_any_cast& e) {
1269 std::cerr << std::endl <<
"**ERROR**: Failed to cast name data" << std::endl;
1272 std::cout << std::endl <<
" name : n/a";
1275 std::cout << std::endl <<
"----";
1276 std::cout << std::endl <<
" detector";
1277 std::cout << std::endl <<
"----";
1280 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/instrument/detector/number"]);
1281 std::cout << std::endl <<
" number : " << int_data.GetData()[0];
1282 }
catch (
const std::bad_any_cast& e) {
1283 std::cerr << std::endl <<
"**ERROR**: Failed to cast number data" << std::endl;
1286 std::cout << std::endl <<
" number : n/a";
1289 if (
fDataMap.find(
"/run/instrument/detector/deadtimes") !=
fDataMap.end()) {
1291 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/instrument/detector/deadtimes"]);
1292 auto data = float_data.GetData();
1293 unsigned int end{15};
1294 if (data.size() < end)
1296 std::cout << std::endl <<
" deadtimes: ";
1297 for (
unsigned int i=0; i<end; i++)
1298 std::cout << data[i] <<
", ";
1300 }
catch (
const std::bad_any_cast& e) {
1301 std::cerr << std::endl <<
"**ERROR**: Failed to cast deadtimes data" << std::endl;
1304 std::cout << std::endl <<
" deadtimes: n/a";
1307 std::cout << std::endl <<
"----";
1308 std::cout << std::endl <<
" beam";
1309 std::cout << std::endl <<
"----";
1312 auto fg = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/instrument/beam/frames_good"]);
1313 std::cout << std::endl <<
" good_frames : " << fg.GetData()[0];
1314 }
catch (
const std::bad_any_cast& e) {
1315 std::cerr << std::endl <<
"**ERROR**: Failed to cast good_frames data" << std::endl;
1318 std::cout << std::endl <<
" good_frames : n/a";
1321 std::cout << std::endl <<
"----";
1322 std::cout << std::endl <<
" collimator";
1323 std::cout << std::endl <<
"----";
1326 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/collimator/type"]);
1327 std::cout << std::endl <<
" type : " << str_data.GetData()[0];
1328 }
catch (
const std::bad_any_cast& e) {
1329 std::cerr << std::endl <<
"**ERROR**: Failed to cast type data" << std::endl;
1332 std::cout << std::endl <<
" type : n/a";
1335 std::cout << std::endl <<
"----";
1336 std::cout << std::endl <<
" histogram_data_1";
1337 std::cout << std::endl <<
"----";
1338 std::cout << std::endl <<
" counts:";
1339 std::cout << std::endl;
1341 auto counts_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/counts"]);
1344 if (counts_data.HasAttribute(
"units")) {
1346 auto units = std::any_cast<std::string>(counts_data.GetAttribute(
"units"));
1347 std::cout <<
" units : " << units << std::endl;
1348 }
catch (
const std::bad_any_cast& e) {
1349 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1352 std::cout <<
" units : n/a" << std::endl;
1355 if (counts_data.HasAttribute(
"signal")) {
1357 auto signal = std::any_cast<int>(counts_data.GetAttribute(
"signal"));
1358 std::cout <<
" signal : " << signal << std::endl;
1359 }
catch (
const std::bad_any_cast& e) {
1360 std::cerr <<
"**ERROR**: Failed to cast signal attribute" << std::endl;
1363 std::cout <<
" signal : n/a" << std::endl;
1367 if (counts_data.HasAttribute(
"number")) {
1369 noOfHistos = std::any_cast<int>(counts_data.GetAttribute(
"number"));
1370 std::cout <<
" number : " << noOfHistos << std::endl;
1371 }
catch (
const std::bad_any_cast& e) {
1372 std::cerr <<
"**ERROR**: Failed to cast number attribute" << std::endl;
1375 std::cout <<
" number : n/a" << std::endl;
1379 if (counts_data.HasAttribute(
"length")) {
1381 histoLength = std::any_cast<int>(counts_data.GetAttribute(
"length"));
1382 std::cout <<
" length : " << histoLength << std::endl;
1383 }
catch (
const std::bad_any_cast& e) {
1384 std::cerr <<
"**ERROR**: Failed to cast length attribute" << std::endl;
1387 std::cout <<
" length : n/a" << std::endl;
1390 if (counts_data.HasAttribute(
"t0_bin")) {
1392 auto t0_bin = std::any_cast<int>(counts_data.GetAttribute(
"t0_bin"));
1393 std::cout <<
" t0_bin : " << t0_bin << std::endl;
1394 }
catch (
const std::bad_any_cast& e) {
1395 std::cerr <<
"**ERROR**: Failed to cast t0_bin attribute" << std::endl;
1398 std::cout <<
" t0_bin : n/a" << std::endl;
1401 if (counts_data.HasAttribute(
"first_good_bin")) {
1403 first_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"first_good_bin"));
1404 std::cout <<
" first_good_bin : " << first_good_bin << std::endl;
1405 }
catch (
const std::bad_any_cast& e) {
1406 std::cerr <<
"**ERROR**: Failed to cast first_good_bin attribute" << std::endl;
1409 std::cout <<
" first_good_bin : n/a" << std::endl;
1412 if (counts_data.HasAttribute(
"last_good_bin")) {
1414 auto last_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"last_good_bin"));
1415 std::cout <<
" last_good_bin : " << last_good_bin << std::endl;
1416 }
catch (
const std::bad_any_cast& e) {
1417 std::cerr <<
"**ERROR**: Failed to cast last_good_bin attribute" << std::endl;
1420 std::cout <<
" last_good_bin : n/a" << std::endl;
1423 if (counts_data.HasAttribute(
"offset")) {
1425 auto offset = std::any_cast<float>(counts_data.GetAttribute(
"offset"));
1426 std::cout <<
" offset : " << offset << std::endl;
1427 }
catch (
const std::bad_any_cast& e) {
1428 std::cerr <<
"**ERROR**: Failed to cast offset attribute" << std::endl;
1431 std::cout <<
" offset : n/a" << std::endl;
1435 const auto& data = counts_data.GetData();
1436 std::cout << std::endl <<
" first couple of counts of each detector:";
1437 for (
unsigned int i=0; i<noOfHistos; i++) {
1439 std::cout << std::endl <<
" " << i+1 <<
": ";
1441 std::cout << std::endl <<
" " << i+1 <<
": ";
1442 for (
unsigned int j=0; j<first_good_bin+5; j++)
1443 std::cout << data[i*histoLength+j] <<
", ";
1446 }
catch (
const std::bad_any_cast& e) {
1447 std::cerr <<
"**ERROR**: Failed to cast counts data" << std::endl;
1452 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/resolution"]);
1453 std::cout << std::endl <<
" resolution : " << int_data.GetData()[0];
1455 if (int_data.HasAttribute(
"units")) {
1457 auto units = std::any_cast<std::string>(int_data.GetAttribute(
"units"));
1458 std::cout <<
" units : " << units;
1459 }
catch (
const std::bad_any_cast& e) {
1460 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1463 std::cout << std::endl <<
" units : n/a";
1465 }
catch (
const std::bad_any_cast& e) {
1466 std::cerr << std::endl <<
"**ERROR**: Failed to cast resolution data" << std::endl;
1469 std::cout << std::endl <<
" resolution : n/a";
1474 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/time_zero"]);
1475 std::cout << std::endl <<
" time_zero : " << float_data.GetData()[0];
1477 if (float_data.HasAttribute(
"units")) {
1479 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1480 std::cout << std::endl <<
" 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";
1488 if (float_data.HasAttribute(
"available")) {
1490 auto available = std::any_cast<int>(float_data.GetAttribute(
"available"));
1491 std::cout << std::endl <<
" available : " << available;
1492 }
catch (
const std::bad_any_cast& e) {
1493 std::cerr <<
"**ERROR**: Failed to cast available attribute";
1496 std::cout << std::endl <<
" available : n/a";
1498 }
catch (
const std::bad_any_cast& e) {
1499 std::cerr << std::endl <<
"**ERROR**: Failed to cast time_zero data" << std::endl;
1502 std::cout << std::endl <<
" time_zero : n/a";
1507 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/raw_time"]);
1508 std::cout << std::endl <<
" raw_time : " << float_data.GetData()[0];
1509 if (float_data.HasAttribute(
"axis")) {
1511 auto axis = std::any_cast<int>(float_data.GetAttribute(
"axis"));
1512 std::cout << std::endl <<
" axis : " << axis;
1513 }
catch (
const std::bad_any_cast& e) {
1514 std::cerr <<
"**ERROR**: Failed to cast axis attribute" << std::endl;
1517 std::cout << std::endl <<
" axis : n/a";
1520 if (float_data.HasAttribute(
"primary")) {
1522 auto primary = std::any_cast<int>(float_data.GetAttribute(
"primary"));
1523 std::cout << std::endl <<
" primary : " << primary;
1524 }
catch (
const std::bad_any_cast& e) {
1525 std::cerr <<
"**ERROR**: Failed to cast primary attribute" << std::endl;
1528 std::cout << std::endl <<
" primary : n/a";
1531 if (float_data.HasAttribute(
"units")) {
1533 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1534 std::cout << std::endl <<
" units : " << units;
1535 }
catch (
const std::bad_any_cast& e) {
1536 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1539 std::cout << std::endl <<
" units : n/a";
1541 }
catch (
const std::bad_any_cast& e) {
1542 std::cerr << std::endl <<
"**ERROR**: Failed to cast raw_time data" << std::endl;
1545 std::cout << std::endl <<
" raw_time : n/a";
1548 if (
fDataMap.find(
"/run/histogram_data_1/corrected_time") !=
fDataMap.end()) {
1550 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/corrected_time"]);
1551 std::cout << std::endl <<
" corrected_time : " << float_data.GetData()[0];
1552 if (float_data.HasAttribute(
"axis")) {
1554 auto axis = std::any_cast<int>(float_data.GetAttribute(
"axis"));
1555 std::cout << std::endl <<
" axis : " << axis;
1556 }
catch (
const std::bad_any_cast& e) {
1557 std::cerr <<
"**ERROR**: Failed to cast axis attribute" << std::endl;
1560 std::cout << std::endl <<
" axis : n/a";
1563 if (float_data.HasAttribute(
"units")) {
1565 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
1566 std::cout << std::endl <<
" units : " << units;
1567 }
catch (
const std::bad_any_cast& e) {
1568 std::cerr <<
"**ERROR**: Failed to cast units attribute" << std::endl;
1571 std::cout << std::endl <<
" units : n/a";
1573 }
catch (
const std::bad_any_cast& e) {
1574 std::cerr << std::endl <<
"**ERROR**: Failed to cast raw_time data" << std::endl;
1577 std::cout << std::endl <<
" corrected_time : n/a";
1582 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/grouping"]);
1583 auto data = int_data.GetData();
1584 unsigned int end{15};
1585 if (data.size() < end)
1587 std::cout << std::endl <<
" grouping : ";
1588 for (
unsigned int i=0; i<end; i++)
1589 std::cout << data[i] <<
", ";
1591 if (int_data.HasAttribute(
"available")) {
1593 auto available = std::any_cast<int>(int_data.GetAttribute(
"available"));
1594 std::cout << std::endl <<
" available : " << available;
1595 }
catch (
const std::bad_any_cast& e) {
1596 std::cerr <<
"**ERROR**: Failed to cast available attribute" << std::endl;
1599 std::cout << std::endl <<
" available : n/a";
1601 }
catch (
const std::bad_any_cast& e) {
1602 std::cerr << std::endl <<
"**ERROR**: Failed to cast grouping data" << std::endl;
1605 std::cout << std::endl <<
" grouping : n/a";
1610 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/alpha"]);
1611 auto data = float_data.GetData();
1612 unsigned int end{15};
1613 if (data.size() < end)
1615 std::cout << std::endl <<
" alpha : ";
1616 for (
unsigned int i=0; i<end; i++)
1617 std::cout << data[i] <<
", ";
1619 if (float_data.HasAttribute(
"available")) {
1621 auto available = std::any_cast<int>(float_data.GetAttribute(
"available"));
1622 std::cout << std::endl <<
" available : " << available;
1623 }
catch (
const std::bad_any_cast& e) {
1624 std::cerr <<
"**ERROR**: Failed to cast available attribute" << std::endl;
1627 std::cout << std::endl <<
" alpha : n/a";
1629 }
catch (
const std::bad_any_cast& e) {
1630 std::cerr << std::endl <<
"**ERROR**: Failed to cast alpha data" << std::endl;
1633 std::cout << std::endl <<
" available : n/a";
1636 std::cout << std::endl;
1637 std::cout <<
"========================================" << std::endl;
1638 std::cout << std::endl;
1640 std::cout << std::endl;
1641 std::cout << std::endl <<
"hdf5-NeXus file content of file:' " <<
fFileName <<
"'";
1642 std::cout << std::endl <<
"****";
1643 std::cout << std::endl <<
"Top Level Attributes:";
1644 std::cout << std::endl <<
" HDF4 Version : " <<
fHdf4Version;
1645 std::cout << std::endl <<
" NeXus Version: " <<
fNeXusVersion;
1646 std::cout << std::endl <<
" file_name : " <<
fFileNameNxs;
1647 std::cout << std::endl <<
" file_time : " <<
fFileTimeNxs;
1648 std::cout << std::endl <<
"++++";
1649 std::cout << std::endl <<
"raw_data_1";
1650 std::cout << std::endl <<
"----";
1651 std::cout << std::endl <<
" IDF_version: " <<
fIdfVersion;
1654 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/beamline"]);
1655 std::cout << std::endl <<
" beamline : " << str.GetData()[0];
1656 }
catch (
const std::bad_any_cast& e) {
1657 std::cerr << std::endl <<
"Error: Failed to cast beamline data" << std::endl;
1660 std::cout << std::endl <<
" beamline : n/a";
1665 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/definition"]);
1666 std::cout << std::endl <<
" definition : " << str.GetData()[0];
1667 }
catch (
const std::bad_any_cast& e) {
1668 std::cerr << std::endl <<
"Error: Failed to cast definition data" << std::endl;
1671 std::cout << std::endl <<
" definition : n/a";
1676 auto str = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/run_number"]);
1677 std::cout << std::endl <<
" run_number : " << str.GetData()[0];
1678 }
catch (
const std::bad_any_cast& e) {
1679 std::cerr << std::endl <<
"Error: Failed to cast run_number data" << std::endl;
1682 std::cout << std::endl <<
" run_number : n/a";
1687 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/title"]);
1688 std::cout << std::endl <<
" title : " << str.GetData()[0];
1689 }
catch (
const std::bad_any_cast& e) {
1690 std::cerr << std::endl <<
"Error: Failed to cast title data" << std::endl;
1693 std::cout << std::endl <<
" title : n/a";
1698 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/start_time"]);
1699 std::cout << std::endl <<
" start_time : " << str.GetData()[0];
1700 }
catch (
const std::bad_any_cast& e) {
1701 std::cerr << std::endl <<
"Error: Failed to cast start_time data" << std::endl;
1704 std::cout << std::endl <<
" start_time : n/a";
1709 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/end_time"]);
1710 std::cout << std::endl <<
" end_time : " << str.GetData()[0];
1711 }
catch (
const std::bad_any_cast& e) {
1712 std::cerr << std::endl <<
"Error: Failed to cast end_time data" << std::endl;
1715 std::cout << std::endl <<
" end_time : n/a";
1720 auto good_frames = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/good_frames"]);
1721 std::cout << std::endl <<
" good_frames: " << good_frames.GetData()[0];
1722 }
catch(
const std::bad_any_cast& e) {
1723 std::cerr << std::endl <<
"Error: Failed to cast good_frames data" << std::endl;
1726 std::cout << std::endl <<
" good_frames: n/a";
1729 if (
fDataMap.find(
"/raw_data_1/experiment_identifier") !=
fDataMap.end()) {
1731 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/experiment_identifier"]);
1732 std::cout << std::endl <<
" experiment_identifier: " << str.GetData()[0];
1733 }
catch (
const std::bad_any_cast& e) {
1734 std::cerr << std::endl <<
"Error: Failed to cast experiment_identifier data" << std::endl;
1737 std::cout << std::endl <<
" experiment_identifier: n/a";
1740 std::cout << std::endl <<
"----";
1741 std::cout << std::endl <<
" instrument";
1744 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/name"]);
1745 std::cout << std::endl <<
" name : " << str.GetData()[0];
1746 }
catch (
const std::bad_any_cast& e) {
1747 std::cerr << std::endl <<
"Error: Failed to cast instrument/name data" << std::endl;
1750 std::cout << std::endl <<
" name : n/a";
1753 std::cout << std::endl <<
"----";
1754 std::cout << std::endl <<
" source";
1755 if (
fDataMap.find(
"/raw_data_1/instrument/source/name") !=
fDataMap.end()) {
1757 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/name"]);
1758 std::cout << std::endl <<
" name : " << str.GetData()[0];
1759 }
catch (
const std::bad_any_cast& e) {
1760 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/name data" << std::endl;
1763 std::cout << std::endl <<
" name : n/a";
1766 if (
fDataMap.find(
"/raw_data_1/instrument/source/type") !=
fDataMap.end()) {
1768 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/type"]);
1769 std::cout << std::endl <<
" type : " << str.GetData()[0];
1770 }
catch (
const std::bad_any_cast& e) {
1771 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/type data" << std::endl;
1774 std::cout << std::endl <<
" type : n/a";
1777 if (
fDataMap.find(
"/raw_data_1/instrument/source/probe") !=
fDataMap.end()) {
1779 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/probe"]);
1780 std::cout << std::endl <<
" probe : " << str.GetData()[0];
1781 }
catch (
const std::bad_any_cast& e) {
1782 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/probe data" << std::endl;
1785 std::cout << std::endl <<
" probe : n/a";
1788 std::cout << std::endl <<
"----";
1789 std::cout << std::endl <<
" detector_1";
1790 std::cout << std::endl <<
" counts:";
1791 std::cout << std::endl;
1793 auto counts_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/counts"]);
1794 auto dims = counts_data.GetDimensions();
1795 std::cout <<
" counts dimensions: " << dims[0] <<
" x "
1796 << dims[1] <<
" x " << dims[2] << std::endl;
1797 std::cout <<
" total elements: " << counts_data.GetNumElements() << std::endl;
1800 if (counts_data.HasAttribute(
"signal")) {
1802 auto signal = std::any_cast<int>(counts_data.GetAttribute(
"signal"));
1803 std::cout <<
" signal : " << signal << std::endl;
1804 }
catch (
const std::bad_any_cast& e) {
1805 std::cerr <<
"Error: Failed to cast signal attribute" << std::endl;
1808 std::cout << std::endl <<
" signal : n/a";
1811 if (counts_data.HasAttribute(
"axes")) {
1813 auto axes = std::any_cast<std::string>(counts_data.GetAttribute(
"axes"));
1814 std::cout <<
" axes : " << axes << std::endl;
1815 }
catch (
const std::bad_any_cast& e) {
1816 std::cerr <<
"Error: Failed to cast axes attribute" << std::endl;
1819 std::cout << std::endl <<
" axes : n/a";
1822 if (counts_data.HasAttribute(
"long_name")) {
1824 auto long_name = std::any_cast<std::string>(counts_data.GetAttribute(
"long_name"));
1825 std::cout <<
" long_name : " << long_name << std::endl;
1826 }
catch (
const std::bad_any_cast& e) {
1827 std::cerr <<
"Error: Failed to cast long_name attribute" << std::endl;
1830 std::cout << std::endl <<
" long_name : n/a";
1833 if (counts_data.HasAttribute(
"t0_bin")) {
1835 auto t0_bin = std::any_cast<int>(counts_data.GetAttribute(
"t0_bin"));
1836 std::cout <<
" t0_bin : " << t0_bin << std::endl;
1837 }
catch (
const std::bad_any_cast& e) {
1838 std::cerr <<
"Error: Failed to cast t0_bin attribute" << std::endl;
1841 std::cout << std::endl <<
" t0_bin : n/a";
1844 if (counts_data.HasAttribute(
"first_good_bin")) {
1846 first_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"first_good_bin"));
1847 std::cout <<
" first_good_bin : " << first_good_bin << std::endl;
1848 }
catch (
const std::bad_any_cast& e) {
1849 std::cerr <<
"Error: Failed to cast first_good_bin attribute" << std::endl;
1852 std::cout << std::endl <<
" first_good_bin : n/a";
1855 if (counts_data.HasAttribute(
"last_good_bin")) {
1857 auto last_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"last_good_bin"));
1858 std::cout <<
" last_good_bin : " << last_good_bin << std::endl;
1859 }
catch (
const std::bad_any_cast& e) {
1860 std::cerr <<
"Error: Failed to cast last_good_bin attribute" << std::endl;
1863 std::cout << std::endl <<
" last_good_bin : n/a";
1866 if (
fDataMap.find(
"/raw_data_1/instrument/detector_1/resolution") !=
fDataMap.end()) {
1868 auto ivalData = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/resolution"]);
1869 std::cout <<
" resolution : " << ivalData.GetData()[0];
1870 if (ivalData.HasAttribute(
"units")) {
1872 auto units = std::any_cast<std::string>(ivalData.GetAttribute(
"units"));
1873 std::cout <<
" " << units << std::endl;
1874 }
catch (
const std::bad_any_cast& e) {
1875 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
1878 std::cout << std::endl <<
" unit : n/a" << std::endl;
1881 }
catch (
const std::bad_any_cast& e) {
1882 std::cerr <<
"Error: Failed to cast resolution attribute" << std::endl;
1885 std::cout << std::endl <<
" resolution : n/a";
1889 const auto& data = counts_data.GetData();
1890 std::cout << std::endl <<
" first couple of counts of each detector:";
1891 for (
unsigned int i=0; i<dims[1]; i++) {
1893 std::cout << std::endl <<
" " << i+1 <<
": ";
1895 std::cout << std::endl <<
" " << i+1 <<
": ";
1896 for (
unsigned int j=0; j<first_good_bin+5; j++)
1897 std::cout << data[i*dims[2]+j] <<
", ";
1900 }
catch (
const std::bad_any_cast& e) {
1901 std::cerr <<
"Error: Failed to cast counts data" << std::endl;
1904 std::cout << std::endl;
1905 std::cout << std::endl <<
" raw_time:";
1906 std::cout << std::endl;
1908 auto raw_time = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/instrument/detector_1/raw_time"]);
1909 const auto& data = raw_time.GetData();
1912 if (raw_time.HasAttribute(
"units")) {
1914 auto units = std::any_cast<std::string>(raw_time.GetAttribute(
"units"));
1915 std::cout <<
" units : " << units << std::endl;
1916 }
catch (
const std::bad_any_cast& e) {
1917 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
1920 std::cout << std::endl <<
" units : n/a" << std::endl;
1925 for (
unsigned int i=0; i<first_good_bin+5; i++)
1926 std::cout << data[i] <<
", ";
1928 }
catch (
const std::bad_any_cast& e) {
1929 std::cerr <<
"Error: Failed to cast raw_time data" << std::endl;
1933 std::cout << std::endl;
1934 std::cout << std::endl <<
" spectrum_index:";
1935 std::cout << std::endl;
1937 auto spectrum_index = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/spectrum_index"]);
1938 const auto& data = spectrum_index.GetData();
1942 for (
unsigned int i=0; i<first_good_bin+5; i++)
1943 std::cout << data[i] <<
", ";
1945 }
catch (
const std::bad_any_cast& e) {
1946 std::cerr <<
"Error: Failed to cast spectrum_index data" << std::endl;
1949 std::cout << std::endl;
1950 std::cout << std::endl <<
" dead_time:";
1951 std::cout << std::endl;
1953 auto dead_time = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/instrument/detector_1/dead_time"]);
1954 const auto& data = dead_time.GetData();
1958 for (
unsigned int i=0; i<first_good_bin+5; i++)
1959 std::cout << data[i] <<
", ";
1961 }
catch (
const std::bad_any_cast& e) {
1962 std::cerr <<
"Error: Failed to cast spectrum_index data" << std::endl;
1965 std::cout << std::endl;
3763 int first_good_bin{0};
3766 std::cout << std::endl;
3767 std::cout << std::endl <<
"hdf5-NeXus file content of file:' " <<
fFileName <<
"'"; std::cout << std::endl <<
"****";
3768 std::cout << std::endl <<
"****";
3769 std::cout << std::endl <<
"Top Level Attributes:";
3770 std::cout << std::endl <<
" NeXus Version: " <<
fNeXusVersion;
3771 std::cout << std::endl <<
" user: " <<
fUserV1;
3772 std::cout << std::endl <<
"++++";
3773 std::cout << std::endl <<
"run";
3774 std::cout << std::endl <<
"----";
3775 std::cout << std::endl <<
" IDF_version: " <<
fIdfVersion;
3778 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/program_name"]);
3779 std::cout << std::endl <<
" program_name : " << str_data.GetData()[0];
3782 if (str_data.HasAttribute(
"version")) {
3784 auto version = std::any_cast<std::string>(str_data.GetAttribute(
"version"));
3785 std::cout <<
" version : " << version << std::endl;
3786 }
catch (
const std::bad_any_cast& e) {
3787 std::cerr <<
"Error: Failed to cast version attribute" << std::endl;
3790 }
catch (
const std::bad_any_cast& e) {
3791 std::cerr << std::endl <<
"Error: Failed to cast program_name data" << std::endl;
3794 std::cout << std::endl <<
" program_name : n/a";
3799 auto number = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/number"]);
3800 std::cout << std::endl <<
" number : " << number.GetData()[0];
3801 }
catch (
const std::bad_any_cast& e) {
3802 std::cerr << std::endl <<
"Error: Failed to cast number data" << std::endl;
3805 std::cout << std::endl <<
" number : n/a";
3810 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/title"]);
3811 std::cout << std::endl <<
" title : " << str_data.GetData()[0];
3812 }
catch (
const std::bad_any_cast& e) {
3813 std::cerr << std::endl <<
"Error: Failed to cast title data" << std::endl;
3816 std::cout << std::endl <<
" title : n/a";
3821 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/notes"]);
3822 std::cout << std::endl <<
" notes : " << str_data.GetData()[0];
3823 }
catch (
const std::bad_any_cast& e) {
3824 std::cerr << std::endl <<
"Error: Failed to cast notes data" << std::endl;
3827 std::cout << std::endl <<
" notes : n/a";
3832 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/analysis"]);
3833 std::cout << std::endl <<
" analysis : " << str_data.GetData()[0];
3834 }
catch (
const std::bad_any_cast& e) {
3835 std::cerr << std::endl <<
"Error: Failed to cast analysis data" << std::endl;
3838 std::cout << std::endl <<
" analysis : n/a";
3843 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/lab"]);
3844 std::cout << std::endl <<
" lab : " << str_data.GetData()[0];
3845 }
catch (
const std::bad_any_cast& e) {
3846 std::cerr << std::endl <<
"Error: Failed to cast lab data" << std::endl;
3849 std::cout << std::endl <<
" lab : n/a";
3854 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/beamline"]);
3855 std::cout << std::endl <<
" beamline : " << str_data.GetData()[0];
3856 }
catch (
const std::bad_any_cast& e) {
3857 std::cerr << std::endl <<
"Error: Failed to cast beamline data" << std::endl;
3860 std::cout << std::endl <<
" beamline : n/a";
3865 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/start_time"]);
3866 std::cout << std::endl <<
" start_time : " << str_data.GetData()[0];
3867 }
catch (
const std::bad_any_cast& e) {
3868 std::cerr << std::endl <<
"Error: Failed to cast start_time data" << std::endl;
3871 std::cout << std::endl <<
" start_time : n/a";
3876 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/end_time"]);
3877 std::cout << std::endl <<
" end_time : " << str_data.GetData()[0];
3878 }
catch (
const std::bad_any_cast& e) {
3879 std::cerr << std::endl <<
"Error: Failed to cast end_time data" << std::endl;
3882 std::cout << std::endl <<
" end_time : n/a";
3887 auto int_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/switching_state"]);
3888 std::cout << std::endl <<
" switching_state : " << int_data.GetData()[0];
3889 }
catch (
const std::bad_any_cast& e) {
3890 std::cerr << std::endl <<
"Error: Failed to cast switching_state data" << std::endl;
3893 std::cout << std::endl <<
" switching_state : n/a";
3896 std::cout << std::endl <<
" user";
3897 std::cout << std::endl <<
"----";
3900 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/user/name"]);
3901 std::cout << std::endl <<
" name : " << str_data.GetData()[0];
3902 }
catch (
const std::bad_any_cast& e) {
3903 std::cerr << std::endl <<
"Error: Failed to cast name data" << std::endl;
3906 std::cout << std::endl <<
" name : n/a";
3911 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/user/experiment_number"]);
3912 std::cout << std::endl <<
" experiment_number : " << str_data.GetData()[0];
3913 }
catch (
const std::bad_any_cast& e) {
3914 std::cerr << std::endl <<
"Error: Failed to cast experiment_number data" << std::endl;
3917 std::cout << std::endl <<
" experiment_number : n/a";
3920 std::cout << std::endl <<
" sample";
3921 std::cout << std::endl <<
"----";
3924 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/sample/name"]);
3925 std::cout << std::endl <<
" name : " << str_data.GetData()[0];
3926 }
catch (
const std::bad_any_cast& e) {
3927 std::cerr << std::endl <<
"Error: Failed to cast name data" << std::endl;
3930 std::cout << std::endl <<
" name : n/a";
3935 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/temperature"]);
3936 std::cout << std::endl <<
" temperature : " << float_data.GetData()[0];
3939 if (float_data.HasAttribute(
"units")) {
3941 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
3942 std::cout <<
" units : " << units << std::endl;
3943 }
catch (
const std::bad_any_cast& e) {
3944 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
3947 }
catch (
const std::bad_any_cast& e) {
3948 std::cerr << std::endl <<
"Error: Failed to cast temperature data" << std::endl;
3951 std::cout << std::endl <<
" temperature : n/a";
3956 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/magnetic_field"]);
3957 std::cout << std::endl <<
" magnetic_field : " << float_data.GetData()[0];
3960 if (float_data.HasAttribute(
"units")) {
3962 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
3963 std::cout <<
" units : " << units << std::endl;
3964 }
catch (
const std::bad_any_cast& e) {
3965 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
3968 }
catch (
const std::bad_any_cast& e) {
3969 std::cerr << std::endl <<
"Error: Failed to cast magnetic_field data" << std::endl;
3972 std::cout << std::endl <<
" magnetic_field : n/a";
3975 if (
fDataMap.find(
"/run/sample/magnetic_field_vector") !=
fDataMap.end()) {
3977 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/sample/magnetic_field_vector"]);
3978 std::cout << std::endl <<
" magnetic_field_vector : " << float_data.GetData()[0];
3981 if (float_data.HasAttribute(
"coordinate_system")) {
3983 auto coordinate_system = std::any_cast<std::string>(float_data.GetAttribute(
"coordinate_system"));
3984 std::cout <<
" coordinate_system : " << coordinate_system << std::endl;
3985 }
catch (
const std::bad_any_cast& e) {
3986 std::cerr <<
"Error: Failed to cast coordinate_system attribute" << std::endl;
3989 if (float_data.HasAttribute(
"units")) {
3991 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
3992 std::cout <<
" units : " << units << std::endl;
3993 }
catch (
const std::bad_any_cast& e) {
3994 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
3997 if (float_data.HasAttribute(
"available")) {
3999 auto available = std::any_cast<int>(float_data.GetAttribute(
"available"));
4000 std::cout <<
" available : " << available << std::endl;
4001 }
catch (
const std::bad_any_cast& e) {
4002 std::cerr <<
"Error: Failed to cast available attribute" << std::endl;
4005 }
catch (
const std::bad_any_cast& e) {
4006 std::cerr << std::endl <<
"Error: Failed to cast magnetic_field_vector data" << std::endl;
4009 std::cout << std::endl <<
" magnetic_field_vector : n/a";
4014 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/sample/environment"]);
4015 std::cout << std::endl <<
" environment : " << str_data.GetData()[0];
4016 }
catch (
const std::bad_any_cast& e) {
4017 std::cerr << std::endl <<
"Error: Failed to cast environment data" << std::endl;
4020 std::cout << std::endl <<
" environment : n/a";
4023 std::cout << std::endl <<
" instrument";
4024 std::cout << std::endl <<
"----";
4027 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/name"]);
4028 std::cout << std::endl <<
" name : " << str_data.GetData()[0];
4029 }
catch (
const std::bad_any_cast& e) {
4030 std::cerr << std::endl <<
"Error: Failed to cast name data" << std::endl;
4033 std::cout << std::endl <<
" name : n/a";
4036 std::cout << std::endl <<
" detector";
4037 std::cout << std::endl <<
"----";
4040 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/instrument/detector/number"]);
4041 std::cout << std::endl <<
" number : " << int_data.GetData()[0];
4042 }
catch (
const std::bad_any_cast& e) {
4043 std::cerr << std::endl <<
"Error: Failed to cast number data" << std::endl;
4046 std::cout << std::endl <<
" number : n/a";
4049 if (
fDataMap.find(
"/run/instrument/detector/deadtimes") !=
fDataMap.end()) {
4051 const auto& dead_times = std::any_cast<PNXdata<float>>(
"/run/instrument/detector/deadtimes").GetData();
4052 std::cout << std::endl <<
" deadtimes: ";
4053 for (
unsigned int i=0; i<10; i++)
4054 std::cout << dead_times[i] <<
", ";
4056 }
catch (
const std::bad_any_cast& e) {
4057 std::cerr << std::endl <<
"Error: Failed to cast dead time data" << std::endl;
4060 std::cout << std::endl <<
" deadtimes: n/a";
4063 std::cout << std::endl <<
" collimator";
4064 std::cout << std::endl <<
"----";
4067 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/collimator/type"]);
4068 std::cout << std::endl <<
" type : " << str_data.GetData()[0];
4069 }
catch (
const std::bad_any_cast& e) {
4070 std::cerr << std::endl <<
"Error: Failed to cast type data" << std::endl;
4073 std::cout << std::endl <<
" type : n/a";
4076 std::cout << std::endl <<
" beam";
4077 std::cout << std::endl <<
"----";
4080 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/beam/beamline"]);
4081 std::cout << std::endl <<
" beamline : " << str_data.GetData()[0];
4082 }
catch (
const std::bad_any_cast& e) {
4083 std::cerr << std::endl <<
"Error: Failed to cast beamline data" << std::endl;
4086 std::cout << std::endl <<
" beamline : n/a";
4091 auto str_data = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/run/instrument/beam/frames_good"]);
4092 std::cout << std::endl <<
" frames_good : " << str_data.GetData()[0];
4093 }
catch (
const std::bad_any_cast& e) {
4094 std::cerr << std::endl <<
"Error: Failed to cast frames_good data" << std::endl;
4097 std::cout << std::endl <<
" frames_good : n/a";
4100 std::cout << std::endl <<
" histogram_data_1";
4101 std::cout << std::endl <<
"----";
4102 std::cout << std::endl <<
" counts:";
4103 std::cout << std::endl;
4105 auto counts_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/counts"]);
4108 if (counts_data.HasAttribute(
"units")) {
4110 auto units = std::any_cast<std::string>(counts_data.GetAttribute(
"units"));
4111 std::cout <<
" units : " << units << std::endl;
4112 }
catch (
const std::bad_any_cast& e) {
4113 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4116 std::cout <<
" units : n/a" << std::endl;
4119 if (counts_data.HasAttribute(
"signal")) {
4121 auto signal = std::any_cast<int>(counts_data.GetAttribute(
"signal"));
4122 std::cout <<
" signal : " << signal << std::endl;
4123 }
catch (
const std::bad_any_cast& e) {
4124 std::cerr <<
"Error: Failed to cast signal attribute" << std::endl;
4127 std::cout <<
" signal : n/a" << std::endl;
4131 if (counts_data.HasAttribute(
"number")) {
4133 noOfHistos = std::any_cast<int>(counts_data.GetAttribute(
"number"));
4134 std::cout <<
" number : " << noOfHistos << std::endl;
4135 }
catch (
const std::bad_any_cast& e) {
4136 std::cerr <<
"Error: Failed to cast number attribute" << std::endl;
4139 std::cout <<
" number : n/a" << std::endl;
4143 if (counts_data.HasAttribute(
"length")) {
4145 histoLength = std::any_cast<int>(counts_data.GetAttribute(
"length"));
4146 std::cout <<
" length : " << noOfHistos << std::endl;
4147 }
catch (
const std::bad_any_cast& e) {
4148 std::cerr <<
"Error: Failed to cast length attribute" << std::endl;
4151 std::cout <<
" length : n/a" << std::endl;
4154 if (counts_data.HasAttribute(
"t0_bin")) {
4156 auto t0_bin = std::any_cast<int>(counts_data.GetAttribute(
"t0_bin"));
4157 std::cout <<
" t0_bin : " << t0_bin << std::endl;
4158 }
catch (
const std::bad_any_cast& e) {
4159 std::cerr <<
"Error: Failed to cast t0_bin attribute" << std::endl;
4162 std::cout <<
" t0_bin : n/a" << std::endl;
4165 if (counts_data.HasAttribute(
"first_good_bin")) {
4167 first_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"first_good_bin"));
4168 std::cout <<
" first_good_bin : " << first_good_bin << std::endl;
4169 }
catch (
const std::bad_any_cast& e) {
4170 std::cerr <<
"Error: Failed to cast first_good_bin attribute" << std::endl;
4173 std::cout <<
" first_good_bin : n/a" << std::endl;
4176 if (counts_data.HasAttribute(
"last_good_bin")) {
4178 auto last_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"last_good_bin"));
4179 std::cout <<
" last_good_bin : " << last_good_bin << std::endl;
4180 }
catch (
const std::bad_any_cast& e) {
4181 std::cerr <<
"Error: Failed to cast last_good_bin attribute" << std::endl;
4184 std::cout <<
" last_good_bin : n/a" << std::endl;
4187 if (counts_data.HasAttribute(
"offset")) {
4189 auto offset = std::any_cast<float>(counts_data.GetAttribute(
"offset"));
4190 std::cout <<
" offset : " << offset << std::endl;
4191 }
catch (
const std::bad_any_cast& e) {
4192 std::cerr <<
"Error: Failed to cast offset attribute" << std::endl;
4195 std::cout <<
" offset : n/a" << std::endl;
4199 const auto& data = counts_data.GetData();
4200 std::cout << std::endl <<
" first couple of counts of each detector:";
4201 for (
unsigned int i=0; i<noOfHistos; i++) {
4203 std::cout << std::endl <<
" " << i+1 <<
": ";
4205 std::cout << std::endl <<
" " << i+1 <<
": ";
4206 for (
unsigned int j=0; j<first_good_bin+5; j++)
4207 std::cout << data[i*histoLength+j] <<
", ";
4210 }
catch (
const std::bad_any_cast& e) {
4211 std::cerr <<
"Error: Failed to cast counts data" << std::endl;
4216 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/resolution"]);
4217 std::cout << std::endl <<
" resolution : " << int_data.GetData()[0];
4219 if (int_data.HasAttribute(
"units")) {
4221 auto units = std::any_cast<std::string>(int_data.GetAttribute(
"units"));
4222 std::cout <<
" units : " << units << std::endl;
4223 }
catch (
const std::bad_any_cast& e) {
4224 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4227 std::cout <<
" units : n/a" << std::endl;
4229 }
catch (
const std::bad_any_cast& e) {
4230 std::cerr << std::endl <<
"Error: Failed to cast resolution data" << std::endl;
4233 std::cout << std::endl <<
" resolution : n/a";
4238 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/time_zero"]);
4239 std::cout << std::endl <<
" time_zero : " << 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;
4252 if (int_data.HasAttribute(
"available")) {
4254 auto available = std::any_cast<int>(int_data.GetAttribute(
"available"));
4255 std::cout <<
" available : " << available << std::endl;
4256 }
catch (
const std::bad_any_cast& e) {
4257 std::cerr <<
"Error: Failed to cast available attribute" << std::endl;
4260 std::cout <<
" available : n/a" << std::endl;
4262 }
catch (
const std::bad_any_cast& e) {
4263 std::cerr << std::endl <<
"Error: Failed to cast time_zero data" << std::endl;
4266 std::cout << std::endl <<
" time_zero : n/a";
4271 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/raw_time"]);
4272 std::cout << std::endl <<
" raw_time : " << float_data.GetData()[0];
4273 if (float_data.HasAttribute(
"axis")) {
4275 auto axis = std::any_cast<int>(float_data.GetAttribute(
"axis"));
4276 std::cout <<
" axis : " << axis << std::endl;
4277 }
catch (
const std::bad_any_cast& e) {
4278 std::cerr <<
"Error: Failed to cast axis attribute" << std::endl;
4281 std::cout <<
" axis : n/a" << std::endl;
4284 if (float_data.HasAttribute(
"primary")) {
4286 auto primary = std::any_cast<int>(float_data.GetAttribute(
"primary"));
4287 std::cout <<
" primary : " << primary << std::endl;
4288 }
catch (
const std::bad_any_cast& e) {
4289 std::cerr <<
"Error: Failed to cast primary attribute" << std::endl;
4292 std::cout <<
" primary : n/a" << std::endl;
4295 if (float_data.HasAttribute(
"units")) {
4297 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
4298 std::cout <<
" units : " << units << std::endl;
4299 }
catch (
const std::bad_any_cast& e) {
4300 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4303 std::cout <<
" units : n/a" << std::endl;
4305 }
catch (
const std::bad_any_cast& e) {
4306 std::cerr << std::endl <<
"Error: Failed to cast raw_time data" << std::endl;
4309 std::cout << std::endl <<
" raw_time : n/a";
4312 if (
fDataMap.find(
"/run/histogram_data_1/corrected_time") !=
fDataMap.end()) {
4314 auto float_data = std::any_cast<PNXdata<float>>(
fDataMap[
"/run/histogram_data_1/corrected_time"]);
4315 std::cout << std::endl <<
" corrected_time : " << float_data.GetData()[0];
4316 if (float_data.HasAttribute(
"axis")) {
4318 auto axis = std::any_cast<int>(float_data.GetAttribute(
"axis"));
4319 std::cout <<
" axis : " << axis << std::endl;
4320 }
catch (
const std::bad_any_cast& e) {
4321 std::cerr <<
"Error: Failed to cast axis attribute" << std::endl;
4324 std::cout <<
" axis : n/a" << std::endl;
4327 if (float_data.HasAttribute(
"units")) {
4329 auto units = std::any_cast<std::string>(float_data.GetAttribute(
"units"));
4330 std::cout <<
" units : " << units << std::endl;
4331 }
catch (
const std::bad_any_cast& e) {
4332 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4335 std::cout <<
" units : n/a" << std::endl;
4337 }
catch (
const std::bad_any_cast& e) {
4338 std::cerr << std::endl <<
"Error: Failed to cast raw_time data" << std::endl;
4341 std::cout << std::endl <<
" corrected_time : n/a";
4346 auto int_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/run/histogram_data_1/grouping"]);
4347 std::cout << std::endl <<
" grouping : " << int_data.GetData()[0];
4348 if (int_data.HasAttribute(
"available")) {
4350 auto available = std::any_cast<int>(int_data.GetAttribute(
"available"));
4351 std::cout <<
" available : " << available << std::endl;
4352 }
catch (
const std::bad_any_cast& e) {
4353 std::cerr <<
"Error: Failed to cast available attribute" << std::endl;
4356 std::cout << std::endl <<
" available : n/a";
4358 }
catch (
const std::bad_any_cast& e) {
4359 std::cerr << std::endl <<
"Error: Failed to cast grouping data" << std::endl;
4362 std::cout << std::endl <<
" grouping : n/a";
4365 std::cout << std::endl;
4367 std::cout << std::endl;
4368 std::cout << std::endl <<
"hdf5-NeXus file content of file:' " <<
fFileName <<
"'";
4369 std::cout << std::endl <<
"****";
4370 std::cout << std::endl <<
"Top Level Attributes:";
4371 std::cout << std::endl <<
" HDF5 Version : " <<
fHdf5Version;
4372 std::cout << std::endl <<
" NeXus Version: " <<
fNeXusVersion;
4373 std::cout << std::endl <<
" file_name : " <<
fFileNameNxs;
4374 std::cout << std::endl <<
" file_time : " <<
fFileTimeNxs;
4375 std::cout << std::endl <<
"++++";
4376 std::cout << std::endl <<
"raw_data_1";
4377 std::cout << std::endl <<
"----";
4378 std::cout << std::endl <<
" IDF_version: " <<
fIdfVersion;
4381 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/beamline"]);
4382 std::cout << std::endl <<
" beamline : " << str.GetData()[0];
4383 }
catch (
const std::bad_any_cast& e) {
4384 std::cerr << std::endl <<
"Error: Failed to cast beamline data" << std::endl;
4387 std::cout << std::endl <<
" beamline : n/a";
4392 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/definition"]);
4393 std::cout << std::endl <<
" definition : " << str.GetData()[0];
4394 }
catch (
const std::bad_any_cast& e) {
4395 std::cerr << std::endl <<
"Error: Failed to cast definition data" << std::endl;
4398 std::cout << std::endl <<
" definition : n/a";
4403 auto str = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/run_number"]);
4404 std::cout << std::endl <<
" run_number : " << str.GetData()[0];
4405 }
catch (
const std::bad_any_cast& e) {
4406 std::cerr << std::endl <<
"Error: Failed to cast run_number data" << std::endl;
4409 std::cout << std::endl <<
" run_number : n/a";
4414 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/title"]);
4415 std::cout << std::endl <<
" title : " << str.GetData()[0];
4416 }
catch (
const std::bad_any_cast& e) {
4417 std::cerr << std::endl <<
"Error: Failed to cast title data" << std::endl;
4420 std::cout << std::endl <<
" title : n/a";
4425 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/start_time"]);
4426 std::cout << std::endl <<
" start_time : " << str.GetData()[0];
4427 }
catch (
const std::bad_any_cast& e) {
4428 std::cerr << std::endl <<
"Error: Failed to cast start_time data" << std::endl;
4431 std::cout << std::endl <<
" start_time : n/a";
4436 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/end_time"]);
4437 std::cout << std::endl <<
" end_time : " << str.GetData()[0];
4438 }
catch (
const std::bad_any_cast& e) {
4439 std::cerr << std::endl <<
"Error: Failed to cast end_time data" << std::endl;
4442 std::cout << std::endl <<
" end_time : n/a";
4447 auto good_frames = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/good_frames"]);
4448 std::cout << std::endl <<
" good_frames: " << good_frames.GetData()[0];
4449 }
catch(
const std::bad_any_cast& e) {
4450 std::cerr << std::endl <<
"Error: Failed to cast good_frames data" << std::endl;
4453 std::cout << std::endl <<
" good_frames: n/a";
4456 if (
fDataMap.find(
"/raw_data_1/experiment_identifier") !=
fDataMap.end()) {
4458 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/experiment_identifier"]);
4459 std::cout << std::endl <<
" experiment_identifier: " << str.GetData()[0];
4460 }
catch (
const std::bad_any_cast& e) {
4461 std::cerr << std::endl <<
"Error: Failed to cast experiment_identifier data" << std::endl;
4464 std::cout << std::endl <<
" experiment_identifier: n/a";
4467 std::cout << std::endl <<
"----";
4468 std::cout << std::endl <<
" instrument";
4471 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/name"]);
4472 std::cout << std::endl <<
" name : " << str.GetData()[0];
4473 }
catch (
const std::bad_any_cast& e) {
4474 std::cerr << std::endl <<
"Error: Failed to cast instrument/name data" << std::endl;
4477 std::cout << std::endl <<
" name : n/a";
4480 std::cout << std::endl <<
"----";
4481 std::cout << std::endl <<
" source";
4482 if (
fDataMap.find(
"/raw_data_1/instrument/source/name") !=
fDataMap.end()) {
4484 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/name"]);
4485 std::cout << std::endl <<
" name : " << str.GetData()[0];
4486 }
catch (
const std::bad_any_cast& e) {
4487 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/name data" << std::endl;
4490 std::cout << std::endl <<
" name : n/a";
4493 if (
fDataMap.find(
"/raw_data_1/instrument/source/type") !=
fDataMap.end()) {
4495 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/type"]);
4496 std::cout << std::endl <<
" type : " << str.GetData()[0];
4497 }
catch (
const std::bad_any_cast& e) {
4498 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/type data" << std::endl;
4501 std::cout << std::endl <<
" type : n/a";
4504 if (
fDataMap.find(
"/raw_data_1/instrument/source/probe") !=
fDataMap.end()) {
4506 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/instrument/source/probe"]);
4507 std::cout << std::endl <<
" probe : " << str.GetData()[0];
4508 }
catch (
const std::bad_any_cast& e) {
4509 std::cerr << std::endl <<
"Error: Failed to cast instrument/source/probe data" << std::endl;
4512 std::cout << std::endl <<
" probe : n/a";
4515 std::cout << std::endl <<
"----";
4516 std::cout << std::endl <<
" sample";
4519 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/sample/name"]);
4520 std::cout << std::endl <<
" name : " << str.GetData()[0];
4521 }
catch (
const std::bad_any_cast& e) {
4522 std::cerr << std::endl <<
"Error: Failed to cast sample/name data" << std::endl;
4525 std::cout << std::endl <<
" name : n/a";
4530 auto temp_ds = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/sample/temperature"]);
4531 float temp = temp_ds.GetData()[0];
4532 if (temp_ds.HasAttribute(
"units")) {
4534 auto units = std::any_cast<std::string>(temp_ds.GetAttribute(
"units"));
4535 if (units ==
"Celsius")
4537 }
catch (
const std::bad_any_cast& e) {
4538 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4541 std::cout << std::endl <<
" temperature: " << temp <<
" K";
4542 }
catch (
const std::bad_any_cast& e) {
4543 std::cerr << std::endl <<
"Error: Failed to cast sample/temperature data" << std::endl;
4546 std::cout << std::endl <<
" temperature: n/a";
4549 if (
fDataMap.find(
"/raw_data_1/sample/magnetic_field") !=
fDataMap.end()) {
4551 auto mag_field_ds = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/sample/magnetic_field"]);
4552 float mag_field = mag_field_ds.GetData()[0];
4553 if (mag_field_ds.HasAttribute(
"units")) {
4555 auto units = std::any_cast<std::string>(mag_field_ds.GetAttribute(
"units"));
4556 if (units ==
"Tesla")
4558 }
catch (
const std::bad_any_cast& e) {
4559 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4562 std::cout << std::endl <<
" mag. field: " << mag_field <<
" G";
4563 }
catch (
const std::bad_any_cast& e) {
4564 std::cerr << std::endl <<
"Error: Failed to cast sample/magnetic_field data" << std::endl;
4567 std::cout << std::endl <<
" temperature: n/a";
4572 auto str = std::any_cast<PNXdata<std::string>>(
fDataMap[
"/raw_data_1/sample/shape"]);
4573 std::cout << std::endl <<
" shape : " << str.GetData()[0];
4574 }
catch (
const std::bad_any_cast& e) {
4575 std::cerr << std::endl <<
"Error: Failed to cast sample/shape data" << std::endl;
4578 std::cout << std::endl <<
" shape : n/a";
4581 std::cout << std::endl <<
"----";
4582 std::cout << std::endl <<
" detector_1";
4583 std::cout << std::endl <<
" counts:";
4584 std::cout << std::endl;
4586 auto counts_data = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/counts"]);
4587 auto dims = counts_data.GetDimensions();
4588 std::cout <<
" counts dimensions: " << dims[0] <<
" x "
4589 << dims[1] <<
" x " << dims[2] << std::endl;
4590 std::cout <<
" total elements: " << counts_data.GetNumElements() << std::endl;
4593 if (counts_data.HasAttribute(
"signal")) {
4595 auto signal = std::any_cast<int>(counts_data.GetAttribute(
"signal"));
4596 std::cout <<
" signal : " << signal << std::endl;
4597 }
catch (
const std::bad_any_cast& e) {
4598 std::cerr <<
"Error: Failed to cast signal attribute" << std::endl;
4601 std::cout <<
" signal : n/a" << std::endl;
4604 if (counts_data.HasAttribute(
"axes")) {
4606 auto axes = std::any_cast<std::string>(counts_data.GetAttribute(
"axes"));
4607 std::cout <<
" axes : " << axes << std::endl;
4608 }
catch (
const std::bad_any_cast& e) {
4609 std::cerr <<
"Error: Failed to cast axes attribute" << std::endl;
4612 std::cout <<
" axes : n/a" << std::endl;
4615 if (counts_data.HasAttribute(
"long_name")) {
4617 auto long_name = std::any_cast<std::string>(counts_data.GetAttribute(
"long_name"));
4618 std::cout <<
" long_name : " << long_name << std::endl;
4619 }
catch (
const std::bad_any_cast& e) {
4620 std::cerr <<
"Error: Failed to cast long_name attribute" << std::endl;
4623 std::cout <<
" long_name : n/a" << std::endl;
4626 if (counts_data.HasAttribute(
"t0_bin")) {
4628 auto t0_bin = std::any_cast<int>(counts_data.GetAttribute(
"t0_bin"));
4629 std::cout <<
" t0_bin : " << t0_bin << std::endl;
4630 }
catch (
const std::bad_any_cast& e) {
4631 std::cerr <<
"Error: Failed to cast t0_bin attribute" << std::endl;
4634 std::cout <<
" t0_bin : n/a" << std::endl;
4637 if (counts_data.HasAttribute(
"first_good_bin")) {
4639 first_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"first_good_bin"));
4640 std::cout <<
" first_good_bin : " << first_good_bin << std::endl;
4641 }
catch (
const std::bad_any_cast& e) {
4642 std::cerr <<
"Error: Failed to cast first_good_bin attribute" << std::endl;
4645 std::cout <<
" first_good_bin : n/a" << std::endl;
4648 if (counts_data.HasAttribute(
"last_good_bin")) {
4650 auto last_good_bin = std::any_cast<int>(counts_data.GetAttribute(
"last_good_bin"));
4651 std::cout <<
" last_good_bin : " << last_good_bin << std::endl;
4652 }
catch (
const std::bad_any_cast& e) {
4653 std::cerr <<
"Error: Failed to cast last_good_bin attribute" << std::endl;
4656 std::cout <<
" last_good_bin : n/a" << std::endl;
4659 if (
fDataMap.find(
"/raw_data_1/instrument/detector_1/resolution") !=
fDataMap.end()) {
4661 auto ivalData = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/resolution"]);
4662 std::cout <<
" resolution : " << ivalData.GetData()[0];
4663 if (ivalData.HasAttribute(
"units")) {
4665 auto units = std::any_cast<std::string>(ivalData.GetAttribute(
"units"));
4666 std::cout <<
" " << units << std::endl;
4667 }
catch (
const std::bad_any_cast& e) {
4668 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4671 }
catch (
const std::bad_any_cast& e) {
4672 std::cerr <<
"Error: Failed to cast resolution attribute" << std::endl;
4675 std::cout <<
" resolution : n/a";
4679 const auto& data = counts_data.GetData();
4680 std::cout << std::endl <<
" first couple of counts of each detector:";
4681 for (
unsigned int i=0; i<dims[1]; i++) {
4683 std::cout << std::endl <<
" " << i+1 <<
": ";
4685 std::cout << std::endl <<
" " << i+1 <<
": ";
4686 for (
unsigned int j=0; j<first_good_bin+5; j++)
4687 std::cout << data[i*dims[2]+j] <<
", ";
4690 }
catch (
const std::bad_any_cast& e) {
4691 std::cerr <<
"Error: Failed to cast counts data" << std::endl;
4694 std::cout << std::endl;
4695 std::cout << std::endl <<
" raw_time:";
4696 std::cout << std::endl;
4698 auto raw_time = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/instrument/detector_1/raw_time"]);
4699 const auto& data = raw_time.GetData();
4702 if (raw_time.HasAttribute(
"units")) {
4704 auto units = std::any_cast<std::string>(raw_time.GetAttribute(
"units"));
4705 std::cout <<
" units : " << units << std::endl;
4706 }
catch (
const std::bad_any_cast& e) {
4707 std::cerr <<
"Error: Failed to cast units attribute" << std::endl;
4710 std::cout <<
" units : n/a" << std::endl;
4715 for (
unsigned int i=0; i<first_good_bin+5; i++)
4716 std::cout << data[i] <<
", ";
4718 }
catch (
const std::bad_any_cast& e) {
4719 std::cerr <<
"Error: Failed to cast raw_time data" << std::endl;
4722 std::cout << std::endl;
4723 std::cout << std::endl <<
" spectrum_index:";
4724 std::cout << std::endl;
4726 auto spectrum_index = std::any_cast<PNXdata<int>>(
fDataMap[
"/raw_data_1/instrument/detector_1/spectrum_index"]);
4727 const auto& data = spectrum_index.GetData();
4731 for (
unsigned int i=0; i<first_good_bin+5; i++)
4732 std::cout << data[i] <<
", ";
4734 }
catch (
const std::bad_any_cast& e) {
4735 std::cerr <<
"Error: Failed to cast spectrum_index data" << std::endl;
4738 std::cout << std::endl;
4739 std::cout << std::endl <<
" dead_time:";
4740 std::cout << std::endl;
4742 auto dead_time = std::any_cast<PNXdata<float>>(
fDataMap[
"/raw_data_1/instrument/detector_1/dead_time"]);
4743 const auto& data = dead_time.GetData();
4747 for (
unsigned int i=0; i<first_good_bin+5; i++)
4748 std::cout << data[i] <<
", ";
4750 }
catch (
const std::bad_any_cast& e) {
4751 std::cerr <<
"Error: Failed to cast spectrum_index data" << std::endl;
4754 std::cout << std::endl;