File indexing completed on 2025-04-19 09:10:03
0001 #ifndef EXTRA_XS_Main_Single_Process_H
0002 #define EXTRA_XS_Main_Single_Process_H
0003
0004 #include "PHASIC++/Process/Single_Process.H"
0005
0006 namespace PHASIC { class Virtual_ME2_Base; }
0007
0008 namespace EXTRAXS {
0009
0010 class ME2_Base;
0011
0012 class Single_Process: public PHASIC::Single_Process {
0013 private:
0014 ME2_Base * p_born_me2;
0015 PHASIC::Virtual_ME2_Base * p_virtual_me2;
0016 ATOOLS::nlo_type::code m_nlotype;
0017 std::set<std::pair<size_t,size_t> > m_ccombs;
0018 std::map<size_t,ATOOLS::Flavour_Vector> m_cfls;
0019
0020 bool m_localFS, m_stashed;
0021 ATOOLS::Flavour_Vector m_original_flavs;
0022 ATOOLS::Vec4D_Vector m_original_momenta;
0023 size_t m_original_nout;
0024
0025 void StashOriginalFlavours();
0026 void RestoreOriginalFlavours();
0027 void OverwriteOriginalWithLocalFlavoursAndMomenta();
0028 protected:
0029 double m_sprimemin, m_sprimemax;
0030 public:
0031
0032
0033 Single_Process();
0034
0035
0036 ~Single_Process();
0037
0038
0039 bool Initialize();
0040 bool FillIntegrator(PHASIC::Phase_Space_Handler *const psh);
0041
0042 double Partonic(const ATOOLS::Vec4D_Vector&,
0043 ATOOLS::Variations_Mode varmode,
0044 int mode);
0045
0046 bool Combinable(const size_t &idi, const size_t &idj);
0047
0048 const ATOOLS::Flavour_Vector &CombinedFlavour(const size_t &idij);
0049 bool FillFinalState(const ATOOLS::Vec4D_Vector &p);
0050
0051 double CustomRelativeVariationWeightForRenormalizationScaleFactor(double) const;
0052
0053
0054 std::vector<std::vector<int> > * Colours() const;
0055
0056 const bool HasInternalScale() const;
0057 const double InternalScale() const;
0058
0059 inline ME2_Base * GetME() const { return p_born_me2; }
0060 inline const double SPrimeMin() const { return m_sprimemin; }
0061 inline const double SPrimeMax() const { return m_sprimemax; }
0062
0063 void FillAmplitudes(std::vector<METOOLS::Spin_Amplitudes> &s,
0064 std::vector<std::vector<Complex>> &cols) {}
0065 };
0066 }
0067
0068 #endif
0069
0070
0071