Simulation service




Some times reconstruction programs must operate over simulated measurements. However, in general the user must provide the classes and methods that allow the interface between simulation and reconstruction, which is not always an easy task. The RecPack simulation service solves this problem by generating simulated measurements with the data format required by the rest of the services.

The user must declare the active Volume's and Surface's (the ones that produce measurements), and specify the measurement type in each of them. Active surfaces produce a measurement when they are intersected, while active volumes produced measurements through dynamic stepping (see navigation service).

Given a simulation seed (State), the simulation service uses the navigation service to produce an ideal Trajectory inside the setup. Then, a special Inspector (``MeasSimulator'') creates ideal Measurement's (according to Eq.~\ref{eq:proj}) in the active Volume's or Surface's by calling the Projector corresponding to the measurement type in that volume or surface, and adds the propagation noise (i.e. multiple scattering) and experimental errors.

This simple simulator does not attempt to be a full simulator (i.e. Geant4). Instead, its main purpose is to serve as a debugging tool or as a fast simulator. For example, it is very useful to validate new Model's, Fitter's, Volume types, Noiser's, etc. It can be also used for analysis as a fast simulator. Existing simulation toolkits, as Geant4, could be easily integrated into RecPack by implementing the Simulator interface and the Inspector's that generate measurements in the different subdetectors. Such an inspectors should be able to access the Geant4 information and then use it to create specific Measurement's.

The Measurement's produced by a Simulator are stored in a std::vector, which can be directly passed to the relevant RecPack services for pattern recognition, fitting, etc.