/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 #ifndef HISTORYKEEPER_H 00002 #define HISTORYKEEPER_H 00003 00004 #include "G4DataHelpers/IHistoryKeeper.h" 00005 #include "GaudiKernel/Service.h" 00006 #include "Event/SimParticleHistory.h" 00007 #include "Event/SimUnobservableStatisticsHeader.h" 00008 00009 class HistoryKeeper : public Service, public virtual IHistoryKeeper 00010 { 00011 public: 00012 HistoryKeeper( const std::string& name, ISvcLocator* svcloc) 00013 : Service( name, svcloc ) 00014 , mCurrentHistory(0) 00015 , mCurrentUnobservable(0) 00016 {}; 00017 00018 virtual ~HistoryKeeper() {}; 00019 00021 virtual StatusCode initialize() { mCurrentHistory = 0; return StatusCode::SUCCESS; }; 00023 virtual StatusCode finalize() { if(mCurrentHistory) delete mCurrentHistory; mCurrentHistory = 0; return StatusCode::SUCCESS;}; 00024 00026 virtual StatusCode queryInterface ( const InterfaceID& riid, void** ppvInterface ); 00027 00029 virtual const InterfaceID& type() const 00030 { return IHistoryKeeper::interfaceID(); }; 00031 00033 virtual StatusCode GetCurrentHistory(DayaBay::SimParticleHistory* &outHistory) 00034 { 00035 if(mCurrentHistory==0) 00036 mCurrentHistory = new DayaBay::SimParticleHistory(); 00037 outHistory = mCurrentHistory; 00038 return StatusCode::SUCCESS; 00039 } 00040 00043 virtual StatusCode ClaimCurrentHistory(DayaBay::SimParticleHistory* &outHistory) 00044 { 00045 outHistory = mCurrentHistory; 00046 mCurrentHistory = 0; 00047 return StatusCode::SUCCESS; 00048 } 00049 00051 virtual StatusCode GetCurrentUnobservable(DayaBay::SimUnobservableStatisticsHeader* &outUnobservable) 00052 { 00053 if(mCurrentUnobservable==0) 00054 mCurrentUnobservable = new DayaBay::SimUnobservableStatisticsHeader(); 00055 outUnobservable = mCurrentUnobservable; 00056 return StatusCode::SUCCESS; 00057 } 00058 00061 virtual StatusCode ClaimCurrentUnobservable(DayaBay::SimUnobservableStatisticsHeader* &outUnobservable) 00062 { 00063 outUnobservable = mCurrentUnobservable; 00064 mCurrentUnobservable = 0; 00065 return StatusCode::SUCCESS; 00066 } 00067 00068 private: 00069 DayaBay::SimParticleHistory* mCurrentHistory; 00070 DayaBay::SimUnobservableStatisticsHeader* mCurrentUnobservable; 00071 00072 }; 00073 00074 00075 00076 00077 #endif /* HISTORYKEEPER_H */ 00078