Back to home page

EIC code displayed by LXR

 
 

    


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   };// end of class Coupling_Data
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 }// end of namespace MODEL
0061 
0062 #endif