diff --git a/src/dump_header.cpp b/src/dump_header.cpp index abc99ca28..7561ca751 100644 --- a/src/dump_header.cpp +++ b/src/dump_header.cpp @@ -56,6 +56,7 @@ #include #include #include +#include #ifdef HAVE_GIT_REV_H #include "git-revision.h" @@ -273,13 +274,14 @@ int dump_header_root(const std::string fileName, const bool summary, const bool // summary as well? if (summary && ((fileType == DH_MUSR_ROOT) || (fileType == DH_MUSR_ROOT_DIR))) { TObjArray *runSum=nullptr; + TDirectoryFile *runSumDir=nullptr; if (fileType == DH_MUSR_ROOT) // TFolder runSum = static_cast(folder->FindObject("RunSummary")); else // TDirectory - f.GetObject("RunHeader/RunSummary", runSum); + f.GetObject("RunHeader/RunSummary", runSumDir); - if (!runSum) { // something is wrong!! + if (!runSum && !runSumDir) { // something is wrong!! std::cerr << std::endl << "**ERROR** Couldn't obtain RunSummary " << fileName << std::endl; f.Close(); return 1; @@ -289,12 +291,26 @@ int dump_header_root(const std::string fileName, const bool summary, const bool std::cout << "++++++++++++++++++++" << std::endl; TObjString *tstr; TString str; - for (Int_t i=0; iGetEntries(); i++) { - tstr = static_cast(runSum->At(i)); - str = tstr->String(); - std::cout << str; - if (!str.Contains("\r") && !str.Contains("\n")) - std::cout << std::endl; + if (runSum) { + for (Int_t i=0; iGetEntries(); i++) { + tstr = static_cast(runSum->At(i)); + str = tstr->String(); + std::cout << str; + if (!str.Contains("\r") && !str.Contains("\n")) + std::cout << std::endl; + } + } else if (runSumDir) { + TIter next(runSumDir->GetListOfKeys()); + TKey *key; + while ((key = (TKey*)next())) { + if (TString(key->GetClassName()) == "TObjString") { + tstr = dynamic_cast(key->ReadObj()); + str = tstr->String(); + std::cout << str; + if (!str.Contains("\r") && !str.Contains("\n")) + std::cout << std::endl; + } + } } }