Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef COMIX_Main_Process_Base_H
0002 #define COMIX_Main_Process_Base_H
0003 
0004 #include "METOOLS/Explicit/Vertex.H"
0005 
0006 namespace BEAM { class Beam_Spectra_Handler; }
0007 
0008 namespace PDF { class ISR_Handler; }
0009 
0010 namespace PHASIC { 
0011   class Process_Base; 
0012   class Multi_Channel;
0013   class Phase_Space_Handler;
0014 }
0015 
0016 namespace COMIX {
0017 
0018   class PS_Generator;
0019   class Amplitude;
0020   class Single_Process;
0021 
0022   typedef std::vector<int>        Int_Vector;
0023   typedef std::vector<Int_Vector> Int_Matrix;
0024 
0025   class Process_Base {
0026   protected:
0027 
0028     PHASIC::Process_Base *p_proc;
0029     MODEL::Model_Base    *p_model;
0030     
0031     std::shared_ptr<PS_Generator> p_psgen;
0032 
0033     Int_Matrix m_colours;
0034 
0035     int    m_cls, m_hls;
0036     void  *p_cts;
0037 
0038     std::string m_gpath;
0039 
0040     std::map<std::string,std::string> *p_pmap;
0041     std::vector<Single_Process*>      *p_umprocs;
0042 
0043     PHASIC::Multi_Channel *p_ismc, *p_fsmc;
0044 
0045     static int s_partcommit;
0046 
0047   public:
0048 
0049     // constructors
0050     Process_Base(PHASIC::Process_Base *const,
0051          MODEL::Model_Base *const model=NULL);
0052 
0053     // destructor
0054     virtual ~Process_Base();
0055 
0056     // member functions
0057     virtual bool Initialize(std::map<std::string,std::string> *const pmap,
0058                 std::vector<Single_Process*> *const procs,
0059                 const std::vector<int> &blocks,size_t &nproc);
0060     virtual bool MapProcess() = 0;
0061 
0062     virtual void InitPSGenerator(const size_t &ismode) = 0;
0063 
0064     bool FillIntegrator(PHASIC::Phase_Space_Handler *const psh);
0065 
0066     virtual bool Tests() = 0;
0067     virtual void ConstructPSVertices(PS_Generator *ps) = 0;
0068 
0069     // inline functions
0070     inline PHASIC::Process_Base *Process() const { return p_proc; }
0071 
0072     inline Int_Matrix Colours() const { return m_colours; }
0073 
0074     inline MODEL::Model_Base *GetModel() const { return p_model; }
0075 
0076     inline void SetGPath(const std::string &gpath) { m_gpath=gpath; }
0077 
0078     inline std::shared_ptr<PS_Generator> PSGenerator() const { return p_psgen; }
0079 
0080     inline void SetModel(MODEL::Model_Base *const model) { p_model=model; }
0081 
0082     inline void SetCTS(void *const cts) { p_cts=cts; }
0083 
0084     inline void SetISMC(PHASIC::Multi_Channel *ismc) { p_ismc=ismc; }
0085     inline void SetFSMC(PHASIC::Multi_Channel *fsmc) { p_fsmc=fsmc; }
0086 
0087   };// end of class Process_Base
0088 
0089   std::string ComixLogo();
0090 
0091 }// end of namespace COMIX
0092 
0093 #endif
0094 
0095 
0096