10 #ifndef Pythia8_PartonSystems_H
11 #define Pythia8_PartonSystems_H
13 #include "Pythia8/PythiaStdlib.h"
27 PartonSystem() : iInA(0), iInB(0), sHat(0.) {iOut.reserve(10);}
45 PartonSystems() {systems.resize(0);}
48 void clear() {systems.resize(0);}
51 int addSys() {systems.push_back(PartonSystem());
52 return systems.size() - 1;}
53 int sizeSys()
const {
return systems.size();}
56 void setInA(
int iSys,
int iPos) {systems[iSys].iInA = iPos;}
57 void setInB(
int iSys,
int iPos) {systems[iSys].iInB = iPos;}
58 void addOut(
int iSys,
int iPos) {systems[iSys].iOut.push_back(iPos);}
59 void setOut(
int iSys,
int iMem,
int iPos) {systems[iSys].iOut[iMem] = iPos;}
60 void replace(
int iSys,
int iPosOld,
int iPosNew);
61 void setSHat(
int iSys,
double sHatIn) {systems[iSys].sHat = sHatIn;}
62 void setPTHat(
int iSys,
double pTHatIn) {systems[iSys].pTHat = pTHatIn;}
63 void setSizeSys(
int iSize) {systems.resize(iSize);}
66 bool hasInAB(
int iSys)
const {
return ( (systems[iSys].iInA > 0)
67 || (systems[iSys].iInB > 0) ) ;}
68 int getInA(
int iSys)
const {
return systems[iSys].iInA;}
69 int getInB(
int iSys)
const {
return systems[iSys].iInB;}
70 int sizeOut(
int iSys)
const {
return systems[iSys].iOut.size();}
71 int getOut(
int iSys,
int iMem)
const {
return systems[iSys].iOut[iMem];}
72 int sizeAll(
int iSys)
const {
return (hasInAB(iSys))
73 ? systems[iSys].iOut.size() + 2 : systems[iSys].iOut.size();}
74 int getAll(
int iSys,
int iMem)
const;
75 double getSHat(
int iSys)
const {
return systems[iSys].sHat;}
76 double getPTHat(
int iSys)
const {
return systems[iSys].pTHat;}
79 int getSystemOf(
int iPos,
bool alsoIn =
false)
const;
82 int getIndexOfOut(
int iSys,
int iPos)
const;
85 void list(ostream& os = cout)
const;
90 vector<PartonSystem> systems;
98 #endif // Pythia8_PartonSystems_H