File indexing completed on 2025-04-19 09:09:45
0001 #ifndef AMEGIC_Amplitude_FullAmplitude_MHV_Base_H
0002 #define AMEGIC_Amplitude_FullAmplitude_MHV_Base_H
0003
0004 #include <vector>
0005 #include "ATOOLS/Math/Vector.H"
0006 #include "ATOOLS/Math/MyComplex.H"
0007 #include "AMEGIC++/Amplitude/Pfunc.H"
0008 #include "AMEGIC++/Amplitude/Zfunctions/MHVCalculator.H"
0009 #include "ATOOLS/Math/PermStore.H"
0010 #include "ATOOLS/Math/Permutation.H"
0011 #include "ATOOLS/Phys/Flavour.H"
0012 #include "MODEL/Main/Model_Base.H"
0013
0014 using namespace ATOOLS;
0015
0016 namespace AMEGIC {
0017
0018 typedef std::map<int,Complex**> ColorStoreMap;
0019
0020 class MHVCalculator;
0021
0022
0023 class FullAmplitude_MHV_Base {
0024 protected:
0025
0026 MODEL::Model_Base *p_model;
0027 MODEL::Coupling_Map * m_cpls;
0028
0029 PermStore* p_permstore;
0030 Permutation* p_permutation;
0031 MHVCalculator *p_calc;
0032
0033 ColorStoreMap m_colormap;
0034 Complex** m_colorstore;
0035 Complex* m_ampstore;
0036 Complex* m_ampstore2;
0037
0038 double m_cpl, p_norm;
0039 bool colorflag;
0040
0041 int n_part, maxn;
0042
0043 int *m_plist, *m_hlist;
0044 std::vector<Flavour*> m_flist;
0045 int *m_perm, *m_permgl;
0046 int m_emit,m_spect;
0047 bool m_dptgluon;
0048 double m_A,m_conv;
0049 Complex m_phase2;
0050
0051 virtual void InitAmplitude();
0052 virtual bool AmpStore(MomentumList*);
0053 virtual bool AmpStoreDPT(MomentumList*);
0054 virtual double Result(Complex**);
0055 virtual double ResultDPT();
0056 MODEL::Coupling_Data *p_aqcd, *p_aqed;
0057 double m_oqcd, m_oqed;
0058
0059 public:
0060
0061
0062 FullAmplitude_MHV_Base(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist);
0063
0064
0065 virtual ~FullAmplitude_MHV_Base();
0066
0067 double MSquare(int* hlist,MomentumList* BS);
0068 double MSquare(int,int);
0069 double MSquareHel(MomentumList* BS);
0070 void CalculateAmps(int* hlist,MomentumList* BS);
0071 inline double ParticlesNorm() {return p_norm;}
0072 void SetSqMatrix(double A,Complex phase) {m_A=A; m_phase2=phase*phase;}
0073 };
0074
0075
0076
0077
0078
0079 class FullAmplitude_MHV_PureG: public FullAmplitude_MHV_Base {
0080 private:
0081
0082 void InitAmplitude();
0083 void PermutationStoreColor(int,int**);
0084 void ColorStore();
0085 void ColorStoreDPT(int, int,Complex**);
0086 bool AmpStore(MomentumList*);
0087 bool AmpStoreDPT(MomentumList*);
0088
0089
0090 public:
0091
0092
0093 FullAmplitude_MHV_PureG(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist);
0094 FullAmplitude_MHV_PureG(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist,int,int);
0095
0096
0097 ~FullAmplitude_MHV_PureG();
0098
0099 };
0100
0101
0102
0103
0104
0105 class FullAmplitude_MHV_Q2: public FullAmplitude_MHV_Base {
0106 private:
0107 ATOOLS::Flavour m_efl,m_sfl;
0108
0109 void InitAmplitude();
0110 void PermutationStoreColor(int,int** p_adr);
0111 void ColorStore();
0112 void ColorStoreDPT(int,int,Complex**);
0113 bool AmpStore(MomentumList *BS);
0114 bool AmpStoreDPT(MomentumList *BS);
0115
0116
0117 public:
0118
0119
0120 FullAmplitude_MHV_Q2(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist);
0121 FullAmplitude_MHV_Q2(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist,int,int);
0122
0123
0124 ~FullAmplitude_MHV_Q2();
0125
0126 };
0127
0128
0129
0130
0131
0132 class FullAmplitude_MHV_Q4: public FullAmplitude_MHV_Base {
0133 private:
0134 ATOOLS::Flavour m_efl,m_sfl;
0135
0136 MHVCalculator* p_calc_partner;
0137
0138 void InitAmplitude();
0139 void ColorStore();
0140 void ColorStore(int,int,Complex**);
0141 bool AmpStore(MomentumList* BS);
0142 bool AmpStoreDPT(MomentumList* BS);
0143 double Result(Complex**);
0144 double ResultDPT();
0145
0146
0147 public:
0148
0149
0150 FullAmplitude_MHV_Q4(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist);
0151 FullAmplitude_MHV_Q4(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist,int,int);
0152
0153
0154 ~FullAmplitude_MHV_Q4();
0155
0156 };
0157
0158
0159
0160
0161
0162 class FullAmplitude_MHV_Q2L2: public FullAmplitude_MHV_Base {
0163 private:
0164
0165 int *m_qlist, *m_llist;
0166
0167 void InitAmplitude();
0168 void ColorStore();
0169 bool AmpStore(MomentumList* BS);
0170
0171
0172 public:
0173
0174
0175 FullAmplitude_MHV_Q2L2(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist);
0176
0177
0178 ~FullAmplitude_MHV_Q2L2();
0179
0180 };
0181
0182
0183
0184
0185
0186 FullAmplitude_MHV_Base* FullAmplitude_MHV_Handler(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist,
0187 MomentumList* BS,bool &newamp,int emit=-1,int spec=-1);
0188
0189
0190 }
0191
0192 #endif