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.