File indexing completed on 2025-09-16 09:03:39
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef Pythia8_BeamRemnants_H
0010 #define Pythia8_BeamRemnants_H
0011
0012 #include "Pythia8/Basics.h"
0013 #include "Pythia8/BeamParticle.h"
0014 #include "Pythia8/ColourReconnection.h"
0015 #include "Pythia8/Event.h"
0016 #include "Pythia8/FragmentationFlavZpT.h"
0017 #include "Pythia8/Info.h"
0018 #include "Pythia8/JunctionSplitting.h"
0019 #include "Pythia8/ParticleData.h"
0020 #include "Pythia8/PartonDistributions.h"
0021 #include "Pythia8/PartonSystems.h"
0022 #include "Pythia8/PartonVertex.h"
0023 #include "Pythia8/PhysicsBase.h"
0024 #include "Pythia8/PythiaStdlib.h"
0025 #include "Pythia8/Settings.h"
0026 #include "Pythia8/StringLength.h"
0027
0028 namespace Pythia8 {
0029
0030
0031
0032
0033
0034
0035 class BeamRemnants : public PhysicsBase {
0036
0037 public:
0038
0039
0040 BeamRemnants() : doPrimordialKT(), allowRescatter(), doRescatterRestoreY(),
0041 doReconnect(), primordialKTsoft(), primordialKThard(),
0042 primordialKTremnant(), halfScaleForKT(), halfMassForKT(),
0043 reducedKTatHighY(), remnantMode(), reconnectMode(), isDIS(), doMPI(),
0044 beamA2gamma(), beamB2gamma(), nSys(), oldSize(), iDS(0), eCM(), sCM(),
0045 colourReconnectionPtr(), partonVertexPtr(), doPartonVertex() { }
0046
0047
0048 bool init( PartonVertexPtr partonVertexPtrIn,
0049 ColRecPtr colourReconnectionPtrIn);
0050
0051
0052 void reassignBeamPtrs( BeamParticle* beamAPtrIn,
0053 BeamParticle* beamBPtrIn, int iDSin) {
0054 beamAPtr = beamAPtrIn; beamBPtr = beamBPtrIn; iDS = iDSin;}
0055
0056
0057 bool add( Event& event, int iFirst = 0, bool doDiffCR = false);
0058
0059 protected:
0060
0061 virtual void onInitInfoPtr() override {
0062 registerSubObject(junctionSplitting); }
0063
0064 private:
0065
0066
0067 static const bool ALLOWCOLOURTWICE, CORRECTMISMATCH;
0068 static const int NTRYCOLMATCH, NTRYKINMATCH;
0069
0070
0071 bool doPrimordialKT, allowRescatter, doRescatterRestoreY, doReconnect;
0072 double primordialKTsoft, primordialKThard, primordialKTremnant,
0073 halfScaleForKT, halfMassForKT, reducedKTatHighY;
0074 int remnantMode, reconnectMode;
0075
0076
0077 bool isDIS, doMPI, beamA2gamma, beamB2gamma;
0078 int nSys, oldSize, iDS;
0079 double eCM, sCM;
0080
0081
0082 vector<int> colFrom, colTo;
0083
0084
0085 ColRecPtr colourReconnectionPtr;
0086
0087
0088 StringLength stringLength;
0089
0090
0091 JunctionSplitting junctionSplitting;
0092
0093
0094 bool addOld( Event& event);
0095
0096
0097 bool addNew( Event& event);
0098
0099
0100 PartonVertexPtr partonVertexPtr;
0101 bool doPartonVertex;
0102
0103
0104 bool setKinematics( Event& event);
0105
0106
0107
0108
0109 bool setOneRemnKinematics( Event& event);
0110
0111
0112 void updateColEvent( Event& event, vector<pair <int,int> > colChanges);
0113
0114
0115 bool checkColours( Event& event);
0116
0117
0118 vector <vector<int> > findJunChains(vector<vector <int> > iPartonJun,
0119 vector<vector<int> > iPartonAjun);
0120
0121
0122 bool splitJunChains(Event& event, vector<vector<int > >& iPartonJun,
0123 vector<vector< int > >& ipartonAntiJun);
0124
0125
0126 vector<vector<int > > getJunChains(Event& event);
0127
0128 };
0129
0130
0131
0132 }
0133
0134 #endif