#ifndef PDF_Main_NLOMC_Base_H #define PDF_Main_NLOMC_Base_H #include "ATOOLS/Org/Getter_Function.H" #include "ATOOLS/Org/Settings.H" #include "ATOOLS/Phys/Weights.H" #include "ATOOLS/Phys/NLO_Subevt.H" #include namespace ATOOLS { class Cluster_Amplitude; struct RB_Data; } namespace MODEL { class Model_Base; } namespace PHASIC { class Process_Base; } namespace PDF { class ISR_Handler; class Shower_Base; class NLOMC_Base { protected: std::string m_name; Shower_Base *p_shower; double m_kt2min[2]; ATOOLS::Weights_Map m_weightsmap; ATOOLS::subscheme::code m_subtype; public: NLOMC_Base(const std::string &name); virtual ~NLOMC_Base(); virtual int GeneratePoint(ATOOLS::Cluster_Amplitude *const ampl) = 0; virtual double KT2(const ATOOLS::NLO_subevt &sub, const double &x,const double &y, const double &Q2) = 0; static void ShowSyntax(const int mode); inline const std::string &Name() const { return m_name; } inline double KT2Min(const int mode) const { return m_kt2min[mode]; } inline const ATOOLS::Weights_Map& WeightsMap() const { return m_weightsmap; } inline void SetShower(Shower_Base *const shower) { p_shower=shower; } inline ATOOLS::subscheme::code SubtractionType() const { return m_subtype; } };// end of class NLOMC_Base struct NLOMC_Key { MODEL::Model_Base *p_model; ISR_Handler *p_isr; inline NLOMC_Key(MODEL::Model_Base *const model, ISR_Handler *const isr): p_model(model), p_isr(isr) {} };//end of struct NLOMC_Key typedef ATOOLS::Getter_Function NLOMC_Getter; }// end of namespace PDF #endif