File indexing completed on 2025-04-19 09:09:44
0001 #ifndef AMEGIC_Amplitude_Zfunctions_MHVCalculator_H
0002 #define AMEGIC_Amplitude_Zfunctions_MHVCalculator_H
0003
0004 #define Basic_Sfuncs_In_MHV
0005 #ifdef Basic_Sfuncs_In_MHV
0006 #include "AMEGIC++/Amplitude/Zfunctions/Basic_Sfuncs.H"
0007 #else
0008 #include "AMEGIC++/Amplitude/Zfunctions/Mom.H"
0009 #endif
0010
0011 #include "ATOOLS/Math/MyComplex.H"
0012
0013
0014 namespace AMEGIC {
0015
0016 #ifdef Basic_Sfuncs_In_MHV
0017 class Basic_Sfuncs;
0018 typedef Basic_Sfuncs MomentumList;
0019 #else
0020 class MomentumList;
0021 #endif
0022
0023 class MHVCalculator {
0024 int n_part;
0025 int *m_dummyarg, *m_ndummyarg;
0026 int *m_dummysl, *m_ndummysl;
0027 int *m_plist, *m_signlist;
0028 int m_qlist[9];
0029
0030 MomentumList *p_BS;
0031
0032 inline int CountSign(int* signlist,int start,int end,int sg);
0033 void Make_Qlist(int* perm,int* plist,int* qlist,int part);
0034 bool Check_Qlist(int* perm,int* signlist,int* qlist);
0035
0036 Complex Elementary_MHV_Amplitude(int* perm,int* signlist,int part);
0037 Complex NMHV_Amplitude(int* perm,int* signlist,int part,int vhel);
0038 Complex NNMHV_Amplitude(int* perm,int* signlist,int part,int vhel);
0039 Complex Elementary_MHVbar_Amplitude(int* perm,int* signlist,int part);
0040 Complex NMHVbar_Amplitude(int* perm,int* signlist,int part,int vhel);
0041 Complex NNMHVbar_Amplitude(int* perm,int* signlist,int part,int vhel);
0042
0043 Complex Elementary_MHVQ2_Amplitude(int* perm,int* signlist,int* qlist,int part);
0044 Complex NMHVQ2_Amplitude(int* perm,int* signlist,int* qlist,int part,int vhel);
0045 Complex NNMHVQ2_Amplitude(int* perm,int* signlist,int* qlist,int part,int vhel);
0046 Complex Elementary_MHVQ2bar_Amplitude(int* perm,int* signlist,int* qlist,int part);
0047 Complex NMHVQ2bar_Amplitude(int* perm,int* signlist,int* qlist,int part,int vhel);
0048 Complex NNMHVQ2bar_Amplitude(int* perm,int* signlist,int* qlist,int part,int vhel);
0049
0050 Complex Elementary_MHVQ4_Amplitude(int* perm,int* signlist,int* qlist,int part);
0051 Complex NMHVQ4_Amplitude(int* perm,int* signlist,int* qlist,int part,int vhel);
0052 Complex NNMHVQ4_Amplitude(int* perm,int* signlist,int* qlist,int part,int vhel);
0053 Complex Elementary_MHVQ4bar_Amplitude(int* perm,int* signlist,int* qlist,int part);
0054 Complex NMHVQ4bar_Amplitude(int* perm,int* signlist,int* qlist,int part,int vhel);
0055 Complex NNMHVQ4bar_Amplitude(int* perm,int* signlist,int* qlist,int part,int vhel);
0056
0057
0058 public:
0059
0060 inline MHVCalculator() {}
0061 MHVCalculator(int part,int* plist);
0062
0063 ~MHVCalculator();
0064
0065 Complex Differential(int* perm, int* signlist);
0066
0067 inline const int * GetQlist() { return m_qlist;}
0068 inline const int * GetPlist() { return m_plist;}
0069 void SetMomentumList(MomentumList* BS) { p_BS=BS; }
0070 };
0071
0072
0073
0074
0075
0076
0077 inline int MHVCalculator::CountSign(int* signlist,int start,int end,int sg)
0078 {
0079 int sum = 0;
0080 for (int i=start;i<end;i++) sum+=signlist[i];
0081 if (sg==-1) return (end-start-sum)/2;
0082 return (end-start+sum)/2;
0083 }
0084
0085
0086 }
0087 #endif