@@ -8,7 +8,9 @@ void ReSimulator::configure(framework::config::Parameters& parameters) {
88 parameters.getParameter <bool >(" resimulate_all_events" );
99 if (!resimulate_all_events_) {
1010 care_about_run_ = parameters.getParameter <bool >(" care_about_run" );
11- auto configured_events{parameters.getParameter <std::vector<framework::config::Parameters>>(" events_to_resimulate" , {})};
11+ auto configured_events{
12+ parameters.getParameter <std::vector<framework::config::Parameters>>(
13+ " events_to_resimulate" , {})};
1214 if (configured_events.size () == 0 ) {
1315 EXCEPTION_RAISE (
1416 " ReSimNoEvents" ,
@@ -17,10 +19,8 @@ void ReSimulator::configure(framework::config::Parameters& parameters) {
1719 " the events_to_resimulate parameter?\n " );
1820 }
1921 for (const auto & run_event : configured_events) {
20- events_to_resimulate_.emplace_back (
21- run_event.getParameter <int >(" run" ),
22- run_event.getParameter <int >(" event" )
23- );
22+ events_to_resimulate_.emplace_back (run_event.getParameter <int >(" run" ),
23+ run_event.getParameter <int >(" event" ));
2424 }
2525 }
2626}
@@ -29,24 +29,14 @@ void ReSimulator::produce(framework::Event& event) {
2929 /* numEventsBegan_++; */
3030 auto & eventHeader{event.getEventHeader ()};
3131 const auto eventNumber{eventHeader.getEventNumber ()};
32- if (!resimulate_all_events_) {
33- auto found_event_to_resim = std::find_if (
34- std::begin (events_to_resimulate_), std::end (events_to_resimulate_),
35- [&](const std::pair<int ,int >& run_event) -> bool {
36- bool runs_match = true ;
37- if (care_about_run_) runs_match = (event.getEventHeader ().getRun () == run_event.first );
38- return eventNumber == run_event.second and runs_match;
39- }
40- );
41- if (found_event_to_resim == std::end (events_to_resimulate_)) {
42- if (verbosity_ > 1 ) {
43- std::cout << " Skipping event: " << eventNumber
44- << " since it wasn't part of the requested events..."
45- << std::endl;
46- }
47- this ->abortEvent (); // get out of processors loop
48- return ;
32+ if (skip (event)) {
33+ if (verbosity_ > 1 ) {
34+ std::cout << " Skipping event: " << eventNumber
35+ << " since it wasn't part of the requested events..."
36+ << std::endl;
4937 }
38+ this ->abortEvent (); // get out of processors loop
39+ return ;
5040 }
5141 if (verbosity_ > 0 ) {
5242 std::cout << " Resimulating " << eventNumber << std::endl;
@@ -78,5 +68,28 @@ void ReSimulator::produce(framework::Event& event) {
7868 runManager_->TerminateOneEvent ();
7969}
8070
71+ bool ReSimulator::skip (framework::Event& event) const {
72+ /* *
73+ * If we are configured to simply resimulate all events, this
74+ * function always returns false.
75+ */
76+ if (resimulate_all_events_) return false ;
77+ /* *
78+ * Otherwise, we check the event number
79+ * (and also its run number if we care_about_run_)
80+ * against the list of run/event pairs that we are
81+ * interested in re-simulating.
82+ */
83+ auto found_event_to_resim = std::find_if (
84+ std::begin (events_to_resimulate_), std::end (events_to_resimulate_),
85+ [&](const std::pair<int , int >& run_event) -> bool {
86+ bool runs_match = true ;
87+ if (care_about_run_)
88+ runs_match = (event.getEventHeader ().getRun () == run_event.first );
89+ return event.getEventNumber () == run_event.second and runs_match;
90+ });
91+ return (found_event_to_resim == std::end (events_to_resimulate_));
92+ }
93+
8194} // namespace simcore
8295DECLARE_PRODUCER_NS (simcore, ReSimulator)
0 commit comments