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 zHad(), GammaOld(), GammaNew(), xPosOld(), xPosNew(), xPosHad(), xNegOld(),
33 xNegNew(), xNegHad(), aLund(), bLund(), iPosOldPrev(), iNegOldPrev(),
34 colOldPrev(), pxOldPrev(), pyOldPrev(), GammaOldPrev(), xPosOldPrev(),
35 xNegOldPrev(), mVecRatio(1.), tinyEq(), pT2tiny() {}
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,
double mVecRatioIn);
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, zHad,
91 GammaOld, GammaNew, xPosOld, xPosNew, xPosHad, xNegOld, xNegNew,
92 xNegHad, aLund, bLund;
93 int iPosOldPrev, iNegOldPrev, colOldPrev;
94 double pxOldPrev, pyOldPrev, GammaOldPrev, xPosOldPrev, xNegOldPrev,
95 mVecRatio, tinyEq, pT2tiny;
113 setVertices(), constantTau(), smearOn(), traceColours(false),
114 hadronVertex(), stopMass(), stopNewFlav(), stopSmear(),
115 pNormJunction(), pMaxJunction(), eBothLeftJunction(),
116 eMaxLeftJunction(), eMinLeftJunction(), mJoin(), bLund(),
117 closePackingFluxRatio(1.), closePackingPT20(1.), pT20(),
118 xySmear(), maxSmear(), maxTau(), kappaVtx(), mc(), mb(),
119 hasJunction(), isClosed(), iPos(), iNeg(), nExtraJoin(),
120 w2Rem(), stopMassNow(), mVecRatio(1.), closedM2max(),
121 idDiquark(), legMin(), legMid() {}
125 StringZ* zSelPtrIn =
nullptr, FragModPtr fragModPtrIn =
nullptr)
override;
129 bool isDiff =
false,
bool systemRecoil =
true)
override;
136 const bool angleCheck =
true)
const;
144 static const int NTRYFLAV, NTRYJOIN, NSTOPMASS,
145 NTRYJNMATCH, NTRYJRFEQ, NTRYSMEAR, MAXVETOFINTWO;
146 static const double FACSTOPMASS, CLOSEDM2MAX, CLOSEDM2FRAC, EXPMAX,
147 MATCHPOSNEG, M2MINJRF, EMINJRF, EEXTRAJNMATCH,
148 MDIQUARKMIN, CONVJRFEQ, CHECKPOS;
151 FragModPtr flavRopePtr;
154 bool closePacking, setVertices, constantTau, smearOn,
155 traceColours, hardRemn, doStrangeJunc;
157 double stopMass, stopNewFlav, stopSmear, pNormJunction, pMaxJunction,
158 eBothLeftJunction, eMaxLeftJunction, eMinLeftJunction,
159 mJoin, bLund, closePackingFluxRatio, closePackingPT20,
160 qqSupPar, qqSupAnti, pT20, xySmear, maxSmear, maxTau,
161 kappaVtx, mc, mb, dampPopcorn, aRemn, bRemn, strangeJuncParm;
164 bool hasJunction, isClosed;
165 int iPos, iNeg, nExtraJoin;
166 double w2Rem, stopMassNow, kappaModifier, probQQmod, mVecRatio, closedM2max;
167 Vec4 pSum, pRem, pJunctionHadrons;
170 bool doChangeFragPar =
false, doVetoFrag =
false;
173 vector<int> iParton, iPartonMinLeg, iPartonMidLeg, iPartonMax;
176 vector<StringVertex> stringVertices, legMinVertices, legMidVertices;
180 vector<Vec4> listJRF;
181 vector<double> weightJRF;
182 int iLeg[3], idLeg[3], legEnd[3];
183 double weightSum, pSumJRF, m2Leg[3];
185 bool lastJRF, endpoint[3];
194 Vec4 pMinEnd, pMidEnd;
204 StringEnd posEnd, negEnd, posEndSave, negEndSave;
207 vector<int> findFirstRegion(
int iSub,
const ColConfig& colConfig,
208 const Event& event)
const;
211 void setStartEnds(
int idPos,
int idNeg,
const StringSystem& systemNow,
215 bool energyUsedUp(
bool fromPos);
218 bool finalTwo(
bool fromPos,
const Event& event,
bool usedPosJun,
222 Vec4 pPosFinalReg, pNegFinalReg, eXFinalReg, eYFinalReg;
225 bool setHadronVertices(
Event& event);
231 void store(
Event& event);
234 bool fragmentToJunction(
Event& event,
235 vector< vector< pair<double,double> > >& rapPairs);
241 bool collinearPair(
Event& event);
242 bool perturbedJRF(
Event& event);
243 int updateLegs(
Event& event,
Vec4 vJunIn,
bool juncCoM =
false);
244 double updateWeights(
double pSmall,
Vec4 vJunIn);
245 void nextParton(
Event& event,
int leg);
248 int extraJoin(
double facExtra,
Event& event);
252 StringEnd end,
bool fromPos, vector<int> partonList,
253 vector< vector< pair<double,double> > >& rapPairs,
254 double mRem,
Event& event);
256 double yMax(
Particle pIn,
double mTiny) {
257 double temp = log( ( pIn.e() + abs(pIn.pz()) ) / max( mTiny, pIn.mT()) );
258 return (pIn.pz() > 0) ? temp : -temp; }
Definition: FragmentationSystems.h:225
bool flag(string keyIn)
Give back current value, with check that key exists.
Definition: Settings.cc:1602
virtual double aAreaLund()
a and b fragmentation parameters needed in some operations.
Definition: FragmentationFlavZpT.h:303
bool fromPos
Data members.
Definition: StringFragmentation.h:87
The Event class holds all info on the generated event.
Definition: Event.h:408
Vec4 kinematicsHadron(StringSystem &system, StringVertex &newVertex, double zHadIn)
Definition: StringFragmentation.cc:132
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:67
void setUp(bool fromPosIn, int iEndIn, int idOldIn, int iMaxIn, double pxIn, double pyIn, double GammaIn, double xPosIn, double xNegIn, int colIn, double mVecRatioIn)
Set up initial endpoint values from input.
Definition: StringFragmentation.cc:39
The StringPT class is used to select select transverse momenta.
Definition: FragmentationFlavZpT.h:333
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:106
Definition: FragmentationSystems.h:186
StringFragmentation()
Constructor.
Definition: StringFragmentation.h:111
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:268
void updateToPrev()
Update string end information to previous string break.
Definition: StringFragmentation.cc:572
Definition: StringFragmentation.h:23
Vec4 kinematicsHadronTmp(StringSystem system, Vec4 pRem, double phi, double mult)
Definition: StringFragmentation.cc:321
void storePrev()
Store old string end information.
Definition: StringFragmentation.cc:554
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:536
void setMVecRatio(double mVecRatioIn)
Set the vector mass ratio.
Definition: StringFragmentation.h:139
Definition: FragmentationFlavZpT.h:33
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:76
StringFlav flavSelNow
Local copy of flavSelPtr for modified flavour selection.
Definition: StringFragmentation.h:132
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
Definition: Settings.h:196