adopted PRunDataHandler::ReadRootFile such that it can handle TDirectory in addition to the deprecated TFolder.
This commit is contained in:
@@ -52,6 +52,7 @@
|
||||
#include <TFolder.h>
|
||||
#include <TH1F.h>
|
||||
#include <TDatime.h>
|
||||
#include <TDirectoryFile.h>
|
||||
|
||||
#include "TMusrRunHeader.h"
|
||||
#include "TLemRunHeader.h"
|
||||
@@ -64,8 +65,9 @@
|
||||
|
||||
#include "PRunDataHandler.h"
|
||||
|
||||
#define PRH_MUSR_ROOT 0
|
||||
#define PRH_LEM_ROOT 1
|
||||
#define PRH_MUSR_ROOT 0
|
||||
#define PRH_MUSR_ROOT_DIR 1
|
||||
#define PRH_LEM_ROOT 2
|
||||
|
||||
#define PRH_NPP_OFFSET 0
|
||||
#define PRH_PPC_OFFSET 20
|
||||
@@ -1433,14 +1435,21 @@ Bool_t PRunDataHandler::ReadRootFile()
|
||||
TFolder *folder;
|
||||
f.GetObject("RunInfo", folder); // try first LEM-ROOT style file (used until 2011).
|
||||
if (!folder) { // either something is wrong, or it is a MusrRoot file
|
||||
f.GetObject("RunHeader", folder);
|
||||
if (!folder) { // something is wrong!!
|
||||
TObject *obj = f.FindObjectAny("RunHeader");
|
||||
if (obj == nullptr) { // something is wrong!!
|
||||
std::cerr << std::endl << ">> PRunDataHandler::ReadRootFile: **ERROR** Couldn't neither obtain RunInfo (LEM),";
|
||||
std::cerr << std::endl << " nor RunHeader (MusrRoot) from " << fRunPathName.Data() << std::endl;
|
||||
f.Close();
|
||||
return false;
|
||||
} else {
|
||||
}
|
||||
if (!strcmp(obj->ClassName(), "TFolder"))
|
||||
fileType = PRH_MUSR_ROOT;
|
||||
else if (!strcmp(obj->ClassName(), "TDirectoryFile"))
|
||||
fileType = PRH_MUSR_ROOT_DIR;
|
||||
else {
|
||||
std::cerr << std::endl << "PRunDataHandler::ReadRootFile: **ERROR** RunHeader (MusrRoot) from '" << fRunPathName.Data() << "' is neither a TFolder nor a TDirectory. Found: '" << obj->ClassName() << "'" << std::endl;
|
||||
f.Close();
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
fileType = PRH_LEM_ROOT;
|
||||
@@ -1722,12 +1731,28 @@ Bool_t PRunDataHandler::ReadRootFile()
|
||||
return false;
|
||||
}
|
||||
|
||||
// try to populate the MusrRoot header object
|
||||
if (!header->ExtractAll(folder)) {
|
||||
std::cerr << std::endl << ">> PRunDataHandler::ReadRootFile: **ERROR** Couldn't invoke MusrRoot RunHeader in file:" << fRunPathName;
|
||||
std::cerr << std::endl;
|
||||
f.Close();
|
||||
return false;
|
||||
// check if TFolder or TDirectory is needed
|
||||
if (fileType == PRH_MUSR_ROOT) { // TFolder
|
||||
f.GetObject("RunHeader", folder);
|
||||
|
||||
// try to populate the MusrRoot header object
|
||||
if (!header->ExtractAll(folder)) {
|
||||
std::cerr << std::endl << ">> PRunDataHandler::ReadRootFile: **ERROR** Couldn't invoke MusrRoot RunHeader (TFolder) in file:" << fRunPathName;
|
||||
std::cerr << std::endl;
|
||||
f.Close();
|
||||
return false;
|
||||
}
|
||||
} else { // TDirectory
|
||||
TDirectoryFile *runHeader = nullptr;
|
||||
f.GetObject("RunHeader", runHeader);
|
||||
|
||||
// try to populate the MusrRoot header object
|
||||
if (!header->ExtractAll(runHeader)) {
|
||||
std::cerr << std::endl << ">> PRunDataHandler::ReadRootFile: **ERROR** Couldn't invoke MusrRoot RunHeader (TDirectoryFile) in file:" << fRunPathName;
|
||||
std::cerr << std::endl;
|
||||
f.Close();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// get all the header information
|
||||
|
||||
Reference in New Issue
Block a user