Project

General

Profile

driver.cc configuration parameters

Based on experience in using driver.cc for ds50daq, we have updated the supported set of configuration parameters for this application.

As of 17-Dec-2012, the latest source code and configuration (FHICL) files on the develop branch in artdaq and the feature/board_reader branch in ds50daq are consistent with this scheme for configuring driver.cc, except for ds50daq/test/DAQ/driver_HW.fcl. This file is in active use, and I don't want to change it until the new version of driver.cc is part of a released version of artdaq.

Here are the parameters that are currently supported, as shown by an example FHICL file:

run_number: 10         # required
events_to_generate: 2  # required; zero means infinite

fragment_receiver:     # required
{
  generator: GenericFragmentSimulator    # required
  fragments_per_event: 5                 # generator-dependent
}

event_builder:         # required
{
  expected_fragments_per_event: @local::fragment_receiver.fragments_per_event  # required
  use_art: false       # required
  events_expected_in_SimpleQueueReader: @local::events_to_generate
  print_event_store_stats:  true    # optional
}

physics: {}  # required, with necessary contents, if use_art is true?

source: {}   # required, with necessary contents, if use_art is true?

process_name: DEVEL    # required if use_art is true?

Some additional information on these parameters:
  • run_number is a required parameter, and it is currently only used by the EventStore.
  • events_to_generate is an optional parameter, and it specifies the number of events to be generated (as the name implies). The special value of zero indicates that the program should not stop after a certain number of events. This parameter has a default value of zero.
  • fragment_receiver is a required parameter set, and it contains the configuration of the FragmentGenerator that will be used.
  • generator is a required parameter within the fragment_receiver parameter set, and it specifies the FragmentGenerator class to use when generating fragments.
  • fragments_per_event is an optional parameter for the GenericFragmentSimulator, and it specifies the number of fragments that should be created for each event. In general, the parameters that will appear in the fragment_receiver parameter set will depend on the FragmentGenerator class that is used.
  • event_builder is a required parameter set, and it contains parameters that control the event building and analysis stages of the application.
  • expected_fragments_per_event is a required parameter within the event_store parameter set, and it contains the expected number of fragments per event. This is used by the EventStore to determine when complete events have been received. In the example shown above, this parameter is set to the same value as the fragment_receiver.fragments_per_event parameter. This is a convenience to avoid having this value get out of sync. However, when using multiple generators or generators that don't require a fragments_per_event parameter, this value may need to be explicitly set.
  • use_art is a required parameter in the event_builder parameter set, and it tells the application whether to create an art instance for analyzing the data.
  • events_expected_in_SimpleQueueReader is a required parameter in the event_builder parameter set, if use_art is set to false. This parameter tells the SimpleQueueReader (the class that processes the events in the absence of art) how many events to expect. In this example, this parameter is set to the number of events to be generated to avoid these two values from getting out of sync.
  • print_event_store_stats is an optional parameter in the event_builder parameter set, and it specifies whether the statistics that are gathered in the EventStore class are written to disk when an EventStore instance is destructed.