La bibliothèque Event fournit les outils de base pour l'analyse des données, indépendamment de leur provenance. C'est la classe de base EventManager qui orchestre les structures d'analyse:
- la structure d'événement (classe Event) qui définit les paramètres des données à analyser;
- les spectres (classe Spectrum) permettant de visualiser le contenu des paramètres, et les arbres (classe TreeInfo, permettant de définir des TTree au format ROOT) permettant d'extraire une partie des données;
- les filtres (classe Filter) permettant de définir des conditions pour l'incrémentation des spectres et des arbres, et les contours (classe RContour) qui peuvent être utilisés pour la définition de filtres (la classe RContour fait partie des bibliothèques additionnelles pour ROOT).
- Classes de base des analyses
Les analyses de données sont séparées en 2 types: les analyses de base (classe de base RunBase) et les analyses avec interface graphiques (classe de base GEVRunBase).
La classe RunBase fournit un gestionnaire d'événement (classe EventManager) et les séquences de traitement des événements avec les fonctionnalités génériques pour les données d'entrée (ouverture fermeture de fichier, traitement d'événement,...). Ces fonctions sont précisées dans les classes spécifiques selon le type de données à lire.
Exemples de séquencement (voir la documentation des fonctions):
- lecture de fichiers individuels
MyAnalysis run;
run.SetFileMode(RunBase::runList);
run.SetFileName ( "MyRunFile_1" );
run.Init();
run.Open("MyRunFile_1");
run.AnalyseEvents(0);
run.Close();
run.Open("MyRunFile_2");
run.AnalyseEvents(1000);
run.Close();
run.SaveHistograms ( "MyHistoFile.root" );
*
- lecture d'une série de fichiers numérotés
MyAnalysis run;
run.SetFileMode(RunBase::runList);
run.SetFilePattern ("MyRunFile_*.*");
run.SetFilePatternLen (4);
run.SetFileNumbers ("1:3,6,8");
run.Init();
run.run();
run.SaveHistograms ( "MyHistoFile.root" );
*
- 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.
- 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.
int main ( int argc, char *argv[] )
{
TApplication app("App",&argc,argv);
MyGuiAnalysis * run = new MyGuiAnalysis;
run->SetFileMode (RunBase::runList);
run->SetFilePattern ("MyRunFile_*.*");
run->SetFilePatternLen (4);
run->SetFileNumbers ("1:3,6,8");
run->SetWaitTime (0.1);
run->Init();
run->Run();
gApplication->Terminate(0);
return (0);
}
*
- Classes d'analyse spécifiques
Analyses spécifiques des TTree/ROOT
Analyses spécifiques sans fichier d'entrée (simulation)
- Informations complémentaires
Versions des bibliothèques Event
Compilation et installation des bibliothèques Event