Skip to content

Commit 8fa634b

Browse files
simongeveprbl
andauthored
Change EventHeader check to be non fatal (#1698)
### Briefly, what does this PR introduce? Allows running of EICrecon on files without an EventHeader collection. Files with a single/small subset of output collections can have analysis continued without needing to manually persist EventHeader. A warning has been added. ### What kind of change does this PR introduce? - [ ] Bug fix (issue #__) - [x] New feature (issue #1696) - [ ] Documentation update - [ ] Other: __ ### Please check if this PR fulfills the following: - [ ] Tests for the changes have been added - [ ] Documentation has been added / updated - [ ] Changes have been communicated to collaborators ### Does this PR introduce breaking changes? What changes might users need to make to their code? No ### Does this PR change default behavior? No --------- Co-authored-by: Dmitry Kalinkin <dmitry.kalinkin@gmail.com>
1 parent 3d882e5 commit 8fa634b

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/services/io/podio/JEventSourcePODIO.cc

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <exception>
2323
#include <iostream>
2424
#include <map>
25+
#include <memory>
2526
#include <utility>
2627
#include <vector>
2728

@@ -199,12 +200,17 @@ void JEventSourcePODIO::GetEvent(std::shared_ptr<JEvent> _event) {
199200
auto frame_data = m_reader.readEntry("events", Nevents_read);
200201
auto frame = std::make_unique<podio::Frame>(std::move(frame_data));
201202

202-
const auto& event_headers = frame->get<edm4hep::EventHeaderCollection>("EventHeader"); // TODO: What is the collection name?
203-
if (event_headers.size() != 1) {
204-
throw JException("Bad event headers: Entry %d contains %d items, but 1 expected.", Nevents_read, event_headers.size());
203+
if(m_use_event_headers){
204+
const auto& event_headers = frame->get<edm4hep::EventHeaderCollection>("EventHeader");
205+
if (event_headers.size() != 1) {
206+
LOG_WARN(default_cerr_logger) << "Missing or bad event headers: Entry " << Nevents_read << " contains " << event_headers.size() << " items, but 1 expected. Will not use event and run numbers from header" << LOG_END;
207+
m_use_event_headers = false;
208+
}
209+
else {
210+
event.SetEventNumber(event_headers[0].getEventNumber());
211+
event.SetRunNumber(event_headers[0].getRunNumber());
212+
}
205213
}
206-
event.SetEventNumber(event_headers[0].getEventNumber());
207-
event.SetRunNumber(event_headers[0].getRunNumber());
208214

209215
// Insert contents odf frame into JFactories
210216
VisitPodioCollection<InsertingVisitor> visit;

src/services/io/podio/JEventSourcePODIO.h

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
#include <podio/ROOTFrameReader.h>
1616
#endif
1717
#include <stddef.h>
18-
#include <memory>
19-
#include <set>
2018
#include <string>
2119

2220
#if ((JANA_VERSION_MAJOR == 2) && (JANA_VERSION_MINOR >= 3)) || (JANA_VERSION_MAJOR > 2)
@@ -56,11 +54,8 @@ class JEventSourcePODIO : public JEventSource {
5654
size_t Nevents_in_file = 0;
5755
size_t Nevents_read = 0;
5856

59-
std::string m_include_collections_str;
60-
std::string m_exclude_collections_str;
61-
std::set<std::string> m_INPUT_INCLUDE_COLLECTIONS;
62-
std::set<std::string> m_INPUT_EXCLUDE_COLLECTIONS;
6357
bool m_run_forever=false;
58+
bool m_use_event_headers=true;
6459

6560
};
6661

0 commit comments

Comments
 (0)