The settings file reference

To return to the main DAQInterface wiki, click on Artdaq-daqinterface

The settings file contains parameters used when running DAQInterface that are rarely meant to be changed. DAQInterface reads it in when it's launched, and finds it via the DAQINTERFACE_SETTINGS environmental variable. The contents of the file typically looks something like the following (infile #comments excluded):

log_directory: /tmp
data_directory_override: /tmp
record_directory: $HOME/run_records
package_hashes_to_save: [ artdaq-demo, artdaq-core-demo, artdaq ]
productsdir_for_bash_scripts: $HOME/path_to_product_dir_not_yet_defined/products

boardreader timeout: 60
eventbuilder timeout: 30
datalogger timeout: 30
dispatcher timeout: 30
routing_master timeout: 30

advanced_memory_usage: true

You'll want to change many of these parameters when using DAQInterface to run an experiment's software (dune-artdaq, sbnd-artdaq, etc.). With that in mind, these parameters can be described as follows, starting with those whose presence in the file is required:
  • log_directory refers to the location on the filesystem where you want the artdaq logfiles produced when running your DAQ to be saved. "/tmp" is not a good location.
  • record_directory refers to the directory on your host where metadata, etc., about the runs you'll perform gets saved; this is referred to below as the "run records directory", and you'll need to create it. If you expect other users may use the run records directory you created, make sure to set permissions accordingly.
  • productsdir_for_bash_scripts refers to the products/ directory where Bash scripts (e.g.,, which you've already used) will search for the xmlrpc_c package in order for them to send xmlrpc commands to artdaq processes; most likely this is either in the products/ directory local to the installation of the artdaq-based system you plan to use, or in some common products/ area on the host. Note that you can specify more than one directory, provided each directory is separated from the other by a colon (e.g., "/systemwide/products/directory:$HOME/myproducts/directory")
  • max_fragment_size_bytes describes the largest fragment produced by a boardreader which DAQInterface should expect to handle; if you know you'll have fragments larger than the default setting in your experiment, you'll want to increase its value. But see advanced_memory_usage, below, and the memory management details section for complete info on how to get DAQInterface to manage memory buffer sizes. Hex values are supported but need to be prefaced with an "0x"; e.g., setting max_fragment_size_bytes to "0xfa000" is equivalent to setting it to "1024000".

There are also many optional parameters:

  • boardreader timeout, eventbuilder timeout, datalogger timeout, dispatcher timeout and routing_master timeout These are the optional process timeout parameters, expressed in seconds. One may wish to fine-tune these timeouts depending on an experiment's conditions.
  • package_hashes_to_save refers to the names of the packages installed in the srcs/ subdirectory set up during the MRB installation of the artdaq-based DAQ system whose git commit hashes you want saved in the run records directory for a given run. If the source repo isn't available, then the package version rather than the git commit hash will be saved instead.
  • data_directory_override If it appears in the settings file then *.root files get saved to the directory specified by this parameter, rather than the directory specified by the fileName parameter of art's RootOutput module. If you set this, please make sure all experimenters are aware of this so they know where to look for *.root files after a run.
  • max_configurations_to_list This only affects DAQInterface if its taking its configurations from an artdaq_database instance, rather than the local filesystem. As configuration databases for experiments can often get filled with hundreds or even thousands of configurations, setting this parameter to <N> ensures that only the <N> most recent configurations will be listed by the command.
  • disable_unique_rootfile_labels By default, if there are rootfiles output by multiple artdaq processes (EventBuilders + DataLoggers), then DAQInterface will insert a token of the form "_dl<N>" before the .root extension for DataLoggers (where <N> means the <N>th DataLogger) and similarly with _eb for EventBuilders. In this way, you can ensure that output files have unique names and can also tell you how many processes were writing out data for a given run. If you wish to disable this feature, set disable_unique_rootfile_labels to false. Be aware that if you choose this option, you don't want to write output files with the same name listed in the art module on the same host, otherwise you'll lose data
  • use_messageviewer By default, if windowing is supported and artdaq_mfextensions is installed, a MessageViewer window will pop up during runs which will print out messages from the artdaq processes. If you wish to disable this feature, set use_messageviewer to false.
  • fake_messagefacility When set to true, DAQInterface will format its print statements to appear like MessageFacility messages
  • boardreader_priorities Formatted as a set of regular expressions, e.g.:"boardreader_priorities: component01 component.* .*", this tells DAQInterface how to order the transition commands it sends the boardreader processes. In this example, in the case of "init" (during the config transition), "start" (during the start transition) and "stop" (during the stop transition), DAQInterface would first send the command for component01, wait for a successful response, and then send the commands in no particular order to the remaining componentXX boardreaders, and then finally send the commands in no particular order to all boardreaders which don't begin with "component". For terminate, the shutdown transition order doesn't matter, so the order is ignored in order to parallelize the sending of the shutdowns as much as possible. Note that the regular expressions you list need to cover all possible boardreader names; a guaranteed way to do that would be to finish the list with a ".*" .
  • boardreader_priorities_on_config/boardreader_priorities_on_start/boardreader_priorities_on_stopThese three parameters take lists in exactly the same way as "boardreader_priorities", except that as their names suggest, they only send commands to boardreaders in order for one of the DAQInterface transitions. You can use one, two, or all of them, but be aware: they're mutually exclusive of "boardreader_priorities", meaning DAQInterface will throw an exception if it sees you've got both the transition-independent "boardreader_priorities" and any of these transition-specific priority parameters defined in the settings file.
  • transfer_plugin_to_use The name of the transfer plugin to use to send data between processes; defaults to "Autodetect". Only set this if you're sure you know what you're doing.
  • advanced_memory_usage Defaults to "true". If set to "false", a parameter called max_fragment_size_bytes must be set, defining the universal maximum size of BoardReader fragments the system can handle. The setting of advanced_memory_usage determines the size of fragments and events which can pass through the artdaq system. advanced_memory_usage allows for more sophisticated fine-tuning of these sizes, and warrants its own section. Info is provided in the memory management details section .
  • disable_private_network_bookkeeping Defaults to "false". After reading in FHiCL documents from a (sub)config and before sending them to the artdaq processes, by default DAQInterface will modify parameters related to artdaq features such as the sending of requests to boardreaders and use of a routing_master so as to try to take advantage of available private networks. How it does so is described here . If you don't want this feature, set disable_private_network_bookkeeping to "true".