File indexing completed on 2025-04-19 09:09:45
0001 #ifndef AMEGIC_Amplitude_FullAmplitude_External_H
0002 #define AMEGIC_Amplitude_FullAmplitude_External_H
0003
0004 #include "PHASIC++/Process/Tree_ME2_Base.H"
0005 #include "MODEL/Main/Model_Base.H"
0006 #include "ATOOLS/Math/MyComplex.H"
0007 #include "ATOOLS/Math/Permutation.H"
0008
0009 namespace AMEGIC {
0010
0011 class Basic_Sfuncs;
0012 class Helicity;
0013
0014 class FullAmplitude_External {
0015 protected:
0016
0017 PHASIC::Tree_ME2_Base *p_calc;
0018 ATOOLS::Flavour_Vector m_fls;
0019
0020 MODEL::Model_Base *p_model;
0021
0022 size_t m_nin, m_oqcd, m_oew, m_emit, m_spect;
0023 double m_A;
0024 Complex m_eip;
0025
0026 std::vector<PHASIC::Tree_ME2_Base::Map_Info> m_amap;
0027
0028 std::vector<std::vector<size_t> > m_hmap;
0029 std::vector<std::vector<int> > m_pmap;
0030
0031 std::vector<std::vector<std::vector<std::vector<Complex> > > > m_colfs;
0032
0033 void GetPermutation(const std::vector<size_t> &ids,
0034 std::vector<size_t> &cid,
0035 ATOOLS::Flavour_Vector &cfl,
0036 int &nsub,int &psub,int &swap) const;
0037
0038 void BuildHelicityMap(Helicity *const hel);
0039 void BuildColorMatrix(const size_t &ci,const size_t &cj);
0040 void BuildColorMatrix();
0041
0042 public:
0043
0044
0045 FullAmplitude_External(const PHASIC::Process_Info &pi,
0046 MODEL::Model_Base *model,
0047 MODEL::Coupling_Map *const cpls,Helicity *hel,
0048 const size_t &emit,const size_t &spect);
0049
0050
0051 ~FullAmplitude_External();
0052
0053 double Calc(const ATOOLS::Vec4D *p);
0054
0055 double MSquare(const size_t &h) const;
0056 double MSquare(const size_t &h,const size_t &i,const size_t &j);
0057
0058 void SetSqMatrix(const double &A,const ATOOLS::Vec4D &pijt,
0059 const ATOOLS::Vec4D &eps1);
0060
0061 inline int OrderQCD() const { return m_oqcd; }
0062 inline int OrderEW() const { return m_oew; }
0063
0064 inline bool Status() const { return p_calc!=NULL; }
0065
0066 inline PHASIC::Tree_ME2_Base *Calc() const { return p_calc; }
0067
0068 };
0069
0070 }
0071
0072 #endif