Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef AMEGIC_Amplitude_FullAmplitude_External_H
0002 #define AMEGIC_Amplitude_FullAmplitude_External_H
0003 
0004 #include "PHASIC++/Process/Tree_ME2_Base.H"
0005 #include "MODEL/Main/Model_Base.H"
0006 #include "ATOOLS/Math/MyComplex.H"
0007 #include "ATOOLS/Math/Permutation.H"
0008 
0009 namespace AMEGIC {
0010 
0011   class Basic_Sfuncs;
0012   class Helicity;
0013 
0014   class FullAmplitude_External {
0015   protected:
0016 
0017     PHASIC::Tree_ME2_Base *p_calc;
0018     ATOOLS::Flavour_Vector m_fls;
0019 
0020     MODEL::Model_Base *p_model;
0021 
0022     size_t m_nin, m_oqcd, m_oew, m_emit, m_spect;
0023     double m_A;
0024     Complex m_eip;
0025 
0026     std::vector<PHASIC::Tree_ME2_Base::Map_Info> m_amap;
0027 
0028     std::vector<std::vector<size_t> > m_hmap;
0029     std::vector<std::vector<int> >    m_pmap;
0030 
0031     std::vector<std::vector<std::vector<std::vector<Complex> > > > m_colfs;
0032 
0033     void GetPermutation(const std::vector<size_t> &ids,
0034             std::vector<size_t> &cid,
0035             ATOOLS::Flavour_Vector &cfl,
0036             int &nsub,int &psub,int &swap) const;
0037 
0038     void BuildHelicityMap(Helicity *const hel);
0039     void BuildColorMatrix(const size_t &ci,const size_t &cj);
0040     void BuildColorMatrix();
0041 
0042   public:
0043     
0044     // constructor
0045     FullAmplitude_External(const PHASIC::Process_Info &pi,
0046                MODEL::Model_Base *model,
0047                MODEL::Coupling_Map *const cpls,Helicity *hel,
0048                const size_t &emit,const size_t &spect); 
0049 
0050     //destructor
0051     ~FullAmplitude_External(); 
0052 
0053     double Calc(const ATOOLS::Vec4D *p);
0054 
0055     double MSquare(const size_t &h) const;
0056     double MSquare(const size_t &h,const size_t &i,const size_t &j);
0057     
0058     void SetSqMatrix(const double &A,const ATOOLS::Vec4D &pijt,
0059              const ATOOLS::Vec4D &eps1);
0060 
0061     inline int OrderQCD() const { return m_oqcd; }
0062     inline int OrderEW() const  { return m_oew;  }
0063 
0064     inline bool Status() const { return p_calc!=NULL; }
0065 
0066     inline PHASIC::Tree_ME2_Base *Calc() const { return p_calc; }
0067 
0068   };  
0069 
0070 }// end of namespace AMEGIC
0071 
0072 #endif