Back to home page

EIC code displayed by LXR

 
 

    


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