What is a Service? (version 1)

Option facility to aid in the event processing task by providing data to one or more modules and by reacting to various stages, synchronization points, and states of the framework in order to maintain state.

Optional: user configuration can turn on/off, direct dependence by framework or user not required
Facility: means accessible by the whole program

Property: uses the activity registry for event notification

Special products / objects associated with each event:

  • Program state - RNG state * Distinguished - Raw data, Prescales, trigger path names

Service classification

We identified several properties of services that are important:

  • configuration by user * singleton access (one per thread) * dynamic loading (plugin) * lifetime management (coordinated with event processor that it is associated with) * event notifications (state changes, synchronization points, stages)

A = called from module code
B = provide optional info to user but not through code
C = provide general program configurability
D = provide data about event to appropriate places
E = internal feature of framework
X = remove me

  • CurrentModule (E) * RNG (A) * InitRootHandlers (E) * LoadAllDictionaries (E) * Lock (X) * Tracer (B) * Timing (B) * Updater (X) * PrintLoadingPlugins (X) * SimpleMemory (B) * UnixSignal (C) * EnableFPE (C) * TFile (A) * Prescale (D) * TriggerNames (D) * MessageLogger (X)

A, B remain services
CurrentModule is special - a built-in service
All other become not services, but initialized directly.