File indexing completed on 2025-12-13 10:29:10
0001 #ifndef EXTRA_XS_Main_ME2_Base_H
0002 #define EXTRA_XS_Main_ME2_Base_H
0003
0004 #include "PHASIC++/Process/Tree_ME2_Base.H"
0005 #include "ATOOLS/Org/Getter_Function.H"
0006 #include "MODEL/Main/Coupling_Data.H"
0007
0008 namespace EXTRAXS {
0009
0010 class ME2_Base: public PHASIC::Tree_ME2_Base {
0011 protected:
0012 std::vector<std::vector<int> > m_colours;
0013 size_t m_oew, m_oqcd, m_sintt;
0014 double m_symfac, m_sprimemin, m_sprimemax;
0015 bool m_hasinternalscale;
0016
0017 double m_internalscale;
0018 std::map<size_t,ATOOLS::Flavour_Vector> m_cfls;
0019
0020 std::vector<ATOOLS::Flavour> m_flavours;
0021 std::vector<ATOOLS::Vec4D> m_momenta;
0022 public:
0023 ME2_Base(const PHASIC::External_ME_Args&);
0024 virtual ~ME2_Base();
0025
0026 double CouplingFactor(const int oqcd,const int oew) const;
0027
0028 double Calc(const ATOOLS::Vec4D_Vector &p);
0029
0030 virtual double operator()(const ATOOLS::Vec4D_Vector& momenta) = 0;
0031 virtual bool SetColours(const ATOOLS::Vec4D_Vector& momenta);
0032 virtual bool FillFinalState(const ATOOLS::Vec4D_Vector &p) { return true; }
0033
0034 inline size_t NOut() const { return m_flavours.size()-2; }
0035 inline const ATOOLS::Flavour_Vector & Flavours() const { return m_flavours; }
0036 inline const ATOOLS::Vec4D_Vector & Momenta() const { return m_momenta; }
0037 inline const ATOOLS::Flavour_Vector * GetFlavours() const { return &m_flavours; }
0038 inline const ATOOLS::Vec4D_Vector * GetMomenta() const { return &m_momenta; }
0039
0040 int OrderQCD(const int &id=-1) const;
0041 int OrderEW(const int &id=-1) const;
0042
0043
0044
0045
0046
0047
0048
0049
0050 virtual double CustomRelativeVariationWeightForRenormalizationScaleFactor(double) const {
0051 return 1.0;
0052 }
0053
0054 inline std::vector<std::vector<int> > & Colours() { return m_colours; }
0055 inline size_t SIntType() const { return m_sintt; }
0056 ATOOLS::Flavour_Vector& CombinedFlavour(const size_t &idij) { return m_cfls[idij]; }
0057
0058 inline const bool HasInternalScale() const { return m_hasinternalscale; }
0059 inline const double InternalScale() const { return m_internalscale; }
0060 inline const double SPrimeMin() const { return m_sprimemin; }
0061 inline const double SPrimeMax() const { return m_sprimemax; }
0062 };
0063 }
0064
0065 #endif