File indexing completed on 2025-04-19 09:10:17
0001 #ifndef YFS_Main_YFS_Base_H
0002 #define YFS_Main_YFS_Base_H
0003
0004 #include "ATOOLS/Math/Vector.H"
0005 #include "ATOOLS/Math/MathTools.H"
0006 #include "ATOOLS/Phys/Flavour.H"
0007 #include "ATOOLS/Org/Run_Parameter.H"
0008
0009
0010 using namespace ATOOLS;
0011
0012 namespace YFS {
0013 struct submode {
0014 enum code {
0015 off = 0,
0016 local = 1,
0017 global = 2
0018 };
0019 };
0020 struct yfsmode {
0021 enum code {
0022 off = 0,
0023 isr = 1,
0024 isrfsr = 2,
0025 fsr = 3,
0026 };
0027 };
0028
0029 struct wgt {
0030 enum code {
0031 off = 0,
0032 full = 1,
0033 mass = 2,
0034 hide = 3,
0035 jacob = 4,
0036 };
0037 };
0038
0039
0040 std::istream &operator>>(std::istream &str, submode::code &sm);
0041 std::istream &operator>>(std::istream &str, yfsmode::code &sm);
0042 std::istream &operator>>(std::istream &str, wgt::code &sm);
0043 std::ostream &operator<<(std::ostream &str, const yfsmode::code &sm);
0044 std::ostream &operator<<(std::ostream &str, const wgt::code &sm);
0045
0046 class YFS_Base {
0047 protected:
0048
0049 double m_exponent, m_xmax;
0050 bool m_on;
0051
0052 public:
0053 YFS_Base();
0054 virtual ~YFS_Base();
0055
0056 bool On() const { return m_on; }
0057
0058 double m_mass2[2];
0059 double m_s;
0060 double m_v, m_vmin, m_vmax, m_isrcut, m_sp;
0061 double m_alpha, m_alpi, m_hardmin, m_gp, m_g;
0062 bool m_CalForm, m_fillblob, m_isr_debug, m_fsr_debug, m_coulomb, m_setparticles;
0063 double m_photonMass, m_oneloop, m_born, m_isrWeight, m_fsrWeight, m_rescale_alpha;
0064 double m_nbar, m_deltacut, m_betatWW, m_eps, m_fixed_weight, m_resonace_max;
0065
0066 int m_order, m_betaorder, m_fullform, m_formWW, m_ifisub;
0067 int m_check_mass_reg, m_check_poles, m_check_real;
0068 int m_rmode, m_qedmode, m_kkmcAngles;
0069 int m_no_born, m_check_real_sub, m_no_subtraction, m_tchannel, m_check_virt_born, m_noflux, m_massless_sub;
0070
0071 bool m_looptool, m_virtual_only, m_real_only, m_use_model_alpha;
0072 bool m_isrinital, m_realtool, m_realvirt, m_useceex, m_coll_real;
0073 int m_flux_mode, m_hidephotons, m_photon_split, m_int_nlo;
0074 std::string m_name, m_type, m_debugDIR_ISR, m_debugDIR_FSR, m_debugDIR_NLO;
0075 Vec4D m_beam1, m_beam2;
0076
0077 submode::code m_submode;
0078 yfsmode::code m_mode;
0079
0080
0081 void RegisterSettings();
0082 void RegisterDefaults();
0083 double Eikonal(const Vec4D &k, const Vec4D &p1, const Vec4D &p2);
0084 double EikonalMassless(const Vec4D &k, const Vec4D &p1, const Vec4D &p2);
0085 inline bool HasISR() const {return (m_mode != yfsmode::off && m_mode != yfsmode::fsr); }
0086 inline bool HasFSR() const {return (m_mode != yfsmode::off && m_mode != yfsmode::isr); }
0087
0088 };
0089 }
0090
0091 #endif