Analysis  version 7.0 - august 2014
Description des bibliothèques Event et GuiEvent

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; // classe héritant de RunBase, via une classe spécifique
    // selon le type de données
    // mode de fichier : fichier par fichier
    run.SetFileMode(RunBase::runList);
    // selon le type d'analyse, il faut ou non spécifier un fichier avant
    // l'initialisation (pour définir la structure d'événement)
    run.SetFileName ( "MyRunFile_1" );
    run.Init();
    // analyse de tous les événements d'un fichier
    run.Open("MyRunFile_1");
    run.AnalyseEvents(0);
    run.Close();
    // analyse de 1000 événements d'un autre fichier
    run.Open("MyRunFile_2");
    run.AnalyseEvents(1000);
    run.Close();
    // 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" );
    *
  • lecture d'une série de fichiers numérotés
    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" );
    *
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[] )
{
// 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);
}
*
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