Multi-threaded HENP Event Reconstruction

View project on GitHub
Welcome Tutorial How-to guides Principles Reference


This section describes the underlying machinery of JANA. This is essentially a launchpad into Doxygen.

Main API

  • JApplication: The main entry point into the program
  • JObject: Data containers for specific results
  • JEventSource: From a file or messaging producer, expose a stream of events. Each event is an aggregate of JObjects
  • JFactory: Given an event, calculate a specific result, potentially calling other JFactories recursively to obtain any prereqs
  • JEventProcessor: Run desired JFactories over the event stream, writing results to an output file or messaging consumer

Streaming Extensions

User-facing utilities

  • JParameter: Configure the behavior of components at runtime
  • JLogger: Publish debugging information to standard out in a structured, convenient, threadsafe way
  • JService: Share external (stateful) services such as calibration constants and magnetic field maps
  • JCsvWriter: Conveniently debug a JFactory by writing its generated JObjects to CSV

Internal services

  • JLoggingService: Furnish the user with a logger already configured for that particular component
  • JParameterManager: Furnish the user with parameters extracted from command line flags and configuration files

Parallelism engine

  • JProcessingController: The interface which any parallelism engine must adhere to
  • JArrowProcessingController: The entry point into the “Arrow” engine
  • JWorker: Contains the loop for each worker thread, along with startup/shutdown logic and encapsulated worker state.
  • JScheduler: Contains the logic for giving a worker a new assignment