00001 #include "GaudiKernel/MsgStream.h"
00002 #include "GaudiKernel/AlgFactory.h"
00003 #include "GaudiKernel/ISvcLocator.h"
00004 #include "GaudiKernel/SmartDataPtr.h"
00005 #include "GaudiKernel/IDataProviderSvc.h"
00006 #include "GaudiKernel/PropertyMgr.h"
00007 #include "GaudiKernel/Bootstrap.h"
00008
00009 #include "EventModel/EventModel.h"
00010 #include "EventModel/Event.h"
00011 #include "EventModel/EventHeader.h"
00012
00013 #include "RunEventNumberAlg/RunEventNumber.h"
00014 #include <time.h>
00015
00016 time_t rawtime;
00017
00018
00020
00021
00022 RunEventNumber::RunEventNumber(const std::string& name, ISvcLocator* pSvcLocator) :
00023 Algorithm(name, pSvcLocator) {
00024
00025
00026 declareProperty("Period", m_period = 0);
00027
00028 }
00029
00030
00031 StatusCode RunEventNumber::initialize(){
00032 MsgStream log(msgSvc(), name());
00033
00034 log << MSG::INFO << "in initialize()" << endmsg;
00035 StatusCode sc;
00036
00037 numEvents = 0;
00038 numRuns = 0;
00039 prevRun = 0;
00040
00041 log << MSG::INFO << "successfully return from initialize()" <<endmsg;
00042 return StatusCode::SUCCESS;
00043
00044 }
00045
00046
00047 StatusCode RunEventNumber::execute() {
00048
00049 MsgStream log(msgSvc(), name());
00050 log << MSG::INFO << "in execute()" << endreq;
00051
00052 numEvents++;
00053
00054 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00055 int runNum=eventHeader->runNumber();
00056 int eventNum=eventHeader->eventNumber();
00057
00058 if(runNum != prevRun) {
00059 numRuns++;
00060 prevRun = runNum;
00061 }
00062
00063 if((m_period != 0)&&(numEvents % m_period == 0)) {
00064 time ( &rawtime );
00065 std::cout << " RunEventNumberAlg: Run, event, time = "
00066 << runNum << ", " << eventNum << ", " << asctime(localtime(&rawtime));
00067 }
00068
00069 return StatusCode::SUCCESS;
00070 }
00071
00072
00073
00074 StatusCode RunEventNumber::finalize() {
00075
00076 MsgStream log(msgSvc(), name());
00077 log << MSG::INFO << "in finalize()" << endmsg;
00078
00079 std::cout << std::endl;
00080 std::cout << " RunEventNumberAlg: Number of processed runs = " << numRuns << std::endl;
00081 std::cout << " RunEventNumberAlg: Number of processed events = " << numEvents << std::endl;
00082 std::cout << std::endl;
00083
00084 return StatusCode::SUCCESS;
00085 }
00086