Project

General

Profile

art framework parameters

This page describes all the parameters currently understood by the art framework, including framework-provided services and modules. The parameters are organized by category (module, service or miscellaneous), preceded by a general introduction to the expected overall structure of an art FHiCL configuration document.

The parameters are described in tables for each module. The type of a defined parameter may be:

  • TABLE
    A nested parameter set.
    set: { par1: 3 }
  • SEQUENCE
    A homogeneous sequence of items.
    list: [ 1, 1, 2, 3, 5, 8 ]
  • STRING
    A string (enclosing double quotes not required when the string matches [A-Za-z_][A-Za-z0-9_]*).
    simpleString: g27
    harderString: "a-1" 
    sneakystring1: "nil" 
    sneakystring2: "true" 
    sneakystring3: "false"
  • COMPLEX
    A complex number.
    cnum: (3, 5)
  • NUMBER
    A scalar (integer or floating point).
    num: 2.79E-8
  • BOOL
    A boolean.
    tbool: true
    fbool: false

The expected structure of an art configuration file

Note, any parameter set is optional, although certain parameters or sets are expected to be in particular locations if defined.

# Prolog (as many as desired, but they must all be contiguous with only
# whitespace or comments inbetween. 
BEGIN_PROLOG
pset: {
  nested_pset: {
    v1: [ a, b, "c-d" ]
    b1: false
    c1: 29
  }
}
END_PROLOG

# Defaulted if missing: you should define it in most cases.
process_name: PNAME

# Descriptions of service and general configuration.
services: {
  # Parameter sets for known, built-in services and
  # for user-provided services here.
  # ...

  # General configuration options here.
  scheduler:  {
  }
}

# Define what you actually want to do here.
physics: {
  # Parameter sets for modules inheriting from EDProducer.
  producers:  {
    myProducer: {
      module_type: MyProducer
      nested_pset: @local::pset.nested_pset
    }
  }

  # Parameter sets for modules inheriting from EDFilter.
  filters: {
    myFilter: { module_type: SomeFilter }
  }

  # Parameter sets for modules inheriting from EDAnalyzer.
  analyzers: {
    myAnalyzer: { module_type: SomeAnalyzer }
  }

  # Define parameters which are lists of names of module sets for
  # inclusion in end_paths and trigger_paths.

  p1: [ myProducer, myFilter ]
  e1: [ myAnalyzer, myOutput ]

  # Only necessary to define trigger_paths and end_paths if a defined path should
  # be omitted from processing--in that case, only the paths specified in trigger_paths
  # and end_paths will run.

  trigger_paths: [ p1 ]
  end_paths: [ e1 ]
}

# The primary source of data: expects one and only one input source
parameter set.
source: {
}

# Parameter sets for output modules should go here.
outputs: {
  myOutput: { module_type: SomeOutput } 
}

Return codes from running art

Here are many of the return codes (those in parentheses correspond to return codes in versions before art 1.16.00):

1         - a command-line option has been chosen such that no data is processed
65 (8001) - a cet::exception was caught and processed in main, $? == 65
66 (8002) - an std::exception was caught and processed in main, $? == 66
67 (8003) - an unknown exception was caught and processed in main, $? == 67
68 (8004) - an std::bad_alloc was caught in main, $? == 68
88 (7000) - "Exception from command line processing …”, $? == 88
89 (7001) - Checking of command-line options failed, $? == 89
90 (7002) - Processing of command-line options failed, $? == 90
91 (7003) - Failed to create a parameter set from parsed configuration with exception, $? == 91

Return code upon signal trapping

By default, the configuration parameter services.scheduler.errorOnSIGINT is set to true. This tells art that upon receiving a signal from the operating system (e.g. Ctrl+c), the code to return is 128+n, where n is the signal number as described via kill -l.

Keep in mind that the return code only uses the lower eight bits, meaning the values cycle from 0 to 255.

Services.

See ART available services.

Sources.

Modules.

Build-in prescaler modules

art has two built-in prescaler modules. Here are example configurations for both.

filters:
{
   oneOfN : 
   {
      # accept 1 out of n, the one accepted will be at the offset
      module_type: Prescaler 
      prescaleFactor: 10 # n, no default
      prescaleOffset: 0 # no default
   }

   mOfN : 
   {
      # accept first m out of n after the offset (the start the m will be at the offset of the block)
      module_type: BlockingPrescaler 
      blockSize: 10 # default is 1, this is m
      stepSize: 2 # no default, this is n
      offset: 0 # defaults is 0, where to start in 
   }

}

Output modules.