Line data Source code
1 : #ifndef artdaq_Application_MPI2_DataLoggerCore_hh
2 : #define artdaq_Application_MPI2_DataLoggerCore_hh
3 :
4 : #include "artdaq/Application/DataReceiverCore.hh"
5 :
6 : namespace artdaq {
7 : class DataLoggerCore;
8 : }
9 :
10 : /**
11 : * \brief DataLoggerCore implements the state machine for the DataLogger artdaq application.
12 : * DataLoggerCore processes incoming events in one of three roles: Data Logger, Online Monitor, or Dispatcher.
13 : */
14 : class artdaq::DataLoggerCore : public DataReceiverCore
15 : {
16 : public:
17 : /**
18 : * \brief DataLoggerCore Constructor.
19 : */
20 0 : DataLoggerCore() = default;
21 :
22 : /**
23 : * \brief Copy Constructor is deleted
24 : */
25 : DataLoggerCore(DataLoggerCore const&) = delete;
26 :
27 : /**
28 : * Destructor.
29 : */
30 0 : ~DataLoggerCore()
31 0 : {
32 0 : TLOG(TLVL_DEBUG + 32) << "Destructor";
33 0 : }
34 :
35 : /**
36 : * \brief Copy Assignment operator is deleted
37 : * \return DataLoggerCore copy
38 : */
39 : DataLoggerCore& operator=(DataLoggerCore const&) = delete;
40 : DataLoggerCore(DataLoggerCore&&) = delete; ///< Move Constructor is deleted
41 : DataLoggerCore& operator=(DataLoggerCore&&) = delete; ///< Move Assignment Operator is deleted
42 :
43 : /**
44 : * \brief Processes the initialize request.
45 : * \param pset ParameterSet used to configure the DataLoggerCore
46 : * \return Whether the initialize attempt succeeded
47 : *
48 : * \verbatim
49 : * DataLoggerCore accepts the following Parameters:
50 : * "daq" (REQUIRED): FHiCL table containing DAQ configuration
51 : * "DataLogger" (REQUIRED): FHiCL table containing DataLogger paramters
52 : * "expected_events_per_bunch" (REQUIRED): Number of events to collect before sending them to art
53 : * "enq_timeout" (Default: 5.0): Maximum amount of time to wait while enqueueing events to the ConcurrentQueue
54 : * "is_data_logger": True if the DataLogger is a Data Logger
55 : * "is_online_monitor": True if the DataLogger is an Online Monitor. is_data_logger takes precedence
56 : * "is_dispatcher": True if the DataLogger is a Dispatcher. is_data_logger and is_online_monitor take precedence
57 : * NOTE: At least ONE of these three parameters must be specified.
58 : * "inrun_recv_timeout_usec" (Default: 100000): Amount of time to wait for new events while running
59 : * "endrun_recv_timeout_usec" (Default: 20000000): Amount of time to wait for additional events at EndOfRun
60 : * "pause_recv_timeout_usec" (Default: 3000000): Amount of time to wait for additional events at PauseRun
61 : * "onmon_event_prescale" (Default: 1): Only send 1/N events to art for online monitoring (requires is_data_logger: true)
62 : * "verbose" (Default: true): Whether to print transition messages
63 : * "metrics": FHiCL table containing configuration for MetricManager
64 : * "outputs" (REQUIRED): FHiCL table containing output parameters
65 : * "normalOutput" (REQUIRED): FHiCL table containing default output parameters
66 : * "fileName" (Default: ""): Name template of the output file. Used to determine output directory
67 : * \endverbatim
68 : * Note that the "DataLogger" ParameterSet is also used to configure the EventStore. See that class' documentation for more information.
69 : */
70 : bool initialize(fhicl::ParameterSet const& pset) override;
71 : };
72 :
73 : #endif
74 :
75 : // LocalWords: ds
|