Skip to content

Commit

Permalink
Fix handling of file switching for event meta data
Browse files Browse the repository at this point in the history
  • Loading branch information
tmadlener committed Sep 29, 2020
1 parent 4b9364f commit 02bcb56
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
3 changes: 3 additions & 0 deletions include/podio/ROOTReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <string>
#include <vector>
#include <iostream>
#include <utility>

// forward declarations
class TClass;
Expand Down Expand Up @@ -76,6 +77,8 @@ class ROOTReader : public IReader {
std::map<int,GenericParameters>* readRunMetaData() override final ;

private:
std::pair<TTree*, unsigned> getLocalTreeAndEntry(const std::string& treename);

typedef std::pair<CollectionBase*, std::string> Input;
std::vector<Input> m_inputs;
std::map<std::string, std::pair<TClass*,TClass*> > m_storedClasses;
Expand Down
14 changes: 10 additions & 4 deletions src/ROOTReader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,29 @@

namespace podio {

std::pair<TTree*, unsigned> ROOTReader::getLocalTreeAndEntry(const std::string& treename) {
auto localEntry = m_chain->LoadTree(m_eventNumber);
auto* tree = static_cast<TTree*>(m_chain->GetFile()->Get(treename.c_str()));
return {tree, localEntry};
}

GenericParameters* ROOTReader::readEventMetaData(){
GenericParameters* emd = new GenericParameters() ;
auto evt_metadatatree = static_cast<TTree*>(m_chain->GetFile()->Get("evt_metadata"));
auto [evt_metadatatree, entry] = getLocalTreeAndEntry("evt_metadata");
evt_metadatatree->SetBranchAddress("evtMD",&emd);
evt_metadatatree->GetEntry(m_eventNumber);
evt_metadatatree->GetEntry(entry);
return emd ;
}
std::map<int,GenericParameters>* ROOTReader::readCollectionMetaData(){
auto* emd = new std::map<int,GenericParameters> ;
auto col_metadatatree = static_cast<TTree*>(m_chain->GetFile()->Get("col_metadata"));
auto [col_metadatatree, dummy] = getLocalTreeAndEntry("col_metadata");
col_metadatatree->SetBranchAddress("colMD",&emd);
col_metadatatree->GetEntry(0);
return emd ;
}
std::map<int,GenericParameters>* ROOTReader::readRunMetaData(){
auto* emd = new std::map<int,GenericParameters> ;
auto run_metadatatree = static_cast<TTree*>(m_chain->GetFile()->Get("run_metadata"));
auto [run_metadatatree, dummy] = getLocalTreeAndEntry("run_metadata");
run_metadatatree->SetBranchAddress("runMD",&emd);
run_metadatatree->GetEntry(0);
return emd ;
Expand Down

0 comments on commit 02bcb56

Please sign in to comment.