Back to home page

EIC code displayed by LXR

 
 

    


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     // constructor
0062     FullAmplitude_MHV_Base(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist); 
0063 
0064     //destructor
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     // constructor
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     //destructor
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     // constructor
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     //destructor
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     // constructor
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     //destructor
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     // constructor
0175     FullAmplitude_MHV_Q2L2(MODEL::Model_Base *model,MODEL::Coupling_Map *const cpls,int part,int* plist); 
0176 
0177     //destructor
0178     ~FullAmplitude_MHV_Q2L2();
0179     
0180   };
0181 
0182 
0183 
0184 
0185 //   FullAmplitude_MHV_Base* FullAmplitude_MHV_Handler(MODEL::Model_Base *model,int part,int* plist,MomentumList* BS); 
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 }// end of namespace AMEGIC
0191 
0192 #endif