Cat
Processus.cpp
Go to the documentation of this file.
1 // $Id: Processus.cpp,v 1.11 2006/06/07 15:34:35 fmachefe Exp $
2 
3 // include files
4 #include <algorithm>
5 #include <iostream>
6 
7 // ROOT include file
8 #include "TFile.h"
9 
10 #include "Tools.h"
11 #include "ProcDataBase.h"
12 #include "Processus.h"
13 
14 //-----------------------------------------------------------------------------
15 // Implementation file for class : Processus
16 //
17 // 2004-07-23 : Frederic Machefert
18 //-----------------------------------------------------------------------------
19 
20 //=============================================================================
21 // Standard constructor, initializes variables
22 //=============================================================================
24  m_element (0),
25  m_data (0),
26  m_rootFile(0),
27  m_options (application()->options()),
28  m_state (0),
29  m_storage (std::string("")),
30  m_logMsg (std::string(""))
31 #ifdef _NETWORK_
32  ,
33  m_service (false),
34  m_updateDelay (2),
35  m_timerService (0),
36  m_valueService (0)
37  m_stateService (0)
38 #endif
39 {
40  m_data=new Data();
41  add(8); add(9);
42 }
43 
44 //=============================================================================
45 // Destructor
46 //=============================================================================
48  if (0!=m_data) delete m_data;
49  if (0!=m_element)
50  {
51  if (0!=m_state)
52  {
53  delete m_state;
54  }
55  }
56 #ifdef _NETWORK_
57  if ( 0 != m_timerService ){
58  delete m_timerService;
59  }
60  if ( 0 != m_stateService ){
61  delete m_stateService;
62  }
63  if ( 0 != m_valueService ){
64  delete m_valueService;
65  }
66 #endif
67 }
68 
69 //=============================================================================
70 // increment error number
71 //=============================================================================
73  m_state->nerrors++;
74 }
75 
76 //=============================================================================
77 // set the number of errors
78 //=============================================================================
79 void Processus::setNErrors( unsigned int nerr) {
80  m_state->nerrors = nerr ;
81 }
82 
83 //=============================================================================
84 // get the number of errors
85 //=============================================================================
86 unsigned int Processus::nErrors() {
87  return ( m_state->nerrors++ );
88 }
89 
90 //=============================================================================
91 // general processing initialization
92 //=============================================================================
94  info("==========================================================================");
95  info(" * " + name() + " *" );
96  m_options->setNErrors ( 0 );
97  setNErrors ( 0 );
98  m_data->purge();
99 #ifdef _NETWORK_
100  if ( 0 != m_timerService ){
101  m_timerService->setRunning ( true );
102  m_timerService->timeHandler() ;
103  }
104 #endif
105  // start measuring processus duration
106 
107  startChrono();
108  openRootFile();
109  return initialize();
110 }
111 
112 //=============================================================================
113 // general processing termination
114 //=============================================================================
116  setState( NOT_OK );
117  //
118  info("--------------------------------------------------------------------------");
119  info("Processed Run Number : " + itos (m_options->runNumber()) , "finalize");
120  info("Number of events processed : " + itos (m_options->nEvt()) , "finalize");
121  info("Number of Errors : " + itos (nErrors()) , "finalize");
122  info("Number of App errors : " + itos (m_options->nErrors()) , "finalize");
123  info("Elapsed time : " + ftos (elapsedTime()) , "finalize");
124  info("--------------------------------------------------------------------------");
125  if (!m_data->empty())
126  m_data->print();
127  else
128  info("No data Stored.","finalize");
129  info("--------------------------------------------------------------------------");
130 
131 #ifdef _NETWORK_
132  if ( 0 != m_timerService ){
133  m_timerService->setRunning ( false );
134  }
135 #endif
136  StatusCode sc = finalize();
137  m_data->buildHistos();
138  closeRootFile();
139  return sc;
140 }
141 
142 
143 //=========================================================================
144 //
145 //=========================================================================
147  if ( m_options->dataStorage() ){
148  m_rootFile = new TFile(m_options->dataFileFullName().c_str(),
149  "RECREATE",name().c_str());
150  std::string mess=std::string("Opening root file ");
151  mess.append(m_options->dataFileFullName());
152  info(mess,"openRootFile");
153  }
154 }
155 
156 
157 //=========================================================================
158 //
159 //=========================================================================
161  if ( 0!= m_rootFile && m_options->dataStorage() ){
162  m_rootFile->Write();
163  std::string mess=std::string("Closing root file ");
164  mess.append(m_options->dataFileFullName());
165  info(mess,"closeRootFile");
166  m_rootFile->Delete();
167  m_rootFile = 0;
168  }
169 }
170 
171 //=========================================================================
172 //
173 //=========================================================================
174 void Processus::setState ( int state ) {
177  m_state->time = (float) ( elapsedTime() );
178  switch ( state ){
179  case OK:
180  strcpy(m_state->state,"OK");
181  break;
182  case NOT_OK:
183  strcpy(m_state->state,"NOT_OK");
184  break;
185  case ERR:
186  strcpy(m_state->state,"ERROR");
187  }
188 }
189 
190 #ifdef _NETWORK_
191 
192 //=========================================================================
193 //
194 //=========================================================================
195 bool Processus::startService () { return true; }
196 
197 //=========================================================================
198 //
199 //=========================================================================
200 bool Processus::startServices () {
201  if ( m_service ) {
202  std::string str = application()->name();
203  str.append("/");
204  str.append(name());
205  str.append("/state");
206  m_stateService = new DimService ( str.c_str(),
207  "I:2;F:1;C",
208  m_state,
209  sizeof(*m_state));
210  startService ();
211  m_timerService = new ProcTimer ( m_updateDelay , this );
212  }
213  else {
214  msgSvc(DEBUG,"startService","No Dim service for Processus "+
215  name());
216  }
217  return true;
218 }
219 
220 //=========================================================================
221 //
222 //=========================================================================
223 bool Processus::updateServices () {
224  if ( 0!=m_stateService ) {
225  info("Updating service StateService", "updateServices");
226  m_stateService->updateService();
227  }
228  if ( 0!=m_valueService ) {
229  info("Updating service ValueService", "updateServices" );
230  m_valueService->updateService();
231  }
232  return true;
233 }
234 
235 #endif
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
void openRootFile()
Definition: Processus.cpp:146
unsigned long nEvt()
Definition: Options.h:317
std::string ftos(float)
Definition: Tools.cpp:53
StatusCode endProcessing()
Definition: Processus.cpp:115
int nerrors
Definition: Processus.h:26
std::string dataFileFullName()
Definition: Options.h:219
ProcState * m_state
Definition: Processus.h:363
void add(int attribut)
Definition: Attrib.h:67
unsigned int nErrors()
Definition: Processus.cpp:86
void purge()
Definition: Data.cpp:54
unsigned long runNumber()
Definition: Options.h:107
unsigned long nErrors()
Definition: Options.h:365
Options * m_options
Definition: Processus.h:360
Application * application()
Definition: Tools.cpp:42
void closeRootFile()
Definition: Processus.cpp:160
double elapsedTime()
Definition: Processus.h:340
void setNErrors(unsigned int)
Definition: Processus.cpp:79
bool dataStorage()
Definition: Options.h:252
Element * m_element
Definition: Processus.h:348
virtual StatusCode finalize()=0
void print()
Definition: Data.cpp:186
bool empty()
Definition: Data.h:49
Processus()
Standard constructor.
Definition: Processus.cpp:23
void setNErrors(unsigned long nErrors)
Definition: Options.h:357
void startChrono()
Definition: Processus.h:275
void buildHistos()
Definition: Data.cpp:98
float time
Definition: Processus.h:27
std::string name() const
Definition: Object.h:28
void incNErrors()
Definition: Processus.cpp:72
int nevent
Definition: Processus.h:25
StatusCode startProcessing()
Definition: Processus.cpp:93
void msgSvc(int level, std::string msg, std::string name)
Definition: Object.h:33
Definition: Data.h:16
TFile * m_rootFile
Definition: Processus.h:359
virtual StatusCode initialize()=0
void setState(int state)
Definition: Processus.cpp:174
virtual ~Processus()
Destructor.
Definition: Processus.cpp:47
char state[256]
Definition: Processus.h:28
Data * m_data
Definition: Processus.h:358