dump_header can now handle TMusrRoot with TFolder as well as TDirectory.
This commit is contained in:
@@ -72,7 +72,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DH_MUSR_ROOT 0
|
#define DH_MUSR_ROOT 0
|
||||||
#define DH_LEM_ROOT 1
|
#define DH_MUSR_ROOT_DIR 1
|
||||||
|
#define DH_LEM_ROOT 2
|
||||||
|
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
@@ -131,16 +132,24 @@ int dump_header_root(const std::string fileName, const bool summary, const bool
|
|||||||
UInt_t noOfHistos{0};
|
UInt_t noOfHistos{0};
|
||||||
PIntVector redGreenOffset;
|
PIntVector redGreenOffset;
|
||||||
|
|
||||||
|
|
||||||
TFolder *folder;
|
TFolder *folder;
|
||||||
f.GetObject("RunInfo", folder); // try first LEM-ROOT style file (used until 2011).
|
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
|
if (!folder) { // either something is wrong, or it is a MusrRoot file
|
||||||
f.GetObject("RunHeader", folder);
|
TObject *obj = f.FindObjectAny("RunHeader");
|
||||||
if (!folder) { // something is wrong!!
|
if (obj == nullptr) {
|
||||||
std::cerr << std::endl << "**ERROR** Couldn't neither obtain RunInfo (LEM), nor RunHeader (MusrRoot) from " << fileName << std::endl;
|
std::cerr << std::endl << "**ERROR** Couldn't neither obtain RunInfo (LEM), nor RunHeader (MusrRoot) from " << fileName << std::endl;
|
||||||
f.Close();
|
f.Close();
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
}
|
||||||
|
if (!strcmp(obj->ClassName(), "TFolder")) {
|
||||||
fileType = DH_MUSR_ROOT;
|
fileType = DH_MUSR_ROOT;
|
||||||
|
} else if (!strcmp(obj->ClassName(), "TDirectoryFile")) {
|
||||||
|
fileType = DH_MUSR_ROOT_DIR;
|
||||||
|
} else {
|
||||||
|
std::cerr << std::endl << "**ERROR** RunHeader (MusrRoot) from '" << fileName << "' is neither a TFolder nor a TDirectory. Found: '" << obj->ClassName() << "'" << std::endl;
|
||||||
|
f.Close();
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fileType = DH_LEM_ROOT;
|
fileType = DH_LEM_ROOT;
|
||||||
@@ -202,6 +211,9 @@ int dump_header_root(const std::string fileName, const bool summary, const bool
|
|||||||
// invoke the MusrRoot header object
|
// invoke the MusrRoot header object
|
||||||
header = std::make_unique<TMusrRunHeader>(fileName.c_str(), true); // read quite
|
header = std::make_unique<TMusrRunHeader>(fileName.c_str(), true); // read quite
|
||||||
|
|
||||||
|
// check if TFolder or TDirectory is needed
|
||||||
|
if (fileType == DH_MUSR_ROOT) { // TFolder
|
||||||
|
f.GetObject("RunHeader", folder);
|
||||||
// try to populate the MusrRoot header object
|
// try to populate the MusrRoot header object
|
||||||
if (!header->ExtractAll(folder)) {
|
if (!header->ExtractAll(folder)) {
|
||||||
std::cerr << std::endl << "**ERROR** Couldn't invoke MusrRoot RunHeader in file:" << fileName;
|
std::cerr << std::endl << "**ERROR** Couldn't invoke MusrRoot RunHeader in file:" << fileName;
|
||||||
@@ -209,6 +221,17 @@ int dump_header_root(const std::string fileName, const bool summary, const bool
|
|||||||
f.Close();
|
f.Close();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
} else { // TDirectory
|
||||||
|
TDirectoryFile *runHeader = nullptr;
|
||||||
|
f.GetObject("RunHeader", runHeader);
|
||||||
|
// try to populate the MusrRoot header object
|
||||||
|
if (!header->ExtractAll(runHeader)) {
|
||||||
|
std::cerr << std::endl << "**ERROR** Couldn't invoke MusrRoot RunHeader in file:" << fileName;
|
||||||
|
std::cerr << std::endl;
|
||||||
|
f.Close();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
header->DumpHeader();
|
header->DumpHeader();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user