Analysis  version 7.0 - august 2014
TreeRun.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file TreeRun.hh
3  *
4  * Déclaration de la classe TreeRun qui gère l'analyse
5  * des TTree de ROOT en tant que runs de données.
6  */
7 //======================================================================
8 
9 
10 #ifndef TREE_RUN_HH
11 #define TREE_RUN_HH
12 
13 #include "RunBase.hh"
14 #include "TreeRunInfo.hh"
15 
16 
17 //======================================================================
18 /*! \class TreeRun
19  *
20  * C'est la classe principale pour l'analyse des TTree de ROOT
21  * comme runs de données.
22  *
23  * Les fonctions utilisateur sont les suivantes
24  * (voir la description de ces fonctions):
25  * - UserEventDefine
26  * - UserRunStart
27  * - UserEvent
28  * - UserUpdate
29  * - UserRunStop
30  */
31 class TreeRun : virtual public RunBase, public TreeRunInfo
32 {
33 //----------------------------------------------------------------------
34  /*! \object_doc */
36 //----------------------------------------------------------------------
37 
38  protected:
39  bool event_created; ///< Test si l'arbre a été initialisé
40 
41  public:
42  // constructeur par défaut
43  TreeRun ( );
44 
45  // destructeur
46  virtual ~TreeRun ( );
47 
48  protected:
49  // constructeur de recopie
50  TreeRun ( const TreeRun &original );
51 
52  public:
53  virtual void SetTreeName ( const string &t_name = "" );
54 
55  // fonctions abstraites de la classe de base
56  virtual int Open ( );
57  virtual bool IsOpen ( );
58  virtual int Close ( );
59 
60  virtual int RunInit ( );
61  virtual int ReadEvent ( );
62 
63  protected:
64  virtual int FileOpen ( );
65  virtual void FileClose ( );
66  virtual int ReadTreeInfo ( );
67 
68  // création de la structure d'événement
69  virtual int CreateEvent ( );
70 
71 //----------------------------------------------------------------------
72  public:
73 
74 
75  // ajout d'un paramètre utilisateur (surcharge de EventManager)
76  int AddParam ( const Param &par );
77 
78  // mise à valeur un paramètre (user) de l'événement.
79  template < class T > const Data & SetParam( const u_int num, const T &val );
80  template < class T > const Data & SetParam( const string &par_name, const T &val );
81 
82  // mise à valeur un paramètre multiple (user) de l'événement.
83  template < class T > const Data & SetParam( const u_int num, const u_int index, const T &val );
84  template < class T > const Data & SetParam( const string &par_name, const u_int index, const T &val );
85 
86 
87 //----------------------------------------------------------------------
88 // Fonctions utilisateur supplémentaires
89 //----------------------------------------------------------------------
90 
91 
92 
93 //----------------------------------------------------------------------
94 // pour ROOT...
95  public:
96  /*! Définition à usage de ROOT... */
97  ClassDef(TreeRun,0);
98 };
99 
100 
101 //======================================================================
102 // FONCTIONS INLINE
103 //======================================================================
104 
105 
106 
107 //----------------------------------------------------------------------
108 // AFFECTATION DES PARAMETRES
109 //----------------------------------------------------------------------
110 // Surcharge de la classe EventManager pour protéger les paramètres
111 // bruts
112 
113 /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur
114  * à partir d'une valeur donnée par un type de base ou une instance
115  * de type Data.
116  * Dans le cas d'un paramètre de type ParamArray, c'est la donnée * courante du tableau qui est affectée. * Dans le cas d'un paramètre de type ParamMultihit, une nouvelle * donnée est ajoutée en fin de liste. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * \param num numéro de paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const u_int num, const T &val ) { if (num >= tree_param_num) { return (EventManager::SetParam(num,val)); } else { GLogWarning ( "SetParam(): Raw parameter " + event[num].Name() + " not affectable"); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Dans le cas d'un paramètre de type ParamArray, c'est la donnée * courante du tableau qui est affectée. * Dans le cas d'un paramètre de type ParamMultihit, une nouvelle * donnée est ajoutée en fin de liste. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * \param par_name nom du paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const string &par_name, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param num numéro de paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const u_int num, const u_int index, const T &val ) { if (num >= tree_param_num) { return (EventManager::SetParam(num,index,val)); } else { GLogWarning ( "SetParam(): Raw parameter " + event[num].Name() + " not affectable"); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param par_name nom du paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam ( const string &par_name, const u_int index, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,index,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } //====================================================================== // FONCTIONS UTILISATEUR SUPPLEMENTAIRES //====================================================================== //====================================================================== #endif
117  * courante du tableau qui est affectée.
118  * Dans le cas d'un paramètre de type ParamMultihit, une nouvelle
119  * donnée est ajoutée en fin de liste.
120  * Le type en retour est une référence sur l'instance Data associée au
121  * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * \param num numéro de paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const u_int num, const T &val ) { if (num >= tree_param_num) { return (EventManager::SetParam(num,val)); } else { GLogWarning ( "SetParam(): Raw parameter " + event[num].Name() + " not affectable"); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Dans le cas d'un paramètre de type ParamArray, c'est la donnée * courante du tableau qui est affectée. * Dans le cas d'un paramètre de type ParamMultihit, une nouvelle * donnée est ajoutée en fin de liste. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * \param par_name nom du paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const string &par_name, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param num numéro de paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const u_int num, const u_int index, const T &val ) { if (num >= tree_param_num) { return (EventManager::SetParam(num,index,val)); } else { GLogWarning ( "SetParam(): Raw parameter " + event[num].Name() + " not affectable"); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param par_name nom du paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam ( const string &par_name, const u_int index, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,index,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } //====================================================================== // FONCTIONS UTILISATEUR SUPPLEMENTAIRES //====================================================================== //====================================================================== #endif
122  * en retour (par référence) ne doit pas être modifiée directement.
123  * \param num numéro de paramètre
124  * \param val valeur à affecter (Data ou type de base)
125  */
126 template < class T > const Data & TreeRun::SetParam(
127  const u_int num,
128  const T &val )
129 {
130  if (num >= tree_param_num)
131  {
132  return (EventManager::SetParam(num,val));
133  }
134  else
135  {
136  GLogWarning ( "SetParam(): Raw parameter "
137  + event[num].Name() + " not affectable");
138  return (bad_data);
139  }
140 }
141 
142 /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur
143  * à partir d'une valeur donnée par un type de base ou une instance
144  * de type Data.
145  * Dans le cas d'un paramètre de type ParamArray, c'est la donnée * courante du tableau qui est affectée. * Dans le cas d'un paramètre de type ParamMultihit, une nouvelle * donnée est ajoutée en fin de liste. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * \param par_name nom du paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const string &par_name, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param num numéro de paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const u_int num, const u_int index, const T &val ) { if (num >= tree_param_num) { return (EventManager::SetParam(num,index,val)); } else { GLogWarning ( "SetParam(): Raw parameter " + event[num].Name() + " not affectable"); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param par_name nom du paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam ( const string &par_name, const u_int index, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,index,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } //====================================================================== // FONCTIONS UTILISATEUR SUPPLEMENTAIRES //====================================================================== //====================================================================== #endif
146  * courante du tableau qui est affectée.
147  * Dans le cas d'un paramètre de type ParamMultihit, une nouvelle
148  * donnée est ajoutée en fin de liste.
149  * Le type en retour est une référence sur l'instance Data associée au
150  * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * \param par_name nom du paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const string &par_name, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param num numéro de paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const u_int num, const u_int index, const T &val ) { if (num >= tree_param_num) { return (EventManager::SetParam(num,index,val)); } else { GLogWarning ( "SetParam(): Raw parameter " + event[num].Name() + " not affectable"); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param par_name nom du paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam ( const string &par_name, const u_int index, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,index,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } //====================================================================== // FONCTIONS UTILISATEUR SUPPLEMENTAIRES //====================================================================== //====================================================================== #endif
151  * en retour (par référence) ne doit pas être modifiée directement.
152  * \param par_name nom du paramètre
153  * \param val valeur à affecter (Data ou type de base)
154  */
155 template < class T > const Data & TreeRun::SetParam(
156  const string &par_name,
157  const T &val )
158 {
159  u_int num = event.GetParamIndex(par_name);
160  if (num >= tree_param_num)
161  return (SetParam(num,val));
162  else
163  {
164  GLogWarning ( "GetParam(): no parameter " + par_name);
165  return (bad_data);
166  }
167 }
168 
169 /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur
170  * à partir d'une valeur donnée par un type de base ou une instance
171  * de type Data.
172  * Le type en retour est une référence sur l'instance Data associée au
173  * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param num numéro de paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam( const u_int num, const u_int index, const T &val ) { if (num >= tree_param_num) { return (EventManager::SetParam(num,index,val)); } else { GLogWarning ( "SetParam(): Raw parameter " + event[num].Name() + " not affectable"); return (bad_data); } } /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur * à partir d'une valeur donnée par un type de base ou une instance * de type Data. * Le type en retour est une référence sur l'instance Data associée au * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param par_name nom du paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam ( const string &par_name, const u_int index, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,index,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } //====================================================================== // FONCTIONS UTILISATEUR SUPPLEMENTAIRES //====================================================================== //====================================================================== #endif
174  * en retour (par référence) ne doit pas être modifiée directement.
175  * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne
176  * doit être appelée que pour modifier une donnée déjà dans la liste.
177  * Pour ajouter une nouvelle donnée à la liste il faut appeler la
178  * méthode sans spécification d'index.
179  * \param num numéro de paramètre
180  * \param index index de la valeur à affecter dans le paramètre
181  * \param val valeur à affecter (Data ou type de base)
182  */
183 template < class T > const Data & TreeRun::SetParam(
184  const u_int num,
185  const u_int index,
186  const T &val )
187 {
188  if (num >= tree_param_num)
189  {
190  return (EventManager::SetParam(num,index,val));
191  }
192  else
193  {
194  GLogWarning ( "SetParam(): Raw parameter "
195  + event[num].Name() + " not affectable");
196  return (bad_data);
197  }
198 }
199 
200 /*! Méthode patron qui sert à l'affectation d'un paramètre utilisateur
201  * à partir d'une valeur donnée par un type de base ou une instance
202  * de type Data.
203  * Le type en retour est une référence sur l'instance Data associée au
204  * paramètre (après affectation), avec le qualificatif const car la donnée * en retour (par référence) ne doit pas être modifiée directement. * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne * doit être appelée que pour modifier une donnée déjà dans la liste. * Pour ajouter une nouvelle donnée à la liste il faut appeler la * méthode sans spécification d'index. * \param par_name nom du paramètre * \param index index de la valeur à affecter dans le paramètre * \param val valeur à affecter (Data ou type de base) */ template < class T > const Data & TreeRun::SetParam ( const string &par_name, const u_int index, const T &val ) { u_int num = event.GetParamIndex(par_name); if (num >= tree_param_num) return (SetParam(num,index,val)); else { GLogWarning ( "GetParam(): no parameter " + par_name); return (bad_data); } } //====================================================================== // FONCTIONS UTILISATEUR SUPPLEMENTAIRES //====================================================================== //====================================================================== #endif
205  * en retour (par référence) ne doit pas être modifiée directement.
206  * Dans le cas d'un paramètre de type ParamMultihit, cette méthode ne
207  * doit être appelée que pour modifier une donnée déjà dans la liste.
208  * Pour ajouter une nouvelle donnée à la liste il faut appeler la
209  * méthode sans spécification d'index.
210  * \param par_name nom du paramètre
211  * \param index index de la valeur à affecter dans le paramètre
212  * \param val valeur à affecter (Data ou type de base)
213  */
214 template < class T > const Data & TreeRun::SetParam (
215  const string &par_name,
216  const u_int index,
217  const T &val )
218 {
219  u_int num = event.GetParamIndex(par_name);
220  if (num >= tree_param_num)
221  return (SetParam(num,index,val));
222  else
223  {
224  GLogWarning ( "GetParam(): no parameter " + par_name);
225  return (bad_data);
226  }
227 }
228 
229 
230 //======================================================================
231 // FONCTIONS UTILISATEUR SUPPLEMENTAIRES
232 //======================================================================
233 
234 
235 //======================================================================
236 #endif
virtual int RunInit()
Definition: TreeRun.cpp:210
bool event_created
Test si l&#39;arbre a été initialisé
Definition: TreeRun.hh:39
DataBad & bad_data
Definition: DataBad.cpp:51
Definition: TreeRunInfo.hh:33
virtual int FileOpen()
Definition: TreeRun.cpp:265
virtual int CreateEvent()
Definition: TreeRun.cpp:714
virtual ~TreeRun()
Definition: TreeRun.cpp:42
Definition: TreeRun.hh:31
const Data & SetParam(const u_int num, const T &val)
Definition: TreeRun.hh:126
virtual void SetTreeName(const string &t_name="")
Definition: TreeRun.cpp:71
Definition: RunBase.hh:90
int AddParam(const Param &par)
Definition: TreeRun.cpp:55
Definition: Param.hh:83
virtual void FileClose()
Definition: TreeRun.cpp:299
virtual int ReadTreeInfo()
Definition: TreeRun.cpp:487
virtual int Open()
Definition: TreeRun.cpp:92
const Data & SetParam(const u_int num, const T &val)
Definition: EventManager.hh:806
TreeRun()
Definition: TreeRun.cpp:20
virtual int ReadEvent()
Definition: TreeRun.cpp:321
GObject(TreeRun)
UInt_t tree_param_num
nombre de paramètres du TTree
Definition: TreeRunInfo.hh:50
Definition: Data.hh:153
ClassDef(TreeRun, 0)
virtual int Close()
Definition: TreeRun.cpp:179
virtual bool IsOpen()
Definition: TreeRun.cpp:171
Event event
Structure physique de l&#39;événement.
Definition: EventManager.hh:68