File indexing completed on 2025-04-19 09:10:05
0001 #ifndef MCATNLO_Main_CS_Shower_H
0002 #define MCATNLO_Main_CS_Shower_H
0003
0004 #include "PDF/Main/NLOMC_Base.H"
0005 #include "MCATNLO/Main/CS_Cluster_Definitions.H"
0006 #include "MCATNLO/Showers/Shower.H"
0007 #include "ATOOLS/Phys/Blob_List.H"
0008
0009 namespace MCATNLO {
0010
0011 class Splitting_Function_Base;
0012 class CS_Gamma;
0013
0014 typedef std::map<size_t,std::pair<double,double> > KT2X_Map;
0015
0016 class CS_MCatNLO : public PDF::NLOMC_Base {
0017
0018 private:
0019
0020 PDF::ISR_Handler * p_isr;
0021 size_t m_maxem, m_nem, m_psmode;
0022 double m_maxweight;
0023
0024 Shower * p_mcatnlo;
0025 All_Singlets m_allsinglets;
0026 CS_Cluster_Definitions *p_cluster;
0027 CS_Gamma *p_gamma;
0028 All_Singlets *p_next;
0029
0030 ATOOLS::Mass_Selector *p_ms;
0031 ATOOLS::Cluster_Amplitude *p_rampl;
0032
0033 Singlet *TranslateAmplitude(ATOOLS::Cluster_Amplitude *const ampl,
0034 std::map<ATOOLS::Cluster_Leg*,Parton*> &pmap,
0035 std::map<Parton*,ATOOLS::Cluster_Leg*> &lmap);
0036
0037 int PerformMCatNLO(const size_t &maxem,size_t &nem,const double &qfac);
0038
0039 bool PrepareMCatNLO(ATOOLS::Cluster_Amplitude *const ampl);
0040
0041 void CleanUp();
0042
0043 public:
0044
0045
0046 CS_MCatNLO(PDF::ISR_Handler* const,
0047 MODEL::Model_Base* const);
0048
0049
0050 ~CS_MCatNLO();
0051
0052
0053 int GeneratePoint(ATOOLS::Cluster_Amplitude *const ampl);
0054
0055 double KT2(const ATOOLS::NLO_subevt &sub,
0056 const double &x,const double &y,const double &Q2);
0057
0058 void AddRBPoint(ATOOLS::Cluster_Amplitude *const ampl);
0059
0060 ATOOLS::Cluster_Amplitude *GetRealEmissionAmplitude(const int mode=0);
0061
0062 inline size_t PSMode() const { return m_psmode; }
0063
0064 };
0065
0066 }
0067
0068 #endif