BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
SC.cxx
Go to the documentation of this file.
1// Dear emacs, this is -*- c++ -*-
2
3#include "ESController/SC.h"
7
8// #include <Python.h>
9#include <cmath>
10#include <cstdio>
11#include <stdint.h>
12#include <string>
13
14// hxt #include <df_allocator>
15// #include "RawDataFormat/FragmentType.h"
16// #include "RawDataFormat/AbstractFragment.h"
17// #include "RawDataFormat/minimal.h"
18
19// Include files for Gaudi
20#include "GaudiKernel/Bootstrap.h"
21#include "GaudiKernel/IAppMgrUI.h"
22#include "GaudiKernel/IClassManager.h"
23#include "GaudiKernel/IMessageSvc.h"
24#include "GaudiKernel/IProperty.h"
25#include "GaudiKernel/IService.h"
26#include "GaudiKernel/ISvcLocator.h"
27#include "GaudiKernel/Property.h"
28#include "GaudiKernel/SmartIF.h"
29
30// #include "HltConfig/MyFrame.h"
31
32#include <list>
33
35 : m_eventLoopMgr( 0 )
36 , m_config( 0 )
37 , m_pesaAppMgr( 0 )
38 , m_isCreated( false )
39 , m_outLev( 5 )
40 , m_nameEventLoopMgr( "EFEventLoopMgr" ) {
41 ::setenv( "SCOutputLevel", "3", 1 );
42 char* ss = ::getenv( "SCOutputLevel" );
43 // if(ss!=NULL)std::cout<<ss<<std::endl;
44 // else std::cout<<"****************"<<std::endl;
45 // char* outlev=::getenv("SCOutputLevel");
46 // std::cout<<outlev<<std::endl;
47 // m_outLev=atoi(outlev);
48 // std::cout<<m_outLev<<std::endl;
49 // Hlt::MyFrame::instance();
50}
51
53 // delete Hlt::MyFrame::instance();
54 m_pesaAppMgr->release();
55}
56
57bool efpsc::SC::configure( const std::string& config ) {
58 static bool first_call_configure = true;
59 if ( first_call_configure ) { first_call_configure = false; }
60 else { return true; }
61 // if(0==Hlt::MyFrame::instance()){
62 // std::cout<<"Error while create MyFrame"<<std::endl;
63 // exit(1);
64 //}
65
66 // EFPSC_DBG1("efpsc::SC::configure",
67 // "SC configuration started.");
68 if ( m_outLev <= 3 )
69 std::cout << "efpsc::SC::configure "
70 << "SC configuration started." << std::endl;
71 m_config = new efpsc::Config( config );
72
73 // Create an instance of the Pesa application manager
74 // EFPSC_DBG1("efpsc::SC::configure",
75 // "---> Create Pesa Application Manager");
76 if ( m_outLev <= 2 )
77 std::cout << "efpsc::SC::configure "
78 << "---> Create Pesa Application Manager:" << m_isCreated << std::endl;
79 if ( !m_isCreated )
80 {
81 if ( ( m_config->dllName().size() != 0 ) && ( m_config->factoryName().size() != 0 ) )
82 {
83 m_pesaAppMgr =
84 Gaudi::createApplicationMgr( m_config->dllName(), m_config->factoryName() );
85 if ( m_outLev <= 3 )
86 std::cout << "Gaudi::createApplicationMgr(m_config->dllName(),m_config->factoryName())"
87 << std::endl;
88 }
89 else
90 {
91 m_pesaAppMgr = Gaudi::createApplicationMgr();
92 if ( m_outLev <= 3 ) std::cout << "Gaudi::createApplicationMgr()" << std::endl;
93 }
94 }
95
96 // configure Pesa
97 // EFPSC_DBG1("efpsc::SC::configure",
98 // "---> Configure Pesa Property Manager");
99 if ( m_outLev <= 2 )
100 std::cout << "efpsc::SC::configure "
101 << "---> Configure Pesa Property Manager" << std::endl;
102 StatusCode sc;
103 SmartIF<IProperty> propMgr( m_pesaAppMgr );
104 SmartIF<IAppMgrUI> appMgr( m_pesaAppMgr );
105 if ( !appMgr.isValid() || !propMgr.isValid() )
106 {
107 // EFPSC_ERROR("efpsc::SC::configure",
108 // "While creating the ApplicationMgr");
109 if ( m_outLev <= 5 )
110 std::cout << "efpsc::SC::configure "
111 << "While creating the ApplicationMgr" << std::endl;
112 return false;
113 }
114
115 // Get the input configuration file from arguments (default "jobOptions.txt")
116 std::string opts = "jobOptions.txt";
117 ::setenv( "efJobPath", "", 1 );
118 if ( m_config->jobOptionsPath().size() != 0 )
119 {
120 opts = m_config->jobOptionsPath();
121 if ( opts.rfind( "/" ) < opts.size() )
122 { ::setenv( "efJobPath", opts.substr( 0, opts.rfind( "/" ) ).c_str(), 1 ); }
123 }
124 // EFPSC_DBG1("efpsc::SC::configure", "---> Pesa JobOptions file is = " << opts);
125 // EFPSC_DBG1("efpsc::SC::configure", "---> Pesa JobOptions path = " <<
126 // ::getenv("efJobPath"));
127 if ( m_outLev <= 2 )
128 std::cout << "efpsc::SC::configure "
129 << "---> Pesa JobOptions file is = " << opts << std::endl
130 << " "
131 << "---> Pesa JobOptions path = " << ::getenv( "efJobPath" ) << std::endl;
132 propMgr->setProperty( "JobOptionsPath", opts );
133
134 propMgr->setProperty( "EventLoop", m_nameEventLoopMgr );
135
136 // Select the MessageSvc Type
137 if ( m_config->messageSvcType().size() != 0 )
138 { propMgr->setProperty( "MessageSvcType", m_config->messageSvcType() ); }
139
140 // No EventSelector will be used
141 if ( m_config->evtSel().size() != 0 )
142 { propMgr->setProperty( "EvtSel", m_config->evtSel() ); }
143 else { propMgr->setProperty( "EvtSel", "NONE" ); }
144 // EFPSC_DBG1("efpsc::SC::configure", "finish property set--->start configure ");
145 // EFPSC_DBG1("efpsc::SC::configure", "Configuring ApplicationMgr: "
146 // << appMgr->stateName() << " Status : " << sc.getCode());
147 if ( m_outLev <= 3 )
148 std::cout << "efpsc::SC::configure "
149 << "finish property set--->start configure" << std::endl;
150 if ( m_outLev <= 2 )
151 std::cout << "efpsc::SC::configure "
152 << "Configuring ApplicationMgr: " << appMgr->FSMState()
153 << " Status : " << sc.getCode() << std::endl;
154 // Configure the application manager
155 if ( opts.substr( opts.length() - 3, 3 ) == ".py" )
156 {
157
158 // EFPSC_ERROR("efpsc::SC::configure",
159 // "Error: Don't support python config files");
160 if ( m_outLev <= 5 )
161 std::cout << "efpsc::SC::configure "
162 << "Error: Don't support python config files" << std::endl;
163 return false;
164 // ----------------------------
165 // Configuration with .py files
166 // ----------------------------
167
168 // Try to initialize the Python interpreter
169 /*if ( ! Py_IsInitialized() ) {
170 Py_Initialize();
171
172 // check
173 if ( ! Py_IsInitialized() ) {
174 EFPSC_ERROR("efpsc::SC::configure",
175 "Error: Python could not been intialized.");
176 Py_Finalize();
177 return false;
178 }
179
180 // import basic python modules (used throughout)
181 std::string pyBasicFile = "SC/SCPythonSetup.py" ;
182 if (m_config->pythonSetupFile().size() != 0) {
183 pyBasicFile = m_config->pythonSetupFile() ;
184 }
185
186 pyBasicFile = PathResolver::find_file(pyBasicFile, "PYTHONPATH");
187 FILE* infile = fopen( pyBasicFile.c_str() , "r" );
188 if ( PyRun_SimpleFile(infile,const_cast<char*>(pyBasicFile.c_str())) != 0 ) {
189 EFPSC_ERROR("efpsc::SC::configure",
190 "Error: Basic Python configuration failed.");
191 Py_Finalize();
192 return false;
193 }
194
195 std::string pyExecFile = "include( \""+std::string(opts)+"\" )" ;
196 if ( PyRun_SimpleString(const_cast<char*>(pyExecFile.c_str())) != 0 ) {
197 EFPSC_ERROR("efpsc::SC::configure",
198 "Error: Python job configuration script failed.");
199 Py_Finalize();
200 return false;
201 }
202 }*/
203 }
204 else
205 {
206 // -----------------------------
207 // Configuration with .txt files
208 // -----------------------------
209 sc = appMgr->configure();
210 if ( sc.isFailure() )
211 {
212 // EFPSC_DBG1("efpsc::SC::configure",
213 // "While configuring the ApplicationMgr");
214 if ( m_outLev <= 5 )
215 std::cout << "efpsc::SC::configure "
216 << "While configuring the ApplicationMgr" << std::endl;
217 return false;
218 }
219 }
220 // EFPSC_DBG1("efpsc::SC::configure", "Configuring ApplicationMgr: "
221 // << appMgr->stateName() << " Status : " << sc.getCode());
222 if ( m_outLev <= 2 )
223 std::cout << "efpsc::SC::configure "
224 << "Configuring ApplicationMgr: " << appMgr->FSMState()
225 << " Status : " << sc.getCode() << std::endl;
226 // Initialize the application manager
227 sc = appMgr->initialize();
228 // EFPSC_DBG1("efpsc::SC::configure", "Initialize ApplicationMgr : "
229 // << appMgr->stateName()
230 // << " Status : " << sc.getCode());
231 if ( m_outLev <= 2 )
232 std::cout << "efpsc::SC::configure "
233 << "Initialize ApplicationMgr : " << appMgr->FSMState()
234 << " Status : " << sc.getCode() << std::endl;
235 if ( sc.isFailure() )
236 {
237 EFPSC_ERROR( "efpsc::SC::configure", "While intializing the ApplicationMgr" );
238 return false;
239 }
240
241 // Find the basename for the EventLoopMgr
242 std::string value;
243 // std::cout<<"value = "<<value<<std::endl;
244 sc = propMgr->getProperty( "EventLoop", value );
245 // std::cout<<"value = "<<value<<std::endl;
246 if ( sc.isFailure() )
247 {
248 // EFPSC_DBG1("efpsc::SC::configure", "While retrieving Property EventLoop ");
249 if ( m_outLev <= 4 )
250 std::cout << "efpsc::SC::configure "
251 << "While retrieving Property EventLoop " << std::endl;
252 }
253 else
254 {
255 m_nameEventLoopMgr.assign( value, value.find_first_of( "\"" ) + 1,
256 value.find_last_of( "\"" ) - value.find_first_of( "\"" ) - 1 );
257 }
258
259 SmartIF<ISvcLocator> svcLoc( m_pesaAppMgr );
260 if ( svcLoc.isValid() )
261 {
262 // EFPSC_DBG1("efpsc::SC::configure","Name for EventLoopManager:"<<m_nameEventLoopMgr);
263 if ( m_outLev <= 2 )
264 std::cout << "efpsc::SC::configure "
265 << "Name for EventLoopManager:" << m_nameEventLoopMgr << std::endl;
266 StatusCode sc;
267 IEventProcessor* processingMgr = 0;
268
269 sc = svcLoc->service( m_nameEventLoopMgr, processingMgr );
270 m_eventLoopMgr = processingMgr;
271
272 if ( !sc.isSuccess() )
273 {
274 // EFPSC_ERROR("efpsc::SC::configure", " Error Retrieving Processing manager!") ;
275 if ( m_outLev <= 5 )
276 std::cout << "efpsc::SC::configure "
277 << "Error Retrieving Processing manager!" << std::endl;
278 return false;
279 }
280 }
281 else
282 {
283 // EFPSC_ERROR("efpsc::SC::configure", " Error Retrieving Service Locator!") ;
284 if ( m_outLev <= 5 )
285 std::cout << "efpsc::SC::configure "
286 << "Error Retrieving Service Locator!" << std::endl;
287 return false;
288 }
289
290 m_isCreated = true;
291 // EFPSC_DBG1("efpsc::SC::configure","SC configuration finished.");
292 if ( m_outLev <= 3 )
293 std::cout << "efpsc::SC::configure "
294 << "SC configuration finished." << std::endl;
295 return true;
296}
297
299 return true;
300 // EFPSC_DBG1("efpsc::SC::unconfigure",
301 // "SC UNconfiguration started.");
302 if ( m_outLev <= 3 )
303 std::cout << "efpsc::SC::unconfigure "
304 << "SC UNconfiguration started." << std::endl;
305 StatusCode sc;
306 SmartIF<IAppMgrUI> appMgr( m_pesaAppMgr );
307 if ( !appMgr.isValid() )
308 {
309 // EFPSC_ERROR("efpsc::SC::unconfigure",
310 // "While unconfiguring the ApplicationMgr, no valid interface");
311 if ( m_outLev <= 5 )
312 std::cout << "efpsc::SC::unconfigure "
313 << "While unconfiguring the ApplicationMgr, no valid interface" << std::endl;
314 return false;
315 }
316 SmartIF<ISvcLocator> svcLoc( m_pesaAppMgr );
317
318 // const std::list<IService*>* svclist=svcLoc->getServices();
319 // for(std::list<IService*>::iterator it = svclist->begin(); it != svclist->end(); it++ ) {
320 // std::cout<<(*it)->name()<<std::endl;
321 // }
322
323 // Finalize the application manager
324 sc = appMgr->finalize();
325
326 // EFPSC_DBG1("efpsc::SC::unconfigure", "Finalize ApplicationMgr: "
327 // << appMgr->stateName() << " Status : " << sc.getCode());
328 if ( m_outLev <= 2 )
329 std::cout << "efpsc::SC::unconfigure "
330 << "Finalize ApplicationMgr: " << appMgr->FSMState()
331 << " Status : " << sc.getCode() << std::endl;
332 if ( sc.isFailure() )
333 {
334 // EFPSC_ERROR("efpsc::SC::unconfigure",
335 // "---> While finalizing the ApplicationMgr ");
336 if ( m_outLev <= 5 )
337 std::cout << "efpsc::SC::unconfigure "
338 << "While finalizing the ApplicationMgr" << std::endl;
339 return false;
340 }
341
342 // Terminate the application manager
343 sc = appMgr->terminate();
344 // EFPSC_DBG1("efpsc::SC::unconfigure", "Terminate ApplicationMgr : "
345 // << appMgr->stateName() << " Status : " << sc.getCode());
346 if ( m_outLev <= 2 )
347 std::cout << "efpsc::SC::unconfigure "
348 << "Terminate ApplicationMgr : " << appMgr->FSMState()
349 << " Status : " << sc.getCode() << std::endl;
350 if ( sc.isFailure() )
351 {
352 // EFPSC_ERROR("efpsc::SC::unconfigure","While terminating the ApplicationMgr");
353 if ( m_outLev <= 5 )
354 std::cout << "efpsc::SC::unconfigure "
355 << "While terminating the ApplicationMgr" << std::endl;
356 return false;
357 }
358
359 // IService* msgSvc=0;
360 // svclist=svcLoc->getServices();
361 // svclist->erase(svclist.begin(), svclist.end() );
362 // std::cout<<svclist->size()<<std::endl;
363 // if(svcLoc->existsService("MessageSvc")){
364 // svcLoc->getService("MessageSvc",msgSvc);
365 // std::cout<<"111"<<msgSvc->name()<<std::endl;
366 // std::list<IService*> svclist=svcLoc->getServices();
367 // for(std::list<IService*>::iterator it = svclist.begin(); it != svclist.end(); it++ )
368 // {
369 // //std::cout<<(*it)->name()<<std::endl;
370 // }
371 // int a1=svclist.size();
372 // svclist->remove(msgSvc);
373 // int a2=svclist.size();
374 // if(svcLoc->existsService("MessageSvc"))std::cout<<"exist"<<a1<<","<<a2<<std::endl;
375 // }
376 // appMgr->release();
377 // if(msgSvc) msgSvc->release();
378 // svcMgr->removeService("MessageSvc");
379
380 delete m_config;
381 m_config = 0;
382 // EFPSC_DBG2("efpsc::SC::unconfigure", "SC UNconfiguration finished.");
383 if ( m_outLev <= 3 )
384 std::cout << "efpsc::SC::unconfigure "
385 << "SC UNconfiguration finished." << std::endl;
386 return true;
387}
388
389bool efpsc::SC::prepareForRun( int run_number = 0 ) {
390 // This is a placeholder method
391 if ( m_eventLoopMgr )
392 {
393 SmartIF<IEFEventLoopMgr> processor_psc( m_eventLoopMgr );
394 StatusCode sc = processor_psc->prepareForRun( run_number );
395 std::cout << "=================" << m_eventLoopMgr << std::endl;
396 if ( sc.isSuccess() ) return true;
397 }
398 return false;
399}
400
401bool efpsc::SC::process( const uint32_t*& feStore, const uint32_t*& sdStore,
402 std::string& efDecision_s, std::vector<uint32_t>& efBitPattern ) {
403 // std::cout<<"jak:"<<__FILE__<<std::endl;
404 // EFPSC_DBG1("efpsc::SC::process", "***********************************************");
405 // EFPSC_DBG1("efpsc::SC::process", "****************** NEW EVENT ******************");
406 // EFPSC_DBG1("efpsc::SC::process", "***********************************************");
407 if ( m_outLev <= 3 )
408 std::cout << "efpsc::SC::process"
409 << " **************** NEW EVENT ****************" << std::endl;
410 // Test if FullEventFragment is valid
411 // if(!fe->is_valid()){
412 // EFPSC_ERROR("efpsc::SC::process","FullEventFragment NOT valid! This event is not going
413 // to be processed!"); return false;
414 // } else {
415 // EFPSC_DBG1("efpsc::SC::process", " FullEventFragment is valid." );
416 // }
417
418 // ExecuteEvent from the application manager
419 StatusCode sc;
420 if ( 0 != m_eventLoopMgr )
421 {
422 SmartIF<IEventProcessor> processor( m_eventLoopMgr );
423
424 if ( processor.isValid() )
425 {
426 SmartIF<IService> processor_s( m_eventLoopMgr );
427 // EFPSC_DBG1("efpsc::SC::process", " ---> Executing events for
428 // processor"<<processor_s->name()); std::cout<<"jak:"<<__FILE__<<std::endl;
429
430 sc = processor->executeEvent( (void*)feStore );
431
432 // EFPSC_DBG1("efpsc::SC::Process","after executeEvent(fe)");
433
434 // std::cout<<"jak:"<<__FILE__<<std::endl;
435 if ( m_outLev <= 2 )
436 std::cout << "efpsc::SC::process "
437 << "after executeEvent(fe)" << std::endl;
438 if ( sc.isFailure() )
439 {
440 // EFPSC_DBG1("efpsc::SC::process", "Error for executeEvent in the ApplicationMgr " <<
441 // processor_s->name());
442 if ( m_outLev <= 4 )
443 std::cout << "efpsc::SC::process "
444 << "Error for executeEvent in the ApplicationMgr " << processor_s->name()
445 << std::endl;
446 }
447 else
448 {
449 SmartIF<IEFEventLoopMgr> processor_psc( m_eventLoopMgr );
450 //
451 //--- ef Decision and Result from Pesa
452 //
453 // std::cout<<"jak:"<<__FILE__<<std::endl;
454 efDecision_s = processor_psc->EF_Decision();
455
456 // std::cout<<"jak:"<<__FILE__<<std::endl;
457 // EFPSC_DBG1("efpsc::SC::Process","after EF_Decision. EFdecision is: "<<efDecision_s);
458 if ( m_outLev <= 3 )
459 std::cout << "efpsc::SC::process "
460 << "after EF_Decision. EFdecision is: " << efDecision_s << std::endl;
461 sdStore = (uint32_t*)processor_psc->EF_Fragment_Address();
462 // std::cout<<"jak:"<<__FILE__<<std::endl;
463 if ( sdStore == NULL )
464 {
465 // EFPSC_DBG1("efpsc::SC::process","EF_Fragment_Address() returns NULL pointer");
466 if ( m_outLev <= 2 )
467 std::cout << "efpsc::SC::process "
468 << "EF_Fragment_Address() returns NULL pointer" << std::endl;
469 }
470 // Hard coded (One must change it in the future):
471 // EF_Decision==Accepted--> efDecision=2
472 // EF_Decision==Rejected--> efDecision=1
473 // EF_Decision==Error--> efDecision=0
474 /*
475 if(efDecision_s=="Accepted"){
476 //efDecision=2;
477 //Append EFResult to the Event Fragment
478 EFPSC_DBG1("efpsc::SC::process", "EFResult is going to be appended to the Event
479 Fragment"); }else if(efDecision_s=="Rejected"){
480 //efDecision=1;
481 EFPSC_DBG1("efpsc::SC::process", "No EFResult is going to be appended to the Event
482 Fragment");
483
484 }else{
485 //efDecision=0;
486 EFPSC_DBG1("efpsc::SC::process", "an Error was obtained when running algorithms on
487 the Event."); EFPSC_DBG1("efpsc::SC::process", "No EFResult is going to be appended to
488 the Event Fragment");
489 }
490 */
491 efBitPattern.resize( 4, 0 ); // zoujh: Just a place holder
492 if ( efDecision_s == "Junk" ) efBitPattern[0] = 1 << 0;
493 // else if(efDecision_s=="GJunk") efBitPattern[0]=(1<<0)+(1<<1);
494 else if ( efDecision_s == "GJunk" ) efBitPattern[0] = ( 1 << 1 );
495 else if ( efDecision_s == "Beamgas" ) efBitPattern[0] = 1 << 2;
496 // else if(efDecision_s=="GBeamgas") efBitPattern[0]=(1<<2)+(1<<3);
497 else if ( efDecision_s == "GBeamgas" ) efBitPattern[0] = ( 1 << 3 );
498 else if ( efDecision_s == "Cosmic" ) efBitPattern[0] = 1 << 4;
499 // else if(efDecision_s=="GCosmic") efBitPattern[0]=(1<<4)+(1<<5);
500 else if ( efDecision_s == "GCosmic" ) efBitPattern[0] = ( 1 << 5 );
501 else if ( efDecision_s == "EBhabha" ) efBitPattern[0] = 1 << 6;
502 // else if(efDecision_s=="GEBhabha") efBitPattern[0]=(1<<6)+(1<<7);
503 else if ( efDecision_s == "GEBhabha" ) efBitPattern[0] = ( 1 << 7 );
504 else if ( efDecision_s == "BBhabha" ) efBitPattern[0] = 1 << 8;
505 // else if(efDecision_s=="GBBhabha") efBitPattern[0]=(1<<8)+(1<<9);
506 else if ( efDecision_s == "GBBhabha" ) efBitPattern[0] = ( 1 << 9 );
507 else if ( efDecision_s == "Dimuon" ) efBitPattern[0] = 1 << 10;
508 // else if(efDecision_s=="GDimuon") efBitPattern[0]=(1<<10)+(1<<11);
509 else if ( efDecision_s == "GDimuon" ) efBitPattern[0] = ( 1 << 11 );
510 else if ( efDecision_s == "Diphoton" ) efBitPattern[0] = 1 << 12;
511 // else if(efDecision_s=="GDiphoton") efBitPattern[0]=(1<<12)+(1<<13);
512 else if ( efDecision_s == "GDiphoton" ) efBitPattern[0] = ( 1 << 13 );
513 else if ( efDecision_s == "Hadron" ) efBitPattern[0] = 1 << 14;
514 // else if(efDecision_s=="GHadron") efBitPattern[0]=(1<<14)+(1<<15);
515 else if ( efDecision_s == "GHadron" ) efBitPattern[0] = ( 1 << 15 );
516 else if ( efDecision_s == "Twophoton" ) efBitPattern[0] = 1 << 16;
517 // else if(efDecision_s=="GTwophoton") efBitPattern[0]=(1<<16)+(1<<17);
518 else if ( efDecision_s == "GTwophoton" ) efBitPattern[0] = ( 17 );
519 else if ( efDecision_s == "RandomTrg" ) efBitPattern[0] = 1 << 31;
520 else if ( efDecision_s == "Error" ) efBitPattern[0] = 1 << 30;
521 else if ( efDecision_s == "Other" ) efBitPattern[0] = 1 << 29;
522 else efBitPattern[0] = 1 << 28;
523 efBitPattern[1] = processor_psc->EF_Algorithm_Tag();
524 efBitPattern[2] = processor_psc->EF_Version();
525 efBitPattern[3] = processor_psc->EF_Total_Energy();
526 // EFPSC_DBG1("efpsc::SC::process", "**************end of psc
527 // process!**************"<<std::endl);
528 if ( m_outLev <= 2 )
529 std::cout << "efpsc::SC::process "
530 << "**************end of psc process!**************" << std::endl;
531 }
532 }
533 else
534 {
535 // EFPSC_DBG1("efpsc::SC::process", "executeEvent ApplicationMgr : no valid event
536 // processor ");
537 if ( m_outLev <= 5 )
538 std::cout << "efpsc::SC::process "
539 << "executeEvent ApplicationMgr : no valid event processor " << std::endl;
540 return false;
541 }
542 }
543 else { return false; }
544 return true;
545}
Defines the error and reporting policies.
virtual bool prepareForRun(int run_number)
Definition SC.cxx:389
virtual ~SC()
Definition SC.cxx:52
virtual bool unconfigure(void)
Definition SC.cxx:298
virtual bool configure(const std::string &config)
Definition SC.cxx:57
SC()
Definition SC.cxx:34
virtual bool process(const uint32_t *&feStore, const uint32_t *&sdStore, std::string &efDecision_s, std::vector< uint32_t > &efBitPattern)
Definition SC.cxx:401