GET library
GETDocProcess.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file GETDocProcess.hh
3  *
4  * Documentation page related to the processes to be applied of
5  * signal.
6  */
7 //======================================================================
8 
9 //======================================================================
10 /*! \page get_page_process Signal processing classes
11  *
12  * For each channel, the \b input, \b output and \b reconstructed samples
13  * are related by transformation processes:
14  *
15  * - the \b correction processes (GETSignalModifier class) that are
16  * essentially for use with experimental data;
17  *
18  * - the channel \b response function (GETResponse class) that is used
19  * for the transformation of simulation inputs into GET system
20  * outputs (convolution), of for the reconstruction of the effective
21  * charge deposit from the output data of the channels;
22  *
23  * - the reconstruction \b filter (GETFilter class), needed for the
24  * reconstruction of charge deposit, because of the noise that
25  * creates large oscillation at deconvolution stage;
26  *
27  * - the simulation input/output \b noise (GETNoise class).
28  *
29  * An example can be found in the ROOT macro example for a single channel
30  * with simulated signals.
31  *
32  * The signal processing is performed at the channel level (GETChannel
33  * class).
34  * The channel data samples (input, output and reconstructed signals) and
35  * the processes between channels are illustrated in the figure below,
36  * for experimental or simulation data analysis.
37  *
38  * \image html GETChannelAnalysis.png
39  *
40  *
41  * \section get_process_setting Setting processes
42  *
43  * The base functions to associate processes to GET objects (at channel level
44  * or for sets of channels from other GET objects) are mainly defined in
45  * the base class GETObject.
46  *
47  * The processes can be defined either locally (the process belongs only
48  * to the object and is destroyed with the object), either externally
49  * (the process is created independently of the object, and it is not
50  * deleted when the object is destroyed).
51  *
52  * When a process is set to a GET object, it can be recursively set to
53  * the children of the object: from GETSystem to GETCoBo, to GETAsAd,
54  * to GETAGet and to GETChannel.
55  * In such case, the process is created locally or externally for the parent
56  * object, and externally for all children (see also \ref get_process_sharing).
57  *
58  *
59  * \subsection get_process_sharing Sharing processes for several GET objects
60  *
61  * Basically, the processes may only apply to the signal samples defined in
62  * the GETChannel class.
63  * Nevertheless, it may often happen that exactly the same process should
64  * be applied on several or all channels.
65  * It may be the case mostly for filters, but it may also be the case for
66  * the response function and the input/output noise in the case of
67  * simulations.
68  *
69  * Then the processes can be associated to any of the GET core objects,
70  * and not only the GETChannel: a process associated to a parent object
71  * can be shared by all the children objects.
72  *
73  * This is achieved by the intermediate classes GETProcessLink.
74  * Each GET object contains such an object for each the processes types.
75  * The GETProcessLink class defines a pointer to the process itself, and
76  * it contains the information whether the process is defined
77  * \b locally (the process will be deleted with the object) or
78  * \b externally (the process is managed somewhere else, for example
79  * by a parent object).
80  *
81  *
82  * \subsection get_process_setting_response Setting response function, filters and noise
83  *
84  * For the <B>response function</B>, the \b filter and the \b noises
85  * processes, the GETObject functions to set the processes use:
86  * - a \b pointer argument to set the process as local (if the pointer is
87  * NULL, if a process was previously defined, it is removed);
88  * - a \b reference argument set the process as external.
89  *
90  * \code
91  GETSystem * syst = new GETSystem(...);
92  //[...set properties for the system...]
93 
94  GETResponse * resp = new GETResponse(...);
95  //[...set properties for response function process...]
96 
97  // set the response function locally for cobo module #0
98  (*syst)[0].SetResponse ( resp );
99 
100  // set the response function externally for cobo module #1
101  (*syst)[0].SetResponse ( &resp );
102 
103  \endcode
104  *
105  * The functions are: GETObject::SetResponse, GETObject::SetFilter,
106  * GETObject::SetNoiseIn and GETObject::SetNoiseOut.
107  * The input and output noise processes allow to add perturbations in the
108  * signals resulting from simulations.
109  * In principle, they may not be used for real signal analysis.
110  *
111  *
112  * \subsection get_process_setting_correction Setting output signal corrections
113  *
114  * The correction processes may be slightly more complicated since they
115  * may be combined into many possible ways, especially when dealing with
116  * real experimental data.
117  * For example, baseline corrections, calibrations, or other processes
118  * may be used together, in various order.
119  *
120  * Then, in addition to the GETObject::SetOutputCorrection functions
121  * that set a single output correction process, a special process
122  * is defined as a list of processes: the GETProcessSerie.
123  * Such a process can also be used for other types of processes (response
124  * function, filter or noise), but the GETObject does not provide
125  * functions to manage it automatically, and the processes from the
126  * serie have to be set manually for children objects (down to channels
127  * level).
128  *
129  * In order to manage the series of output processes, the following functions
130  * are defined:
131  * - GETObject::SetOutputCorrectionList to define the output correstions
132  * as a serie;
133  * - GETObject::AddOutputCorrection to set a new output correction in the
134  * serie.
135  *
136  *
137  * \section get_process_processes Processes types
138  *
139  *
140  * \subsection get_process_response Response function processes: the GETResponse class
141  *
142  *
143  * \subsection get_process_filter Filter processes: the GETFilter class
144  *
145  *
146  * \subsection get_process_correction Signal correction processes
147  *
148  *
149  *
150  */
151 //======================================================================
152