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
0050 Process_Base(PHASIC::Process_Base *const,
0051 MODEL::Model_Base *const model=NULL);
0052
0053
0054 virtual ~Process_Base();
0055
0056
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
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 };
0088
0089 std::string ComixLogo();
0090
0091 }
0092
0093 #endif
0094
0095
0096