00001 #ifndef HZZ2L2NU_INCLUDE_WEIGHTBASE_H_
00002 #define HZZ2L2NU_INCLUDE_WEIGHTBASE_H_
00003
00004 #include <limits>
00005 #include <string_view>
00006
00013 class WeightBase {
00014 public:
00015 virtual ~WeightBase() noexcept = default;
00016
00018 virtual double NominalWeight() const = 0;
00019
00026 virtual int NumVariations() const {
00027 return 0;
00028 };
00029
00036 virtual double operator()() const {
00037 return NominalWeight();
00038 };
00039
00046 virtual double RelWeight(int ) const {
00047 return std::numeric_limits<double>::quiet_NaN();
00048 };
00049
00057 virtual std::string_view VariationName(int ) const {
00058 return "";
00059 };
00060 };
00061
00062 #endif // HZZ2L2NU_INCLUDE_WEIGHTBASE_H_
00063