Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:09:44

0001 #ifndef AMEGIC_Amplitude_Zfunctions_Mom_H
0002 #define AMEGIC_Amplitude_Zfunctions_Mom_H
0003 #include "AMEGIC++/Amplitude/Zfunctions/MHVCalculator.H"
0004 
0005 #ifndef Basic_Sfuncs_In_MHV
0006 #include <vector>
0007 #include "ATOOLS/Math/Vector.H"
0008 #include "ATOOLS/Math/MyComplex.H"
0009 #include "AMEGIC++/Amplitude/Pfunc.H"
0010 #include "ATOOLS/Math/PermStore.H"
0011 #include "ATOOLS/Math/Permutation.H"
0012 #include "ATOOLS/Phys/Flavour.H"
0013 
0014 using namespace ATOOLS;
0015 
0016 
0017 namespace AMEGIC {
0018 
0019     class MHVCalculator;
0020 
0021 
0022 
0023     class Mom: public Vec4D {
0024     private:
0025     
0026     int hel, part;
0027     Complex l0[2], l1[2];
0028     double *etha;
0029 
0030     void Compute_l();
0031     
0032 
0033     public: 
0034     
0035     // constructors
0036     Mom(Vec4D&,int,int); 
0037     Mom(Vec4D&,double *et=0); 
0038 
0039     
0040     void Print();
0041 
0042     friend class MomentumList;
0043 
0044 
0045     };
0046 
0047 
0048 
0049 
0050     class MomentumList: public std::vector<Mom*> {
0051     private:
0052     
0053     int *hlist, *plist;
0054     size_t m_size, m_in, m_out;
0055     size_t m_propsize;
0056     double etha[2];    
0057     Complex **s0, **s1;
0058 
0059     bool Get(const char* file);
0060     void MakeHlist(); 
0061     void MakePlist();
0062     void BuildMomList();
0063     void Compute_s();
0064    
0065     public:
0066 
0067     // constructor
0068     MomentumList(const char*  file);  
0069     MomentumList(size_t in, size_t out); 
0070     
0071     //destructor
0072     ~MomentumList();
0073     
0074 
0075     void PutMomenta(const ATOOLS::Vec4D*);
0076 
0077     Vec4D Momentum(int);
0078     int GetMomNumber(Pfunc*);
0079     int * GetHList(); 
0080     int * GetPList();
0081 
0082     void Print();
0083         
0084     inline Complex S0(int i,int j) { if (i>j) return s0[i][j]; else return -s0[j][i]; }
0085     inline Complex S1(int i,int j) { if (i>j) return s1[i][j]; else return -s1[j][i]; }
0086     inline size_t Size() {return m_size;}
0087 
0088     };
0089 
0090 
0091 
0092     class Fullamplitude_MHV_test {
0093     private:
0094     
0095     MomentumList* momentumlist;
0096     int *hlist, *plist, *perm;
0097     Complex amp;
0098     MHVCalculator* calc;
0099     size_t* ma;
0100     void Permutation_pureg(int,int**);
0101     void Permutation_quark(int,int**);
0102     
0103 
0104     public:
0105     
0106     // constructor
0107     Fullamplitude_MHV_test(MomentumList*,int* hl,int* pl); 
0108     
0109     //destructor
0110     //~Fullamplitude_MHV_test();
0111     
0112     
0113     Complex Calculate();
0114     
0115     };
0116 
0117 
0118 
0119  
0120     class Fullamplitude_MHV_old {
0121     private:
0122     
0123     PermStore* permstore;
0124     MHVCalculator* calc;
0125     
0126     int n_part; 
0127     Complex ampnc;
0128     Complex ampsq;
0129     double m_cpl, p_norm; 
0130     
0131         const int *qlist;
0132     int *plist, *p_hlist;
0133     int *perm, *permconj, *permgl, *permconjgl;
0134     std::vector<int> *permtb;
0135     
0136     bool colorstore;
0137     int m_qpos, m_qposconj;
0138     
0139     size_t *mact1, *mact2;
0140     size_t qindex[2];
0141     
0142     void PermutationStoreColor_pureg(int,int**);
0143     void PermutationStoreAmp_pureg(int,int**);
0144     void Permutation_pureg(int,int**,bool);
0145     
0146     void PermutationStoreColor_quark2(int,std::vector<int>**);
0147     void PermutationStoreAmp_quark2(int,std::vector<int>**);
0148     void Permutation_quark2(int,int**,bool);
0149     
0150     //void PermutationStoreColor_quark4(int,int**);
0151     //void PermutationStoreAmp_quark4(int,int**);
0152     void Permutation_quark4(int,int**,bool);
0153     
0154     
0155     public:
0156     
0157     // constructor
0158     Fullamplitude_MHV_old(int n_part,int* plist); 
0159     
0160     //destructor
0161     ~Fullamplitude_MHV_old();
0162     
0163     
0164     double MSquare(MomentumList*,int* hlist);   
0165     Complex MSquareHel(MomentumList*);
0166 
0167     inline double ParticlesNorm() {return p_norm;}
0168     
0169     };
0170     
0171  
0172   
0173 }// end of namespace AMEGIC
0174 
0175 #endif
0176 #endif