File indexing completed on 2025-04-19 09:10:08
0001 #ifndef PDF_Main_NLOMC_Base_H
0002 #define PDF_Main_NLOMC_Base_H
0003
0004 #include "ATOOLS/Org/Getter_Function.H"
0005 #include "ATOOLS/Org/Settings.H"
0006 #include "ATOOLS/Phys/Weights.H"
0007 #include "ATOOLS/Phys/NLO_Subevt.H"
0008
0009 #include <string>
0010
0011 namespace ATOOLS {
0012
0013 class Cluster_Amplitude;
0014 struct RB_Data;
0015
0016 }
0017
0018 namespace MODEL { class Model_Base; }
0019
0020 namespace PHASIC { class Process_Base; }
0021
0022 namespace PDF {
0023
0024 class ISR_Handler;
0025 class Shower_Base;
0026
0027 class NLOMC_Base {
0028 protected:
0029
0030 std::string m_name;
0031
0032 Shower_Base *p_shower;
0033
0034 double m_kt2min[2];
0035
0036 ATOOLS::Weights_Map m_weightsmap;
0037
0038 ATOOLS::subscheme::code m_subtype;
0039
0040 public:
0041
0042 NLOMC_Base(const std::string &name);
0043
0044 virtual ~NLOMC_Base();
0045
0046 virtual int GeneratePoint(ATOOLS::Cluster_Amplitude *const ampl) = 0;
0047
0048 virtual double KT2(const ATOOLS::NLO_subevt &sub,
0049 const double &x,const double &y,
0050 const double &Q2) = 0;
0051
0052 static void ShowSyntax(const int mode);
0053
0054 inline const std::string &Name() const { return m_name; }
0055
0056 inline double KT2Min(const int mode) const { return m_kt2min[mode]; }
0057
0058 inline const ATOOLS::Weights_Map& WeightsMap() const { return m_weightsmap; }
0059
0060 inline void SetShower(Shower_Base *const shower) { p_shower=shower; }
0061
0062 inline ATOOLS::subscheme::code SubtractionType() const { return m_subtype; }
0063
0064 };
0065
0066 struct NLOMC_Key {
0067 MODEL::Model_Base *p_model;
0068 ISR_Handler *p_isr;
0069 inline NLOMC_Key(MODEL::Model_Base *const model,
0070 ISR_Handler *const isr):
0071 p_model(model), p_isr(isr) {}
0072 };
0073
0074 typedef ATOOLS::Getter_Function
0075 <NLOMC_Base,NLOMC_Key> NLOMC_Getter;
0076
0077 }
0078
0079 #endif