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(), isClosed(), mSum(), m2Sum() {}
33 StringZ* zSelPtrIn =
nullptr, FragModPtr fragModPtrIn =
nullptr)
override;
37 bool isDiff =
false,
bool systemRecoil =
true)
override;
42 static const int NTRYDIFFRACTIVE, NTRYLASTRESORT, NTRYFLAV;
45 bool setVertices, constantTau, smearOn;
46 int nTryMass, hadronVertex;
47 double bLund, xySmear, kappaVtx, mc, mb;
50 bool isClosed, isJunctionSystem;
57 vector<StringVertex> ministringVertices;
60 bool reduce2SimpleJunction(
Event& event);
63 void reduce2SimpleString(
Event& event);
66 bool minijunction2two(
int nTry,
Event& event);
69 bool ministring2two(
int nTry,
Event& event,
bool findLowMass =
false);
73 bool findLowMass =
false,
bool systemRecoil =
true);
77 int iFirst,
int iLast);
82 struct SaveJunctionState {
86 : msf(msfIn), iParton(msfIn.iParton), event(eventIn),
87 oldSize(eventIn.
size()) {}
90 for (
int i = 1; i < int(iParton.size()); ++i) {
93 savedMomenta[iParton[i-1]] =
event[iParton[i-1]].p();
97 savedMomenta[iParton[iParton.size()-1]] =
98 event[iParton[iParton.size()-1]].p();
102 ~SaveJunctionState() {
103 if ( savedMomenta.empty() ||
event.size() <= oldSize )
return;
106 for (
auto & mom : savedMomenta )
event[mom.first].p(mom.second);
107 int iFirst = oldSize;
108 int iLast =
event.
size() - 1;
109 int imother = iParton.size() -1;
111 for (
int ip : iParton ) {
113 event[ip].statusNeg();
114 event[ip].daughters(iFirst, iLast);
117 event[iFirst].mothers(iParton[1], iParton[imother]);
118 event[iLast].mothers(iParton[1], iParton[imother]);
125 map<int,Vec4> savedMomenta{};
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:326
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:265
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:41
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:84
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