9 #ifndef Pythia8_BeamRemnants_H
10 #define Pythia8_BeamRemnants_H
12 #include "Pythia8/Basics.h"
13 #include "Pythia8/BeamParticle.h"
14 #include "Pythia8/ColourReconnection.h"
15 #include "Pythia8/Event.h"
16 #include "Pythia8/FragmentationFlavZpT.h"
17 #include "Pythia8/Info.h"
18 #include "Pythia8/JunctionSplitting.h"
19 #include "Pythia8/ParticleData.h"
20 #include "Pythia8/PartonDistributions.h"
21 #include "Pythia8/PartonSystems.h"
22 #include "Pythia8/PartonVertex.h"
23 #include "Pythia8/PhysicsBase.h"
24 #include "Pythia8/PythiaStdlib.h"
25 #include "Pythia8/Settings.h"
26 #include "Pythia8/StringLength.h"
35 class BeamRemnants :
public PhysicsBase {
40 BeamRemnants() : doPrimordialKT(), allowRescatter(), doRescatterRestoreY(),
41 doReconnect(), primordialKTsoft(), primordialKThard(),
42 primordialKTremnant(), halfScaleForKT(), halfMassForKT(),
43 reducedKTatHighY(), remnantMode(), reconnectMode(), isDIS(), doMPI(),
44 beamA2gamma(), beamB2gamma(), nSys(), oldSize(), iDS(0), eCM(), sCM(),
45 colourReconnectionPtr(), partonVertexPtr(), doPartonVertex() { }
48 bool init( PartonVertexPtr partonVertexPtrIn,
49 ColRecPtr colourReconnectionPtrIn);
52 void reassignBeamPtrs( BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn,
53 int iDSin) {beamAPtr = beamAPtrIn; beamBPtr = beamBPtrIn; iDS = iDSin;}
56 bool add(
Event& event,
int iFirst = 0,
bool doDiffCR =
false);
60 virtual void onInitInfoPtr()
override {
61 registerSubObject(junctionSplitting); }
66 static const bool ALLOWCOLOURTWICE, CORRECTMISMATCH;
67 static const int NTRYCOLMATCH, NTRYKINMATCH;
70 bool doPrimordialKT, allowRescatter, doRescatterRestoreY, doReconnect;
71 double primordialKTsoft, primordialKThard, primordialKTremnant,
72 halfScaleForKT, halfMassForKT, reducedKTatHighY;
73 int remnantMode, reconnectMode;
76 bool isDIS, doMPI, beamA2gamma, beamB2gamma;
77 int nSys, oldSize, iDS;
81 vector<int> colFrom, colTo;
84 ColRecPtr colourReconnectionPtr;
87 StringLength stringLength;
90 JunctionSplitting junctionSplitting;
93 bool addOld(
Event& event);
96 bool addNew(
Event& event);
99 PartonVertexPtr partonVertexPtr;
103 bool setKinematics(
Event& event);
108 bool setOneRemnKinematics(
Event& event);
111 void updateColEvent(
Event& event, vector<pair <int,int> > colChanges);
114 bool checkColours(
Event& event);
117 vector <vector<int> > findJunChains(vector<vector <int> > iPartonJun,
118 vector<vector<int> > iPartonAjun);
121 bool splitJunChains(
Event& event, vector<vector<int > >& iPartonJun,
122 vector<vector< int > >& ipartonAntiJun);
125 vector<vector<int > > getJunChains(
Event& event);
133 #endif // Pythia8_BeamRemnants_H