15 #ifndef Pythia8_Ropewalk_H 16 #define Pythia8_Ropewalk_H 18 #include "Pythia8/Basics.h" 19 #include "Pythia8/Event.h" 20 #include "Pythia8/FragmentationSystems.h" 21 #include "Pythia8/Info.h" 22 #include "Pythia8/ParticleData.h" 23 #include "Pythia8/Settings.h" 24 #include "Pythia8/PythiaStdlib.h" 25 #include "Pythia8/StringInteractions.h" 78 bool overlap(
double y,
Vec4 ba,
double r0);
113 void addExcitation(
double ylab,
Particle* ex);
124 Vec4 dipoleMomentum();
127 Vec4 bInterpolateDip(
double y,
double m0);
129 Vec4 bInterpolateLab(
double y,
double m0);
135 pair<int, int> getOverlaps(
double yfrac,
double m0,
double r0);
139 overlaps.push_back(d); }
142 double maxRapidity(
double m0) {
return (max(d1.rap(m0), d2.rap(m0))); }
143 double minRapidity(
double m0) {
return (min(d1.rap(m0), d2.rap(m0))); }
148 double minRapidity(
double m0,
RotBstMatrix& r) {
return (min(d1.rap(m0,r),
152 void propagateInit(
double deltat);
155 void propagate(
double deltat,
double m0);
161 void excitationsToString(
double m0,
Event& event);
172 bool recoil(
Vec4& pg,
bool dummy =
false);
193 bool hasRotFrom, hasRotTo;
196 vector<OverlappingRopeDipole> overlaps;
199 map<double, Particle*> excitations;
217 shoveJunctionStrings(),
218 shoveMiniStrings(), shoveGluonLoops(), mStringMin(), limitMom(), rCutOff(),
219 gAmplitude(), gExponent(), deltay(), deltat(), tShove(), tInit(),
220 showerCut(), alwaysHighest() {}
229 bool calculateOverlaps();
233 double getKappaHere(
int e1,
int e2,
double yfrac);
237 return ( p < 0 || q < 0 || p + q == 0 )
238 ? 0.0 : 0.5 * (p + 1) * (q + 1) * (p + q + 2);
243 double averageKappa();
246 pair<int, int> select(
int m,
int n,
Rndm* rndm);
249 void shoveTheDipoles(
Event& event);
254 double r0, m0, pTcut;
256 bool shoveJunctionStrings;
258 bool shoveMiniStrings;
260 bool shoveGluonLoops;
268 double gAmplitude, gExponent;
284 typedef multimap<pair<int,int>,
RopeDipole> DMap;
288 vector< vector<Particle> > eParticles;
291 vector<pair<int, int> > states;
292 vector<double> weights;
310 yIn(), xiIn(), sigmaIn(), kappaIn(), aEff(), adiqEff(), bEff(),
311 rhoEff(), xEff(), yEff(), xiEff(), sigmaEff(), kappaEff(),
319 map<string,double> getEffectiveParameters(
double h);
324 static const double DELTAA, ACONV, ZCUT;
327 double getEffectiveA(
double thisb,
double mT2,
bool isDiquark);
330 bool calculateEffectiveParameters(
double h);
333 bool insertEffectiveParameters(
double h);
336 double aEffective(
double aOrig,
double thisb,
double mT2);
339 double fragf(
double z,
double a,
double b,
double mT2);
342 double integrateFragFun(
double a,
double b,
double mT2);
345 double trapIntegrate(
double a,
double b,
double mT2,
double sOld,
int n);
348 map<double, map<string, double> > parameters;
351 map<double, double> aMap;
354 map<double, double> aDiqMap;
357 double aIn, adiqIn, bIn, rhoIn, xIn, yIn, xiIn, sigmaIn, kappaIn;
360 double aEff, adiqEff, bEff, rhoEff, xEff, yEff, xiEff, sigmaEff, kappaEff;
380 rapiditySpan(), stringProtonRatio(), fixedKappa(), h() {}
387 h = parm(
"Ropewalk:presetKappa");
388 fixedKappa = flag(
"Ropewalk:setFixedKappa");
389 doBuffon = flag(
"Ropewalk:doBuffon");
390 rapiditySpan = parm(
"Ropewalk:rapiditySpan");
391 stringProtonRatio = parm(
"Ropewalk:stringProtonRatio");
399 StringPT * pTPtr,
double m2Had, vector<int> iParton,
int endId)
override;
409 virtual bool initEvent(
Event& event,
ColConfig& colConfig)
override;
414 registerSubObject(fp);
421 map<string, double> fetchParameters(
double m2Had, vector<int> iParton,
424 map<string, double> fetchParametersBuffon(
double m2Had, vector<int> iParton,
440 double rapiditySpan, stringProtonRatio;
443 vector<int> hadronized;
462 friend class RopeWalk;
470 virtual bool stringRepulsion(
Event & event,
ColConfig & colConfig);
void hadronized(bool h)
Set dipole hadronized flag.
Definition: Ropewalk.h:175
int index()
Get the (event colconfig) index.
Definition: Ropewalk.h:167
Definition: PhysicsBase.h:27
The Event class holds all info on the generated event.
Definition: Event.h:453
Interface to RopeWalk via an ShoverBase object.
Definition: Ropewalk.h:457
bool hadronized()
Test if the dipole is hadronized.
Definition: Ropewalk.h:164
The StringPT class is used to select select transverse momenta.
Definition: FragmentationFlavZpT.h:322
int getNe()
Get the particle index in event record.
Definition: Ropewalk.h:47
Definition: Ropewalk.h:374
Definition: StringInteractions.h:156
Definition: Ropewalk.h:211
FlavourRope(Ropewalk &rwIn)
Constructor.
Definition: Ropewalk.h:379
RopewalkShover(Ropewalk &rwIn)
The costructor needs a RopeWalk object be consistent.
Definition: Ropewalk.h:465
virtual bool init() override
Initialize. Set pointers.
Definition: Ropewalk.h:383
virtual void onInitInfoPtr() override
Definition: Ropewalk.h:413
The StringZ class is used to sample the fragmentation function f(z).
Definition: FragmentationFlavZpT.h:264
Definition: Ropewalk.h:304
Definition: Ropewalk.h:103
double y() const
Functions for rapidity and pseudorapidity.
Definition: Event.cc:54
Ropewalk()
Constructor.
Definition: Ropewalk.h:216
Definition: StringInteractions.h:28
double maxRapidity(double m0, RotBstMatrix &r)
Get the maximal and minimal boosted rapidity of the dipole.
Definition: Ropewalk.h:146
int nExcitations()
The number of excitations on the dipole.
Definition: Ropewalk.h:178
double maxRapidity(double m0)
Get the maximal and minimal rapidity of the dipole.
Definition: Ropewalk.h:142
The ColConfig class describes the colour configuration of the whole event.
Definition: FragmentationSystems.h:60
RopeFragPars()
Constructor.
Definition: Ropewalk.h:309
Definition: Ropewalk.h:70
double multiplicity(double p, double q)
The multiplicity of a colour state given its quantum numbers.
Definition: Ropewalk.h:236
virtual ~RopewalkShover()
Empty virtual destructor.
Definition: Ropewalk.h:468
void setEventPtr(Event &event)
Set pointer to the event.
Definition: Ropewalk.h:405
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
double m(const Vec4 &v1)
Invariant mass and its square.
Definition: Basics.cc:595
Definition: StringInteractions.h:182
The StringFlav class is used to select quark and hadron flavours.
Definition: FragmentationFlavZpT.h:84
Definition: Ropewalk.h:35
void setEnhancement(double hIn)
Set enhancement manually.
Definition: Ropewalk.h:402
Particle * getParticlePtr()
Get a pointer to the particle.
Definition: Ropewalk.h:44
double labrap()
Output methods for (modified) rapidity.
Definition: Ropewalk.h:50
RopeDipoleEnd * d1Ptr()
Deep access to the RopeDipoleEnds (needed by OverlappingRopeDipole).
Definition: Ropewalk.h:116
int dir
Definition: Ropewalk.h:92
void addOverlappingDipole(OverlappingRopeDipole &d)
Add an overlapping dipole.
Definition: Ropewalk.h:138
RopeDipoleEnd()
Constructors sets event pointer and event record index.
Definition: Ropewalk.h:40