Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:03

0001 #ifndef EXTAMP_Main_ME_Provider_H
0002 #define EXTAMP_Main_ME_Provider_H
0003 
0004 #include "PHASIC++/Process/ME_Generator_Base.H"
0005 
0006 namespace PHASIC {
0007   class Tree_ME2_Base;
0008   struct External_ME_Args;
0009 }
0010 
0011 namespace EXTAMP {
0012 
0013   class Dipole_Info;
0014   class CS_Dipole;
0015 
0016   class External_ME_Interface: public PHASIC::ME_Generator_Base {
0017     
0018   private :
0019 
0020     BEAM::Beam_Spectra_Handler* p_beam;
0021     PDF::ISR_Handler* p_isr;
0022     YFS::YFS_Handler* p_yfs;
0023 
0024   public :
0025 
0026     typedef std::map<size_t, ATOOLS::Flavour_Vector> Combinable_Map;
0027 
0028     External_ME_Interface();
0029 
0030     ~External_ME_Interface();
0031 
0032     virtual int PerformTests()  {return 1;};
0033     virtual bool NewLibraries() {return false;};
0034 
0035     /* Pure virtual from PHASIC::ME_Generator_Base. Instantiates and
0036        initializes a high-level group-type process (e.g. 93 93 -> 90 90) */
0037     virtual PHASIC::Process_Base *InitializeProcess(const PHASIC::Process_Info &pi, bool add);
0038 
0039     /* Determine if a PARTONIC Process as specified by args */
0040     static bool PartonicProcessExists(const PHASIC::External_ME_Args &args);
0041 
0042     /* Determine if a PARTONIC Process as specified by pi exists */
0043     static bool PartonicProcessExists(const PHASIC::Process_Info &pi);
0044 
0045     /* Instantiate a PARTONIC Process as specified by pi */
0046     static PHASIC::Process_Base *
0047     InstantiatePartonicProcess(const PHASIC::Process_Info &pi);
0048     
0049     /* Pure virtual from PHASIC::ME_Generator_Base. Initialize this class. */
0050     virtual bool Initialize(MODEL::Model_Base *const model,
0051                 BEAM::Beam_Spectra_Handler *const beam,
0052                 PDF::ISR_Handler *const isr,
0053                 YFS::YFS_Handler *const yfs);
0054 
0055     /* Use getter to load an external matrix element */
0056     static PHASIC::Tree_ME2_Base* 
0057     GetExternalBornME(const PHASIC::External_ME_Args& args);
0058 
0059     /* Given indices of external flavours i_1,i_2,i_3,... and the
0060        combined index k=(1<<i_1) & (1<<i_2) & (1<<i_3) & ... of some
0061        processs, this map contains all flavours that arise from
0062        diagrammatic clusterings of the external flavours */
0063     static Combinable_Map ConstructCombinableMap(const ATOOLS::Flavour_Vector&,
0064                          const PHASIC::Process_Info&,
0065                          const size_t& n_in);
0066 
0067     /* Propagate cluster definitions to cluster algorithm member */
0068     // void SetClusterDefinitions(PDF::Cluster_Definitions_Base *const defs);
0069     
0070     // ATOOLS::Cluster_Amplitude* ClusterConfiguration(PHASIC::Process_Base *const proc,
0071     //                          const ATOOLS::Vec4D_Vector &p,
0072     //                          const size_t &mode);
0073   };
0074 
0075 }
0076 
0077 #endif