1 #ifndef artdaq_Application_MPI2_EventBuilderCore_hh
2 #define artdaq_Application_MPI2_EventBuilderCore_hh
7 #include "fhiclcpp/ParameterSet.h"
8 #include "canvas/Persistency/Provenance/RunID.h"
10 #include "artdaq-utilities/Plugins/MetricManager.hh"
12 #include "artdaq/DAQrate/DataReceiverManager.hh"
13 #include "artdaq/DAQrate/EventStore.hh"
14 #include "artdaq/Application/StatisticsHelper.hh"
18 class EventBuilderCore;
75 bool initialize(fhicl::ParameterSet
const& pset);
82 bool start(art::RunID
id);
140 std::string
report(std::string
const& which)
const;
143 void initializeEventStore(fhicl::ParameterSet pset);
147 std::string init_string_;
148 fhicl::ParameterSet previous_pset_;
150 fhicl::ParameterSet data_pset_;
151 size_t expected_fragments_per_event_;
152 size_t eod_fragments_received_;
156 std::unique_ptr<artdaq::DataReceiverManager> receiver_ptr_;
157 std::unique_ptr<artdaq::EventStore> event_store_ptr_;
158 bool art_initialized_;
159 std::atomic<bool> stop_requested_;
160 std::atomic<bool> pause_requested_;
161 std::atomic<bool> run_is_paused_;
162 std::atomic<bool> processing_fragments_;
163 size_t inrun_recv_timeout_usec_;
164 size_t endrun_recv_timeout_usec_;
165 size_t pause_recv_timeout_usec_;
168 size_t fragment_count_in_run_;
177 std::mutex flush_mutex_;
182 std::string buildStatisticsString_();
184 artdaq::MetricManager metricMan_;
188 void logMessage_(std::string
const& text);
This class manages MonitoredQuantity instances for the *Core classes.
std::string report(std::string const &which) const
Send a report on a given run-time quantity.
static const std::string INPUT_FRAGMENTS_STAT_KEY
Key for the Input Fragments MonitoredQuantity.
bool resume()
Resumes the EventBuilderCore.
bool initialize(fhicl::ParameterSet const &pset)
Processes the initialize request.
static const std::string STORE_EVENT_WAIT_STAT_KEY
Key for the Store Event Wait MonitoredQuantity.
static const std::string INPUT_WAIT_STAT_KEY
Key for the Input Wait MonitoredQuantity.
EventBuilderCore(int rank, std::string name)
EventBuilderCore Constructor.
size_t process_fragments()
The main loop of the EventBuilderCore. Receives Fragment objects from DataReceiverManager and enqueue...
bool start(art::RunID id)
Start the EventBuilderCore.
bool stop()
Stops the EventBuilderCore.
bool pause()
Pauses the EventBuilderCore.
bool reinitialize(fhicl::ParameterSet const &pset)
Reinitializes the EventBuilderCore.
EventBuilderCore implements the state machine for the EventBuilder artdaq application. EventBuilderCore receives Fragment objects from the DataReceiverManager, and sends them to the EventStore.
bool shutdown()
Shuts Down the EventBuilderCore.
bool soft_initialize(fhicl::ParameterSet const &pset)
Soft-Initializes the EventBuilderCore. No-Op.
EventBuilderCore & operator=(EventBuilderCore const &)=delete
Copy Assignment operator is deleted.