NeXus IDF V2 detector_1 -> instrument/detector_1 where possible.
This commit is contained in:
48
src/external/nexus/PNeXus.cpp
vendored
48
src/external/nexus/PNeXus.cpp
vendored
@@ -137,8 +137,8 @@ nxH4::PNeXusDeadTime::PNeXusDeadTime(const nxH4::PNeXus *nxs, bool debug) : fDeb
|
||||
// not yet implemented
|
||||
} else { // idfVersion == 2
|
||||
// get counts
|
||||
if (dataMap.find("/raw_data_1/detector_1/counts") != dataMap.end()) {
|
||||
auto counts_data = std::any_cast<PNXdata<int>>(dataMap["/raw_data_1/detector_1/counts"]);
|
||||
if (dataMap.find("/raw_data_1/instrument/detector_1/counts") != dataMap.end()) {
|
||||
auto counts_data = std::any_cast<PNXdata<int>>(dataMap["/raw_data_1/instrument/detector_1/counts"]);
|
||||
const auto& counts = counts_data.GetData();
|
||||
fCounts = counts;
|
||||
auto dims = counts_data.GetDimensions();
|
||||
@@ -154,8 +154,8 @@ nxH4::PNeXusDeadTime::PNeXusDeadTime(const nxH4::PNeXus *nxs, bool debug) : fDeb
|
||||
}
|
||||
|
||||
// get time_resolution
|
||||
if (dataMap.find("/raw_data_1/detector_1/time_resolution") != dataMap.end()) {
|
||||
auto time_res_data = std::any_cast<PNXdata<float>>(dataMap["/raw_data_1/detector_1/time_resolution"]);
|
||||
if (dataMap.find("/raw_data_1/instrument/detector_1/time_resolution") != dataMap.end()) {
|
||||
auto time_res_data = std::any_cast<PNXdata<float>>(dataMap["/raw_data_1/instrument/detector_1/time_resolution"]);
|
||||
const auto& time_res = time_res_data.GetData();
|
||||
if (time_res.size() > 0) {
|
||||
fTimeResolution = time_res[0];
|
||||
@@ -186,8 +186,8 @@ nxH4::PNeXusDeadTime::PNeXusDeadTime(const nxH4::PNeXus *nxs, bool debug) : fDeb
|
||||
}
|
||||
|
||||
// get t0_bin, first_good_bin, last_good_bin
|
||||
if (dataMap.find("/raw_data_1/detector_1/spectrum_index") != dataMap.end()) {
|
||||
auto spec_idx_data = std::any_cast<PNXdata<int>>(dataMap["/raw_data_1/detector_1/spectrum_index"]);
|
||||
if (dataMap.find("/raw_data_1/instrument/detector_1/spectrum_index") != dataMap.end()) {
|
||||
auto spec_idx_data = std::any_cast<PNXdata<int>>(dataMap["/raw_data_1/instrument/detector_1/spectrum_index"]);
|
||||
if (spec_idx_data.HasAttribute("t0_bin")) {
|
||||
try {
|
||||
fT0Bin = std::any_cast<int>(spec_idx_data.GetAttribute("t0_bin"));
|
||||
@@ -581,16 +581,16 @@ void nxH4::PNeXus::HandleIdfV2(int32 sd_id)
|
||||
// These are typical datasets found in muon NeXus files
|
||||
|
||||
std::vector<std::string> int_datasets = {
|
||||
"/raw_data_1/detector_1/counts",
|
||||
"/raw_data_1/detector_1/spectrum_index",
|
||||
"/raw_data_1/instrument/detector_1/counts",
|
||||
"/raw_data_1/instrument/detector_1/spectrum_index",
|
||||
"/raw_data_1/good_frames",
|
||||
"/raw_data_1/detector_1/raw_time",
|
||||
"/raw_data_1/instrument/detector_1/raw_time",
|
||||
"/raw_data_1/run_number"
|
||||
};
|
||||
|
||||
std::vector<std::string> float_datasets = {
|
||||
"/raw_data_1/detector_1/time_resolution",
|
||||
"/raw_data_1/detector_1/time_zero"
|
||||
"/raw_data_1/instrument/detector_1/resolution",
|
||||
"/raw_data_1/instrument/detector_1/time_zero"
|
||||
};
|
||||
|
||||
std::vector<std::string> string_datasets = {
|
||||
@@ -1553,7 +1553,7 @@ void nxH4::PNeXus::Dump()
|
||||
std::cout << std::endl << " counts:";
|
||||
std::cout << std::endl;
|
||||
try {
|
||||
auto counts_data = std::any_cast<PNXdata<int>>(fDataMap["/raw_data_1/detector_1/counts"]);
|
||||
auto counts_data = std::any_cast<PNXdata<int>>(fDataMap["/raw_data_1/instrument/detector_1/counts"]);
|
||||
auto dims = counts_data.GetDimensions();
|
||||
std::cout << " counts dimensions: " << dims[0] << " x "
|
||||
<< dims[1] << " x " << dims[2] << std::endl;
|
||||
@@ -1645,7 +1645,7 @@ void nxH4::PNeXus::Dump()
|
||||
std::cout << std::endl << " raw_time:";
|
||||
std::cout << std::endl;
|
||||
try {
|
||||
auto raw_time = std::any_cast<PNXdata<float>>(fDataMap["/raw_data_1/detector_1/raw_time"]);
|
||||
auto raw_time = std::any_cast<PNXdata<float>>(fDataMap["/raw_data_1/instrument/detector_1/raw_time"]);
|
||||
const auto& data = raw_time.GetData();
|
||||
|
||||
// Check for attributes
|
||||
@@ -1671,7 +1671,7 @@ void nxH4::PNeXus::Dump()
|
||||
std::cout << std::endl << " spectrum_index:";
|
||||
std::cout << std::endl;
|
||||
try {
|
||||
auto spectrum_index = std::any_cast<PNXdata<int>>(fDataMap["/raw_data_1/detector_1/spectrum_index"]);
|
||||
auto spectrum_index = std::any_cast<PNXdata<int>>(fDataMap["/raw_data_1/instrument/detector_1/spectrum_index"]);
|
||||
const auto& data = spectrum_index.GetData();
|
||||
|
||||
// dump the first couple of raw_times
|
||||
@@ -1687,7 +1687,7 @@ void nxH4::PNeXus::Dump()
|
||||
std::cout << std::endl << " dead_time:";
|
||||
std::cout << std::endl;
|
||||
try {
|
||||
auto dead_time = std::any_cast<PNXdata<float>>(fDataMap["/raw_data_1/detector_1/dead_time"]);
|
||||
auto dead_time = std::any_cast<PNXdata<float>>(fDataMap["/raw_data_1/instrument/detector_1/dead_time"]);
|
||||
const auto& data = dead_time.GetData();
|
||||
|
||||
// dump the first couple of raw_times
|
||||
@@ -2325,8 +2325,8 @@ nxH5::PNeXusDeadTime::PNeXusDeadTime(const PNeXus *nxs, bool debug) : fDebug(deb
|
||||
// not yet implemented
|
||||
} else { // idfVersion == 2
|
||||
// get counts
|
||||
if (dataMap.find("/raw_data_1/detector_1/counts") != dataMap.end()) {
|
||||
auto counts_data = std::any_cast<PNXdata<int>>(dataMap["/raw_data_1/detector_1/counts"]);
|
||||
if (dataMap.find("/raw_data_1/instrument/detector_1/counts") != dataMap.end()) {
|
||||
auto counts_data = std::any_cast<PNXdata<int>>(dataMap["/raw_data_1/instrument/detector_1/counts"]);
|
||||
const auto& counts = counts_data.GetData();
|
||||
fCounts = counts;
|
||||
auto dims = counts_data.GetDimensions();
|
||||
@@ -2372,8 +2372,8 @@ nxH5::PNeXusDeadTime::PNeXusDeadTime(const PNeXus *nxs, bool debug) : fDebug(deb
|
||||
}
|
||||
|
||||
// get dead time parameters
|
||||
if (dataMap.find("/raw_data_1/detector_1/dead_time") != dataMap.end()) {
|
||||
auto dead_time = std::any_cast<PNXdata<float>>(dataMap["/raw_data_1/detector_1/dead_time"]);
|
||||
if (dataMap.find("/raw_data_1/instrument/detector_1/dead_time") != dataMap.end()) {
|
||||
auto dead_time = std::any_cast<PNXdata<float>>(dataMap["/raw_data_1/instrument/detector_1/dead_time"]);
|
||||
const auto& dt_data = dead_time.GetData();
|
||||
fDeadTime = dt_data;
|
||||
}
|
||||
@@ -3207,9 +3207,9 @@ void nxH5::PNeXus::HandleIdfV2(H5::H5File &file)
|
||||
ReadStringDataset(file, "/raw_data_1/instrument/source/probe");
|
||||
ReadIntDataset(file, "/raw_data_1/instrument/detector_1/resolution");
|
||||
ReadIntDataset(file, "/raw_data_1/instrument/detector_1/counts");
|
||||
ReadFloatDataset(file, "/raw_data_1/detector_1/raw_time");
|
||||
ReadIntDataset(file, "/raw_data_1/detector_1/spectrum_index");
|
||||
ReadFloatDataset(file, "/raw_data_1/instrument/detector_1/dead_time");
|
||||
ReadFloatDataset(file, "/raw_data_1/instrument/detector_1/raw_time");
|
||||
ReadIntDataset(file, "/raw_data_1/instrument/detector_1/spectrum_index");
|
||||
ReadFloatDataset(file, "/raw_data_1/detector_1/dead_time");
|
||||
} catch (const H5::Exception& err) {
|
||||
std::cerr << "Error in HandleIdfV2: " << err.getDetailMsg() << std::endl;
|
||||
throw;
|
||||
@@ -3889,7 +3889,7 @@ void nxH5::PNeXus::Dump()
|
||||
std::cout << std::endl << " raw_time:";
|
||||
std::cout << std::endl;
|
||||
try {
|
||||
auto raw_time = std::any_cast<PNXdata<float>>(fDataMap["/raw_data_1/detector_1/raw_time"]);
|
||||
auto raw_time = std::any_cast<PNXdata<float>>(fDataMap["/raw_data_1/instrument/detector_1/raw_time"]);
|
||||
const auto& data = raw_time.GetData();
|
||||
|
||||
// Check for attributes
|
||||
@@ -3915,7 +3915,7 @@ void nxH5::PNeXus::Dump()
|
||||
std::cout << std::endl << " spectrum_index:";
|
||||
std::cout << std::endl;
|
||||
try {
|
||||
auto spectrum_index = std::any_cast<PNXdata<int>>(fDataMap["/raw_data_1/detector_1/spectrum_index"]);
|
||||
auto spectrum_index = std::any_cast<PNXdata<int>>(fDataMap["/raw_data_1/instrument/detector_1/spectrum_index"]);
|
||||
const auto& data = spectrum_index.GetData();
|
||||
|
||||
// dump the first couple of raw_times
|
||||
|
||||
Reference in New Issue
Block a user