From 935d0420d3f12ddf838eceee20ea34e87d279f28 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Mon, 29 Sep 2025 14:28:53 +0200 Subject: [PATCH] make musrRootValidation TDirectory compatible. --- src/musrRootValidation.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/musrRootValidation.cpp b/src/musrRootValidation.cpp index 5d214bfa1..c675a098c 100644 --- a/src/musrRootValidation.cpp +++ b/src/musrRootValidation.cpp @@ -249,6 +249,8 @@ void PMusrRoot2Xml::DumpDirectory(TDirectoryFile *dir, UInt_t offset) oo = static_cast(obj)->ReadObj(); if (!fQuiet) std::cout << std::endl << offsetStr << "name: " << oo->GetName() << ", class name: " << oo->ClassName(); str = oo->ClassName(); + if (TString(oo->GetName()).Contains("Detector0")) + fNoOfDetectors++; CheckClass(oo, str, offset); } } @@ -443,6 +445,37 @@ void PMusrRoot2Xml::CheckClass(TObject *obj, TString str, UInt_t offset) } else if (str == "TObjArray") { offset += 2; DumpObjArray(dynamic_cast(obj), offset); + } else if (str == "TObjString") { + TObjString *ostr = dynamic_cast(obj); + TString tstr = ostr->GetString(); + tstr.Remove(TString::kTrailing, '\n'); + + TString type, label; + GetType(tstr, type); + GetLabel(tstr, label); + + // filter out the number of histograms according to the RunInfo + if (tstr.Contains("- No of Histos: ")) { + TString histoStr = tstr; + Ssiz_t pos = histoStr.Last(':'); + histoStr.Remove(0, pos+1); + pos = histoStr.Last('-'); + histoStr.Remove(pos); + fNoOfHistos = histoStr.Atoi(); + } + + // filter out the number of Red/Green offsets + if (tstr.Contains("- RedGreen Offsets: ")) { + TString redGreenStr = tstr; + Ssiz_t pos = redGreenStr.Last(':'); + redGreenStr.Remove(0, pos+1); + pos = redGreenStr.Last('-'); + redGreenStr.Remove(pos); + TObjArray *tokens = redGreenStr.Tokenize(";"); + if (tokens) + fNoOfRedGreenOffsets = tokens->GetEntries(); + if (tokens) delete tokens; + } } else { // filter out the proper entry tag TString entryTag("");