src/ell/WalkAbortionCriterion.hh
Go to the documentation of this file.00001 #ifndef WALKABORTIONCRITERION_HH_ 00002 #define WALKABORTIONCRITERION_HH_ 00003 00004 00005 #include "ell/StateCollector.hh" 00006 00007 namespace ell 00008 { 00015 class WalkAbortionCriterion 00016 { 00017 public: 00018 00019 virtual ~WalkAbortionCriterion(){}; 00020 00024 virtual bool abort(StateCollector* sc) const = 0; 00025 }; 00026 00027 00034 class WAC_MaxLength : public WalkAbortionCriterion 00035 { 00036 private: 00038 const size_t maxStates; 00039 00040 public: 00046 WAC_MaxLength(const size_t max); 00047 bool abort(StateCollector* sc) const; 00048 }; 00049 00050 00057 class WAC_MaxEnergy : public WalkAbortionCriterion 00058 { 00059 private: 00060 00062 const double maxEnergy; 00063 00064 public: 00070 WAC_MaxEnergy(const double max); 00071 bool abort(StateCollector* sc) const; 00072 }; 00073 00074 00081 class WAC_MinEnergy : public WalkAbortionCriterion 00082 { 00083 private: 00085 const double minEnergy; 00086 00087 public: 00093 WAC_MinEnergy(const double min); 00094 bool abort(StateCollector* sc) const; 00095 }; 00096 00102 class WAC_OpenEnd : public WalkAbortionCriterion 00103 { 00104 public: 00105 WAC_OpenEnd(); 00106 bool abort(StateCollector* sc) const; 00107 }; 00108 00115 class WAC_OR : public WalkAbortionCriterion 00116 { 00117 private: 00118 const WalkAbortionCriterion& wac_a; 00119 const WalkAbortionCriterion& wac_b; 00120 00121 public: 00126 WAC_OR( const WalkAbortionCriterion& wac_a, 00127 const WalkAbortionCriterion& wac_b); 00128 bool abort(StateCollector* sc) const; 00129 }; 00130 00131 } // namespace ell 00132 00133 #endif /*WALKABORTIONCRITERION_HH_*/