00001 #ifndef UNOBSERVERSTEPACTION_H 00002 #define UNOBSERVERSTEPACTION_H 00003 00004 #include "GiGa/GiGaStepActionBase.h" 00005 #include "QueriableStepAction.h" 00006 00007 00008 class IHistoryKeeper; 00009 class RuleParser::Rule; 00010 00011 class UnObserverStepAction: public QueriableStepAction 00012 { 00013 public: 00014 UnObserverStepAction( const std::string& type , 00015 const std::string& name , 00016 const IInterface* parent ) ; 00017 virtual ~UnObserverStepAction(); 00018 00019 virtual StatusCode initialize () ; 00020 virtual StatusCode finalize () ; 00021 virtual void UserSteppingAction(const G4Step*); 00022 00023 private: 00024 // configuration: 00025 std::vector< std::vector<std::string> > m_Stats; 00026 00027 // From the configuration: 00028 struct NamedStat{ 00029 std::string mName; 00030 int mParam; 00031 }; 00032 00033 struct StatGroup : public std::vector<NamedStat>{ 00034 RuleParser::Rule* mRule; 00035 }; 00036 std::vector<StatGroup> mGroups; 00037 00038 // memory: 00039 IHistoryKeeper* mKeeper; 00040 00041 UnObserverStepAction (); 00042 UnObserverStepAction ( const UnObserverStepAction& ); 00043 UnObserverStepAction& operator=( const UnObserverStepAction& ); 00044 00045 // bail messages 00046 int mBail ; 00047 }; 00048 00049 00050 00051 #endif