diff --git a/src/classes/PRunDataHandler.cpp b/src/classes/PRunDataHandler.cpp index eacf2019..882ec1ea 100644 --- a/src/classes/PRunDataHandler.cpp +++ b/src/classes/PRunDataHandler.cpp @@ -2214,9 +2214,50 @@ Bool_t PRunDataHandler::ReadNexusFile() return false; } + PDoubleVector histoData; + PRawRunData runData; + PRawRunDataSet dataSet; + TString str; + std::string sstr; + Int_t ival; + Double_t dval; + bool ok; + if (type == nxs::HDFType::HDF4) { #ifdef HAVE_HDF4 std::unique_ptr nxs_file = std::make_unique(fRunPathName.Data()); + + // get header information + + // get/set laboratory + sstr = "n/a"; + if (nxs_file->HasDataset("/run/lab")) + sstr = nxs_file->GetDataset("/run/lab").GetData()[0]; + runData.SetLaboratory(sstr); + + // get/set beamline + sstr = "n/a"; + if (nxs_file->HasDataset("/run/beamline")) + sstr = nxs_file->GetDataset("/run/beamline").GetData()[0]; + runData.SetBeamline(sstr); + + // get/set instrument + sstr = "n/a"; + if (nxs_file->HasDataset("/run/instrument/name")) + sstr = nxs_file->GetDataset("/run/instrument/name").GetData()[0]; + runData.SetInstrument(sstr); + + // get/set run title + str = "n/a"; + if (nxs_file->HasDataset("/run/title")) + sstr = nxs_file->GetDataset("/run/title").GetData()[0]; + runData.SetRunTitle(sstr); + + // get/set run number + ival = -1; + if (nxs_file->HasDataset("/run/number")) + ival = nxs_file->GetDataset("/run/number").GetData()[0]; + runData.SetRunNumber(ival); #endif } else { // HDF5 std::unique_ptr nxs_file = std::make_unique(fRunPathName.Data()); diff --git a/src/external/nexus/PNeXus.cpp b/src/external/nexus/PNeXus.cpp index f564f1c9..682eae74 100644 --- a/src/external/nexus/PNeXus.cpp +++ b/src/external/nexus/PNeXus.cpp @@ -502,7 +502,7 @@ void nxH4::PNeXus::HandleIdfV1(int32 sd_id) std::vector int_datasets = { "/run/IDF_version", "/run/number", - "/run/switching_state", + "/run/switching_states", "/run/instrument/detector/number", "/run/histogram_data_1/counts", "/run/histogram_data_1/resolution", @@ -3126,7 +3126,7 @@ void nxH5::PNeXus::HandleIdfV1(H5::H5File &file) ReadStringDataset(file, "/run/beamline"); ReadStringDataset(file, "/run/start_time"); ReadStringDataset(file, "/run/end_time"); - ReadIntDataset(file, "/run/switching_state"); + ReadIntDataset(file, "/run/switching_states"); ReadStringDataset(file, "/run/user/name"); ReadStringDataset(file, "/run/user/experiment_number"); ReadStringDataset(file, "/run/sample/name"); @@ -3193,9 +3193,9 @@ void nxH5::PNeXus::HandleIdfV2(H5::H5File &file) // Read the mandatory key datasets and store them in the data map try { ReadIntDataset(file, "/raw_data_1/IDF_version"); - ReadIntDataset(file, "/raw_data_1/good_frames"); ReadStringDataset(file, "/raw_data_1/beamline"); ReadStringDataset(file, "/raw_data_1/definition"); + ReadIntDataset(file, "/raw_data_1/good_frames"); ReadIntDataset(file, "/raw_data_1/run_number"); ReadStringDataset(file, "/raw_data_1/title"); ReadStringDataset(file, "/raw_data_1/start_time");