11 #ifndef Pythia8_LHAFortran_H
12 #define Pythia8_LHAFortran_H
14 #include "Pythia8/Pythia.h"
23 #define heprup_ HEPRUP
24 #define hepeup_ HEPEUP
32 int pdfgup[2], pdfsup[2], idwtup, nprup;
33 double xsecup[100], xerrup[100], xmaxup[100];
39 double xwgtup, scalup, aqedup, aqcdup;
40 int idup[500], istup[500], mothup[500][2], icolup[500][2];
41 double pup[500][5], vtimup[500],spinup[500];
51 class LHAupFortran :
public LHAup {
61 if (!fillHepRup())
return false;
63 setBeamA(heprup_.idbmup[0], heprup_.ebmup[0], heprup_.pdfgup[0],
65 setBeamB(heprup_.idbmup[1], heprup_.ebmup[1], heprup_.pdfgup[1],
67 setStrategy(heprup_.idwtup);
69 for (
int ip = 0; ip < heprup_.nprup; ++ip) {
70 double xsec = max( 1e-10, heprup_.xsecup[ip]);
71 addProcess( heprup_.lprup[ip], xsec, heprup_.xerrup[ip],
75 eBeamA = heprup_.ebmup[0];
76 eBeamB = heprup_.ebmup[1];
82 bool setEvent(
int idProcIn = 0) {
84 hepeup_.idprup = idProcIn;
86 if (!fillHepEup())
return false;
88 setProcess(hepeup_.idprup, hepeup_.xwgtup, hepeup_.scalup,
89 hepeup_.aqedup, hepeup_.aqcdup);
91 for (
int ip = 0; ip < hepeup_.nup; ++ip) addParticle(hepeup_.idup[ip],
92 hepeup_.istup[ip], hepeup_.mothup[ip][0], hepeup_.mothup[ip][1],
93 hepeup_.icolup[ip][0], hepeup_.icolup[ip][1], hepeup_.pup[ip][0],
94 hepeup_.pup[ip][1], hepeup_.pup[ip][2], hepeup_.pup[ip][3],
95 hepeup_.pup[ip][4], hepeup_.vtimup[ip], hepeup_.spinup[ip]) ;
97 setPdf( hepeup_.idup[0], hepeup_.idup[1], hepeup_.pup[0][3]/eBeamA,
98 hepeup_.pup[1][3]/eBeamB, 0., 0., 0.,
false);
106 virtual bool fillHepRup() {
return false;}
109 virtual bool fillHepEup() {
return false;}
114 double eBeamA, eBeamB;
122 #endif // Pythia8_LHAFortran_H