File indexing completed on 2025-04-19 09:10:11
0001 #ifndef PHASIC_Process_ME_Generator_Base_H
0002 #define PHASIC_Process_ME_Generator_Base_H
0003
0004 #include "PHASIC++/Process/Process_Base.H"
0005 #include "ATOOLS/Org/Getter_Function.H"
0006
0007 namespace ATOOLS { class Cluster_Amplitude; }
0008 namespace BEAM { class Beam_Spectra_Handler; }
0009 namespace PDF { class ISR_Handler; }
0010 namespace YFS { class YFS_Handler; }
0011 namespace MODEL { class Model_Base; }
0012 namespace REMNANTS { class Remnant_Handler; }
0013
0014 namespace PHASIC {
0015
0016 class ME_Generators;
0017
0018 class ME_Generator_Base: public ATOOLS::Mass_Selector
0019 {
0020 private:
0021
0022 std::string m_name;
0023 ATOOLS::Flavour_Set m_psmass;
0024 ME_Generators* p_gens;
0025 REMNANTS::Remnant_Handler *p_remnant;
0026
0027 void RegisterDefaults();
0028 void RegisterDipoleParameters();
0029 void RegisterNLOParameters();
0030 template <typename T>
0031 void SetParameter(const std::string& param, const T& def);
0032
0033 int ShiftMassesDefault(ATOOLS::Cluster_Amplitude *const ampl, ATOOLS::Vec4D cms);
0034 int ShiftMassesDIS(ATOOLS::Cluster_Amplitude *const ampl, ATOOLS::Vec4D cms);
0035
0036 protected:
0037
0038 int m_massmode;
0039 void SetPSMasses();
0040
0041 public:
0042
0043
0044 ME_Generator_Base(const std::string &name);
0045
0046
0047 virtual ~ME_Generator_Base();
0048
0049
0050 virtual bool Initialize(MODEL::Model_Base* const,
0051 BEAM::Beam_Spectra_Handler* const,
0052 PDF::ISR_Handler* const,
0053 YFS::YFS_Handler* const) = 0;
0054
0055 virtual Process_Base *InitializeProcess(const Process_Info &pi,
0056 bool add)=0;
0057 virtual int PerformTests() = 0;
0058 virtual bool NewLibraries() = 0;
0059
0060 Process_Base *InitializeProcess
0061 (ATOOLS::Cluster_Amplitude *const ampl,const int mode,
0062 const std::string &gen="",const std::string &addname="");
0063
0064 int ShiftMasses(ATOOLS::Cluster_Amplitude *const ampl);
0065
0066 double Mass(const ATOOLS::Flavour &fl) const;
0067
0068 static void ShowSyntax(const int mode);
0069
0070
0071 inline std::string Name() const { return m_name; }
0072
0073 inline int SetMassMode(const int mode)
0074 { int mm(m_massmode); m_massmode=mode; return mm; }
0075
0076 inline int MassMode() { return m_massmode; }
0077
0078 inline void SetGenerators(ME_Generators *const gens) { p_gens=gens; }
0079
0080 inline ME_Generators *Generators() const { return p_gens; }
0081
0082 virtual void SetModel(MODEL::Model_Base*) {};
0083
0084 inline void SetRemnantHandler(REMNANTS::Remnant_Handler *remnant) {
0085 p_remnant = remnant;
0086 }
0087 };
0088
0089 struct ME_Generator_Key {
0090 ME_Generator_Key() {};
0091 };
0092
0093 typedef ATOOLS::Getter_Function
0094 <ME_Generator_Base,ME_Generator_Key> ME_Generator_Getter;
0095
0096 }
0097
0098 #endif