File indexing completed on 2025-01-18 10:06:19
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, BeamParticle* beamBPtrIn,
0053 int iDSin) {beamAPtr = beamAPtrIn; beamBPtr = beamBPtrIn; iDS = iDSin;}
0054
0055
0056 bool add( Event& event, int iFirst = 0, bool doDiffCR = false);
0057
0058 protected:
0059
0060 virtual void onInitInfoPtr() override {
0061 registerSubObject(junctionSplitting); }
0062
0063 private:
0064
0065
0066 static const bool ALLOWCOLOURTWICE, CORRECTMISMATCH;
0067 static const int NTRYCOLMATCH, NTRYKINMATCH;
0068
0069
0070 bool doPrimordialKT, allowRescatter, doRescatterRestoreY, doReconnect;
0071 double primordialKTsoft, primordialKThard, primordialKTremnant,
0072 halfScaleForKT, halfMassForKT, reducedKTatHighY;
0073 int remnantMode, reconnectMode;
0074
0075
0076 bool isDIS, doMPI, beamA2gamma, beamB2gamma;
0077 int nSys, oldSize, iDS;
0078 double eCM, sCM;
0079
0080
0081 vector<int> colFrom, colTo;
0082
0083
0084 ColRecPtr colourReconnectionPtr;
0085
0086
0087 StringLength stringLength;
0088
0089
0090 JunctionSplitting junctionSplitting;
0091
0092
0093 bool addOld( Event& event);
0094
0095
0096 bool addNew( Event& event);
0097
0098
0099 PartonVertexPtr partonVertexPtr;
0100 bool doPartonVertex;
0101
0102
0103 bool setKinematics( Event& event);
0104
0105
0106
0107
0108 bool setOneRemnKinematics( Event& event);
0109
0110
0111 void updateColEvent( Event& event, vector<pair <int,int> > colChanges);
0112
0113
0114 bool checkColours( Event& event);
0115
0116
0117 vector <vector<int> > findJunChains(vector<vector <int> > iPartonJun,
0118 vector<vector<int> > iPartonAjun);
0119
0120
0121 bool splitJunChains(Event& event, vector<vector<int > >& iPartonJun,
0122 vector<vector< int > >& ipartonAntiJun);
0123
0124
0125 vector<vector<int > > getJunChains(Event& event);
0126
0127 };
0128
0129
0130
0131 }
0132
0133 #endif