Analysis  version 7.0 - august 2014
DocEventDescription.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file DocEventDescription.hh
3  *
4  * Fichier de documentation des bibliothèques Event.
5  *
6  */
7 //======================================================================
8 
9 
10 /*! \page event_description Description des bibliothèques Event et GuiEvent
11  *
12  * La bibliothèque Event fournit les outils de base pour l'analyse des
13  * données, indépendamment de leur provenance.
14  * C'est la classe de base EventManager qui orchestre les structures
15  * d'analyse:
16  * - la structure d'événement (classe Event) qui définit les paramètres
17  * des données à analyser;
18  * - les spectres (classe Spectrum) permettant de visualiser le contenu
19  * des paramètres, et les arbres (classe TreeInfo, permettant de définir
20  * des TTree au format ROOT) permettant d'extraire une partie des
21  * données;
22  * - les filtres (classe Filter) permettant de définir des conditions
23  * pour l'incrémentation des spectres et des arbres, et les contours
24  * (classe RContour) qui peuvent être utilisés pour la définition
25  * de filtres (la classe RContour fait partie des bibliothèques
26  * additionnelles pour ROOT).
27  *
28  * \par Classes de base des analyses
29  *
30  * Les analyses de données sont séparées en 2 types: les analyses de base
31  * (classe de base RunBase) et les analyses avec interface graphiques
32  * (classe de base GEVRunBase).
33  *
34  * La classe RunBase fournit un gestionnaire d'événement (classe EventManager)
35  * et les séquences de traitement des événements
36  * avec les fonctionnalités génériques pour les données d'entrée (ouverture
37  * fermeture de fichier, traitement d'événement,...).
38  * Ces fonctions sont précisées dans les classes spécifiques selon le type
39  * de données à lire.
40  *
41  * Exemples de séquencement (voir la documentation des fonctions):
42  *
43  * - lecture de fichiers individuels
44  * \code
45 
46  MyAnalysis run; // classe héritant de RunBase, via une classe spécifique
47  // selon le type de données
48 
49  // mode de fichier : fichier par fichier
50  run.SetFileMode(RunBase::runList);
51 
52  // selon le type d'analyse, il faut ou non spécifier un fichier avant
53  // l'initialisation (pour définir la structure d'événement)
54  run.SetFileName ( "MyRunFile_1" );
55  run.Init();
56 
57  // analyse de tous les événements d'un fichier
58  run.Open("MyRunFile_1");
59  run.AnalyseEvents(0);
60  run.Close();
61 
62  // analyse de 1000 événements d'un autre fichier
63  run.Open("MyRunFile_2");
64  run.AnalyseEvents(1000);
65  run.Close();
66 
67  // sauvegarde des histogrammes (définis en principe dans la fonction
68  // UserEventDefine() de la classe MyAnalysis
69  // (voir les fonctions utilisateurs ci-dessous)
70  run.SaveHistograms ( "MyHistoFile.root" );
71 
72  * \endcode
73  *
74  * - lecture d'une série de fichiers numérotés * \code MyAnalysis run; // classe héritant de RunBase, via une classe spécifique // selon le type de données // mode de fichier : liste numérotée de fichiers // ici la numérotation se fait sur 4 chiffres: 0001, 0002, ... run.SetFileMode(RunBase::runList); run.SetFilePattern ("MyRunFile_*.*"); run.SetFilePatternLen (4); run.SetFileNumbers ("1:3,6,8"); // initialisation run.Init(); // traitement complet de la sélection de fichiers: 1 à 3, 6 et 8 run.run(); // sauvegarde des histogrammes (définis en principe dans la fonction // UserEventDefine() de la classe MyAnalysis // (voir les fonctions utilisateurs ci-dessous) run.SaveHistograms ( "MyHistoFile.root" ); * \endcode * * \par Fonctions utilisateur * * La classe fait appel à des fonctions utilisateur spécifiques aux différentes * séquences du traitement. Ces fonctions ont vocation à être surchargées * (redéfinies) dans les classes dérivées (classes intermédiaires selon * le type de données et classes finales d'analyse définies par l'utilisateur). * * La classe RunBase définit les fonctions utilisateur suivantes (et leur * usage principal): * - UserEventDefine() : fonction appelée une seule fois avant le traitement * des données * - création de paramètres utilisateur en plus de ceux des données * - définition de spectres, d'arbres, de contours, de filtres... * - initialisations générales spécifiques à l'analyse (définies par * l'utilisateur) * - UserRunStart () : fonction appelée en début de chaque analyse d'un nouveau * fichier * - initialisation de données fichier par fichier (spectres, compteurs,...) * - UserEvent () : fonction de traitement d'un événement * - calcul des paramètres additionnels * - modification des autorisation d'incrémentation de spectres ou d'arbres * (hors de la gestion automatique par les filtres...) * - UserUpdate () : fonction appelée après les incrémentations automatiques de * spectres ou d'arbres * - analyse sur des spectres fraichement mis à jour * - UserRunStop () : fin de traitement d'un fichier de données * - sauvegarde de données fichier par fichier * * La classe ne définit pas de fonction utilisateur de fin de traitement, * mais ceci peut être codé après le traitement à l'aide des fonctions * de la classe RunBase (sauvegarde des histogrammes, ...) ou de fonctions * créées par l'utilisateur dans sa classe dérivée. * * * \par Interface graphique * * La bibliothèque GuiEvent fournit des classes supplémentaires pour * créer des interfaces graphiques à l'analyse des données. * En particulier, la classe GEVRunBase représente une interface de base * à la classe RunBase. * Elle permet de définir de façon interactive les spectres, arbres, filtres * et contours. * * Les paramètres utilisateurs ne peuvent pas être définis de façon interactive. * En effect, leur valeur doit de toute façon être calculée par du code * dans la fonction utilisateur UserEvent(). * Ces paramètres supllémentaires (ou paramètres calculés) doivent être * définis dans la fonction UserEventDefine() de la classe utilisateur. * * L'interface graphique permet de définir des pages graphiques dans * lesquelles afficher des spectres. * * La classe GEVRunBase définit de nouvelles fonctions utilisateur, pour * les nouvelles séquences liées à l'interactivité de l'analyse : * - UserRefresh () : fonction appelée lorsque l'affichage des pages de * spectres a été mis à jour (pour des tracés supplémentaires à * coder par l'utilisateur) * - UserReset () : fonction appelée lors d'une remise à zéro de l'analyse * (si des données spécifiques à l'analyse de l'utilisateur doivent être * réinitialisées) * - UserQuit () : lorsque l'interface graphique est quittée, l'objet est * détruit et toutes les analyses sont perdues (ce n'est pas le cas * lors de lafin d'analyse d'une classe sans interface graphique); * cette fonction permet de faire les sauvegardes des résultats avant * de détruire l'objet d'analyse. * * A la différence des classes de base sans interface graphique, objets * des classes héritant de GEVRunBase doivent être alloués de façon dynamique, * parce qu'une fois l'interface lancée, l'objet de la classe d'analyse * sera détruit à la fin de l'utilisation de l'interface. * * \code int main ( int argc, char *argv[] ) { // Création de l'application de fond qui interface ROOT et le système // d'exploitation TApplication app("App",&argc,argv); // Déclaration du gestionnaire de l'analyse // il doit être créé de façon dynamique (new) parce que lorsque // l'application graphique est terminée, l'objet est détruit // (delete). MyGuiAnalysis * run = new MyGuiAnalysis; // prédéfinition des conditions de fichier // (qui peuvent être modifiées dans l'interface) run->SetFileMode (RunBase::runList); // liste numérotée de fichiers run->SetFilePattern ("MyRunFile_*.*"); // forme des noms de fichier run->SetFilePatternLen (4); // numéro à 4 chiffres run->SetFileNumbers ("1:3,6,8"); // fichiers 1 à 3, 6 et 8 // on peut libérer un peu de CPU entre le traitement de 2 événements // (en millisecondes) run->SetWaitTime (0.1); // préinitialisation (facultative) run->Init(); // démarrage de l'interface graphique run->Run(); // il n'y a pas de 'delete', parce que c'est fait automatiquement // lorsqu'on quitte l'interface // Fin de traitement (interface entre ROOT et le système d'exploitation) gApplication->Terminate(0); return (0); } * \endcode * * * \par Classes d'analyse spécifiques * * \ref tree_run_analysis * * \ref simul_run_analysis * * * \par Informations complémentaires * * \ref event_release * * \ref event_compilation */
75  * \code
76 
77  MyAnalysis run; // classe héritant de RunBase, via une classe spécifique
78  // selon le type de données
79 
80  // mode de fichier : liste numérotée de fichiers
81  // ici la numérotation se fait sur 4 chiffres: 0001, 0002, ...
82  run.SetFileMode(RunBase::runList);
83  run.SetFilePattern ("MyRunFile_*.*");
84  run.SetFilePatternLen (4);
85  run.SetFileNumbers ("1:3,6,8");
86 
87  // initialisation
88  run.Init();
89 
90  // traitement complet de la sélection de fichiers: 1 à 3, 6 et 8
91  run.run();
92 
93  // sauvegarde des histogrammes (définis en principe dans la fonction
94  // UserEventDefine() de la classe MyAnalysis
95  // (voir les fonctions utilisateurs ci-dessous)
96  run.SaveHistograms ( "MyHistoFile.root" );
97 
98  * \endcode
99  *
100  * \par Fonctions utilisateur
101  *
102  * La classe fait appel à des fonctions utilisateur spécifiques aux différentes
103  * séquences du traitement. Ces fonctions ont vocation à être surchargées
104  * (redéfinies) dans les classes dérivées (classes intermédiaires selon
105  * le type de données et classes finales d'analyse définies par l'utilisateur).
106  *
107  * La classe RunBase définit les fonctions utilisateur suivantes (et leur
108  * usage principal):
109  * - UserEventDefine() : fonction appelée une seule fois avant le traitement
110  * des données
111  * - création de paramètres utilisateur en plus de ceux des données
112  * - définition de spectres, d'arbres, de contours, de filtres...
113  * - initialisations générales spécifiques à l'analyse (définies par
114  * l'utilisateur)
115  * - UserRunStart () : fonction appelée en début de chaque analyse d'un nouveau
116  * fichier
117  * - initialisation de données fichier par fichier (spectres, compteurs,...)
118  * - UserEvent () : fonction de traitement d'un événement
119  * - calcul des paramètres additionnels
120  * - modification des autorisation d'incrémentation de spectres ou d'arbres
121  * (hors de la gestion automatique par les filtres...)
122  * - UserUpdate () : fonction appelée après les incrémentations automatiques de
123  * spectres ou d'arbres
124  * - analyse sur des spectres fraichement mis à jour
125  * - UserRunStop () : fin de traitement d'un fichier de données
126  * - sauvegarde de données fichier par fichier
127  *
128  * La classe ne définit pas de fonction utilisateur de fin de traitement,
129  * mais ceci peut être codé après le traitement à l'aide des fonctions
130  * de la classe RunBase (sauvegarde des histogrammes, ...) ou de fonctions
131  * créées par l'utilisateur dans sa classe dérivée.
132  *
133  *
134  * \par Interface graphique
135  *
136  * La bibliothèque GuiEvent fournit des classes supplémentaires pour
137  * créer des interfaces graphiques à l'analyse des données.
138  * En particulier, la classe GEVRunBase représente une interface de base
139  * à la classe RunBase.
140  * Elle permet de définir de façon interactive les spectres, arbres, filtres
141  * et contours.
142  *
143  * Les paramètres utilisateurs ne peuvent pas être définis de façon interactive.
144  * En effect, leur valeur doit de toute façon être calculée par du code
145  * dans la fonction utilisateur UserEvent().
146  * Ces paramètres supllémentaires (ou paramètres calculés) doivent être
147  * définis dans la fonction UserEventDefine() de la classe utilisateur.
148  *
149  * L'interface graphique permet de définir des pages graphiques dans
150  * lesquelles afficher des spectres.
151  *
152  * La classe GEVRunBase définit de nouvelles fonctions utilisateur, pour
153  * les nouvelles séquences liées à l'interactivité de l'analyse :
154  * - UserRefresh () : fonction appelée lorsque l'affichage des pages de
155  * spectres a été mis à jour (pour des tracés supplémentaires à * coder par l'utilisateur) * - UserReset () : fonction appelée lors d'une remise à zéro de l'analyse * (si des données spécifiques à l'analyse de l'utilisateur doivent être * réinitialisées) * - UserQuit () : lorsque l'interface graphique est quittée, l'objet est * détruit et toutes les analyses sont perdues (ce n'est pas le cas * lors de lafin d'analyse d'une classe sans interface graphique); * cette fonction permet de faire les sauvegardes des résultats avant * de détruire l'objet d'analyse. * * A la différence des classes de base sans interface graphique, objets * des classes héritant de GEVRunBase doivent être alloués de façon dynamique, * parce qu'une fois l'interface lancée, l'objet de la classe d'analyse * sera détruit à la fin de l'utilisation de l'interface. * * \code int main ( int argc, char *argv[] ) { // Création de l'application de fond qui interface ROOT et le système // d'exploitation TApplication app("App",&argc,argv); // Déclaration du gestionnaire de l'analyse // il doit être créé de façon dynamique (new) parce que lorsque // l'application graphique est terminée, l'objet est détruit // (delete). MyGuiAnalysis * run = new MyGuiAnalysis; // prédéfinition des conditions de fichier // (qui peuvent être modifiées dans l'interface) run->SetFileMode (RunBase::runList); // liste numérotée de fichiers run->SetFilePattern ("MyRunFile_*.*"); // forme des noms de fichier run->SetFilePatternLen (4); // numéro à 4 chiffres run->SetFileNumbers ("1:3,6,8"); // fichiers 1 à 3, 6 et 8 // on peut libérer un peu de CPU entre le traitement de 2 événements // (en millisecondes) run->SetWaitTime (0.1); // préinitialisation (facultative) run->Init(); // démarrage de l'interface graphique run->Run(); // il n'y a pas de 'delete', parce que c'est fait automatiquement // lorsqu'on quitte l'interface // Fin de traitement (interface entre ROOT et le système d'exploitation) gApplication->Terminate(0); return (0); } * \endcode * * * \par Classes d'analyse spécifiques * * \ref tree_run_analysis * * \ref simul_run_analysis * * * \par Informations complémentaires * * \ref event_release * * \ref event_compilation */
156  * coder par l'utilisateur)
157  * - UserReset () : fonction appelée lors d'une remise à zéro de l'analyse
158  * (si des données spécifiques à l'analyse de l'utilisateur doivent être
159  * réinitialisées)
160  * - UserQuit () : lorsque l'interface graphique est quittée, l'objet est
161  * détruit et toutes les analyses sont perdues (ce n'est pas le cas
162  * lors de lafin d'analyse d'une classe sans interface graphique);
163  * cette fonction permet de faire les sauvegardes des résultats avant
164  * de détruire l'objet d'analyse.
165  *
166  * A la différence des classes de base sans interface graphique, objets
167  * des classes héritant de GEVRunBase doivent être alloués de façon dynamique,
168  * parce qu'une fois l'interface lancée, l'objet de la classe d'analyse
169  * sera détruit à la fin de l'utilisation de l'interface.
170  *
171  * \code
172 
173  int main ( int argc, char *argv[] )
174  {
175  // Création de l'application de fond qui interface ROOT et le système
176  // d'exploitation
177  TApplication app("App",&argc,argv);
178 
179 
180  // Déclaration du gestionnaire de l'analyse
181  // il doit être créé de façon dynamique (new) parce que lorsque
182  // l'application graphique est terminée, l'objet est détruit
183  // (delete).
184  MyGuiAnalysis * run = new MyGuiAnalysis;
185 
186  // prédéfinition des conditions de fichier
187  // (qui peuvent être modifiées dans l'interface)
188  run->SetFileMode (RunBase::runList); // liste numérotée de fichiers
189  run->SetFilePattern ("MyRunFile_*.*"); // forme des noms de fichier
190  run->SetFilePatternLen (4); // numéro à 4 chiffres
191  run->SetFileNumbers ("1:3,6,8"); // fichiers 1 à 3, 6 et 8
192 
193  // on peut libérer un peu de CPU entre le traitement de 2 événements
194  // (en millisecondes)
195  run->SetWaitTime (0.1);
196 
197  // préinitialisation (facultative)
198  run->Init();
199 
200  // démarrage de l'interface graphique
201  run->Run();
202 
203  // il n'y a pas de 'delete', parce que c'est fait automatiquement
204  // lorsqu'on quitte l'interface
205 
206 
207  // Fin de traitement (interface entre ROOT et le système d'exploitation)
208  gApplication->Terminate(0);
209 
210  return (0);
211  }
212  * \endcode
213  *
214  *
215  * \par Classes d'analyse spécifiques
216  *
217  * \ref tree_run_analysis
218  *
219  * \ref simul_run_analysis
220  *
221  *
222  * \par Informations complémentaires
223  *
224  * \ref event_release
225  *
226  * \ref event_compilation
227  */