Runtime sequence selection

Merged Roel Aaij requested to merge multiple_sequences into master

This MR implements a proposal for runtime sequence selection.

Sequences are detected by looking at the configuration/sequences directory and assuming that all .py files are a sequence. For each sequence a separate shared library is built (including These libraries are built and installed in the directory sequences relative to the location of

StreamWrapper has been refactored into the abstract base class IStream and for each processing thread a stream instance is created in Allen.cpp

At runtime, the location of is determined and used to get the location of the sequences directory. The correct shared library is then loaded and the factory function (create_sequence) is retrieved from the library. This is wrapped in a lambda that returns a unique_ptr<IStream>.

This feature is tested in all of the CI tests, because the sequence loading is always used. For the stack build, the feature is tested by running the Allen sequence without the GEC to calculate efficiencies in MooreAnalysis!34 (merged).


  • Update configuration of RunAllen in Moore to allow the name of the desired sequence to be configured from an options file; handled in Moore!792 (merged)
  • Decide in which order this should be merged relative to !429 (merged) and !532 (closed)

Partially addresses #215 (closed); the TCK part will be a future MR

Should be tested together with Moore!792 (merged) and MooreAnalysis!34 (merged)

Edited by Daniel Hugo Campora Perez

Merge request reports