9 #ifndef Pythia8_MiniStringFragmentation_H 10 #define Pythia8_MiniStringFragmentation_H 12 #include "Pythia8/FragmentationModel.h" 28 constantTau(), smearOn(), nTryMass(), hadronVertex(), bLund(), xySmear(),
29 kappaVtx(), mc(), mb(), mVecRatio(1.), isClosed(), mSum(), m2Sum() {}
33 StringZ* zSelPtrIn =
nullptr, FragModPtr fragModPtrIn =
nullptr)
override;
37 bool isDiff =
false,
bool systemRecoil =
true)
override;
45 static const int NTRYDIFFRACTIVE, NTRYLASTRESORT, NTRYFLAV;
48 bool setVertices, constantTau, smearOn;
49 int nTryMass, hadronVertex;
50 double bLund, xySmear, kappaVtx, mc, mb, mVecRatio;
53 bool isClosed, isJunctionSystem;
60 vector<StringVertex> ministringVertices;
63 bool reduce2SimpleJunction(
Event& event);
66 void reduce2SimpleString(
Event& event);
69 bool minijunction2two(
int nTry,
Event& event);
72 bool ministring2two(
int nTry,
Event& event,
bool findLowMass =
false);
76 bool findLowMass =
false,
bool systemRecoil =
true);
80 int iFirst,
int iLast);
85 struct SaveJunctionState {
89 : msf(msfIn), iParton(msfIn.iParton), event(eventIn),
90 oldSize(eventIn.
size()) {}
93 for (
int i = 1; i < int(iParton.size()); ++i) {
96 savedMomenta[iParton[i-1]] =
event[iParton[i-1]].p();
100 savedMomenta[iParton[iParton.size()-1]] =
101 event[iParton[iParton.size()-1]].p();
105 ~SaveJunctionState() {
106 if ( savedMomenta.empty() ||
event.size() <= oldSize )
return;
109 for (
auto & mom : savedMomenta )
event[mom.first].p(mom.second);
110 int iFirst = oldSize;
111 int iLast =
event.
size() - 1;
112 int imother = iParton.size() -1;
114 for (
int ip : iParton ) {
116 event[ip].statusNeg();
117 event[ip].daughters(iFirst, iLast);
120 event[iFirst].mothers(iParton[1], iParton[imother]);
121 event[iLast].mothers(iParton[1], iParton[imother]);
128 map<int,Vec4> savedMomenta{};
void setMVecRatio(double mVecRatioIn)
Set the vector mass ratio.
Definition: MiniStringFragmentation.h:40
The Event class holds all info on the generated event.
Definition: Event.h:408
MiniStringFragmentation()
Constructor.
Definition: MiniStringFragmentation.h:27
The StringPT class is used to select select transverse momenta.
Definition: FragmentationFlavZpT.h:333
Definition: FragmentationSystems.h:136
bool init(StringFlav *flavSelPtrIn=nullptr, StringPT *pTSelPtrIn=nullptr, StringZ *zSelPtrIn=nullptr, FragModPtr fragModPtrIn=nullptr) override
Initialize and save pointers.
Definition: MiniStringFragmentation.cc:35
The StringZ class is used to sample the fragmentation function f(z).
Definition: FragmentationFlavZpT.h:268
int size() const
Event record size.
Definition: Event.h:459
The ColConfig class describes the colour configuration of the whole event.
Definition: FragmentationSystems.h:60
Definition: FragmentationFlavZpT.h:33
FragmentationModel is the base class for handling fragmentation algorithms.
Definition: FragmentationModel.h:28
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
Definition: MiniStringFragmentation.h:22
bool fragment(int iSub, ColConfig &colConfig, Event &event, bool isDiff=false, bool systemRecoil=true) override
Do the fragmentation: driver routine.
Definition: MiniStringFragmentation.cc:73