File indexing completed on 2025-04-19 09:10:00
0001 #ifndef COMIX_Main_Single_Process_H
0002 #define COMIX_Main_Single_Process_H
0003
0004 #include "ATOOLS/Phys/NLO_Types.H"
0005 #include "COMIX/Main/Process_Base.H"
0006 #include "PHASIC++/Process/Single_Process.H"
0007 #include "PHASIC++/Process/KP_Terms.H"
0008 #include "COMIX/Amplitude/Amplitude.H"
0009
0010 namespace COMIX {
0011
0012 class Amplitude;
0013
0014 typedef std::set<PS_Generator*> PSGenerator_Set;
0015 typedef std::vector<std::vector<Complex> > Hard_Matrix;
0016
0017 class Single_Process:
0018 public PHASIC::Single_Process, public Process_Base {
0019
0020 protected:
0021
0022 Amplitude *p_bg;
0023 Hard_Matrix *p_hc;
0024 Single_Process *p_map;
0025
0026 PHASIC::Virtual_ME2_Base *p_loop;
0027 PHASIC::KP_Terms *p_kpterms;
0028
0029 ATOOLS::Vec4D_Vector m_p;
0030 ATOOLS::Flavour_Map m_fmap;
0031
0032 Combination_Set m_ccombs;
0033 CFlavVector_Map m_cflavs;
0034 PSGenerator_Set m_psset;
0035
0036 double m_w, m_dxs, m_x[2];
0037 bool m_checkpoles, m_allowmap, m_hasmapfile;
0038
0039 ATOOLS::sbt::subtype m_user_stype;
0040 ATOOLS::cs_itype::type m_user_imode;
0041 ATOOLS::NLO_subevtlist m_subs;
0042
0043 void InitPSGenerator(const size_t &ismode);
0044
0045 void MapSubEvts(const int mode);
0046
0047 double SetZero();
0048
0049 void FillMEWeights(ATOOLS::ME_Weight_Info &wgtinfo) const;
0050
0051 void UpdateKPTerms(const int mode);
0052 double KPTerms(const int mode,PDF::PDF_Base *pdfa,
0053 PDF::PDF_Base *pdfb,double scalefac2=1.0);
0054
0055 void ComputeHardMatrix(const int mode);
0056
0057 public:
0058
0059
0060 Single_Process();
0061
0062
0063 ~Single_Process();
0064
0065
0066 bool Initialize(std::map<std::string,std::string> *const pmap,
0067 std::vector<Single_Process*> *const procs,
0068 const std::vector<int> &blocks,size_t &nproc);
0069 bool MapProcess();
0070
0071 int PerformTests();
0072
0073 void ConstructPSVertices(PS_Generator *ps);
0074
0075 Amplitude *GetAmplitude() const;
0076
0077 const Hard_Matrix *ComputeHardMatrix
0078 (ATOOLS::Cluster_Amplitude *const ampl,const int mode);
0079 double Partonic(const ATOOLS::Vec4D_Vector&,
0080 ATOOLS::Variations_Mode varmode,
0081 int mode);
0082 ATOOLS::Weights_Map Differential
0083 (const ATOOLS::Cluster_Amplitude& ampl,
0084 ATOOLS::Variations_Mode type=ATOOLS::Variations_Mode::nominal_only,
0085 int mode=0);
0086
0087 bool Trigger(const ATOOLS::Vec4D_Vector &p);
0088
0089 bool GeneratePoint();
0090 bool Tests();
0091
0092 bool FillIntegrator(PHASIC::Phase_Space_Handler *const psh);
0093
0094 bool Combinable(const size_t &idi,const size_t &idj);
0095
0096 const ATOOLS::Flavour_Vector &CombinedFlavour(const size_t &idij);
0097
0098 void FillAmplitudes(std::vector<METOOLS::Spin_Amplitudes> &s,
0099 std::vector<std::vector<Complex> > &cols);
0100
0101 ATOOLS::Flavour ReMap(const ATOOLS::Flavour &fl,
0102 const size_t &id) const;
0103
0104 ATOOLS::NLO_subevtlist *GetSubevtList();
0105 ATOOLS::NLO_subevtlist *GetRSSubevtList();
0106
0107 void SetScale(const PHASIC::Scale_Setter_Arguments &args);
0108 void SetShower(PDF::Shower_Base *const ps);
0109 void SetNLOMC(PDF::NLOMC_Base *const mc);
0110
0111 size_t SetMCMode(const size_t mcmode);
0112 void SetLookUp(const bool lookup);
0113
0114 };
0115
0116 }
0117
0118 #endif
0119
0120
0121