File indexing completed on 2025-04-19 09:10:11
0001 #ifndef PHASIC_Scales_KFactor_Setter_Base_H
0002 #define PHASIC_Scales_KFactor_Setter_Base_H
0003
0004 #include "ATOOLS/Org/Exception.H"
0005 #include "PHASIC++/Scales/Scale_Setter_Base.H"
0006
0007 namespace PHASIC {
0008
0009 struct KFactor_Setter_Arguments {
0010 Process_Base *p_proc;
0011 std::string m_kfac;
0012 KFactor_Setter_Arguments(const std::string& kfac,
0013 Process_Base* proc=nullptr):
0014 m_kfac{kfac}, p_proc{proc} {}
0015 };
0016
0017 class KFactor_Setter_Base {
0018 public:
0019
0020 typedef ATOOLS::Getter_Function
0021 <KFactor_Setter_Base,KFactor_Setter_Arguments> KFactor_Getter_Function;
0022
0023 protected:
0024
0025 Process_Base *p_proc;
0026
0027 double m_weight;
0028
0029 bool m_on;
0030
0031 public:
0032
0033 KFactor_Setter_Base(const KFactor_Setter_Arguments &args);
0034
0035 virtual ~KFactor_Setter_Base();
0036
0037
0038 virtual double KFactor(const int mode=0) = 0;
0039
0040 virtual double KFactor(const ATOOLS::NLO_subevt& evt);
0041
0042 virtual bool UpdateKFactor(const ATOOLS::QCD_Variation_Params &var);
0043
0044 inline Process_Base *Process() const { return p_proc; }
0045
0046 inline void SetOn(const bool on) { m_on=on; }
0047
0048 inline bool On() const { return m_on; }
0049
0050 inline double LastKFactor() const { return m_weight; }
0051
0052 static void ShowSyntax(const size_t i);
0053
0054 };
0055
0056 }
0057
0058 #endif