00001 #ifndef STEPHANDLER_H 00002 #define STEPHANDLER_H 00003 00004 #include <vector> 00005 #include <string> 00006 00007 #include "GaudiKernel/Algorithm.h" 00008 #include "HltConfig/HltConfigSvc.h" 00009 #include "HltStore/HltStoreSvc.h" 00010 #include "HltDataTypes/EFResult.h" 00011 #include "HltSteering/StepSequencer.h" 00012 #include "HltSteering/StepDecision.h" 00013 00014 #ifdef TIME_MEASUREMENT 00015 #include "GaudiKernel/NTuple.h" 00016 #include "BesTimerSvc/IBesTimerSvc.h" 00017 #include "BesTimerSvc/BesTimerSvc.h" 00018 #include <iomanip> //setw() 00019 #endif 00020 00021 class StepHandler : public Algorithm 00022 { 00023 public: 00024 00025 StepHandler(const std::string& name, ISvcLocator* pSvcLocator); 00026 ~StepHandler(); 00027 00028 StatusCode initialize(); 00029 StatusCode finalize(); 00030 StatusCode execute(); 00031 StatusCode beginRun(); 00032 00033 private: 00034 00035 HltStoreSvc* m_HltStoreSvc; 00036 HltConfigSvc* m_HltConfigSvc; 00037 StepSequencer* sequencerAlg; 00038 StepDecision* decisionAlg; 00039 00040 EFResult* m_EFResult; 00041 EFResult* m_evtType; 00042 std::vector<std::string> m_stepIdList; 00043 00044 std::vector<std::string> m_tmp_evtType; 00045 #ifdef TIME_MEASUREMENT 00046 IBesTimerSvc* m_timersvc; 00047 BesTimer* m_timer[5]; 00048 00049 NTuple::Tuple* m_tuple; 00050 00051 NTuple::Item<float> g_StepHandlerTime; 00052 NTuple::Item<float> g_1stStepExecTime; 00053 NTuple::Item<float> g_1stStepDeciTime; 00054 NTuple::Item<float> g_2ndStepExecTime; 00055 NTuple::Item<float> g_2ndStepDeciTime; 00056 unsigned long round; 00057 #endif 00058 }; 00059 00060 #endif