artdaq_demo  v3_06_01
ToySimulator.hh
1 #ifndef artdaq_demo_Generators_ToySimulator_hh
2 #define artdaq_demo_Generators_ToySimulator_hh
3 
4 // Some C++ conventions used:
5 
6 // -Append a "_" to every private member function and variable
7 
8 #include "artdaq-core-demo/Overlays/FragmentType.hh"
9 #include "artdaq-core-demo/Overlays/ToyFragment.hh"
10 #include "artdaq-core/Data/Fragment.hh"
11 #include "artdaq/Generators/CommandableFragmentGenerator.hh"
12 #include "fhiclcpp/fwd.h"
13 
14 #include "ToyHardwareInterface/ToyHardwareInterface.hh"
15 
16 #include <atomic>
17 #include <random>
18 #include <vector>
19 
20 namespace demo {
35 class ToySimulator : public artdaq::CommandableFragmentGenerator
36 {
37 public:
48  explicit ToySimulator( fhicl::ParameterSet const& ps );
49 
53  virtual ~ToySimulator();
54 
55 private:
63  bool getNext_( artdaq::FragmentPtrs& output ) override;
64 
65  // The start, stop and stopNoMutex methods are declared pure
66  // virtual in CommandableFragmentGenerator and therefore MUST be
67  // overridden; note that stopNoMutex() doesn't do anything here
68 
74  void start() override;
75 
81  void stop() override;
82 
87  void stopNoMutex() override {}
88 
89  std::unique_ptr<ToyHardwareInterface> hardware_interface_;
90  artdaq::Fragment::timestamp_t timestamp_;
91  int timestampScale_;
92  int rollover_subrun_interval_;
93 
94  ToyFragment::Metadata metadata_;
95 
96  // buffer_ points to the buffer which the hardware interface will
97  // fill. Notice that it's a raw pointer rather than a smart
98  // pointer as the API to ToyHardwareInterface was chosen to be a
99  // C++03-style API for greater realism
100 
101  char* readout_buffer_;
102 
103  FragmentType fragment_type_;
104  ToyHardwareInterface::DistributionType distribution_type_;
105  int generated_fragments_per_event_;
106  bool exception_on_config_;
107  bool dies_on_config_;
108 };
109 } // namespace demo
110 
111 #endif /* artdaq_demo_Generators_ToySimulator_hh */
DistributionType
Allow for the selection of output distribution.
ToySimulator(fhicl::ParameterSet const &ps)
ToySimulator Constructor.
virtual ~ToySimulator()
Shutdown the ToySimulator.
ToySimulator is a simple type of fragment generator intended to be studied by new users of artdaq as ...
Definition: ToySimulator.hh:35