GET library
|
For each channel, the input, output and reconstructed samples are related by transformation processes:
An example can be found in the ROOT macro example for a single channel with simulated signals.
The signal processing is performed at the channel level (GETChannel class). The channel data samples (input, output and reconstructed signals) and the processes between channels are illustrated in the figure below, for experimental or simulation data analysis.
The base functions to associate processes to GET objects (at channel level or for sets of channels from other GET objects) are mainly defined in the base class GETObject.
The processes can be defined either locally (the process belongs only to the object and is destroyed with the object), either externally (the process is created independently of the object, and it is not deleted when the object is destroyed).
When a process is set to a GET object, it can be recursively set to the children of the object: from GETSystem to GETCoBo, to GETAsAd, to GETAGet and to GETChannel. In such case, the process is created locally or externally for the parent object, and externally for all children (see also Sharing processes for several GET objects).
Basically, the processes may only apply to the signal samples defined in the GETChannel class. Nevertheless, it may often happen that exactly the same process should be applied on several or all channels. It may be the case mostly for filters, but it may also be the case for the response function and the input/output noise in the case of simulations.
Then the processes can be associated to any of the GET core objects, and not only the GETChannel: a process associated to a parent object can be shared by all the children objects.
This is achieved by the intermediate classes GETProcessLink. Each GET object contains such an object for each the processes types. The GETProcessLink class defines a pointer to the process itself, and it contains the information whether the process is defined locally (the process will be deleted with the object) or externally (the process is managed somewhere else, for example by a parent object).
For the response function, the filter and the noises processes, the GETObject functions to set the processes use:
The functions are: GETObject::SetResponse, GETObject::SetFilter, GETObject::SetNoiseIn and GETObject::SetNoiseOut. The input and output noise processes allow to add perturbations in the signals resulting from simulations. In principle, they may not be used for real signal analysis.
The correction processes may be slightly more complicated since they may be combined into many possible ways, especially when dealing with real experimental data. For example, baseline corrections, calibrations, or other processes may be used together, in various order.
Then, in addition to the GETObject::SetOutputCorrection functions that set a single output correction process, a special process is defined as a list of processes: the GETProcessSerie. Such a process can also be used for other types of processes (response function, filter or noise), but the GETObject does not provide functions to manage it automatically, and the processes from the serie have to be set manually for children objects (down to channels level).
In order to manage the series of output processes, the following functions are defined: