From 7e2ea62ac3a00c4e6e5b7f0e679e899dae50f1e5 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Thu, 22 Dec 2011 10:27:01 +0000 Subject: [PATCH] more work towards NeXus exchange --- ChangeLog | 4 +- doc/examples/data/EMU00005989_v2.nxs | Bin 0 -> 137109 bytes doc/examples/data/emu00005989_v2.nxs | Bin 675651 -> 0 bytes doc/examples/test-asy-NeXus2.msr | 2 +- doc/examples/test-histo-NeXus2.msr | 4 +- src/Makefile.am | 28 +- src/any2many.cpp | 4 +- src/classes/PMusr.cpp | 2 + src/classes/PRunDataHandler.cpp | 507 ++++++++++--------- src/external/nexus/PNeXus.cpp | 702 +++++++++++++++++---------- src/external/nexus/PNeXus.h | 13 +- src/include/PMusr.h | 7 + src/include/PRunDataHandler.h | 2 +- src/nexus_dump.cpp | 74 +++ src/tests/nexus/Makefile | 6 +- src/tests/nexus/nexus_read_test.cpp | 2 +- 16 files changed, 871 insertions(+), 486 deletions(-) create mode 100644 doc/examples/data/EMU00005989_v2.nxs delete mode 100644 doc/examples/data/emu00005989_v2.nxs create mode 100644 src/nexus_dump.cpp diff --git a/ChangeLog b/ChangeLog index ba331c2e..c66be610 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,8 @@ changes since 0.9.0 =================================== +NEW 2011-12-22 added nexus_dump. It is used to dump nexus files in an ascii +form. For instance it can be used to read header info. NEW if the background is estimated form an interval rather than fitted, it will be added as a comment to the background interval tag. (MUSR-192). NEW forward/backward accept now not only c0 c1 c2 ... cn, but also c0-cn cm-cp, or c0 c1-cn cm cx-cy, etc. (MUSR-201, improvement whish). @@ -19,7 +21,7 @@ NEW the chi^2 calculation in single-histogram and asymmetry fits is parallelized if musrfit is built using a compiler supporting OpenMP (e.g. GCC >= 4.2) Using --disable-omp this feature can be disabled on the configure level. NEW any2many: force the user to define the exact NeXus ouput format (HDF4,HDF5,XML) -FIXED 2011-12-15 some more work towards a proper NeXus muon data format support. +FIXED 2011-12-22 some more work towards a proper NeXus muon data format support. FIXED proper phase correction for Re/Im Fourier transform (MUSR-206) FIXED when release or restore is called (command block commands), the corresponding parameter error is set to 2% of its parameter value (MUSR-188). diff --git a/doc/examples/data/EMU00005989_v2.nxs b/doc/examples/data/EMU00005989_v2.nxs new file mode 100644 index 0000000000000000000000000000000000000000..9a213b03fbc27262d133676c694d64590b3fa831 GIT binary patch literal 137109 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

)*6BV& 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 Pd5-)4L$Ck$Gwl8w2!ng} literal 0 HcmV?d00001 diff --git a/doc/examples/data/emu00005989_v2.nxs b/doc/examples/data/emu00005989_v2.nxs deleted file mode 100644 index 91f812aaf179d9f5850d523147b96c1268aee186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 675651 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

dMcGtMk0H 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 | -r "; - cout << endl << " -c [-p ]"; - cout << endl << " [-y ] [-t ] [-s]"; + cout << endl << " -c [-p ] [-y ]"; + cout << endl << " [-o | -t ] [-s]"; cout << endl << " [-rebin ] [-z ]"; cout << endl << " -f : where is space"; cout << endl << " separeted a list of file names (not starting with a '-'),"; diff --git a/src/classes/PMusr.cpp b/src/classes/PMusr.cpp index 36ac64f3..28efb7be 100644 --- a/src/classes/PMusr.cpp +++ b/src/classes/PMusr.cpp @@ -224,6 +224,8 @@ PRawRunData::PRawRunData() fLaboratory = TString("n/a"); fBeamline = TString("n/a"); fInstrument = TString("n/a"); + fMuonSource = TString("n/a"); + fMuonSpecies = TString("n/a"); fRunName = TString("n/a"); fRunNumber = -1; fRunTitle = TString("n/a"); diff --git a/src/classes/PRunDataHandler.cpp b/src/classes/PRunDataHandler.cpp index 0b4b1e31..e2c6a4eb 100644 --- a/src/classes/PRunDataHandler.cpp +++ b/src/classes/PRunDataHandler.cpp @@ -39,6 +39,7 @@ #include #include #include +#include using namespace std; #include @@ -584,7 +585,7 @@ Bool_t PRunDataHandler::ReadWriteFilesList() } //-------------------------------------------------------------------------- -// FileAlreadyRead +// FileAlreadyRead (private) //-------------------------------------------------------------------------- /** *

Checks if a file has been already read in order to prevent multiple @@ -608,7 +609,7 @@ Bool_t PRunDataHandler::FileAlreadyRead(TString runName) } //-------------------------------------------------------------------------- -// TestFileName -- private +// TestFileName (private) //-------------------------------------------------------------------------- /** *

Tests if a file exists (with or without given extension). @@ -622,75 +623,91 @@ void PRunDataHandler::TestFileName(TString &runName, const TString &ext) TString tmpStr(runName), tmpExt(ext); // check first if the file exists with the default extension which is not given with the run name - runName += TString(".") + ext; - if (gSystem->AccessPathName(runName.Data()) != true) { // found - return; - } - - // test if the file exists with only upper-case letters - runName.ToUpper(); - if (gSystem->AccessPathName(runName.Data()) != true) { // found - return; - } - - // test if the file exists with only lower-case letters - runName.ToLower(); - if (gSystem->AccessPathName(runName.Data()) != true) { // found + tmpStr += TString(".") + ext; + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; return; } // test if the file exists with the given run name but an only upper-case extension which is not included in the file name - runName = tmpStr; + tmpStr = runName; tmpExt.ToUpper(); - runName += TString(".") + tmpExt; - if (gSystem->AccessPathName(runName.Data()) != true) { // found + tmpStr += TString(".") + tmpExt; + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; return; } // test if the file exists with the given run name but an only lower-case extension which is not included in the file name + tmpStr = runName; tmpExt.ToLower(); - runName = runName.Replace(static_cast(runName.Length()-tmpExt.Length()), tmpExt.Length(), tmpExt); - if (gSystem->AccessPathName(runName.Data()) != true) { // found + tmpStr += TString(".") + tmpExt; + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; return; } - runName = tmpStr; + // test if the file exists with only upper-case letters + tmpStr = runName + TString(".") + tmpExt; + tmpStr.ToUpper(); + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; + return; + } + + // test if the file exists with only lower-case letters + tmpStr.ToLower(); + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; + return; + } + + tmpStr = runName; // the extension is already part of the file name, therefore, do not append it - if (runName.EndsWith(ext.Data(), TString::kIgnoreCase)) { - if (gSystem->AccessPathName(runName.Data()) != true) { // found + if (tmpStr.EndsWith(ext.Data(), TString::kIgnoreCase)) { + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; return; } // assume some extension is part of the given file name but the real data file ends with an lower-case extension tmpExt.ToLower(); - runName = runName.Replace(static_cast(runName.Length()-tmpExt.Length()), tmpExt.Length(), tmpExt); - if (gSystem->AccessPathName(runName.Data()) != true) { // found + tmpStr = tmpStr.Replace(static_cast(tmpStr.Length()-tmpExt.Length()), tmpExt.Length(), tmpExt); + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; return; } // assume some extension is part of the given file name but the real data file ends with an upper-case extension tmpExt.ToUpper(); - runName = runName.Replace(static_cast(runName.Length()-tmpExt.Length()), tmpExt.Length(), tmpExt); - if (gSystem->AccessPathName(runName.Data()) != true) { // found + tmpStr = runName; + tmpStr = tmpStr.Replace(static_cast(tmpStr.Length()-tmpExt.Length()), tmpExt.Length(), tmpExt); + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; return; } // test if the file exists with only lower-case letters and the extension already included in the file name - runName.ToLower(); - if (gSystem->AccessPathName(runName.Data()) != true) { // found + tmpStr = runName; + tmpStr.ToLower(); + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; return; } // test if the file exists with only upper-case letters and the extension already included in the file name - runName.ToUpper(); - if (gSystem->AccessPathName(runName.Data()) != true) { // found + tmpStr = runName; + tmpStr.ToUpper(); + if (gSystem->AccessPathName(tmpStr.Data()) != true) { // found + runName = tmpStr; return; } } // if the file has not been found, set the run name to be empty runName = ""; + return; } @@ -1043,6 +1060,8 @@ Bool_t PRunDataHandler::ReadRootFile(UInt_t tag) runData.SetLaboratory("PSI"); runData.SetBeamline("muE4"); runData.SetInstrument("LEM"); + runData.SetMuonSource("low energy muon source"); + runData.SetMuonSpecies("positive muons"); // get run title TObjString ostr = runHeader->GetRunTitle(); @@ -1072,36 +1091,14 @@ Bool_t PRunDataHandler::ReadRootFile(UInt_t tag) time_t idt = (time_t)runHeader->GetStartTime(); runData.SetStartDateTime(idt); struct tm *dt = localtime(&idt); - TString stime(""); - Int_t yy = dt->tm_year; - if (yy > 100) - yy -= 100; - if (yy < 10) - stime += "0"; - stime += yy; - stime += "-"; - stime += GetMonth(dt->tm_mon); - stime += "-"; - if (dt->tm_mday < 10) - stime += "0"; - stime += dt->tm_mday; + char str[128]; + strftime(str, sizeof(str), "%F", dt); + TString stime(str); runData.SetStartDate(stime); // start time - if (dt->tm_hour == 0) - stime = "00"; - else if (dt->tm_hour < 10) - stime = "0"; - else - stime = ""; - stime += dt->tm_hour; - stime += ":"; - if (dt->tm_min < 10) - stime += "0"; - stime += dt->tm_min; - stime += ":"; - if (dt->tm_sec < 10) - stime += "0"; - stime += dt->tm_sec; + memset(str, 0, sizeof(str)); + strftime(str, sizeof(str), "%T", dt); + stime = str; runData.SetStartTime(stime); // get stop time/date @@ -1109,43 +1106,21 @@ Bool_t PRunDataHandler::ReadRootFile(UInt_t tag) idt = (time_t)runHeader->GetStopTime(); runData.SetStopDateTime(idt); dt = localtime(&idt); - stime = ""; - yy = dt->tm_year; - if (yy > 100) - yy -= 100; - if (yy < 10) - stime += "0"; - stime += yy; - stime += "-"; - stime += GetMonth(dt->tm_mon); - stime += "-"; - if (dt->tm_mday < 10) - stime += "0"; - stime += dt->tm_mday; + memset(str, 0, sizeof(str)); + strftime(str, sizeof(str), "%F", dt); + stime = str; runData.SetStopDate(stime); // stop time - if (dt->tm_hour == 0) - stime = "00"; - else if (dt->tm_hour < 10) - stime = "0"; - else - stime = ""; - stime += dt->tm_hour; - stime += ":"; - if (dt->tm_min < 10) - stime += "0"; - stime += dt->tm_min; - stime += ":"; - if (dt->tm_sec < 10) - stime += "0"; - stime += dt->tm_sec; + memset(str, 0, sizeof(str)); + strftime(str, sizeof(str), "%T", dt); + stime = str; runData.SetStopTime(stime); // get time resolution runData.SetTimeResolution(runHeader->GetTimeResolution()); // get number of histogramms - Int_t noOfHistos = runHeader->GetNHist(); + Int_t noOfHistos = runHeader->GetNHist(); // get t0's Double_t *t0 = runHeader->GetTimeZero(); @@ -1155,6 +1130,11 @@ Bool_t PRunDataHandler::ReadRootFile(UInt_t tag) for (Int_t i=0; iGetEntryIdf2()->GetInstrument()->GetSource()->GetName()); + runData.SetLaboratory(str); + + // get/set beamline + str = TString(nxs_file->GetEntryIdf2()->GetInstrument()->GetName()); + runData.SetBeamline(str); + + // get/set instrument + str = TString(nxs_file->GetEntryIdf2()->GetInstrument()->GetName()); + runData.SetInstrument(str); + + // get/set muon source + str = TString(nxs_file->GetEntryIdf2()->GetInstrument()->GetSource()->GetType()); + runData.SetMuonSource(str); + + // get/set muon species + str = TString(nxs_file->GetEntryIdf2()->GetInstrument()->GetSource()->GetProbe()); + runData.SetMuonSpecies(str); + // get/set run title str = TString(nxs_file->GetEntryIdf2()->GetTitle()); runData.SetRunTitle(str); @@ -1588,7 +1588,7 @@ Bool_t PRunDataHandler::ReadNexusFile() int *lgb = nxs_file->GetEntryIdf2()->GetInstrument()->GetDetector()->GetLastGoodBins(); PIntPair goodDataBin; - if (nxs_file->GetEntryIdf2()->GetInstrument()->GetDetector()->GetT0Tag() == 2) { // t0, fgb, lgb: [][] + if (nxs_file->GetEntryIdf2()->GetInstrument()->GetDetector()->GetT0Tag() == 3) { // t0, fgb, lgb: [][] for (int i=0; iGetEntryIdf2()->GetInstrument()->GetDetector()->GetNoOfPeriods(); i++) { for (int j=0; jGetEntryIdf2()->GetInstrument()->GetDetector()->GetNoOfSpectra(); j++) { if (fgb && lgb) { @@ -1601,6 +1601,17 @@ Bool_t PRunDataHandler::ReadNexusFile() } } } + } else if (nxs_file->GetEntryIdf2()->GetInstrument()->GetDetector()->GetT0Tag() == 2) { // t0, fgb, lgb: [] + for (int i=0; iGetEntryIdf2()->GetInstrument()->GetDetector()->GetNoOfSpectra(); i++) { + if (fgb && lgb) { + goodDataBin.first = *(fgb+i); + goodDataBin.second = *(lgb+i); + } + runData.AppendT0(*(t0+i)); + if (fgb && lgb) { + runData.AppendGoodDataBin(goodDataBin); + } + } } else { // t0, fgb, lgb: single numbers if (fgb && lgb) { goodDataBin.first = *fgb; @@ -2011,27 +2022,42 @@ Bool_t PRunDataHandler::ReadPsiBinFile() // filter from the file name the instrument TString instrument("n/a"), beamline("n/a"); + TString muonSource("n/a"), muonSpecies("n/a"); if (fRunPathName.Contains("_gps_", TString::kIgnoreCase)) { instrument = "GPS"; beamline = "piM3.2"; + muonSource = "continuous surface muon source"; + muonSpecies = "positive muons"; } else if (fRunPathName.Contains("_ltf_", TString::kIgnoreCase)) { instrument = "LTF"; beamline = "piM3.3"; + muonSource = "continuous surface muon source"; + muonSpecies = "positive muons"; } else if (fRunPathName.Contains("_gpd_", TString::kIgnoreCase)) { instrument = "GPD"; beamline = "muE1"; + muonSource = "continuous decay channel muon source"; + muonSpecies = "positive muons"; } else if (fRunPathName.Contains("_dolly_", TString::kIgnoreCase)) { instrument = "DOLLY"; beamline = "piE1"; + muonSource = "continuous surface muon source"; + muonSpecies = "positive muons"; } else if (fRunPathName.Contains("_alc_", TString::kIgnoreCase)) { instrument = "ALC"; beamline = "piE3"; + muonSource = "continuous surface muon source"; + muonSpecies = "positive muons"; } else if (fRunPathName.Contains("_hifi_", TString::kIgnoreCase)) { instrument = "HIFI"; beamline = "piE3"; + muonSource = "continuous surface muon source"; + muonSpecies = "positive muons"; } runData.SetInstrument(instrument); runData.SetBeamline(beamline); + runData.SetMuonSource(muonSource); + runData.SetMuonSpecies(muonSpecies); // keep run name runData.SetRunName(fRunName); @@ -2091,7 +2117,13 @@ Bool_t PRunDataHandler::ReadPsiBinFile() if (sDateTime.size() < 2) { cerr << endl << ">> **WARNING** psi-bin file: couldn't obtain run start date/time" << endl; } - runData.SetStartDate(sDateTime[0]); + string date(""); + if (DateToISO8601(sDateTime[0], date)) { + runData.SetStartDate(date); + } else { + cerr << endl << ">> **WARNING** failed to convert start date: " << sDateTime[0] << " into ISO 8601 date." << endl; + runData.SetStartDate(sDateTime[0]); + } runData.SetStartTime(sDateTime[1]); sDateTime.clear(); @@ -2099,7 +2131,13 @@ Bool_t PRunDataHandler::ReadPsiBinFile() if (sDateTime.size() < 2) { cerr << endl << ">> **WARNING** psi-bin file: couldn't obtain run stop date/time" << endl; } - runData.SetStopDate(sDateTime[0]); + date = string(""); + if (DateToISO8601(sDateTime[0], date)) { + runData.SetStopDate(date); + } else { + cerr << endl << ">> **WARNING** failed to convert stop date: " << sDateTime[0] << " into ISO 8601 date." << endl; + runData.SetStopDate(sDateTime[0]); + } runData.SetStopTime(sDateTime[1]); sDateTime.clear(); @@ -2209,41 +2247,20 @@ Bool_t PRunDataHandler::ReadMudFile() time_t tval; struct tm *dt; TString stime(""); - Int_t yy = 0; success = MUD_getTimeBegin( fh, (UINT32*)&tval ); if (success) { runData.SetStartDateTime((const time_t)tval); dt = localtime((const time_t*)&tval); assert(dt); - yy = dt->tm_year; - if (yy > 100) - yy -= 100; - if (yy < 10) - stime += "0"; - stime += yy; - stime += "-"; - stime += GetMonth(dt->tm_mon); - stime += "-"; - if (dt->tm_mday < 10) - stime += "0"; - stime += dt->tm_mday; + + // start date + strftime(str, sizeof(str), "%F", dt); + stime = str; runData.SetStartDate(stime); // start time - if (dt->tm_hour == 0) - stime = "00"; - else if (dt->tm_hour < 10) - stime = "0"; - else - stime = ""; - stime += dt->tm_hour; - stime += ":"; - if (dt->tm_min < 10) - stime += "0"; - stime += dt->tm_min; - stime += ":"; - if (dt->tm_sec < 10) - stime += "0"; - stime += dt->tm_sec; + memset(str, 0, sizeof(str)); + strftime(str, sizeof(str), "%T", dt); + stime = str; runData.SetStartTime(stime); } @@ -2253,36 +2270,15 @@ Bool_t PRunDataHandler::ReadMudFile() runData.SetStopDateTime((const time_t)tval); dt = localtime((const time_t*)&tval); assert(dt); - stime = ""; - yy = dt->tm_year; - if (yy > 100) - yy -= 100; - if (yy < 10) - stime += "0"; - stime += yy; - stime += "-"; - stime += GetMonth(dt->tm_mon); - stime += "-"; - if (dt->tm_mday < 10) - stime += "0"; - stime += dt->tm_mday; + + // stop date + strftime(str, sizeof(str), "%F", dt); + stime = str; runData.SetStopDate(stime); // stop time - if (dt->tm_hour == 0) - stime = "00"; - else if (dt->tm_hour < 10) - stime = "0"; - else - stime = ""; - stime += dt->tm_hour; - stime += ":"; - if (dt->tm_min < 10) - stime += "0"; - stime += dt->tm_min; - stime += ":"; - if (dt->tm_sec < 10) - stime += "0"; - stime += dt->tm_sec; + memset(str, 0, sizeof(str)); + strftime(str, sizeof(str), "%T", dt); + stime = str; runData.SetStopTime(stime); } @@ -3687,8 +3683,6 @@ Bool_t PRunDataHandler::WriteNexusFile(TString fln) { #ifdef PNEXUS_ENABLED - int *t0=0, *fgb=0, *lgb=0, *histo=0; - // generate output file name if (fln.Length() == 0) { Bool_t ok = false; @@ -3725,7 +3719,7 @@ Bool_t PRunDataHandler::WriteNexusFile(TString fln) tm = localtime(&now); string str(""); char cstr[128]; - sprintf(cstr, "%04d-%02d-%02d %02d:%02d:%02d", 1900+tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_hour, tm->tm_sec); + strftime(cstr, sizeof(cstr), "%FT%T", tm); str = string(cstr); nxs->SetFileTime(str); @@ -3739,9 +3733,9 @@ Bool_t PRunDataHandler::WriteNexusFile(TString fln) nxs->GetEntryIdf1()->SetLaboratory(fData[0].GetLaboratory()->Data()); if (*fData[0].GetBeamline() != "n/a") nxs->GetEntryIdf1()->SetBeamline(fData[0].GetBeamline()->Data()); - str = string(fData[0].GetStartDate()->Data()) + string(" ") + string(fData[0].GetStartTime()->Data()); + str = string(fData[0].GetStartDate()->Data()) + string("T") + string(fData[0].GetStartTime()->Data()); nxs->GetEntryIdf1()->SetStartTime(str); - str = string(fData[0].GetStopDate()->Data()) + string(" ") + string(fData[0].GetStopTime()->Data()); + str = string(fData[0].GetStopDate()->Data()) + string("T") + string(fData[0].GetStopTime()->Data()); nxs->GetEntryIdf1()->SetStopTime(str); nxs->GetEntryIdf1()->SetSwitchingState(1); nxs->GetEntryIdf1()->GetUser()->SetName("n/a"); @@ -3749,13 +3743,23 @@ Bool_t PRunDataHandler::WriteNexusFile(TString fln) nxs->GetEntryIdf1()->GetSample()->SetName(fData[0].GetSample()->Data()); nxs->GetEntryIdf1()->GetSample()->SetPhysProp("temperature", fData[0].GetTemperature(0), "Kelvin"); nxs->GetEntryIdf1()->GetSample()->SetPhysProp("magnetic_field", fData[0].GetField(), "Gauss"); - nxs->GetEntryIdf1()->GetSample()->SetEnvironment("n/a"); + nxs->GetEntryIdf1()->GetSample()->SetEnvironment(fData[0].GetSetup()->Data()); nxs->GetEntryIdf1()->GetSample()->SetShape("n/a"); nxs->GetEntryIdf1()->GetSample()->SetMagneticFieldVectorAvailable(0); if (*fData[0].GetInstrument() != "n/a") nxs->GetEntryIdf1()->GetInstrument()->SetName(fData[0].GetInstrument()->Data()); nxs->GetEntryIdf1()->GetInstrument()->GetDetector()->SetNumber(fData[0].GetNoOfHistos()); nxs->GetEntryIdf1()->GetInstrument()->GetCollimator()->SetType("n/a"); + // calculate the total number of counts + int total_counts = 0; + for (unsigned int i=0; isize(); j++) + total_counts += fData[0].GetDataBin(i)->at(j); + } + double total_counts_mev = (double) total_counts / 1.0e6; + nxs->GetEntryIdf1()->GetInstrument()->GetBeam()->SetTotalCounts(total_counts_mev); + nxs->GetEntryIdf1()->GetInstrument()->GetBeam()->SetUnits("Mev"); + nxs->GetEntryIdf1()->GetData()->SetTimeResolution(fData[0].GetTimeResolution(), "ns"); // t0 @@ -3792,60 +3796,149 @@ Bool_t PRunDataHandler::WriteNexusFile(TString fln) tm = localtime(&now); string str(""); char cstr[128]; - sprintf(cstr, "%04d-%02d-%02d %02d:%02d:%02d", 1900+tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_hour, tm->tm_sec); + strftime(cstr, sizeof(cstr), "%FT%T", tm); str = string(cstr); nxs->SetFileTime(str); - nxs->SetCreator("PSI - any2many"); + // NXroot info + nxs->SetCreator("PSI: any2many"); - nxs->GetEntryIdf2()->SetDefinition("pulsedTD"); + // NXentry info + nxs->GetEntryIdf2()->SetDefinition("muonTD"); + nxs->GetEntryIdf2()->SetProgramName("any2many"); + nxs->GetEntryIdf2()->SetProgramVersion("$Id$"); nxs->GetEntryIdf2()->SetRunNumber(fData[0].GetRunNumber()); nxs->GetEntryIdf2()->SetTitle(fData[0].GetRunTitle()->Data()); - str = string(fData[0].GetStartDate()->Data()) + string(" ") + string(fData[0].GetStartTime()->Data()); + str = string(fData[0].GetStartDate()->Data()) + string("T") + string(fData[0].GetStartTime()->Data()); nxs->GetEntryIdf2()->SetStartTime(str); - str = string(fData[0].GetStopDate()->Data()) + string(" ") + string(fData[0].GetStopTime()->Data()); + str = string(fData[0].GetStopDate()->Data()) + string("T") + string(fData[0].GetStopTime()->Data()); nxs->GetEntryIdf2()->SetStopTime(str); nxs->GetEntryIdf2()->SetExperimentIdentifier("n/a"); + // NXuser info nxs->GetEntryIdf2()->GetUser()->SetName("n/a"); + // NXsample info nxs->GetEntryIdf2()->GetSample()->SetName(fData[0].GetSample()->Data()); nxs->GetEntryIdf2()->GetSample()->SetDescription("n/a"); nxs->GetEntryIdf2()->GetSample()->SetPhysProp("temperature_1", fData[0].GetTemperature(0), "Kelvin"); nxs->GetEntryIdf2()->GetSample()->SetPhysProp("magnetic_field_1", fData[0].GetField(), "Gauss"); - nxs->GetEntryIdf2()->GetSample()->SetEnvironmentTemp("n/a"); + nxs->GetEntryIdf2()->GetSample()->SetEnvironmentTemp(fData[0].GetSetup()->Data()); nxs->GetEntryIdf2()->GetSample()->SetEnvironmentField("n/a"); - // here would be the information for NXinstrument. Currently there are not enough information to feed this + // here would be the information for NXinstrument. Currently there are not much information to feed this + nxs->GetEntryIdf2()->GetInstrument()->SetName(fData[0].GetInstrument()->Data()); - nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetDescription("n/a"); - nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetNoOfPeriods(1); // currently red/green is not distinguished + // NXinstrument/NXsource + nxs->GetEntryIdf2()->GetInstrument()->GetSource()->SetName(fData[0].GetLaboratory()->Data()); + nxs->GetEntryIdf2()->GetInstrument()->GetSource()->SetType(fData[0].GetMuonSource()->Data()); + nxs->GetEntryIdf2()->GetInstrument()->GetSource()->SetProbe(fData[0].GetMuonSpecies()->Data()); + + // NXinstrument/NXbeamline + nxs->GetEntryIdf2()->GetInstrument()->GetBeamline()->SetName(fData[0].GetBeamline()->Data()); + + // NXinstrument/NXdetector + nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetDescription(fData[0].GetInstrument()->Data()); // assume that this should be the instrument name + nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetNoOfPeriods(0); // currently red/green is not distinguished nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetNoOfSpectra(fData[0].GetNoOfHistos()); nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetNoOfBins(fData[0].GetDataBin(0)->size()); nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetTimeResolution(fData[0].GetTimeResolution(), "ns"); - histo = new int[fData[0].GetNoOfHistos()*fData[0].GetDataBin(0)->size()]; + int *histo = new int[fData[0].GetNoOfHistos()*fData[0].GetDataBin(0)->size()]; for (int i=0; iGetEntryIdf2()->GetInstrument()->GetDetector()->GetNoOfSpectra(); i++) { for (unsigned int j=0; jsize(); j++) { *(histo+i*fData[0].GetDataBin(0)->size()+j) = (int) fData[0].GetDataBin(i)->at(j); } } nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetHistos(histo); + // clean up + if (histo) { + delete [] histo; + histo = 0; + } + + // handle spectrum index for (int i=0; iGetEntryIdf2()->GetInstrument()->GetDetector()->GetNoOfSpectra(); i++) nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetSpectrumIndex(i+1); - nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetT0Tag(2); - int *t0 = new int[fData[0].GetT0Size()]; + // handle histogram resolution + nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetTimeResolution(fData[0].GetTimeResolution(), "ns"); + + // handle raw time + vector raw_time; + for (unsigned int i=0; isize(); i++) { + raw_time.push_back((double)i * fData[0].GetTimeResolution() * 1.0e-3); // since time resolution is given in ns, the factor 1.0e-3 is needed to convert to us + } + nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetRawTime(raw_time); + nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetRawTimeUnit("micro.second"); + nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetRawTimeName("time"); + raw_time.clear(); + + // handle t0 + nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetT0Tag(2); // i.e. t0[#histo] format + int *t0 = new int[fData[0].GetNoOfHistos()]; for (unsigned int i=0; i> **WARNING** NO t0's are present in the original file, will use the estimated once, no waranty this is correct!!" << endl; + } + if (iGetEntryIdf2()->GetInstrument()->GetDetector()->SetT0(t0); - // first_good_bin - still missing - // last_good_bin - still missing + // handle first_good_bin + int *fgb = new int[fData[0].GetNoOfHistos()]; + for (unsigned int i=0; iGetEntryIdf2()->GetInstrument()->GetDetector()->SetFirstGoodBin(fgb); + // clean up + if (fgb) { + delete [] fgb; + fgb = 0; + } + + // handle last_good_bin + int *lgb = new int[fData[0].GetNoOfHistos()]; + for (unsigned int i=0; isize() - 1; + } else { // first good bin present + if (i < fData[0].GetGoodDataBinSize()) + lgb[i] = fData[0].GetGoodDataBin(i).second; + else + lgb[i] = fData[0].GetGoodDataBin(0).second; + } + } + nxs->GetEntryIdf2()->GetInstrument()->GetDetector()->SetLastGoodBin(lgb); + // clean up + if (lgb) { + delete [] lgb; + lgb = 0; + } + + // clean up + if (t0) { + delete [] t0; + t0 = 0; + } + } else { // clean up if (nxs != 0) { @@ -3877,23 +3970,6 @@ Bool_t PRunDataHandler::WriteNexusFile(TString fln) // write file nxs->WriteFile(fln, fileType, fAny2ManyInfo->idf); - // clean up - if (t0) { - delete [] t0; - t0 = 0; - } - if (fgb) { - delete [] fgb; - fgb = 0; - } - if (lgb) { - delete [] lgb; - lgb = 0; - } - if (histo) { - delete [] histo; - histo = 0; - } if (nxs != 0) { delete nxs; nxs = 0; @@ -4915,49 +4991,32 @@ TString PRunDataHandler::FileNameFromTemplate(TString &fileNameTemplate, Int_t r } //-------------------------------------------------------------------------- -// GetMonth (private) +// DateToISO8601 (private) //-------------------------------------------------------------------------- /** - *

Spits out the month as MMM for a given numerical month 0..11 + *

If possible converts a inDate, into a ISO8601 standard date. * - * return: - * - constructed file name from template, run number, and year - * - empty string + *

return: true if conversion was successfull otherwise false. * - * \param template template string + * \param inDate input date which should be converted to an ISO 8601 date. + * \param iso8601Date on success the converted iso8601Date, otherwise an empty string */ -TString PRunDataHandler::GetMonth(Int_t month) +bool PRunDataHandler::DateToISO8601(string inDate, string &iso8601Date) { - TString mm(""); + iso8601Date = string(""); - if (month == 0) - mm = "JAN"; - else if (month == 1) - mm = "FEB"; - else if (month == 2) - mm = "MAR"; - else if (month == 3) - mm = "APR"; - else if (month == 4) - mm = "MAY"; - else if (month == 5) - mm = "JUN"; - else if (month == 6) - mm = "JUL"; - else if (month == 7) - mm = "AUG"; - else if (month == 8) - mm = "SEP"; - else if (month == 9) - mm = "OCT"; - else if (month == 10) - mm = "NOV"; - else if (month == 11) - mm = "DEC"; - else - mm = "???"; + struct tm tm; - return mm; + // currently only dates like dd-mmm-yy are handled, where dd day of the month, mmm month as abbrivation, e.g. JAN, and yy as the year + if (!strptime(inDate.c_str(), "%d-%b-%y", &tm)) // failed + return false; + + TString str(""); + str.Form("%04d-%02d-%02d", 1900+tm.tm_year, tm.tm_mon, tm.tm_mday); + + iso8601Date = str.Data(); + + return true; } //-------------------------------------------------------------------------- diff --git a/src/external/nexus/PNeXus.cpp b/src/external/nexus/PNeXus.cpp index 645a2349..cb0d58fb 100644 --- a/src/external/nexus/PNeXus.cpp +++ b/src/external/nexus/PNeXus.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -835,6 +836,7 @@ PNeXusDetector2::PNeXusDetector2() PNeXusDetector2::~PNeXusDetector2() { fSpectrumIndex.clear(); + fRawTime.clear(); if (fT0) { delete [] fT0; @@ -891,8 +893,13 @@ bool PNeXusDetector2::IsValid(bool strict) return false; } - if ((fT0 == 0) || (fHisto == 0)) { - cerr << ">> **ERROR** IDF2 NXdetector problem with t0/counts settings (data)." << endl; + if (fT0 == 0) { + cerr << ">> **ERROR** IDF2 NXdetector t0 settings pointer is null." << endl; + return false; + } + + if (fHisto == 0) { + cerr << ">> **ERROR** IDF2 NXdetector counts settings pointer is null." << endl; return false; } @@ -917,14 +924,20 @@ int PNeXusDetector2::GetT0(int idxp, int idxs) { int result = -1; - if ((idxp < 0) || (idxs < 0)) { // assumption: there is only ONE t0 for all spectra + if ((idxp < 0) && (idxs < 0)) { // assumption: there is only ONE t0 for all spectra if (fT0 != 0) { result = *fT0; } - } else { // assumption: t0's are represented as t0[np][ns] + } else if ((idxp < 0) && (idxs >= 0)) { // assumption: t0's are represented as t0[ns] + if (idxs < fNoOfSpectra) { + result = *(fT0+idxs); + } + } else if ((idxp >= 0) && (idxs >= 0)) { // assumption: t0's are represented as t0[np][ns] if ((idxp < fNoOfPeriods) || (idxs < fNoOfSpectra)) { result = *(fT0+idxp*fNoOfSpectra+idxs); } + } else { + result = -1; } return result; @@ -959,10 +972,18 @@ int PNeXusDetector2::SetT0(int *t0) fErrorMsg = ss.str(); result = 0; break; - case 1: + case 1: // just one single t0 size = 1; break; - case 2: + case 2: // t0[#histos] + if (fNoOfSpectra <= 0) { + fErrorMsg = "PNeXusDetector2::SetT0(int *t0): ask for t0 vector (ns), but ns <= 0!"; + result = 0; + } else { + size = fNoOfSpectra; + } + break; + case 3: // t0[np][#histos] if ((fNoOfPeriods <= 0) || (fNoOfSpectra <= 0)) { fErrorMsg = "PNeXusDetector2::SetT0(int *t0): ask for t0 vector (np, ns), but either np or ns <= 0!"; result = 0; @@ -1013,14 +1034,20 @@ int PNeXusDetector2::GetFirstGoodBin(int idxp, int idxs) { int result = -1; - if ((idxp < 0) || (idxs < 0)) { // assumption: there is only ONE t0 for all spectra + if ((idxp < 0) && (idxs < 0)) { // assumption: there is only ONE t0 for all spectra if (fFirstGoodBin != 0) { result = *fFirstGoodBin; } - } else { // assumption: fgb's are represented as fgb[np][ns] + } else if ((idxp < 0) && (idxs >= 0)) { // assumptions: fgb's are represented as fgb[ns] + if (idxs < fNoOfSpectra) { + result = *(fFirstGoodBin+idxs); + } + } else if ((idxp >= 0) && (idxs >= 0)) { // assumption: fgb's are represented as fgb[np][ns] if ((idxp < fNoOfPeriods) || (idxs < fNoOfSpectra)) { result = *(fFirstGoodBin+idxp*fNoOfSpectra+idxs); } + } else { + result = -1; } return result; @@ -1055,10 +1082,18 @@ int PNeXusDetector2::SetFirstGoodBin(int *fgb) fErrorMsg = ss.str(); result = 0; break; - case 1: + case 1: // single fgb size = 1; break; - case 2: + case 2: // fgb[#histos] + if (fNoOfSpectra <= 0) { + fErrorMsg = "PNeXusDetector2::SetFirstGoodBin(int *fgb): ask for fgb vector (ns), but ns <= 0!"; + result = 0; + } else { + size = fNoOfSpectra; + } + break; + case 3: // fgb[np][#histos] if ((fNoOfPeriods <= 0) || (fNoOfSpectra <= 0)) { fErrorMsg = "PNeXusDetector2::SetFirstGoodBin(int *fgb): ask for fgb vector (np, ns), but either np or ns <= 0!"; result = 0; @@ -1109,14 +1144,20 @@ int PNeXusDetector2::GetLastGoodBin(int idxp, int idxs) { int result = -1; - if ((idxp < 0) || (idxs < 0)) { // assumption: there is only ONE t0 for all spectra + if ((idxp < 0) && (idxs < 0)) { // assumption: there is only ONE t0 for all spectra if (fLastGoodBin != 0) { result = *fLastGoodBin; } - } else { // assumption: lgb's are represented as lgb[np][ns] + } else if ((idxp < 0) && (idxs >= 0)) { // assumption: lgb's are represented as lgb[ns] + if (idxs < fNoOfSpectra) { + result = *(fLastGoodBin+idxs); + } + } else if ((idxp >= 0) && (idxs >= 0)) { // assumption: lgb's are represented as lgb[np][ns] if ((idxp < fNoOfPeriods) || (idxs < fNoOfSpectra)) { result = *(fLastGoodBin+idxp*fNoOfSpectra+idxs); } + } else { + result = -1; } return result; @@ -1151,10 +1192,18 @@ int PNeXusDetector2::SetLastGoodBin(int *lgb) fErrorMsg = ss.str(); result = 0; break; - case 1: + case 1: // single lgb only size = 1; break; - case 2: + case 2: // lgb[#histos] + if (fNoOfSpectra <= 0) { + fErrorMsg = "PNeXusDetector2::SetLastGoodBin(int *lgb): ask for lgb vector (ns), but ns <= 0!"; + result = 0; + } else { + size = fNoOfSpectra; + } + break; + case 3: // lgb[np][#histos] if ((fNoOfPeriods <= 0) || (fNoOfSpectra <= 0)) { fErrorMsg = "PNeXusDetector2::SetLastGoodBin(int *lgb): ask for lgb vector (np, ns), but either np or ns <= 0!"; result = 0; @@ -1343,6 +1392,20 @@ void PNeXusDetector2::SetTimeResolution(double val, string units) fTimeResolution = val * 1.0e6; } +//------------------------------------------------------------------------------------------ +// SetRawTime (public) +//------------------------------------------------------------------------------------------ +/** + *

sets the raw time (deep copy). + * + * \param rawTime raw time vector. + */ +void PNeXusDetector2::SetRawTime(vector &rawTime) +{ + for (unsigned int i=0; i> **ERROR** " << msg << endl; - return false; - } else { - cerr << ">> **WARNING** " << msg << endl; - } + cerr << ">> **WARNING** IDF2 NXsample 'name' not set." << msg << endl; } if (!fDescription.compare("n/a")) { @@ -1996,14 +2053,14 @@ int PNeXus::ReadFile(const char *fileName) status = ReadFileIdf1(); if (status != NX_OK) { fErrorCode = PNEXUS_VAILD_READ_IDF1_FILE; - fErrorMsg = ">> **ERROR** coudn't read IDF Version 1 file '" + fFileName + "'."; + fErrorMsg = ">> **ERROR** while reading IDF Version 1 file '" + fFileName + "'."; } break; case 2: status = ReadFileIdf2(); if (status != NX_OK) { fErrorCode = PNEXUS_VAILD_READ_IDF2_FILE; - fErrorMsg = ">> **ERROR** coudn't read IDF Version 2 file '" + fFileName + "'."; + fErrorMsg = ">> **ERROR** while reading IDF Version 2 file '" + fFileName + "'."; } break; default: @@ -2082,9 +2139,12 @@ void PNeXus::Dump() cout << endl << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"; cout << endl << "NXfile:"; cout << endl << " NeXus_version : " << fNeXusVersion; - cout << endl << " user: ..."; + cout << endl << " file format ver: " << fFileFormatVersion; + cout << endl << " file name : " << fFileName; + cout << endl << " file time : " << fFileTime; + cout << endl << " user : " << fCreator; cout << endl << "NXentry:"; - cout << endl << " IDF version : " << fIdfVersion; + cout << endl << " idf version : " << fIdfVersion; cout << endl << " program name : " << fNxEntry1->GetProgramName() << ", version: " << fNxEntry1->GetProgramVersion(); cout << endl << " run number : " << fNxEntry1->GetRunNumber(); cout << endl << " title : " << fNxEntry1->GetTitle(); @@ -2197,6 +2257,8 @@ void PNeXus::Dump() cout << "..."; } } + cout << endl << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"; + cout << endl << "that's all!"; cout << endl << endl; } else if (fIdfVersion == 2) { cout << endl << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"; @@ -2207,9 +2269,10 @@ void PNeXus::Dump() cout << endl << " file format version : " << fFileFormatVersion; cout << endl << " creator : " << fCreator; cout << endl << "NXentry:"; - cout << endl << " IDF version : " << fIdfVersion; + cout << endl << " idf version : " << fIdfVersion; cout << endl << " definition : " << fNxEntry2->GetDefinition(); - cout << endl << " program name : " << fNxEntry2->GetProgramName() << ", version: " << fNxEntry2->GetProgramVersion(); + if (!fNxEntry2->GetProgramName().empty()) + cout << endl << " program name : " << fNxEntry2->GetProgramName() << ", version: " << fNxEntry2->GetProgramVersion(); cout << endl << " run_number : " << fNxEntry2->GetRunNumber(); cout << endl << " run_title : " << fNxEntry2->GetTitle(); cout << endl << " start_time : " << fNxEntry2->GetStartTime(); @@ -2221,17 +2284,17 @@ void PNeXus::Dump() cout << endl << " name : " << fNxEntry2->GetSample()->GetName(); cout << endl << " description : " << fNxEntry2->GetSample()->GetDescription(); cout << endl << " mag.field state : " << fNxEntry2->GetSample()->GetMagneticFieldState(); - dval = fNxEntry2->GetSample()->GetPhysPropValue("temperature", ok); + dval = fNxEntry2->GetSample()->GetPhysPropValue("temperature_1", ok); if (ok) cout << endl << " temperature : " << dval; - fNxEntry2->GetSample()->GetPhysPropUnit("temperature", str, ok); + fNxEntry2->GetSample()->GetPhysPropUnit("temperature_1", str, ok); if (ok) cout << " (" << str << ")"; cout << endl << " temp.environment : " << fNxEntry2->GetSample()->GetEnvironmentTemp(); - dval = fNxEntry2->GetSample()->GetPhysPropValue("magnetic_field", ok); + dval = fNxEntry2->GetSample()->GetPhysPropValue("magnetic_field_1", ok); if (ok) cout << endl << " magnetic_field : " << dval; - fNxEntry2->GetSample()->GetPhysPropUnit("magnetic_field", str, ok); + fNxEntry2->GetSample()->GetPhysPropUnit("magnetic_field_1", str, ok); if (ok) cout << " (" << str << ")"; cout << endl << " mag. field env. : " << fNxEntry2->GetSample()->GetEnvironmentField(); @@ -2249,11 +2312,16 @@ void PNeXus::Dump() if (fNxEntry2->GetInstrument()->GetDetector()->IsT0Present()) { if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 1) { // only one t0 for all histograms cout << endl << " t0 : " << fNxEntry2->GetInstrument()->GetDetector()->GetT0(); + } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 2) { // t0[ns] + cout << endl << " t0 (idx_s/t0) : "; + for (int i=0; iGetInstrument()->GetDetector()->GetNoOfSpectra(); i++) { + cout << "(" << i+1 << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetT0(-1, i) << "), "; + } } else { // t0 vector of the form t0[np][ns] cout << endl << " t0 (idx_p/idx_s/t0): "; for (int i=0; iGetInstrument()->GetDetector()->GetNoOfPeriods(); i++) { for (int j=0; jGetInstrument()->GetDetector()->GetNoOfSpectra(); j++) { - cout << "(" << i << "/" << j << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetT0(i,j); + cout << "(" << i+1 << "/" << j+1 << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetT0(i,j) << "), "; } } } @@ -2261,27 +2329,37 @@ void PNeXus::Dump() cout << endl << " t0 : n/a"; } if (fNxEntry2->GetInstrument()->GetDetector()->IsFirstGoodBinPresent()) { - if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 1) { // only one t0/fgb/lgb for all histograms + if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 1) { // only one fgb for all histograms cout << endl << " first good bin : " << fNxEntry2->GetInstrument()->GetDetector()->GetFirstGoodBin(); + } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 2) { // fgb[ns] + cout << endl << " fgb (idx_s/fgb) : "; + for (int i=0; iGetInstrument()->GetDetector()->GetNoOfSpectra(); i++) { + cout << "(" << i+1 << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetFirstGoodBin(-1,i) << ") , "; + } } else { // fgb vector of the form fgb[np][ns] cout << endl << " fgb (idx_p/idx_s/fgb): "; for (int i=0; iGetInstrument()->GetDetector()->GetNoOfPeriods(); i++) { for (int j=0; jGetInstrument()->GetDetector()->GetNoOfSpectra(); j++) { - cout << "(" << i << "/" << j << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetFirstGoodBin(i,j); + cout << "(" << i+1 << "/" << j+1 << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetFirstGoodBin(i,j); } } } } else { cout << endl << " first good bin : n/a"; } - if (fNxEntry2->GetInstrument()->GetDetector()->IsFirstGoodBinPresent()) { - if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 1) { // only one t0/fgb/lgb for all histograms - cout << endl << " last good bin : " << fNxEntry2->GetInstrument()->GetDetector()->GetLastGoodBin(); + if (fNxEntry2->GetInstrument()->GetDetector()->IsLastGoodBinPresent()) { + if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 1) { // only one lgb for all histograms + cout << endl << " last good bin : " << fNxEntry2->GetInstrument()->GetDetector()->GetLastGoodBin(); + } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 2) { // lgb[ns] + cout << endl << " lgb (idx_s/lgb) : "; + for (int i=0; iGetInstrument()->GetDetector()->GetNoOfSpectra(); i++) { + cout << "(" << i+1 << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetLastGoodBin(-1,i) << "), "; + } } else { // lgb vector of the form lgb[np][ns] cout << endl << " lgb (idx_p/idx_s/lgb): "; for (int i=0; iGetInstrument()->GetDetector()->GetNoOfPeriods(); i++) { for (int j=0; jGetInstrument()->GetDetector()->GetNoOfSpectra(); j++) { - cout << "(" << i << "/" << j << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetLastGoodBin(i,j); + cout << "(" << i+1 << "/" << j+1 << "/" << fNxEntry2->GetInstrument()->GetDetector()->GetLastGoodBin(i,j) << "), "; } } } @@ -2294,7 +2372,7 @@ void PNeXus::Dump() // dump data int maxDump = 15; - cout << endl << " counts : "; + cout << endl << " counts : "; if (fNxEntry2->GetInstrument()->GetDetector()->GetNoOfPeriods() > 0) { // counts[np][ns][ntc] for (int i=0; iGetInstrument()->GetDetector()->GetNoOfPeriods(); i++) { cout << endl << " period : " << i+1; @@ -2332,6 +2410,7 @@ void PNeXus::Dump() cout << "..."; } } + cout << endl << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"; cout << endl << "that's all!"; cout << endl << endl; } @@ -2645,7 +2724,7 @@ NXstatus PNeXus::GetIntVectorData(vector &data) */ int PNeXus::ReadFileIdf1() { - cout << endl << ">> reading NeXus Version 1 file ..." << endl; + cout << endl << ">> reading NeXus IDF Version 1 file ..." << endl; // create first the necessary NXentry object for IDF Version 1 fNxEntry1 = new PNeXusEntry1(); @@ -2659,6 +2738,8 @@ int PNeXus::ReadFileIdf1() char cstr[128]; int ival; float fval; + int attlen, atttype; + NXname data_value, nxAttrName; // open file NXstatus status; @@ -2669,6 +2750,44 @@ int PNeXus::ReadFileIdf1() return NX_ERROR; } + // collect the NXroot attribute information + do { + status = NXgetnextattr(fFileHandle, nxAttrName, &attlen, &atttype); + if (status == NX_OK) { + if (!strcmp(nxAttrName, "HDF_version")) { + attlen = VGNAMELENMAX - 1; + atttype = NX_CHAR; + status = NXgetattr(fFileHandle, nxAttrName, data_value, &attlen, &atttype); + if (status == NX_OK) { + fFileFormatVersion = string(data_value); + } + } else if (!strcmp(nxAttrName, "HDF5_Version")) { + attlen = VGNAMELENMAX - 1; + atttype = NX_CHAR; + status = NXgetattr(fFileHandle, nxAttrName, data_value, &attlen, &atttype); + if (status == NX_OK) { + fFileFormatVersion = string("HDF5: ")+string(data_value); + } + } else if (!strcmp(nxAttrName, "XML_version")) { + attlen = VGNAMELENMAX - 1; + atttype = NX_CHAR; + status = NXgetattr(fFileHandle, nxAttrName, data_value, &attlen, &atttype); + if (status == NX_OK) { + fFileFormatVersion = string(data_value); + } + } else if (!strcmp(nxAttrName, "file_name")) { + if (!ErrorHandler(GetStringAttr("file_name", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'file_name' attribute!")) return NX_ERROR; + fFileName = str; + } else if (!strcmp(nxAttrName, "file_time")) { + if (!ErrorHandler(GetStringAttr("file_time", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'file_time' attribute!")) return NX_ERROR; + fFileTime = str; + } else if (!strcmp(nxAttrName, "user")) { + if (!ErrorHandler(GetStringAttr("user", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'user' attribute!")) return NX_ERROR; + fCreator = str; + } + } + } while (status == NX_OK); + // look for the first occurring NXentry bool found = false; NXname nxname, nxclass; @@ -2819,11 +2938,12 @@ int PNeXus::ReadFileIdf1() if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'magnetic_field' data in sample group")) return NX_ERROR; fNxEntry1->GetSample()->SetPhysProp("magnetic_field", (double)fval, str); - // read sample shape, e.g. powder, single crystal, etc. - if (!ErrorHandler(NXopendata(fFileHandle, "shape"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'shape' data in sample group!")) return NX_ERROR; - if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'shape' data in sample group!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'shape' data in sample group")) return NX_ERROR; - fNxEntry1->GetSample()->SetShape(str); + // read sample shape, e.g. powder, single crystal, etc (THIS IS AN OPTIONAL ENTRY) + if (NXopendata(fFileHandle, "shape") == NX_OK) { + if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'shape' data in sample group!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'shape' data in sample group")) return NX_ERROR; + fNxEntry1->GetSample()->SetShape(str); + } // read magnetic field state, e.g. TF, LF, ZF if (!ErrorHandler(NXopendata(fFileHandle, "magnetic_field_state"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'magnetic_field_state' data in sample group!")) return NX_ERROR; @@ -3182,7 +3302,7 @@ int PNeXus::ReadFileIdf1() */ int PNeXus::ReadFileIdf2() { - cout << endl << ">> reading NeXus Version 2 file ..." << endl; + cout << endl << ">> reading NeXus IDF Version 2 file ..." << endl; // create first the necessary NXentry object for IDF Version 1 fNxEntry2 = new PNeXusEntry2(); @@ -3195,7 +3315,7 @@ int PNeXus::ReadFileIdf2() string str; int ival, attlen, atttype; float fval; - NXname data_value; + NXname data_value, nxAttrName; int rank, type, dims[32], size, noOfElements; // open file @@ -3203,55 +3323,68 @@ int PNeXus::ReadFileIdf2() status = NXopen(fFileName.c_str(), NXACC_READ, &fFileHandle); if (status != NX_OK) { fErrorCode = PNEXUS_FILE_OPEN_ERROR; - fErrorMsg = "PNeXus::ReadFile() **ERROR** Couldn't open file '"+fFileName+"' !"; + fErrorMsg = "PNeXus::ReadFileIdf2() **ERROR** Couldn't open file '"+fFileName+"' !"; return NX_ERROR; } // collect the NXroot attribute information - if (!ErrorHandler(GetStringAttr("file_name", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'file_name' attribute!")) return NX_ERROR; - fFileName = str; - if (!ErrorHandler(GetStringAttr("file_time", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'file_time' attribute!")) return NX_ERROR; - fFileTime = str; - if (!ErrorHandler(GetStringAttr("creator", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'creator' attribute!")) return NX_ERROR; - fCreator = str; - - attlen = VGNAMELENMAX - 1; - atttype = NX_CHAR; - str = string("HDF_version"); - status = NXgetattr(fFileHandle, (char *)str.c_str(), data_value, &attlen, &atttype); - if (status == NX_OK) { - fFileFormatVersion = string(data_value); - } - - if (!fFileFormatVersion.compare("n/a")) { - attlen = VGNAMELENMAX - 1; - atttype = NX_CHAR; - str = string("HDF5_version"); - status = NXgetattr(fFileHandle, (char *)str.c_str(), data_value, &attlen, &atttype); + do { + status = NXgetnextattr(fFileHandle, nxAttrName, &attlen, &atttype); if (status == NX_OK) { - fFileFormatVersion = string(data_value); + if (!strcmp(nxAttrName, "HDF_version")) { + attlen = VGNAMELENMAX - 1; + atttype = NX_CHAR; + status = NXgetattr(fFileHandle, nxAttrName, data_value, &attlen, &atttype); + if (status == NX_OK) { + fFileFormatVersion = string(data_value); + } + } else if (!strcmp(nxAttrName, "HDF5_Version")) { + attlen = VGNAMELENMAX - 1; + atttype = NX_CHAR; + status = NXgetattr(fFileHandle, nxAttrName, data_value, &attlen, &atttype); + if (status == NX_OK) { + fFileFormatVersion = string("HDF5: ")+string(data_value); + } + } else if (!strcmp(nxAttrName, "XML_version")) { + attlen = VGNAMELENMAX - 1; + atttype = NX_CHAR; + status = NXgetattr(fFileHandle, nxAttrName, data_value, &attlen, &atttype); + if (status == NX_OK) { + fFileFormatVersion = string(data_value); + } + } else if (!strcmp(nxAttrName, "file_name")) { + if (!ErrorHandler(GetStringAttr("file_name", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'file_name' attribute!")) return NX_ERROR; + fFileName = str; + } else if (!strcmp(nxAttrName, "file_time")) { + if (!ErrorHandler(GetStringAttr("file_time", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'file_time' attribute!")) return NX_ERROR; + fFileTime = str; + } else if (!strcmp(nxAttrName, "creator")) { + if (!ErrorHandler(GetStringAttr("creator", str), PNEXUS_GET_ATTR_ERROR, "couldn't read NXroot 'creator' attribute!")) return NX_ERROR; + fCreator = str; + } } - } + } while (status == NX_OK); - if (!fFileFormatVersion.compare("n/a")) { - attlen = VGNAMELENMAX - 1; - atttype = NX_CHAR; - str = string("XML_version"); - status = NXgetattr(fFileHandle, (char *)str.c_str(), data_value, &attlen, &atttype); - if (status == NX_OK) { - fFileFormatVersion = string(data_value); - } - } - - // look for the first occurring NXentry + // look for the first occurring NXentry which name ends on "_1" NXname nxname, nxclass; int dataType; - // make sure any NXentry has been found - if (!SearchInGroup("NXentry", "class", nxname, nxclass, dataType)) { + bool found = false; + size_t pos; + do { + status = NXgetnextentry(fFileHandle, nxname, nxclass, &dataType); + if (!strcmp(nxclass, "NXentry")) { + str = nxname; + pos = str.find_last_of("_1"); + if (pos != str.npos) + found = true; + } + } while (!found && (status == NX_OK)); + if (!found) { fErrorCode = PNEXUS_NXENTRY_NOT_FOUND; - fErrorMsg = ">> **ERROR** Couldn't find any NXentry!"; + fErrorMsg = ">> **ERROR** Couldn't find any NXentry on NXroot level!"; return NX_ERROR; } + // open the NXentry group to obtain the necessary stuff status = NXopengroup(fFileHandle, nxname, "NXentry"); if (status != NX_OK) { @@ -3267,7 +3400,8 @@ int PNeXus::ReadFileIdf2() fNxEntry2->SetDefinition(str); // program_name and version - if (NXopendata(fFileHandle, "program_name") == NX_OK) { + if (SearchInGroup("program_name", "name", nxname, nxclass, dataType)) { + if (!ErrorHandler(NXopendata(fFileHandle, "program_name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'program_name' data in NXentry!")) return NX_ERROR; if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'program_name' data in NXentry!")) return NX_ERROR; fNxEntry2->SetProgramName(str); if (!ErrorHandler(GetStringAttr("version", str), PNEXUS_GET_ATTR_ERROR, "couldn't read 'program_name' attribute in NXentry!")) return NX_ERROR; @@ -3312,92 +3446,98 @@ int PNeXus::ReadFileIdf2() fNxEntry2->SetExperimentIdentifier(str); // find entry for NXuser - if (!SearchInGroup("NXuser", "class", nxname, nxclass, dataType)) { - fErrorCode = PNEXUS_NXUSER_NOT_FOUND; - fErrorMsg = ">> **ERROR** Couldn't find any NXuser int NXentry!"; - return NX_ERROR; - } - // open the NXuser - status = NXopengroup(fFileHandle, nxname, "NXuser"); - if (status != NX_OK) { - fErrorCode = PNEXUS_GROUP_OPEN_ERROR; - fErrorMsg = "PNeXus::ReadFileIdf2() **ERROR** Couldn't open NXuser '" + string(nxname) + "' in NXentry!"; - return NX_ERROR; - } + if (SearchInGroup("NXuser", "class", nxname, nxclass, dataType)) { + // open the NXuser + status = NXopengroup(fFileHandle, nxname, "NXuser"); + if (status != NX_OK) { + fErrorCode = PNEXUS_GROUP_OPEN_ERROR; + fErrorMsg = "PNeXus::ReadFileIdf2() **ERROR** Couldn't open NXuser '" + string(nxname) + "' in NXentry!"; + return NX_ERROR; + } - // user name - if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'name' data in NXuser!")) return NX_ERROR; - if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'name' data in NXuser!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'name' data in NXuser!")) return NX_ERROR; - fNxEntry2->GetUser()->SetName(str); - - // close group NXuser - NXclosegroup(fFileHandle); - - // open group NXsample - if (!ErrorHandler(NXopengroup(fFileHandle, "sample", "NXsample"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open NeXus subgroup sample!")) return NX_ERROR; - - // sample name - if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'name' data in NXsample!")) return NX_ERROR; - if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'name' data in NXsample!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'name' data in NXsample!")) return NX_ERROR; - fNxEntry2->GetSample()->SetName(str); - - // sample description - if (NXopendata(fFileHandle, "description") == NX_OK) { - if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'description' data in NXsample!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'description' data in NXsample!")) return NX_ERROR; - fNxEntry2->GetSample()->SetDescription(str); - } - - // temperature - if (NXopendata(fFileHandle, "temperature_1") == NX_OK) { - if (!ErrorHandler(NXgetdata(fFileHandle, &fval), PNEXUS_GET_DATA_ERROR, "couldn't read 'temperature_1' data in NXsample!")) return NX_ERROR; - if (!ErrorHandler(GetStringAttr("units", str), PNEXUS_GET_ATTR_ERROR, "couldn't read temperature units in NXsample!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'temperature_1' data in NXsample!")) return NX_ERROR; - fNxEntry2->GetSample()->SetPhysProp("temperature_1", fval, str); - } - - // temperature environment - if (NXopengroup(fFileHandle, "temperature_1_env", "NXenvironment") == NX_OK) { // user name - if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'name' data in NXenvironment!")) return NX_ERROR; - if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'name' data in NXenvironment!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'name' data in NXenvironment!")) return NX_ERROR; - fNxEntry2->GetSample()->SetEnvironmentTemp(str); - // close group NXenvironment + if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'name' data in NXuser!")) return NX_ERROR; + if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'name' data in NXuser!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'name' data in NXuser!")) return NX_ERROR; + fNxEntry2->GetUser()->SetName(str); + + // close group NXuser NXclosegroup(fFileHandle); } - // magnetic_field - if (NXopendata(fFileHandle, "magnetic_field_1") == NX_OK) { - if (!ErrorHandler(NXgetdata(fFileHandle, &fval), PNEXUS_GET_DATA_ERROR, "couldn't read 'magnetic_field_1' data in NXsample!")) return NX_ERROR; - if (!ErrorHandler(GetStringAttr("units", str), PNEXUS_GET_ATTR_ERROR, "couldn't read magnetic field units in NXsample!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'magnetic_field_1' data in NXsample!")) return NX_ERROR; - fNxEntry2->GetSample()->SetPhysProp("magnetic_field_1", fval, str); - } + // find entry for NXsample + if (SearchInGroup("NXsample", "class", nxname, nxclass, dataType)) { + // open group NXsample + if (!ErrorHandler(NXopengroup(fFileHandle, "sample", "NXsample"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open NeXus subgroup sample!")) return NX_ERROR; - // magnetic field state - if (NXopendata(fFileHandle, "magnetic_field_state") == NX_OK) { - if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'magnetic_field_state' data in NXsample!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'magnetic_field_state' data in NXsample!")) return NX_ERROR; - fNxEntry2->GetSample()->SetMagneticFieldState(str); - } + // sample name + if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'name' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'name' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'name' data in NXsample!")) return NX_ERROR; + fNxEntry2->GetSample()->SetName(str); - // magnetic field environment - if (NXopengroup(fFileHandle, "magnetic_field_1_env", "NXenvironment") == NX_OK) { - // user name - if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'name' data in NXenvironment!")) return NX_ERROR; - if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'name' data in NXenvironment!")) return NX_ERROR; - if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'name' data in NXenvironment!")) return NX_ERROR; - fNxEntry2->GetSample()->SetEnvironmentField(str); - // close group NXenvironment + // sample description + if (SearchInGroup("description", "name", nxname, nxclass, dataType)) { + if (!ErrorHandler(NXopendata(fFileHandle, "description"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'description' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'description' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'description' data in NXsample!")) return NX_ERROR; + fNxEntry2->GetSample()->SetDescription(str); + } + + // temperature + if (SearchInGroup("temperature_1", "name", nxname, nxclass, dataType)) { + if (!ErrorHandler(NXopendata(fFileHandle, "temperature_1"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'temperature_1' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(NXgetdata(fFileHandle, &fval), PNEXUS_GET_DATA_ERROR, "couldn't read 'temperature_1' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(GetStringAttr("units", str), PNEXUS_GET_ATTR_ERROR, "couldn't read temperature units in NXsample!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'temperature_1' data in NXsample!")) return NX_ERROR; + fNxEntry2->GetSample()->SetPhysProp("temperature_1", fval, str); + } + + // temperature environment + if (SearchInGroup("temperature_1_env", "name", nxname, nxclass, dataType)) { + if (!ErrorHandler(NXopengroup(fFileHandle, "temperature_1_env", "NXenvironment"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open NeXus subgroup NXenvironment!")) return NX_ERROR; + // temperature environment name + if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'name' data in NXenvironment!")) return NX_ERROR; + if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'name' data in NXenvironment!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'name' data in NXenvironment!")) return NX_ERROR; + fNxEntry2->GetSample()->SetEnvironmentTemp(str); + // close group NXenvironment + NXclosegroup(fFileHandle); + } + + // magnetic_field + if (SearchInGroup("magnetic_field_1", "name", nxname, nxclass, dataType)) { + if (!ErrorHandler(NXopendata(fFileHandle, "magnetic_field_1"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'magnetic_field_1' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(NXgetdata(fFileHandle, &fval), PNEXUS_GET_DATA_ERROR, "couldn't read 'magnetic_field_1' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(GetStringAttr("units", str), PNEXUS_GET_ATTR_ERROR, "couldn't read magnetic field units in NXsample!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'magnetic_field_1' data in NXsample!")) return NX_ERROR; + fNxEntry2->GetSample()->SetPhysProp("magnetic_field_1", fval, str); + } + + // magnetic field state + if (SearchInGroup("magnetic_field_state", "name", nxname, nxclass, dataType)) { + if (!ErrorHandler(NXopendata(fFileHandle, "magnetic_field_state"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'magnetic_field_state' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'magnetic_field_state' data in NXsample!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'magnetic_field_state' data in NXsample!")) return NX_ERROR; + fNxEntry2->GetSample()->SetMagneticFieldState(str); + } + + // magnetic field environment + if (SearchInGroup("magnetic_field_1_env", "name", nxname, nxclass, dataType)) { + if (!ErrorHandler(NXopengroup(fFileHandle, "magnetic_field_1_env", "NXenvironment"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open NeXus subgroup NXenvironment!")) return NX_ERROR; + // magnetic field environment name + if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'name' data in NXenvironment!")) return NX_ERROR; + if (!ErrorHandler(GetStringData(str), PNEXUS_GET_DATA_ERROR, "couldn't read 'name' data in NXenvironment!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'name' data in NXenvironment!")) return NX_ERROR; + fNxEntry2->GetSample()->SetEnvironmentField(str); + // close group NXenvironment + NXclosegroup(fFileHandle); + } + + // close group NXsample NXclosegroup(fFileHandle); } - // close group NXsample - NXclosegroup(fFileHandle); - // open group NXinstrument if (!ErrorHandler(NXopengroup(fFileHandle, "instrument", "NXinstrument"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open NeXus subgroup instrument in NXentry!")) return NX_ERROR; @@ -3456,11 +3596,17 @@ int PNeXus::ReadFileIdf2() // 1st check if 'histogram_resolution' is found if (SearchInGroup("histogram_resolution", "name", nxname, nxclass, dataType)) { if (!ErrorHandler(NXopendata(fFileHandle, "histogram_resolution"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'histogram_resolution' data in NXdetector!")) return NX_ERROR; - if (!ErrorHandler(NXgetdata(fFileHandle, &ival), PNEXUS_GET_DATA_ERROR, "couldn't read 'histogram_resolution' data in NXdetector!")) return NX_ERROR; - if (!ErrorHandler(GetStringAttr("units", str), PNEXUS_GET_ATTR_ERROR, "couldn't read magnetic field units in NXsample!")) return NX_ERROR; + if (!ErrorHandler(NXgetdata(fFileHandle, &fval), PNEXUS_GET_DATA_ERROR, "couldn't read 'histogram_resolution' data in NXdetector!")) return NX_ERROR; + if (!ErrorHandler(GetStringAttr("units", str), PNEXUS_GET_ATTR_ERROR, "couldn't read time resolution units in NXdetector!")) return NX_ERROR; if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'histogram_resolution' data in NXdetector!")) return NX_ERROR; - fNxEntry2->GetInstrument()->GetDetector()->SetTimeResolution((double)ival, str); - } else { // 2nd 'histogram_resolution' is not present, hence extract the time resolution from the 'raw_time' vector + fNxEntry2->GetInstrument()->GetDetector()->SetTimeResolution((double)fval, str); + } else if (SearchInGroup("resolution", "name", nxname, nxclass, dataType)) { // 2nd check if 'resolution' is found + if (!ErrorHandler(NXopendata(fFileHandle, "resolution"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'resolution' data in NXdetector!")) return NX_ERROR; + if (!ErrorHandler(NXgetdata(fFileHandle, &fval), PNEXUS_GET_DATA_ERROR, "couldn't read 'resolution' data in NXdetector!")) return NX_ERROR; + if (!ErrorHandler(GetStringAttr("units", str), PNEXUS_GET_ATTR_ERROR, "couldn't read time resolution units in NXdetector!")) return NX_ERROR; + if (!ErrorHandler(NXclosedata(fFileHandle), PNEXUS_CLOSE_DATA_ERROR, "couldn't close 'resolution' data in NXdetector!")) return NX_ERROR; + fNxEntry2->GetInstrument()->GetDetector()->SetTimeResolution((double)fval, str); + } else { // 3nd 'histogram_resolution' is not present, hence extract the time resolution from the 'raw_time' vector if (!ErrorHandler(NXopendata(fFileHandle, "raw_time"), PNEXUS_OPEN_DATA_ERROR, "couldn't open 'raw_time' data in NXdetector!")) return NX_ERROR; vector rawTime; if (!ErrorHandler(GetDoubleVectorData(rawTime), PNEXUS_GET_DATA_ERROR, "couldn't get 'raw_time' data in NXdetector!")) return NX_ERROR; @@ -3569,8 +3715,12 @@ int PNeXus::ReadFileIdf2() // check the dimensions of the 'time_zero_bin' vector if (!ErrorHandler(NXgetinfo(fFileHandle, &rank, dims, &type), PNEXUS_GET_META_INFO_ERROR, "couldn't get 'time_zero_bin' info in NXdetector!")) return NX_ERROR; - if (rank <= 2) { - fNxEntry2->GetInstrument()->GetDetector()->SetT0Tag(rank); + if ((rank == 1) && (dims[0] == 1)) { // single t0 entry + fNxEntry2->GetInstrument()->GetDetector()->SetT0Tag(1); + } else if ((rank == 1) && (dims[0] > 1)) { // t0 of the form t0[ns] + fNxEntry2->GetInstrument()->GetDetector()->SetT0Tag(2); + } else if (rank == 2) { // t0 of the form t0[np][ns] + fNxEntry2->GetInstrument()->GetDetector()->SetT0Tag(3); } else { cerr << endl << ">> **ERROR** found 'time_zero_bin' info in NXdetector with rank=" << rank << ". Do not know how to handle." << endl; return NX_ERROR; @@ -3613,8 +3763,12 @@ int PNeXus::ReadFileIdf2() // check the dimensions of the 'time_zero' vector if (!ErrorHandler(NXgetinfo(fFileHandle, &rank, dims, &type), PNEXUS_GET_META_INFO_ERROR, "couldn't get 'time_zero' info in NXdetector!")) return NX_ERROR; - if (rank <= 2) { - fNxEntry2->GetInstrument()->GetDetector()->SetT0Tag(rank); + if ((rank == 1) && (dims[0] == 1)) { // single t0 entry + fNxEntry2->GetInstrument()->GetDetector()->SetT0Tag(1); + } else if ((rank == 1) && (dims[0] > 1)) { // t0 of the form t0[ns] + fNxEntry2->GetInstrument()->GetDetector()->SetT0Tag(2); + } else if (rank == 2) { // t0 of the form t0[np][ns] + fNxEntry2->GetInstrument()->GetDetector()->SetT0Tag(3); } else { cerr << endl << ">> **ERROR** found 'time_zero' info in NXdetector with rank=" << rank << ". Do not know how to handle." << endl; return NX_ERROR; @@ -3684,16 +3838,6 @@ int PNeXus::ReadFileIdf2() // check the dimensions of the 'first_good_bin' vector if (!ErrorHandler(NXgetinfo(fFileHandle, &rank, dims, &type), PNEXUS_GET_META_INFO_ERROR, "couldn't get 'first_good_bin' info in NXdetector!")) return NX_ERROR; - if (rank <= 2) { - if (rank != fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag()) { - cerr << endl << ">> **ERROR** rank of 'first_good_bin' (" << rank << ") is different than t0 rank=" << rank << ". Do not know how to handle." << endl; - return NX_ERROR; - } - } else { - cerr << endl << ">> **ERROR** found 'first_good_bin' info in NXdetector with rank=" << rank << ". Do not know how to handle." << endl; - return NX_ERROR; - } - // calculate the needed size size = dims[0]; for (int i=1; iGetInstrument()->GetDetector()->GetT0Tag()) { - cerr << endl << ">> **ERROR** rank of 'first_good_time' (" << rank << ") is different than t0 rank=" << rank << ". Do not know how to handle." << endl; - return NX_ERROR; - } - } else { - cerr << endl << ">> **ERROR** found 'first_good_time' info in NXdetector with rank=" << rank << ". Do not know how to handle." << endl; - return NX_ERROR; - } - // calculate the needed size size = dims[0]; for (int i=1; iGetInstrument()->GetDetector()->GetT0Tag()) { - cerr << endl << ">> **ERROR** rank of 'last_good_bin' (" << rank << ") is different than t0 rank=" << rank << ". Do not know how to handle." << endl; - return NX_ERROR; - } - } else { - cerr << endl << ">> **ERROR** found 'last_good_bin' info in NXdetector with rank=" << rank << ". Do not know how to handle." << endl; - return NX_ERROR; - } - // calculate the needed size size = dims[0]; for (int i=1; iGetInstrument()->GetDetector()->GetT0Tag()) { - cerr << endl << ">> **ERROR** rank of 'last_good_time' (" << rank << ") is different than t0 rank=" << rank << ". Do not know how to handle." << endl; - return NX_ERROR; - } - } else { - cerr << endl << ">> **ERROR** found 'last_good_time' info in NXdetector with rank=" << rank << ". Do not know how to handle." << endl; - return NX_ERROR; - } - // calculate the needed size size = dims[0]; for (int i=1; iGetSample()->GetShape().length(); - if (!ErrorHandler(NXmakedata(fFileHandle, "shape", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'NXsample/shape'.")) return NX_ERROR; - if (!ErrorHandler(NXopendata(fFileHandle, "shape"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'NXsample/shape' for writting.")) return NX_ERROR; - strncpy(cstr, fNxEntry1->GetSample()->GetShape().c_str(), sizeof(cstr)); - if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'NXsample/shape'.")) return NX_ERROR; - NXclosedata(fFileHandle); + // write sample 'shape' only if populated with something different than 'n/a' + if (fNxEntry1->GetSample()->GetShape() != "n/a") { + size = fNxEntry1->GetSample()->GetShape().length(); + if (!ErrorHandler(NXmakedata(fFileHandle, "shape", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'NXsample/shape'.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "shape"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'NXsample/shape' for writting.")) return NX_ERROR; + strncpy(cstr, fNxEntry1->GetSample()->GetShape().c_str(), sizeof(cstr)); + if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'NXsample/shape'.")) return NX_ERROR; + NXclosedata(fFileHandle); + } // write sample 'magnetic_field_state' size = fNxEntry1->GetSample()->GetMagneticFieldState().length(); @@ -4556,7 +4672,8 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) int size, idata; float fdata; double dval; - NXlink clink; + NXlink nxLink; + vector nxLinkVec; memset(cstr, '\0', sizeof(cstr)); snprintf(cstr, sizeof(cstr), "couldn't open file '%s' for writing", fileName); @@ -4594,6 +4711,20 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'definition' in NXentry.")) return NX_ERROR; NXclosedata(fFileHandle); + // write 'program_name' if present + if (!fNxEntry2->GetProgramName().empty()) { + size = fNxEntry2->GetProgramName().length(); + if (!ErrorHandler(NXmakedata(fFileHandle, "program_name", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'program_name' in NXentry.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "program_name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'program_name' in NXentry for writting.")) return NX_ERROR; + memset(cstr, '\0', sizeof(cstr)); + strncpy(cstr, fNxEntry2->GetProgramName().c_str(), sizeof(cstr)); + if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'program_name' in NXentry.")) return NX_ERROR; + memset(cstr, '\0', sizeof(cstr)); + strncpy(cstr, fNxEntry2->GetProgramVersion().c_str(), sizeof(cstr)); + if (!ErrorHandler(NXputattr(fFileHandle, "version", cstr, strlen(cstr), NX_CHAR), PNEXUS_PUT_ATTR_ERROR, "couldn't put attribute 'version' for 'program_name' in NXentry.")) return NX_ERROR; + NXclosedata(fFileHandle); + } + // write run 'run_number' size = 1; if (!ErrorHandler(NXmakedata(fFileHandle, "run_number", NX_INT32, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'run_number' in NXentry.")) return NX_ERROR; @@ -4638,22 +4769,25 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'experiment_identifier' in NXentry.")) return NX_ERROR; NXclosedata(fFileHandle); - // make group 'user_1' - if (!ErrorHandler(NXmakegroup(fFileHandle, "user_1", "NXuser"), PNEXUS_CREATE_GROUP_ERROR, "couldn't create group 'user_1' in NXentry.")) return NX_ERROR; - // open group 'user' - if (!ErrorHandler(NXopengroup(fFileHandle, "user_1", "NXuser"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open group 'user_1' in NXentry for writting.")) return NX_ERROR; + // user_1 (NXuser) will only be written if there is at least a user name present + if (fNxEntry2->GetUser()->GetName() != "n/a") { + // make group 'user_1' + if (!ErrorHandler(NXmakegroup(fFileHandle, "user_1", "NXuser"), PNEXUS_CREATE_GROUP_ERROR, "couldn't create group 'user_1' in NXentry.")) return NX_ERROR; + // open group 'user' + if (!ErrorHandler(NXopengroup(fFileHandle, "user_1", "NXuser"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open group 'user_1' in NXentry for writting.")) return NX_ERROR; - // write user 'name' - size = fNxEntry2->GetUser()->GetName().length(); - if (!ErrorHandler(NXmakedata(fFileHandle, "name", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'name' in NXuser.")) return NX_ERROR; - if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'name' in NXuser for writting.")) return NX_ERROR; - memset(cstr, '\0', sizeof(cstr)); - strncpy(cstr, fNxEntry2->GetUser()->GetName().c_str(), sizeof(cstr)); - if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'name' in NXuser.")) return NX_ERROR; - NXclosedata(fFileHandle); + // write user 'name' + size = fNxEntry2->GetUser()->GetName().length(); + if (!ErrorHandler(NXmakedata(fFileHandle, "name", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'name' in NXuser.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'name' in NXuser for writting.")) return NX_ERROR; + memset(cstr, '\0', sizeof(cstr)); + strncpy(cstr, fNxEntry2->GetUser()->GetName().c_str(), sizeof(cstr)); + if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'name' in NXuser.")) return NX_ERROR; + NXclosedata(fFileHandle); - // close group 'user_1' - NXclosegroup(fFileHandle); + // close group 'user_1' + NXclosegroup(fFileHandle); + } // make group 'sample' if (!ErrorHandler(NXmakegroup(fFileHandle, "sample", "NXsample"), PNEXUS_CREATE_GROUP_ERROR, "couldn't create group 'sample' in NXentry.")) return NX_ERROR; @@ -4683,10 +4817,10 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) // check if temperature is present and if yes, write it into the file ok=false; - dval = fNxEntry2->GetSample()->GetPhysPropValue("temperature", ok); + dval = fNxEntry2->GetSample()->GetPhysPropValue("temperature_1", ok); if (ok) { fdata = (float)dval; - fNxEntry2->GetSample()->GetPhysPropUnit("temperature", str, ok); + fNxEntry2->GetSample()->GetPhysPropUnit("temperature_1", str, ok); } if (ok) { size = 1; @@ -4701,22 +4835,28 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) // check if temperature environment info is present if (fNxEntry2->GetSample()->GetEnvironmentTemp().compare("n/a")) { + // make group 'temperature_1_env' + if (!ErrorHandler(NXmakegroup(fFileHandle, "temperature_1_env", "NXenvironment"), PNEXUS_CREATE_GROUP_ERROR, "couldn't create group 'temperature_1_env' in NXsample.")) return NX_ERROR; + // open group 'temperature_1_env' + if (!ErrorHandler(NXopengroup(fFileHandle, "temperature_1_env", "NXenvironment"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open group 'NXenvironment' in NXsample for writting.")) return NX_ERROR; // write sample 'temperature_1_env' size = fNxEntry2->GetSample()->GetEnvironmentTemp().length(); - if (!ErrorHandler(NXmakedata(fFileHandle, "temperature_1_env", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'temperature_1_env' in NXsample.")) return NX_ERROR; - if (!ErrorHandler(NXopendata(fFileHandle, "temperature_1_env"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'temperature_1_env' in NXsample for writting.")) return NX_ERROR; + if (!ErrorHandler(NXmakedata(fFileHandle, "name", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'name' in 'temperature_1_env' in NXsample.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'name' in 'temperature_1_env' in NXsample for writting.")) return NX_ERROR; memset(cstr, '\0', sizeof(cstr)); strncpy(cstr, fNxEntry2->GetSample()->GetEnvironmentTemp().c_str(), sizeof(cstr)); if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'temperature_1_env' in NXsample.")) return NX_ERROR; NXclosedata(fFileHandle); + // close group 'temperature_1_env' + NXclosegroup(fFileHandle); } // check if magnetic field is present and if yes, write it into the file ok=false; - dval = fNxEntry2->GetSample()->GetPhysPropValue("magnetic_field", ok); + dval = fNxEntry2->GetSample()->GetPhysPropValue("magnetic_field_1", ok); if (ok) { fdata = (float)dval; - fNxEntry2->GetSample()->GetPhysPropUnit("magnetic_field", str, ok); + fNxEntry2->GetSample()->GetPhysPropUnit("magnetic_field_1", str, ok); } if (ok) { size = 1; @@ -4731,6 +4871,10 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) // check if magnetic field environment info is present if (fNxEntry2->GetSample()->GetEnvironmentField().compare("n/a")) { + // make group 'magnetic_field_1_env' + if (!ErrorHandler(NXmakegroup(fFileHandle, "magnetic_field_1_env", "NXenvironment"), PNEXUS_CREATE_GROUP_ERROR, "couldn't create group 'magnetic_field_1_env' in NXsample.")) return NX_ERROR; + // open group 'magnetic_field_1_env' + if (!ErrorHandler(NXopengroup(fFileHandle, "magnetic_field_1_env", "NXenvironment"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open group 'NXenvironment' in NXsample for writting.")) return NX_ERROR; // write sample 'magnetic_field_1_env' size = fNxEntry2->GetSample()->GetEnvironmentField().length(); if (!ErrorHandler(NXmakedata(fFileHandle, "magnetic_field_1_env", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'magnetic_field_1_env' in NXsample.")) return NX_ERROR; @@ -4739,6 +4883,8 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) strncpy(cstr, fNxEntry2->GetSample()->GetEnvironmentField().c_str(), sizeof(cstr)); if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'magnetic_field_1_env' in NXsample.")) return NX_ERROR; NXclosedata(fFileHandle); + // close group 'magnetic_field_1_env' + NXclosegroup(fFileHandle); } // check if magnetic field state info is present @@ -4811,13 +4957,13 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) // open group 'beamline' if (!ErrorHandler(NXopengroup(fFileHandle, "beamline", "NXbeamline"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open group 'beamline' in NXentry for NXinstrument.")) return NX_ERROR; - // write instrument 'name' + // write beamline 'beamline' size = fNxEntry2->GetInstrument()->GetBeamline()->GetName().length(); - if (!ErrorHandler(NXmakedata(fFileHandle, "name", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'name' in NXbeamline.")) return NX_ERROR; - if (!ErrorHandler(NXopendata(fFileHandle, "name"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'name' in NXbeamline for writting.")) return NX_ERROR; + if (!ErrorHandler(NXmakedata(fFileHandle, "beamline", NX_CHAR, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'beamline' in NXbeamline.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "beamline"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'beamline' in NXbeamline for writting.")) return NX_ERROR; memset(cstr, '\0', sizeof(cstr)); strncpy(cstr, fNxEntry2->GetInstrument()->GetBeamline()->GetName().c_str(), sizeof(cstr)); - if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'name' in NXbeamline.")) return NX_ERROR; + if (!ErrorHandler(NXputdata(fFileHandle, cstr), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'beamline' in NXbeamline.")) return NX_ERROR; NXclosedata(fFileHandle); // close group 'beamline' @@ -4883,17 +5029,59 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) } if (!ErrorHandler(NXputattr(fFileHandle, "long_name", cstr, strlen(cstr), NX_CHAR), PNEXUS_PUT_ATTR_ERROR, "couldn't put attribute 'long_name' for 'counts' in NXdetector.")) return NX_ERROR; // create link of 'counts' for NXdata - if (!ErrorHandler(NXgetdataID(fFileHandle, &clink), PNEXUS_LINKING_ERROR, "couldn't obtain link of 'counts' in NXdetector.")) return NX_ERROR; + if (!ErrorHandler(NXgetdataID(fFileHandle, &nxLink), PNEXUS_LINKING_ERROR, "couldn't obtain link of 'counts' in NXdetector.")) return NX_ERROR; + nxLinkVec.push_back(nxLink); NXclosedata(fFileHandle); + // write time resolution + fdata = (float)fNxEntry2->GetInstrument()->GetDetector()->GetTimeResolution("ns"); + size = 1; + if (!ErrorHandler(NXmakedata(fFileHandle, "histogram_resolution", NX_FLOAT32, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'histogram_resolution' in NXdetector.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "histogram_resolution"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'histogram_resolution' in NXdetector for writting.")) return NX_ERROR; + if (!ErrorHandler(NXputdata(fFileHandle, (void*)&fdata), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'histogram_resolution' in NXdetector.")) return NX_ERROR; + memset(cstr, '\0', sizeof(cstr)); + strncpy(cstr, "nano.second", sizeof(cstr)); + if (!ErrorHandler(NXputattr(fFileHandle, "units", cstr, strlen(cstr), NX_CHAR), PNEXUS_PUT_ATTR_ERROR, "couldn't put attribute 'units' for 'histogram_resolution' in NXdetector.")) return NX_ERROR; + // create link of 'histogram_resolution' for NXdata + if (!ErrorHandler(NXgetdataID(fFileHandle, &nxLink), PNEXUS_LINKING_ERROR, "couldn't obtain link of 'histogram_resolution' in NXdetector.")) return NX_ERROR; + nxLinkVec.push_back(nxLink); + NXclosedata(fFileHandle); + + // write detector_1 'raw_time' + size = (int)fNxEntry2->GetInstrument()->GetDetector()->GetRawTime()->size(); + float *p_fdata = new float[size]; + assert(p_fdata); + for (int i=0; iGetInstrument()->GetDetector()->GetRawTime()->at(i); + if (!ErrorHandler(NXmakedata(fFileHandle, "raw_time", NX_FLOAT32, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'raw_time' in NXdetector.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "raw_time"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'raw_time' in NXdetector for writting.")) return NX_ERROR; + if (!ErrorHandler(NXputdata(fFileHandle, (void*)p_fdata), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'raw_time' in NXdetector.")) return NX_ERROR; + strncpy(cstr, fNxEntry2->GetInstrument()->GetDetector()->GetRawTimeUnit().c_str(), sizeof(cstr)); + if (!ErrorHandler(NXputattr(fFileHandle, "units", cstr, strlen(cstr), NX_CHAR), PNEXUS_PUT_ATTR_ERROR, "couldn't put attribute 'units' for 'raw_time' in NXdetector.")) return NX_ERROR; + strncpy(cstr, fNxEntry2->GetInstrument()->GetDetector()->GetRawTimeName().c_str(), sizeof(cstr)); + if (!ErrorHandler(NXputattr(fFileHandle, "long_name", cstr, strlen(cstr), NX_CHAR), PNEXUS_PUT_ATTR_ERROR, "couldn't put attribute 'long_name' for 'raw_time' in NXdetector.")) return NX_ERROR; + // create link of 'raw_time' for NXdata + if (!ErrorHandler(NXgetdataID(fFileHandle, &nxLink), PNEXUS_LINKING_ERROR, "couldn't obtain link of 'raw_time' in NXdetector.")) return NX_ERROR; + nxLinkVec.push_back(nxLink); + NXclosedata(fFileHandle); + // clean up + if (p_fdata) { + delete [] p_fdata; + p_fdata = 0; + } + // write detector_1 'spectrum_index' size = fNxEntry2->GetInstrument()->GetDetector()->GetSpectrumIndexSize(); int *p_idata = new int[size]; + assert(p_idata); for (int i=0; iGetInstrument()->GetDetector()->GetSpectrumIndex(i); if (!ErrorHandler(NXmakedata(fFileHandle, "spectrum_index", NX_INT32, 1, &size), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'spectrum_index' in NXdetector.")) return NX_ERROR; if (!ErrorHandler(NXopendata(fFileHandle, "spectrum_index"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'spectrum_index' in NXdetector for writting.")) return NX_ERROR; if (!ErrorHandler(NXputdata(fFileHandle, (void*)p_idata), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'spectrum_index' in NXdetector.")) return NX_ERROR; + // create link of 'spectrum_index' for NXdata + if (!ErrorHandler(NXgetdataID(fFileHandle, &nxLink), PNEXUS_LINKING_ERROR, "couldn't obtain link of 'spectrum_index' in NXdetector.")) return NX_ERROR; + nxLinkVec.push_back(nxLink); NXclosedata(fFileHandle); if (p_idata) { delete [] p_idata; @@ -4910,6 +5098,13 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) if (!ErrorHandler(NXputdata(fFileHandle, (void*)&idata), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'time_zero_bin' in NXdetector.")) return NX_ERROR; NXclosedata(fFileHandle); } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 2) { + int dims[1]; + dims[0] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfSpectra(); + if (!ErrorHandler(NXmakedata(fFileHandle, "time_zero_bin", NX_INT32, 1, dims), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'time_zero_bin' in NXdetector.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "time_zero_bin"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'time_zero_bin' in NXdetector for writting.")) return NX_ERROR; + if (!ErrorHandler(NXputdata(fFileHandle, (void*)fNxEntry2->GetInstrument()->GetDetector()->GetT0s()), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'time_zero_bin' in NXdetector.")) return NX_ERROR; + NXclosedata(fFileHandle); + } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 3) { int dims[2]; dims[0] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfPeriods(); dims[1] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfSpectra(); @@ -4932,6 +5127,13 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) if (!ErrorHandler(NXputdata(fFileHandle, (void*)&idata), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'first_good_bin' in NXdetector.")) return NX_ERROR; NXclosedata(fFileHandle); } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 2) { + int dims[1]; + dims[0] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfSpectra(); + if (!ErrorHandler(NXmakedata(fFileHandle, "first_good_bin", NX_INT32, 1, dims), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'first_good_bin' in NXdetector.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "first_good_bin"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'first_good_bin' in NXdetector for writting.")) return NX_ERROR; + if (!ErrorHandler(NXputdata(fFileHandle, (void*)fNxEntry2->GetInstrument()->GetDetector()->GetFirstGoodBins()), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'first_good_bin' in NXdetector.")) return NX_ERROR; + NXclosedata(fFileHandle); + } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 3) { int dims[2]; dims[0] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfPeriods(); dims[1] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfSpectra(); @@ -4954,6 +5156,13 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) if (!ErrorHandler(NXputdata(fFileHandle, (void*)&idata), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'last_good_bin' in NXdetector.")) return NX_ERROR; NXclosedata(fFileHandle); } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 2) { + int dims[1]; + dims[0] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfSpectra(); + if (!ErrorHandler(NXmakedata(fFileHandle, "last_good_bin", NX_INT32, 1, dims), PNEXUS_MAKE_DATA_ERROR, "couldn't create data entry 'last_good_bin' in NXdetector.")) return NX_ERROR; + if (!ErrorHandler(NXopendata(fFileHandle, "last_good_bin"), PNEXUS_OPEN_DATA_ERROR, "couldn't open data 'last_good_bin' in NXdetector for writting.")) return NX_ERROR; + if (!ErrorHandler(NXputdata(fFileHandle, (void*)fNxEntry2->GetInstrument()->GetDetector()->GetLastGoodBins()), PNEXUS_PUT_DATA_ERROR, "couldn't put data 'last_good_bin' in NXdetector.")) return NX_ERROR; + NXclosedata(fFileHandle); + } else if (fNxEntry2->GetInstrument()->GetDetector()->GetT0Tag() == 3) { int dims[2]; dims[0] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfPeriods(); dims[1] = fNxEntry2->GetInstrument()->GetDetector()->GetNoOfSpectra(); @@ -4977,7 +5186,10 @@ int PNeXus::WriteFileIdf2(const char* fileName, const NXaccess access) // open group 'detector_1' NXdata if (!ErrorHandler(NXopengroup(fFileHandle, "detector_1", "NXdata"), PNEXUS_GROUP_OPEN_ERROR, "couldn't open group 'detector_1' in NXroot.")) return NX_ERROR; - if (!ErrorHandler(NXmakelink(fFileHandle, &clink), PNEXUS_LINKING_ERROR, "couldn't create link to 'counts' in NXdetector.")) return NX_ERROR; + for (unsigned int i=0; i *GetRawTime() { return &fRawTime; } + virtual string GetRawTimeName() { return fRawTimeName; } + virtual string GetRawTimeUnit() { return fRawTimeUnit; } virtual bool IsT0Present() { return (fT0 == 0) ? false : true; } virtual int GetT0Tag() { return fT0Tag; } virtual int GetT0(int idxp=-1, int idxs=-1); @@ -393,7 +396,7 @@ class PNeXusDetector2 { virtual bool IsFirstGoodBinPresent() { return (fFirstGoodBin == 0) ? false : true; } virtual int GetFirstGoodBin(int idxp=-1, int idxs=-1); virtual int* GetFirstGoodBins() { return fFirstGoodBin; } - virtual bool IsLastGoodBinPresent() { return (fFirstGoodBin == 0) ? false : true; } + virtual bool IsLastGoodBinPresent() { return (fLastGoodBin == 0) ? false : true; } virtual int GetLastGoodBin(int idxp=-1, int idxs=-1); virtual int* GetLastGoodBins() { return fLastGoodBin; } virtual int GetNoOfPeriods() { return fNoOfPeriods; } @@ -407,6 +410,9 @@ class PNeXusDetector2 { virtual void SetDescription(string description) { fDescription = description; } virtual void SetTimeResolution(double val, string units); + virtual void SetRawTime(vector &rawTime); + virtual void SetRawTimeName(string rawTimeName) { fRawTimeName = rawTimeName; } + virtual void SetRawTimeUnit(string rawTimeUnit) { fRawTimeUnit = rawTimeUnit; } virtual void SetT0Tag(int tag) { fT0Tag = tag; } virtual int SetT0(int *t0); virtual int SetFirstGoodBin(int *fgb); @@ -423,12 +429,15 @@ class PNeXusDetector2 { string fDescription; ///< description of the detector double fTimeResolution; ///< keeps the time resolution in (ps) vector fSpectrumIndex; ///< list of global spectra + vector fRawTime; ///< keeps a raw time vector + string fRawTimeName; ///< name of the raw time vector + string fRawTimeUnit; ///< unit of the raw time vector int fNoOfPeriods; ///< number of periods or -1 if not defined int fNoOfSpectra; ///< number of spectra or -1 if not defined int fNoOfBins; ///< number of bins of a spectrum or -1 if not defined - int fT0Tag; ///< tag for t0, fgb, lgb structure. -1==not present, 1==NX_INT, 2=NX_INT[np][ns] + int fT0Tag; ///< tag for t0, fgb, lgb structure. -1==not present, 1==NX_INT, 2==NX_INT[ns], 3==NX_INT[np][ns] int *fT0; int *fFirstGoodBin; int *fLastGoodBin; diff --git a/src/include/PMusr.h b/src/include/PMusr.h index c52fc297..46438438 100644 --- a/src/include/PMusr.h +++ b/src/include/PMusr.h @@ -279,6 +279,8 @@ class PRawRunData { virtual const TString* GetBeamline() { return &fBeamline; } virtual const TString* GetInstrument() { return &fInstrument; } virtual const TString* GetRunName() { return &fRunName; } + virtual const TString* GetMuonSource() { return &fMuonSource; } + virtual const TString* GetMuonSpecies() { return &fMuonSpecies; } virtual const Int_t GetRunNumber() { return fRunNumber; } virtual const TString* GetRunTitle() { return &fRunTitle; } virtual const TString* GetSetup() { return &fSetup; } @@ -305,6 +307,7 @@ class PRawRunData { virtual const UInt_t GetT0EstimatedSize() { return fT0Estimated.size(); } virtual const Int_t GetT0Estimated(const UInt_t idx); virtual const PIntPair GetBkgBin(const UInt_t idx); + virtual const UInt_t GetGoodDataBinSize() { return fGoodDataBin.size(); } virtual const PIntPair GetGoodDataBin(const UInt_t idx); virtual const UInt_t GetNoOfHistos() { return fDataBin.size(); } virtual const PDoubleVector* GetDataBin(const UInt_t idx); @@ -313,6 +316,8 @@ class PRawRunData { virtual void SetLaboratory(const TString &str) { fLaboratory = str; } virtual void SetBeamline(const TString &str) { fBeamline = str; } virtual void SetInstrument(const TString &str) { fInstrument = str; } + virtual void SetMuonSource(const TString &str) { fMuonSource = str; } + virtual void SetMuonSpecies(const TString &str) { fMuonSpecies = str; } virtual void SetRunName(const TString &str) { fRunName = str; } virtual void SetRunNumber(const Int_t &val) { fRunNumber = val; } virtual void SetRunTitle(const TString str) { fRunTitle = str; } @@ -347,6 +352,8 @@ class PRawRunData { TString fLaboratory; ///< keeps the name of the laboratory, e.g. PSI, ISIS, TRIUMF, JPARC TString fBeamline; ///< keeps the name of the be beamline, e.g. muE4, piM3.1, ... TString fInstrument; ///< keeps the name of the instrument, e.g. LEM, GPS, MUSR, EMU, ... + TString fMuonSource; ///< keeps the type of muon source, e.g. continous surface beam, pulsed beam, low energy muon beam + TString fMuonSpecies; ///< positive muon or negative muon TString fRunName; ///< name of the run Int_t fRunNumber; ///< run number TString fRunTitle; ///< run title diff --git a/src/include/PRunDataHandler.h b/src/include/PRunDataHandler.h index fdaa639b..475a0db2 100644 --- a/src/include/PRunDataHandler.h +++ b/src/include/PRunDataHandler.h @@ -95,7 +95,7 @@ class PRunDataHandler virtual TString GetFileName(const TString extension, Bool_t &ok); virtual TString FileNameFromTemplate(TString &fileNameTemplate, Int_t run, TString &year, Bool_t &ok); - virtual TString GetMonth(Int_t month); + virtual bool DateToISO8601(string inDate, string &iso8601Date); virtual void SplitTimeDate(TString timeDate, TString &time, TString &date, Bool_t &ok); }; diff --git a/src/nexus_dump.cpp b/src/nexus_dump.cpp new file mode 100644 index 00000000..2cb58bac --- /dev/null +++ b/src/nexus_dump.cpp @@ -0,0 +1,74 @@ +/*************************************************************************** + + nexus_read_test.cpp + + Author: Andreas Suter + e-mail: andreas.suter@psi.ch + + $Id: nexus_read_test.cpp 4981 2011-08-23 17:22:29Z nemu $ + +***************************************************************************/ + +/*************************************************************************** + * Copyright (C) 2007-2011 by Andreas Suter * + * andreas.suter@psi.ch * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include +#include +#include + +#include +#include +#include +using namespace std; + +#include "PNeXus.h" + +//--------------------------------------------------------------------------------------- + +void nexus_read_test_syntax() +{ + cout << endl << ">>---------------------------------------------------------------------------------------"; + cout << endl << ">> usage: nexus_dump "; + cout << endl << ">> This will try to read a nexus-files and send the relevant"; + cout << endl << ">> information to the standard output."; + cout << endl << ">>---------------------------------------------------------------------------------------"; + cout << endl << endl; +} + +//--------------------------------------------------------------------------------------- + +int main(int argc, char *argv[]) +{ + if (argc !=2) { + nexus_read_test_syntax(); + return -1; + } + + PNeXus *nxs_file = new PNeXus(argv[1]); + + if (nxs_file->IsValid(false)) { + nxs_file->Dump(); + } + + if (nxs_file) + delete nxs_file; + + return 0; +} diff --git a/src/tests/nexus/Makefile b/src/tests/nexus/Makefile index b8595e49..8ad66028 100644 --- a/src/tests/nexus/Makefile +++ b/src/tests/nexus/Makefile @@ -6,12 +6,12 @@ NEXUS_CLASS_DIR = ../../external/nexus CXX = g++ CXXFLAGS = -g -Wall -fPIC -INCLUDES = -I /usr/local/include -I $(NEXUS_CLASS_DIR) +INCLUDES = -I /opt/nexus/include -I $(NEXUS_CLASS_DIR) LD = g++ LDFLAGS = -g -LIBS = -L /usr/local/lib -lNeXus -LIBS += -L /usr/lib -lhdf5 +LIBS = -L /opt/nexus/lib -lNeXus +LIBS += -L /opt/hdf/lib -lhdf5 EXEC = nexus_read_test diff --git a/src/tests/nexus/nexus_read_test.cpp b/src/tests/nexus/nexus_read_test.cpp index 9b421ad1..cbe4a9e9 100644 --- a/src/tests/nexus/nexus_read_test.cpp +++ b/src/tests/nexus/nexus_read_test.cpp @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) PNeXus *nxs_file = new PNeXus(argv[1]); - if (nxs_file->IsValid(true)) { + if (nxs_file->IsValid(false)) { nxs_file->Dump(); if (argc == 5) {