Running artdaqDriver

See also Running a sample artdaq-demo system.

ArtdaqDriver is a single process which starts "fragment generator threads" as they would appear in the BoardReader
process. Additionally, it starts a thread which is similar to the datalogger thread that starts an artdaq process
to write a data file. So, configuration for:
  • the fragment generator
  • data logger art process and
  • overall control of the fragment generator
    must be supplied.

This configuration is similar to configuration in the separate BoardReader and DataLogger processes.
It would be nice to be able to take the BoardReader configuration and run it directly under artdaqDriver.
The closest to this would be to take the fhicl snippet below and combine it with the BoardReader fhicl
with the "daq:" table stripped:

Take the following and create "driver.fcl"

echo '
events_to_generate: 100000000
run_number: 101
debug_cout: true
transition_timeout: 30
event_builder: {
  expected_fragments_per_event: 1
  max_fragment_size_bytes: 0x200000
  buffer_count: 20  
  use_art: true
  print_event_store_stats: false
  verbose: true
  events_expected_in_SimpleQueueReader: @local::events_to_generate
  send_requests: false
physics: {
  p1: [  ]
  a1: [  ]
  e1: [ rootout ]
  #end_paths: [ e1 ]
  end_paths: [ ]
outputs: {
  rootout: {
    module_type: RootOutput
    fileName: "/data1/sbnddriveir1.root" 
    fastCloning: false
    compressionLevel: 0
  out1: {
    module_type: FileDumperOutput
    wantProductFriendlyClassName: true
source: {
  module_type: SBNDDAQInput
  waiting_time: 900
  resume_after_timeout: true
' >driver.fcl

Then combine it with the stripped BoardReader (for example pmtx01.fcl) creating pmtx01_driver.fcl:

( awk '/daq:/{next}{if(prv)print prv;prv=$0}' pmtx01.fcl; cat driver.fcl ) >|pmtx01_driver.fcl

Then run artdaqDriver with the resulting .fcl file:

artdaqDriver -c pmtx01_driver.fcl