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/PythiaStdlib.h"
24 #include "Pythia8/Settings.h"
25 #include "Pythia8/StringLength.h"
39 BeamRemnants() : iDS(0) { }
42 bool init( Info* infoPtrIn, Settings& settings, Rndm* rndmPtrIn,
43 BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn,
44 PartonSystems* partonSystemsPtrIn, PartonVertex* partonVertexPtrIn,
45 ParticleData* particleDataPtrIn,
46 ColourReconnection * colourReconnectionPtrIn);
49 void reassignBeamPtrs( BeamParticle* beamAPtrIn, BeamParticle* beamBPtrIn,
50 int iDSin) {beamAPtr = beamAPtrIn; beamBPtr = beamBPtrIn; iDS = iDSin;}
53 bool add(
Event& event,
int iFirst = 0,
bool doDiffCR =
false);
58 static const bool ALLOWCOLOURTWICE, CORRECTMISMATCH;
59 static const int NTRYCOLMATCH, NTRYKINMATCH;
62 bool doPrimordialKT, allowRescatter, doRescatterRestoreY, doReconnect;
63 double primordialKTsoft, primordialKThard, primordialKTremnant,
64 halfScaleForKT, halfMassForKT, reducedKTatHighY;
65 int remnantMode, reconnectMode;
69 int nSys, oldSize, iDS;
73 vector<int> colFrom, colTo;
82 BeamParticle* beamAPtr;
83 BeamParticle* beamBPtr;
86 ColourReconnection* colourReconnectionPtr;
89 StringLength stringLength;
92 JunctionSplitting junctionSplitting;
95 bool addOld(
Event& event);
98 bool addNew(
Event& event);
101 PartonSystems* partonSystemsPtr;
104 PartonVertex* partonVertexPtr;
108 ParticleData* particleDataPtr;
111 bool setKinematics(
Event& event);
116 bool setOneRemnKinematics(
Event& event,
int beamOffset);
119 void updateColEvent(
Event& event, vector<pair <int,int> > colChanges);
122 bool checkColours(
Event& event);
125 vector <vector<int> > findJunChains(vector<vector <int> > iPartonJun,
126 vector<vector<int> > iPartonAjun);
129 bool splitJunChains(
Event& event, vector<vector<int > >& iPartonJun,
130 vector<vector< int > >& ipartonAntiJun);
133 vector<vector<int > > getJunChains(
Event& event);
141 #endif // Pythia8_BeamRemnants_H