File indexing completed on 2025-10-31 09:22:28
0001 
0002 
0003 
0004 
0005 #include <JANA/Topology/JEventTapArrow.h>
0006 #include <JANA/JEventProcessor.h>
0007 #include <JANA/JEventUnfolder.h>
0008 #include <JANA/JEvent.h>
0009 
0010 
0011 JEventTapArrow::JEventTapArrow(std::string name) {
0012     set_name(name);
0013     create_ports(1,1);
0014 }
0015 
0016 void JEventTapArrow::add_processor(JEventProcessor* proc) {
0017     if (proc->IsOrderingEnabled()) {
0018         m_ports[EVENT_IN].enforces_ordering = true;
0019     }
0020     m_procs.push_back(proc);
0021 }
0022 
0023 void JEventTapArrow::fire(JEvent* event, OutputData& outputs, size_t& output_count, JArrow::FireResult& status) {
0024 
0025     LOG_DEBUG(m_logger) << "Executing arrow " << get_name() << " for event# " << event->GetEventNumber() << LOG_END;
0026     for (JEventProcessor* proc : m_procs) {
0027         JCallGraphEntryMaker cg_entry(*event->GetJCallGraphRecorder(), proc->GetTypeName()); 
0028         if (proc->GetCallbackStyle() != JEventProcessor::CallbackStyle::LegacyMode) {
0029             proc->DoTap(*event);
0030         }
0031     }
0032     outputs[0] = {event, 1};
0033     output_count = 1;
0034     status = JArrow::FireResult::KeepGoing;
0035     LOG_DEBUG(m_logger) << "Executed arrow " << get_name() << " for event# " << event->GetEventNumber() << LOG_END;
0036 }
0037 
0038 void JEventTapArrow::initialize() {
0039     LOG_DEBUG(m_logger) << "Initializing arrow '" << get_name() << "'" << LOG_END;
0040     for (auto processor : m_procs) {
0041         LOG_DEBUG(m_logger) << "Initializing JEventProcessor '" << processor->GetTypeName() << "'" << LOG_END;
0042         processor->DoInit();
0043         LOG_INFO(m_logger) << "Initialized JEventProcessor '" << processor->GetTypeName() << "'" << LOG_END;
0044     }
0045     LOG_DEBUG(m_logger) << "Initialized arrow '" << get_name() << "'" << LOG_END;
0046 }
0047 
0048 void JEventTapArrow::finalize() {
0049     LOG_DEBUG(m_logger) << "Finalizing arrow '" << get_name() << "'" << LOG_END;
0050     for (auto processor : m_procs) {
0051         LOG_DEBUG(m_logger) << "Finalizing JEventProcessor '" << processor->GetTypeName() << "'" << LOG_END;
0052         processor->DoFinalize();
0053         LOG_INFO(m_logger) << "Finalized JEventProcessor '" << processor->GetTypeName() << "'" << LOG_END;
0054     }
0055     LOG_DEBUG(m_logger) << "Finalized arrow '" << get_name() << "'" << LOG_END;
0056 }
0057