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 size_t maxStates; 00039 00040 public: 00046 WAC_MaxLength(const size_t max); 00047 bool abort(StateCollector* sc) const; 00051 size_t getMaxLength(void) const; 00055 void setMaxLength(size_t maxLength); 00056 }; 00057 00058 00065 class WAC_MaxEnergy : public WalkAbortionCriterion 00066 { 00067 private: 00068 00070 const double maxEnergy; 00071 00072 public: 00078 WAC_MaxEnergy(const double max); 00079 bool abort(StateCollector* sc) const; 00080 }; 00081 00082 00089 class WAC_MinEnergy : public WalkAbortionCriterion 00090 { 00091 private: 00093 const double minEnergy; 00094 00095 public: 00101 WAC_MinEnergy(const double min); 00102 bool abort(StateCollector* sc) const; 00103 }; 00104 00110 class WAC_OpenEnd : public WalkAbortionCriterion 00111 { 00112 public: 00113 WAC_OpenEnd(); 00114 bool abort(StateCollector* sc) const; 00115 }; 00116 00123 class WAC_OR : public WalkAbortionCriterion 00124 { 00125 private: 00126 const WalkAbortionCriterion& wac_a; 00127 const WalkAbortionCriterion& wac_b; 00128 00129 public: 00134 WAC_OR( const WalkAbortionCriterion& wac_a, 00135 const WalkAbortionCriterion& wac_b); 00136 bool abort(StateCollector* sc) const; 00137 }; 00138 00139 } // namespace ell 00140 00141 #endif /*WALKABORTIONCRITERION_HH_*/