herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
PartonSplitter.h
1// -*- C++ -*-
2//
3// PartonSplitter.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4// Copyright (C) 2002-2019 The Herwig Collaboration
5//
6// Herwig is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef HERWIG_PartonSplitter_H
10#define HERWIG_PartonSplitter_H
11
12#include "CluHadConfig.h"
13#include <ThePEG/Interface/Interfaced.h>
14#include <ThePEG/Utilities/Selector.h>
15#include "PartonSplitter.fh"
16
17namespace Herwig {
18
19
20using namespace ThePEG;
21
22
45
46public:
47
53 _splitPwtDquark(1),
54 _splitPwtSquark(0.5),
56 _splitGluon(0),
58 _m0(10.*GeV),
60 {}
61
69 void split(PVector & tagged);
70
71public:
72
80
86 void persistentInput(PersistentIStream & is, int version);
88
95 static void Init();
96
97protected:
98
105 virtual IBPtr clone() const;
106
111 virtual IBPtr fullclone() const;
113
114protected:
115
123 virtual void doinit();
124
126
127private:
128
133
141 void splitTimeLikeGluon(tcPPtr gluon, PPtr & quark, PPtr & anti);
142
143
153 void massSplitTimeLikeGluon(tcPPtr gluon, PPtr & quark, PPtr & anti,
154 size_t i);
155
161 void colourSorted(PVector& tagged);
162
166 double enhanceStrange(size_t i);
167
168private:
169
175 double _splitPwtDquark;
176 double _splitPwtSquark;
177
182
187
192
197 vector<int> _colSingletSize;
198
203 vector<Energy2> _colSingletm2;
204
210
214 Energy _m0;
215
221
226 const double _maxScale = 20.;
227
228};
229
230}
231
232#endif /* HERWIG_PartonSplitter_H */
This class splits the gluons from the end of the shower.
static void Init()
The standard Init function used to initialize the interfaces.
const double _maxScale
Constant variable that stops the scale in strangeness enhancement from becoming too large.
virtual IBPtr clone() const
Make a simple clone of this object.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double enhanceStrange(size_t i)
Method to calculate the probability for producing strange quarks.
Selector< PDPtr, double > _quarkSelector
The selector to pick the type of quark.
void colourSorted(PVector &tagged)
Colour-sort the event into grouped colour-singlets.
int _enhanceSProb
Option to choose which functional form to use for strangeness production.
void massSplitTimeLikeGluon(tcPPtr gluon, PPtr &quark, PPtr &anti, size_t i)
Non-perturbatively split a time-like gluon using a mass-based strangeness enhancement,...
vector< int > _colSingletSize
Vector that stores the index in the event record of the anti-triplet of the colour-singlets,...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
void splitTimeLikeGluon(tcPPtr gluon, PPtr &quark, PPtr &anti)
Non-perturbatively split a time-like gluon, if something goes wrong null pointers are returned.
int _massMeasure
Flag that switches between mass measures used in strangeness enhancement: cluster mass,...
double _splitPwtUquark
Different variables for the weight for splitting into various light quark species.
int _splitGluon
Flag used to determine between normal gluon splitting and alternative gluon splitting.
PartonSplitter & operator=(const PartonSplitter &)=delete
Private and non-existent assignment operator.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
PartonSplitter()
Default constructor.
Length _gluonDistance
c tau for gluon decays
Energy _m0
Characteristic mass scale for strangeness enhancement.
void split(PVector &tagged)
This method does the nonperturbative splitting of: time-like gluons.
vector< Energy2 > _colSingletm2
Vector that stores the masses of the colour-singlets or of a colourless particle.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< Particle >::transient_const_pointer tcPPtr
ThePEG::Ptr< Particle >::pointer PPtr
constexpr ZeroUnit ZERO
vector< PPtr > PVector