10 #ifndef Pythia8_ProcessContainer_H
11 #define Pythia8_ProcessContainer_H
14 #include "BeamParticle.h"
17 #include "ParticleData.h"
18 #include "PartonDistributions.h"
19 #include "PhaseSpace.h"
20 #include "PythiaStdlib.h"
21 #include "ResonanceDecays.h"
23 #include "SigmaProcess.h"
24 #include "SigmaTotal.h"
25 #include "StandardModel.h"
26 #include "SusyCouplings.h"
27 #include "SusyLesHouches.h"
28 #include "UserHooks.h"
43 bool externalPtrIn =
false) : sigmaProcessPtr(sigmaProcessPtrIn),
44 externalPtr(externalPtrIn), phaseSpacePtr(0) {}
48 if (!externalPtr)
delete sigmaProcessPtr;}
51 bool init(
bool isFirst,
Info* infoPtrIn,
Settings& settings,
58 void setLHAPtr(
LHAup* lhaUpPtrIn) {lhaUpPtr = lhaUpPtrIn;
59 if (sigmaProcessPtr !=
nullptr) sigmaProcessPtr->setLHAPtr(lhaUpPtr);
60 if (phaseSpacePtr !=
nullptr) phaseSpacePtr->setLHAPtr(lhaUpPtr);}
63 void newECM(
double eCM) {phaseSpacePtr->newECM(eCM);}
69 bool constructProcess(
Event& process,
bool isHardest =
true);
72 bool decayResonances(
Event& process);
75 void accumulate() {++nAcc; wtAccSum += weightNow;}
81 string name()
const {
return sigmaProcessPtr->name();}
82 int code()
const {
return sigmaProcessPtr->code();}
83 int nFinal()
const {
return sigmaProcessPtr->nFinal();}
84 bool isSUSY()
const {
return sigmaProcessPtr->isSUSY();}
87 bool newSigmaMax()
const {
return newSigmaMx;}
88 double sigmaMax()
const {
return sigmaMx;}
89 long nTried()
const {
return nTry;}
90 long nSelected()
const {
return nSel;}
91 long nAccepted()
const {
return nAcc;}
92 double weightSum()
const {
return wtAccSum;}
93 double sigmaSelMC() {
if (nTry > nTryStat) sigmaDelta();
return sigmaAvg;}
94 double sigmaMC() {
if (nTry > nTryStat) sigmaDelta();
return sigmaFin;}
95 double deltaMC() {
if (nTry > nTryStat) sigmaDelta();
return deltaFin;}
98 int id1()
const {
return sigmaProcessPtr->id(1);}
99 int id2()
const {
return sigmaProcessPtr->id(2);}
100 double x1()
const {
return phaseSpacePtr->x1();}
101 double x2()
const {
return phaseSpacePtr->x2();}
102 double Q2Fac()
const {
return sigmaProcessPtr->Q2Fac();}
103 double mHat()
const {
return sqrtpos(phaseSpacePtr->sHat());}
104 double pTHat()
const {
return phaseSpacePtr->pTHat();}
107 bool isLHAContainer()
const {
return isLHA;}
108 int lhaStrategy()
const {
return lhaStrat;}
111 void isSame(
bool isSameIn) { isSameSave = isSameIn;}
112 bool isSame()
const {
return isSameSave;}
117 static const int N12SAMPLE, N3SAMPLE;
142 bool isLHA, isMinBias, isResolved, isDiffA, isDiffB, isQCD3body,
143 allowNegSig, hasOctetOnium, isSameSave, increaseMaximum;
144 int lhaStrat, lhaStratAbs;
148 long nTry, nSel, nAcc, nTryStat;
149 double sigmaMx, sigmaSgn, sigmaSum, sigma2Sum, sigmaNeg, sigmaAvg,
150 sigmaFin, deltaFin, weightNow, wtAccSum;
170 bool init(vector<ProcessContainer*>& containerPtrs,
Settings& settings,
174 bool init2(vector<ProcessContainer*>& container2Ptrs,
Settings& settings);
182 #endif // Pythia8_ProcessContainer_H