mirror of
https://github.com/sesps/SPS_SABRE_EventBuilder.git
synced 2024-11-26 11:38:49 -05:00
Compare commits
3 Commits
c4557c2b26
...
e9c50331f7
Author | SHA1 | Date | |
---|---|---|---|
Gordon McCann | e9c50331f7 | ||
Gordon McCann | a264eea63c | ||
Gordon McCann | 4886c497a3 |
|
@ -58,6 +58,7 @@ namespace EventBuilder {
|
|||
m_analyzedDir = m_workspace + "analyzed/";
|
||||
m_histogramDir = m_workspace + "histograms/";
|
||||
m_cutDir = m_workspace + "cuts/";
|
||||
m_mergedDir = m_workspace + "merged/";
|
||||
|
||||
//Check all subdirectories. Terminate if any of them are bad
|
||||
m_isValid = CheckSubDirectory(m_binaryDir);
|
||||
|
@ -79,6 +80,9 @@ namespace EventBuilder {
|
|||
if(!m_isValid)
|
||||
return;
|
||||
m_isValid = CheckSubDirectory(m_cutDir);
|
||||
if(!m_isValid)
|
||||
return;
|
||||
m_isValid = CheckSubDirectory(m_mergedDir);
|
||||
}
|
||||
|
||||
std::string EVBWorkspace::GetBinaryRun(int run)
|
||||
|
@ -126,9 +130,11 @@ namespace EventBuilder {
|
|||
std::vector<std::string> list;
|
||||
std::string temp;
|
||||
for(int run=runMin; run<=runMax; run++)
|
||||
{
|
||||
temp = GetAnalyzedRun(run);
|
||||
if(!temp.empty())
|
||||
list.push_back(temp);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
@ -187,7 +193,7 @@ namespace EventBuilder {
|
|||
return false;
|
||||
|
||||
TFile* output = TFile::Open(outputname.c_str(), "RECREATE");
|
||||
if(!output->IsOpen())
|
||||
if(!output || !output->IsOpen())
|
||||
{
|
||||
EVB_ERROR("Could not open output file {0} for merge", outputname);
|
||||
output->Close();
|
||||
|
@ -196,8 +202,15 @@ namespace EventBuilder {
|
|||
|
||||
TChain* chain = new TChain("SPSTree", "SPSTree");
|
||||
for(auto& entry : files)
|
||||
{
|
||||
EVB_INFO("Merging file: {0}", entry);
|
||||
chain->Add(entry.c_str());
|
||||
chain->Merge(output, 0, "fast");
|
||||
}
|
||||
//Note: TChain merge is kinda fucked. It requires a file passed in, which it then implicitly takes ownership of.
|
||||
//By passing the keep option, we tell TChain we want to keep ownership of the file (otherwise it will automatically close and delete)
|
||||
//We need ownership because the Merge function does not do a good job of handling errors explicitly.
|
||||
chain->Merge(output, 0, "fast|keep");
|
||||
|
||||
output->Close();
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user