From c894c21bf3f37671b6f6ccefbbe952c6839273c9 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Mon, 2 Feb 2026 08:02:41 +0100 Subject: [PATCH] add more HDF4 header info. --- src/classes/PRunDataHandler.cpp | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/classes/PRunDataHandler.cpp b/src/classes/PRunDataHandler.cpp index 52db5954..212849b3 100644 --- a/src/classes/PRunDataHandler.cpp +++ b/src/classes/PRunDataHandler.cpp @@ -2307,6 +2307,48 @@ Bool_t PRunDataHandler::ReadNexusFile() if (nxs_file->HasDataset("/run/sample/name")) sstr = nxs_file->GetDataset("/run/sample/name").GetData()[0]; runData.SetSample(sstr); + + // get/set orientation + runData.SetOrientation("??"); + + // get/set time resolution (ns) + dval = PMUSR_UNDEFINED; + sstr = "n/a"; + factor = 1.0; + if (nxs_file->HasDataset("/run/histogram_data_1/resolution")) { + auto res_ds = nxs_file->GetDataset("/run/histogram_data_1/resolution"); + dval = res_ds.GetData()[0]; + if (res_ds.HasAttribute("units")) + sstr = std::any_cast(res_ds.GetAttribute("units")); + if ((sstr == "picoseconds") || (sstr == "pico.seconds")) + factor = 1.0e-3; // ps -> ns + } + runData.SetTimeResolution(dval*factor); + + // get/set start/stop time + sstr = "n/a"; + TString date{"n/a"}, time{"n/a"}; + if (nxs_file->HasDataset("/run/start_time")) + sstr = nxs_file->GetDataset("/run/start_time").GetData()[0]; + str = sstr; + SplitTimeDate(str, time, date, ok); + if (ok) { + runData.SetStartTime(time); + runData.SetStartDate(date); + } + + sstr = "n/a"; + date = "n/a"; + time = "n/a"; + if (nxs_file->HasDataset("/run/stop_time")) + sstr = nxs_file->GetDataset("/run/stop_time").GetData()[0]; + str = sstr; + SplitTimeDate(str, time, date, ok); + if (ok) { + runData.SetStopTime(time); + runData.SetStopDate(date); + } + #endif } else { // HDF5 std::unique_ptr nxs_file = std::make_unique(fRunPathName.Data());