File indexing completed on 2025-04-19 09:10:07
0001 #ifndef MODEL_Main_Coupling_Data_H
0002 #define MODEL_Main_Coupling_Data_H
0003
0004 #include "ATOOLS/Org/STL_Tools.H"
0005 #include "ATOOLS/Phys/NLO_Subevt.H"
0006
0007 #include <map>
0008
0009 namespace ATOOLS { class Function_Base; }
0010
0011 namespace MODEL {
0012
0013 class Coupling_Data {
0014 protected:
0015
0016 ATOOLS::Function_Base *p_cpl;
0017
0018 std::string m_id;
0019
0020 double m_def, m_fac, *p_scl;
0021
0022 ATOOLS::NLO_subevt *p_sub;
0023
0024 public:
0025
0026 inline Coupling_Data(ATOOLS::Function_Base *const cpl,
0027 const std::string &id,const double &def):
0028 p_cpl(cpl), m_id(id), m_def(def), m_fac(1.0),
0029 p_scl(NULL), p_sub(NULL) {}
0030 inline Coupling_Data(const Coupling_Data &cpl,
0031 ATOOLS::NLO_subevt *const sub)
0032 { *this=cpl; p_sub=sub; }
0033
0034 void Calculate();
0035
0036 inline void SetScale(double *const scl) { p_scl=scl; }
0037
0038 inline const std::string &ID() const { return m_id; }
0039
0040 inline double Default() const { return m_def; }
0041 inline double Factor() const { return m_fac; }
0042
0043 inline double Scale() const { return p_scl?*p_scl:-1.0; }
0044
0045 inline ATOOLS::NLO_subevt *Sub() const { return p_sub; }
0046
0047 };
0048
0049 std::ostream &operator<<(std::ostream &str,const Coupling_Data &cd);
0050
0051 struct Coupling_Map: public std::multimap
0052 <std::string,Coupling_Data*,ATOOLS::String_Sort> {
0053 void Calculate() const;
0054 Coupling_Data *Get(const std::string &tag,
0055 const ATOOLS::NLO_subevt *sub=NULL) const;
0056 };
0057
0058 std::ostream &operator<<(std::ostream &str,const Coupling_Map &cm);
0059
0060 }
0061
0062 #endif