Analysis  version 7.0 - august 2014
SimulRun.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file SimulRun.hh
3  *
4  * Déclaration de la classe SimulRun, classe de base pour générer
5  * des simulation (analyses sans fichier d'entrée).
6  */
7 //======================================================================
8 
9 
10 #ifndef SIMUL_RUN_HH
11 #define SIMUL_RUN_HH
12 
13 #include "RunBase.hh"
14 
15 //======================================================================
16 /*! \class SimulRun
17  *
18  * C'est une classe de base pour générer des simulations (runs sans
19  * fichier d'entrée).
20  *
21  * C'est une classe abstraite: elle doit être dérivée.
22  * La classe dérivée doit définir les fonctions suivantes :
23  * - \b CreateEvent : création des paramètres bruts de la simulation
24  * - \b FillRawEvent : affectation des paramètres bruts
25  * L'utilisation de ces fonctions est facultative : tous les paramètres
26  * peuvent être créés et remplis dans les fonctions utilisateur
27  * (UserEventDefine et UserEvent).
28  *
29  * Les données "brutes" des événements sont simulées et ne nécessitent
30  * donc pas de fichier d'entrée.
31  * Néanmoins, on définit tout de même des pseudo-fichiers, avec un numéro
32  * et un nom, pour la création automatique des TTree en sortie:
33  * - numéro pour les TTrees avec un format numérique dans leur nom;
34  * - nom pour les TTrees avec dans leur nom le nom du fichier d'entrée;
35  *
36  * Ceci n'a d'intérêt que pour identifier des résultats en sortie
37  * (TTree ou autre).
38  * Si ce n'est pas le cas, il n'y a pas lieu de s'en préoccuper,
39  *
40  *
41  * Les pseudo-fichiers utilisent également un nombre maximum d'événements.
42  * Lorsque ce nombre a été généré, le numéro de fichier est incrémenté. * Si ce nombre d'événements vaut 0, alors il n'y a pas de limite au * pseudo-fichier. * * Exemples: * * - exécution d'une simulation de 1000 événements * \code MyClass run; run.Init(); run.SetMaxRunEvents ( 0 ); run.Open ( ); run.AnalyseEvents ( 1000 ); run.Close ( ); * \endcode * * - exécution d'une série de 3 simulations de 1000 événements * \code MyClass run; run.Init(); run.SetMaxRunEvents ( 1000 ); run.Open ( 0 ); // numéro de pseudo-fichier incrémenté automatiquement run.AnalyseEvents ( 0 ); run.Close ( ); run.Open ( 0 ); // numéro de pseudo-fichier incrémenté automatiquement run.AnalyseEvents ( 0 ); run.Close ( ); run.Open ( 0 ); // numéro de pseudo-fichier incrémenté automatiquement run.AnalyseEvents ( 0 ); run.Close ( ); * \endcode * * - exécution d'une série de simulations (runs 4, 5, 6, 8) de 500 événements * \code MyClass run; run.Init(); run.SetMaxRunEvents ( 500 ); run.SetFileMode(RunBase::runList); run.SetFileNumbers ( "4:6,8" ); run.Run(); * \endcode */ class SimulRun : virtual public RunBase { //---------------------------------------------------------------------- /*! \object_doc */ GObjectV(SimulRun); //---------------------------------------------------------------------- protected: bool event_created; ///< Test si l'arbre a été initialisé u_int raw_param_num; ///< Nombre de paramètres bruts de la simulation bool file_open; ///< Test processing of a series is started int run_max_event; ///< Nombre d'événement avant incrémentation du numéro de fichier public: // constructeur par défaut SimulRun ( ); // destructeur virtual ~SimulRun ( ); protected: // constructeur de recopie SimulRun ( const SimulRun &original ); public: // fonctions abstraites de la classe de base virtual int Open ( ); virtual int Open ( const string &f_name ); virtual int Open ( const u_int f_num ); virtual bool IsOpen ( ); virtual int Close ( ); virtual int RunInit ( ); virtual int ReadEvent ( ); virtual void SetMaxRunEvents ( const int n ); virtual int GetMaxRunEvents ( ) const; // Lecture d'un ensemble d'événements virtual int AnalyseEvents ( const u_int n ); protected: virtual int FileOpen ( ); virtual void FileClose ( ); // création de la structure d'événement virtual int CreateEvent ( ); virtual void FillRawEvent ( ); //---------------------------------------------------------------------- public: // fonction court-circuitées de la classe de base du fait // de l'absence de fichier réel virtual void SetFileMode ( const Int_t mode ); //---------------------------------------------------------------------- // pour ROOT... public: /*! Définition à usage de ROOT... */ ClassDef(SimulRun,0); }; //====================================================================== // FONCTIONS INLINE //====================================================================== /*! Définit le nombre d'événements par run de simulation. * \param n nombre maxi d'événements */ inline void SimulRun::SetMaxRunEvents ( const int n ) { run_max_event = (n > 0) ? n : 0; } /*! Retourne le nombre d'événements par run de simulation.*/ inline int SimulRun::GetMaxRunEvents ( ) const { return ( run_max_event ); } //====================================================================== #endif
43  * Si ce nombre d'événements vaut 0, alors il n'y a pas de limite au
44  * pseudo-fichier.
45  *
46  * Exemples:
47  *
48  * - exécution d'une simulation de 1000 événements
49  * \code
50  MyClass run;
51 
52  run.Init();
53  run.SetMaxRunEvents ( 0 );
54 
55  run.Open ( );
56  run.AnalyseEvents ( 1000 );
57  run.Close ( );
58  * \endcode
59  *
60  * - exécution d'une série de 3 simulations de 1000 événements
61  * \code
62  MyClass run;
63 
64  run.Init();
65  run.SetMaxRunEvents ( 1000 );
66 
67  run.Open ( 0 ); // numéro de pseudo-fichier incrémenté automatiquement
68  run.AnalyseEvents ( 0 );
69  run.Close ( );
70 
71  run.Open ( 0 ); // numéro de pseudo-fichier incrémenté automatiquement
72  run.AnalyseEvents ( 0 );
73  run.Close ( );
74 
75  run.Open ( 0 ); // numéro de pseudo-fichier incrémenté automatiquement
76  run.AnalyseEvents ( 0 );
77  run.Close ( );
78  * \endcode
79  *
80  * - exécution d'une série de simulations (runs 4, 5, 6, 8) de 500 événements
81  * \code
82  MyClass run;
83 
84  run.Init();
85  run.SetMaxRunEvents ( 500 );
86 
87  run.SetFileMode(RunBase::runList);
88  run.SetFileNumbers ( "4:6,8" );
89  run.Run();
90  * \endcode
91  */
92 class SimulRun : virtual public RunBase
93 {
94 //----------------------------------------------------------------------
95  /*! \object_doc */
97 //----------------------------------------------------------------------
98 
99  protected:
100  bool event_created; ///< Test si l'arbre a été initialiséce313e4905@
101 
102  u_int raw_param_num; ///< Nombre de paramètres bruts de la simulation
103 
104  bool file_open; ///< Test processing of a series is started
105  int run_max_event; ///< Nombre d'événement avant incrémentation du numéro de fichier
106 
107  public:
108  // constructeur par défaut
109  SimulRun ( );
110 
111  // destructeur
112  virtual ~SimulRun ( );
113 
114  protected:
115  // constructeur de recopie
116  SimulRun ( const SimulRun &original );
117 
118  public:
119  // fonctions abstraites de la classe de base
120  virtual int Open ( );
121  virtual int Open ( const string &f_name );
122  virtual int Open ( const u_int f_num );
123  virtual bool IsOpen ( );
124  virtual int Close ( );
125 
126  virtual int RunInit ( );
127  virtual int ReadEvent ( );
128 
129  virtual void SetMaxRunEvents ( const int n );
130  virtual int GetMaxRunEvents ( ) const;
131 
132  // Lecture d'un ensemble d'événements
133  virtual int AnalyseEvents ( const u_int n );
134 
135  protected:
136  virtual int FileOpen ( );
137  virtual void FileClose ( );
138 
139  // création de la structure d'événement
140  virtual int CreateEvent ( );
141  virtual void FillRawEvent ( );
142 
143 //----------------------------------------------------------------------
144  public:
145 
146  // fonction court-circuitées de la classe de base du fait
147  // de l'absence de fichier réel
148  virtual void SetFileMode ( const Int_t mode );
149 
150 //----------------------------------------------------------------------
151 // pour ROOT...
152  public:
153  /*! Définition à usage de ROOT... */
154  ClassDef(SimulRun,0);
155 };
156 
157 
158 //======================================================================
159 // FONCTIONS INLINE
160 //======================================================================
161 
162 /*! Définit le nombre d'événements par run de simulation.
163  * \param n nombre maxi d'événements
164  */
165 inline void SimulRun::SetMaxRunEvents ( const int n )
166  { run_max_event = (n > 0) ? n : 0; }
167 
168 /*! Retourne le nombre d'événements par run de simulation.*/
169 inline int SimulRun::GetMaxRunEvents ( ) const
170  { return ( run_max_event ); }
171 
172 
173 //======================================================================
174 #endif
virtual void SetMaxRunEvents(const int n)
Definition: SimulRun.hh:165
virtual void FileClose()
Definition: SimulRun.cpp:224
virtual bool IsOpen()
Definition: SimulRun.cpp:125
virtual void FillRawEvent()
Definition: SimulRun.cpp:291
virtual int FileOpen()
Definition: SimulRun.cpp:198
u_int raw_param_num
Nombre de paramètres bruts de la simulation.
Definition: SimulRun.hh:102
bool file_open
Test processing of a series is started.
Definition: SimulRun.hh:104
virtual int Open()
Definition: SimulRun.cpp:64
bool event_created
Test si l&#39;arbre a été initialisé
Definition: SimulRun.hh:100
virtual ~SimulRun()
Definition: SimulRun.cpp:49
Definition: RunBase.hh:90
Definition: SimulRun.hh:92
ClassDef(SimulRun, 0)
GObjectV(SimulRun)
virtual int GetMaxRunEvents() const
Definition: SimulRun.hh:169
virtual int Close()
Definition: SimulRun.cpp:133
virtual void SetFileMode(const Int_t mode)
Definition: SimulRun.cpp:367
virtual int AnalyseEvents(const u_int n)
Definition: SimulRun.cpp:304
virtual int CreateEvent()
Definition: SimulRun.cpp:281
int run_max_event
Nombre d&#39;événement avant incrémentation du numéro de fichier.
Definition: SimulRun.hh:105
virtual int RunInit()
Definition: SimulRun.cpp:164
SimulRun()
Definition: SimulRun.cpp:20
virtual int ReadEvent()
Definition: SimulRun.cpp:234