-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Description
Currently, JFactory::Process receives a const JEvent&, which prevents modifying the event directly. This becomes a limitation when delegating data parsing to factories.
- If parsing is done in the event source, events are processed sequentially.
- If parsing is done in the factories, it can be parallelized, which is more efficient.
However, when parsing happens in factories, the event number can only be extracted after parsing, and there is no way to update the JEvent with this information.
Example scenario:
void JFactory_FADC250::Process(const JEvent& event) {
LOG_DEBUG(GetLogger()) << "Inside Process() with run_number=" << event.GetRunNumber()
<< ", event_number=" << event.GetEventNumber();
// Get the EVIO event
std::shared_ptr<evio::EvioEvent> evio_event = m_hits_in().at(0)->evio_event;
// Parse EVIO data
auto evio_event_parser = std::make_unique<EvioEventParser>(evio_event);
evio_event_parser->parse();
// Desired: set event number after parsing
// event.SetEventNumber(evio_event_parser->getEventNumber());
}Motivation
To allow users to implement data parsing inside factories (for parallelism and performance) while still being able to set the event number extracted from raw data.
Metadata
Metadata
Assignees
Labels
No labels