10 #ifndef Pythia8_StringFragmentation_H 11 #define Pythia8_StringFragmentation_H 13 #include "Pythia8/FragmentationModel.h" 29 fromPos(), thermalModel(), mT2suppression(), iEnd(), iMax(), idHad(),
30 iPosOld(), iNegOld(), iPosNew(), iNegNew(), hadSoFar(), colOld(), colNew(),
31 pxOld(), pyOld(), pxNew(), pyNew(), pxHad(), pyHad(), mHad(), mT2Had(),
32 GammaOld(), GammaNew(), xPosOld(), xPosNew(), xPosHad(), xNegOld(),
33 xNegNew(), xNegHad(), aLund(), bLund(), iPosOldPrev(), iNegOldPrev(),
34 colOldPrev(), pxOldPrev(), pyOldPrev(), GammaOldPrev(), xPosOldPrev(),
42 pTSelPtr = pTSelPtrIn; zSelPtr = zSelPtrIn;
43 bLund = zSelPtr->bAreaLund(); aLund = zSelPtr->
aAreaLund();
44 thermalModel = settings.
flag(
"StringPT:thermalModel");
45 mT2suppression = settings.
flag(
"StringPT:mT2suppression");
46 closePacking = settings.
flag(
"ClosePacking:doClosePacking"); }
49 void setUp(
bool fromPosIn,
int iEndIn,
int idOldIn,
int iMaxIn,
50 double pxIn,
double pyIn,
double GammaIn,
double xPosIn,
51 double xNegIn,
int colIn);
54 void newHadron(
double kappaModifier,
bool forbidPopcornNow =
false,
55 double strangeJunc = 0.,
double probQQmod = 1.);
87 bool fromPos, thermalModel, mT2suppression, closePacking;
88 int iEnd, iMax, idHad, iPosOld, iNegOld, iPosNew, iNegNew, hadSoFar,
90 double pxOld, pyOld, pxNew, pyNew, pxHad, pyHad, mHad, mT2Had,
91 GammaOld, GammaNew, xPosOld, xPosNew, xPosHad, xNegOld, xNegNew,
92 xNegHad, aLund, bLund;
93 int iPosOldPrev, iNegOldPrev, colOldPrev;
94 double pxOldPrev, pyOldPrev, GammaOldPrev, xPosOldPrev, xNegOldPrev;
112 closePacking(), setVertices(), constantTau(), smearOn(),
113 traceColours(false), hadronVertex(), stopMass(), stopNewFlav(),
114 stopSmear(), pNormJunction(), pMaxJunction(), eBothLeftJunction(),
115 eMaxLeftJunction(), eMinLeftJunction(), mJoin(), bLund(),
116 closePackingFluxRatio(1.), closePackingPT20(1.), pT20(), xySmear(),
117 maxSmear(), maxTau(), kappaVtx(), mc(), mb(), hasJunction(), isClosed(),
118 iPos(), iNeg(), nExtraJoin(), w2Rem(), stopMassNow(), idDiquark(),
119 legMin(), legMid() {}
123 StringZ* zSelPtrIn =
nullptr, FragModPtr fragModPtrIn =
nullptr)
override;
127 bool isDiff =
false,
bool systemRecoil =
true)
override;
134 const bool angleCheck =
true)
const;
139 static const int NTRYFLAV, NTRYJOIN, NSTOPMASS,
140 NTRYJNMATCH, NTRYJRFEQ, NTRYSMEAR, MAXVETOFINTWO;
141 static const double FACSTOPMASS, CLOSEDM2MAX, CLOSEDM2FRAC, EXPMAX,
142 MATCHPOSNEG, M2MINJRF, EMINJRF, EEXTRAJNMATCH,
143 MDIQUARKMIN, CONVJRFEQ, CHECKPOS;
146 FragModPtr flavRopePtr;
149 bool closePacking, setVertices, constantTau, smearOn,
150 traceColours, hardRemn, doStrangeJunc;
152 double stopMass, stopNewFlav, stopSmear, pNormJunction, pMaxJunction,
153 eBothLeftJunction, eMaxLeftJunction, eMinLeftJunction,
154 mJoin, bLund, closePackingFluxRatio, closePackingPT20,
155 qqSupPar, qqSupAnti, pT20, xySmear, maxSmear, maxTau,
156 kappaVtx, mc, mb, dampPopcorn, aRemn, bRemn, strangeJuncParm;
159 bool hasJunction, isClosed;
160 int iPos, iNeg, nExtraJoin;
161 double w2Rem, stopMassNow, kappaModifier, probQQmod;
162 Vec4 pSum, pRem, pJunctionHadrons;
165 bool doChangeFragPar =
false, doVetoFrag =
false;
168 vector<int> iParton, iPartonMinLeg, iPartonMidLeg, iPartonMax;
171 vector<StringVertex> stringVertices, legMinVertices, legMidVertices;
175 vector<Vec4> listJRF;
176 vector<double> weightJRF;
177 int iLeg[3], idLeg[3], legEnd[3];
178 double weightSum, pSumJRF, m2Leg[3];
180 bool lastJRF, endpoint[3];
189 Vec4 pMinEnd, pMidEnd;
199 StringEnd posEnd, negEnd, posEndSave, negEndSave;
202 vector<int> findFirstRegion(
int iSub,
const ColConfig& colConfig,
203 const Event& event)
const;
206 void setStartEnds(
int idPos,
int idNeg,
const StringSystem& systemNow,
210 bool energyUsedUp(
bool fromPos);
213 bool finalTwo(
bool fromPos,
const Event& event,
bool usedPosJun,
217 Vec4 pPosFinalReg, pNegFinalReg, eXFinalReg, eYFinalReg;
220 bool setHadronVertices(
Event& event);
226 void store(
Event& event);
229 bool fragmentToJunction(
Event& event,
230 vector< vector< pair<double,double> > >& rapPairs);
236 bool collinearPair(
Event& event);
237 bool perturbedJRF(
Event& event);
238 int updateLegs(
Event& event,
Vec4 vJunIn,
bool juncCoM =
false);
239 double updateWeights(
double pSmall,
Vec4 vJunIn);
240 void nextParton(
Event& event,
int leg);
243 int extraJoin(
double facExtra,
Event& event);
248 vector< vector< pair<double,double> > >& rapPairs,
249 double mRem,
Event& event);
251 double yMax(
Particle pIn,
double mTiny) {
252 double temp = log( ( pIn.e() + abs(pIn.pz()) ) / max( mTiny, pIn.mT()) );
253 return (pIn.pz() > 0) ? temp : -temp; }
Definition: FragmentationSystems.h:223
bool flag(string keyIn)
Give back current value, with check that key exists.
Definition: Settings.cc:1599
virtual double aAreaLund()
a and b fragmentation parameters needed in some operations.
Definition: FragmentationFlavZpT.h:299
bool fromPos
Data members.
Definition: StringFragmentation.h:87
The Event class holds all info on the generated event.
Definition: Event.h:408
void newHadron(double kappaModifier, bool forbidPopcornNow=false, double strangeJunc=0., double probQQmod=1.)
Fragment off one hadron from the string system, in flavour and pT.
Definition: StringFragmentation.cc:64
The StringPT class is used to select select transverse momenta.
Definition: FragmentationFlavZpT.h:326
static const double PT2SAME
Assume two (eX, eY) regions are related if pT2 differs by less.
Definition: StringFragmentation.h:73
StringFlav * flavSelPtr
Pointers to classes for flavour, pT and z generation.
Definition: StringFragmentation.h:79
ParticleData * particleDataPtr
Pointer to the particle data table.
Definition: StringFragmentation.h:76
Definition: StringFragmentation.h:105
Definition: FragmentationSystems.h:185
StringFragmentation()
Constructor.
Definition: StringFragmentation.h:110
Definition: FragmentationSystems.h:136
StringEnd()
Constructor.
Definition: StringFragmentation.h:28
The StringZ class is used to sample the fragmentation function f(z).
Definition: FragmentationFlavZpT.h:265
void updateToPrev()
Update string end information to previous string break.
Definition: StringFragmentation.cc:568
Vec4 kinematicsHadron(StringSystem &system, StringVertex &newVertex, double zHad)
Definition: StringFragmentation.cc:129
Definition: StringFragmentation.h:23
Vec4 kinematicsHadronTmp(StringSystem system, Vec4 pRem, double phi, double mult)
Definition: StringFragmentation.cc:317
void storePrev()
Store old string end information.
Definition: StringFragmentation.cc:550
StringFlav flavSelNow
Local copy of flavSelPtr for modified flavour selection.
Definition: StringFragmentation.h:84
The ColConfig class describes the colour configuration of the whole event.
Definition: FragmentationSystems.h:60
void update()
Update string end information after a hadron has been removed.
Definition: StringFragmentation.cc:532
Definition: FragmentationFlavZpT.h:41
FragmentationModel is the base class for handling fragmentation algorithms.
Definition: FragmentationModel.h:28
double phi(const Vec4 &v1, const Vec4 &v2)
phi is azimuthal angle between v1 and v2 around z axis.
Definition: Basics.cc:704
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
The StringFlav class is used to select quark and hadron flavours.
Definition: FragmentationFlavZpT.h:84
StringFlav flavSelNow
Local copy of flavSelPtr for modified flavour selection.
Definition: StringFragmentation.h:130
static const double MEANMMIN
Definition: StringFragmentation.h:73
void init(ParticleData *particleDataPtrIn, StringFlav *flavSelPtrIn, StringPT *pTSelPtrIn, StringZ *zSelPtrIn, Settings &settings)
Save pointers.
Definition: StringFragmentation.h:38
This class holds a map of all ParticleDataEntries.
Definition: ParticleData.h:422
static const double TINY
Constants: could only be changed in the code itself.
Definition: StringFragmentation.h:73
void setUp(bool fromPosIn, int iEndIn, int idOldIn, int iMaxIn, double pxIn, double pyIn, double GammaIn, double xPosIn, double xNegIn, int colIn)
Set up initial endpoint values from input.
Definition: StringFragmentation.cc:39
Definition: Settings.h:196