00001 00008 #ifndef __BASECUTBASE_H 00009 #define __BASECUTBASE_H 00010 00011 #ifndef __NAMEDO_H 00012 #include "jbltools/sfh/NamedO.h" 00013 #endif /* #ifndef __NAMEDO_H */ 00014 00015 class FillIterator; 00016 class FloatFun; 00017 class IntFun; 00018 00019 // Class BaseCut: 00021 00051 class BaseCut: public NamedO { 00052 public: 00053 // Constructors 00055 explicit BaseCut (const char *name_ = "?" 00056 ) 00057 : NamedO (name_) 00058 {} 00060 explicit BaseCut (const std::string& name_ 00061 ) 00062 : NamedO (name_) 00063 {} 00065 BaseCut (const std::string& name_, 00066 const std::string& definition_ 00067 ) 00068 : NamedO (name_, definition_) 00069 {} 00070 00072 virtual bool operator() () const = 0; 00074 virtual FloatFun& Float () const; 00076 virtual IntFun& Int () const; 00078 virtual void destroy() { delete this; } 00080 virtual const FillIterator *getIterator() const { return 0; } 00081 00083 00087 static BaseCut *getObject (const std::string& name 00088 ) { 00089 return NamedO::getObject<BaseCut>(name); 00090 } 00091 00093 00097 static BaseCut *getObject (const char * name 00098 ) { 00099 return NamedO::getObject<BaseCut>(name); 00100 } 00101 protected: 00103 virtual ~BaseCut() {}; 00104 }; 00105 00106 #endif /* #ifndef __BASECUTBASE_H */