Back to home page

EIC code displayed by LXR

 
 

    


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   };// end of class KFactor_Setter_Arguments
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     // compute KFactor according to kinematics and flavours of p_proc
0038     virtual double KFactor(const int mode=0) = 0;
0039     // compute KFactor according to kinematics and flavours of NLO subevent
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   };// end of class KFactor_Setter_Base
0055 
0056 }// end of namespace PHASIC
0057 
0058 #endif