herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
17 namespace Herwig {
18 
19 
20 using namespace ThePEG;
21 
22 
44 class PartonSplitter: public Interfaced {
45 
46 public:
47 
52  _splitPwtUquark(1),
53  _splitPwtDquark(1),
54  _splitPwtSquark(0.5),
55  _gluonDistance(ZERO),
56  _splitGluon(0),
57  _enhanceSProb(0),
58  _m0(10.*GeV),
59  _massMeasure(0)
60  {}
61 
69  void split(PVector & tagged);
70 
71 public:
72 
79  void persistentOutput(PersistentOStream & os) const;
80 
86  void persistentInput(PersistentIStream & is, int version);
88 
95  static void Init();
96 
97 protected:
98 
105  virtual IBPtr clone() const;
106 
111  virtual IBPtr fullclone() const;
113 
114 protected:
115 
123  virtual void doinit();
124 
126 
127 private:
128 
132  PartonSplitter & operator=(const PartonSplitter &) = delete;
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 
168 private:
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 */
ThePEG::Ptr< Particle >::pointer PPtr
Length _gluonDistance
c tau for gluon decays
This class splits the gluons from the end of the shower.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
double _splitPwtUquark
Different variables for the weight for splitting into various light quark species.
vector< Energy2 > _colSingletm2
Vector that stores the masses of the colour-singlets or of a colourless particle. ...
int _massMeasure
Flag that switches between mass measures used in strangeness enhancement: cluster mass...
ThePEG::Ptr< Particle >::transient_const_pointer tcPPtr
int _enhanceSProb
Option to choose which functional form to use for strangeness production.
Selector< PDPtr, double > _quarkSelector
The selector to pick the type of quark.
PartonSplitter()
Default constructor.
-*- C++ -*-
vector< int > _colSingletSize
Vector that stores the index in the event record of the anti-triplet of the colour-singlets, or of a colourless particle.
vector< PPtr > PVector
int _splitGluon
Flag used to determine between normal gluon splitting and alternative gluon splitting.
constexpr ZeroUnit ZERO
Energy _m0
Characteristic mass scale for strangeness enhancement.