File indexing completed on 2025-04-19 09:09:47
0001 #ifndef AMEGIC_Main_Single_Process_External_H
0002 #define AMEGIC_Main_Single_Process_External_H
0003
0004 #include "AMEGIC++/Main/Process_Base.H"
0005
0006 #include "AMEGIC++/Main/Polarisation.H"
0007 #include "PHASIC++/Process/Tree_ME2_Base.H"
0008
0009 namespace AMEGIC {
0010 class Helicity;
0011 class Phase_Space_Generator;
0012 class Single_Process_External: public Process_Base {
0013
0014 typedef std::set<std::pair<size_t,size_t> > Combination_Set;
0015 typedef std::map<size_t,ATOOLS::Flavour_Vector> CFlavVector_Map;
0016
0017 private:
0018 PHASIC::Tree_ME2_Base *p_me2;
0019 size_t m_pn;
0020 bool m_newlib, m_keep_zero_procs;
0021 Polarisation m_pol;
0022 double m_iresult;
0023
0024 Combination_Set m_ccombs;
0025 CFlavVector_Map m_cflavs;
0026
0027 Single_Process_External * p_partner;
0028
0029
0030
0031
0032
0033 public:
0034
0035 Single_Process_External();
0036 ~Single_Process_External();
0037
0038 bool Combinable(const size_t &idi,const size_t &idj);
0039
0040 const ATOOLS::Flavour_Vector &CombinedFlavour(const size_t &idij);
0041
0042 bool FillIntegrator(PHASIC::Phase_Space_Handler *const psh);
0043 private:
0044
0045
0046
0047
0048
0049
0050 public:
0051 void AddChannels(std::list<std::string>*);
0052 bool NewLibs() {return 0;}
0053 bool FoundMappingFile(std::string &,std::string &);
0054 int InitAmplitude(Amegic_Model *,Topology *,
0055 std::vector<Process_Base *> &,
0056 std::vector<Process_Base *> &);
0057 bool SetUpIntegrator();
0058 Amplitude_Handler * GetAmplitudeHandler() { return 0;}
0059 Helicity * GetHelicity() { return 0; }
0060 double Result() { return m_iresult; }
0061
0062 int NumberOfDiagrams() { return 0; }
0063 AMEGIC::Point * Diagram(int i) { return 0; }
0064
0065
0066
0067
0068
0069 public:
0070 std::string LibName() { return std::string(""); }
0071 std::string PSLibName() { return std::string(""); }
0072 AMEGIC::Process_Base * Partner() const { return p_partner; }
0073 void Minimize();
0074
0075
0076
0077
0078
0079
0080 public:
0081 double Partonic(const ATOOLS::Vec4D_Vector&,
0082 ATOOLS::Variations_Mode varmode,
0083 int mode);
0084 double DSigma(const ATOOLS::Vec4D_Vector &,bool);
0085 double operator()(const ATOOLS::Vec4D *);
0086
0087 };
0088 }
0089
0090
0091
0092 #endif