herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
DipoleChainOrdering.h
1 // -*- C++ -*-
2 //
3 // DipoleChainOrdering.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_DipoleChainOrdering_H
10 #define HERWIG_DipoleChainOrdering_H
11 //
12 // This is the declaration of the DipoleChainOrdering class.
13 //
14 
15 #include "DipoleEvolutionOrdering.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
30 
31 public:
32 
39 
43  virtual ~DipoleChainOrdering();
45 
46 public:
47 
52  virtual Energy hardScale(tPPtr emitter, tPPtr spectator,
53  double emitterX, double spectatorX,
54  const DipoleSplittingKernel&,
55  const DipoleIndex&) const;
56 
62  virtual void setEvolutionScale(Energy scale,
63  const DipoleSplittingInfo&,
64  DipoleChain&,
65  pair<list<Dipole>::iterator,list<Dipole>::iterator>) const;
66 
72  virtual void setEvolutionScale(Energy scale,
73  const DipoleSplittingInfo&,
74  DipoleChain&,
75  list<Dipole>::iterator) const;
76 
81  virtual Energy evolutionScale(const DipoleSplittingInfo& split,
82  const DipoleSplittingKernel&) const;
83 
88  virtual Energy maxPt(Energy scale,
89  const DipoleSplittingInfo&,
90  const DipoleSplittingKernel&) const;
91 
92 public:
93 
100  void persistentOutput(PersistentOStream & os) const;
101 
107  void persistentInput(PersistentIStream & is, int version);
109 
116  static void Init();
117 
118 protected:
119 
126  virtual IBPtr clone() const;
127 
132  virtual IBPtr fullclone() const;
134 
135 
136 // If needed, insert declarations of virtual function defined in the
137 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
138 
139 private:
140 
146 
147 private:
148 
154 
159  DipoleChainOrdering & operator=(const DipoleChainOrdering &) = delete;
160 
161 };
162 
163 }
164 
165 #include "ThePEG/Utilities/ClassTraits.h"
166 
167 namespace ThePEG {
168 
173 template <>
174 struct BaseClassTrait<Herwig::DipoleChainOrdering,1> {
176  typedef Herwig::DipoleEvolutionOrdering NthBase;
177 };
178 
181 template <>
182 struct ClassTraits<Herwig::DipoleChainOrdering>
183  : public ClassTraitsBase<Herwig::DipoleChainOrdering> {
185  static string className() { return "Herwig::DipoleChainOrdering"; }
193  static string library() { return "HwDipoleShower.so"; }
194 };
195 
198 }
199 
200 #endif /* HERWIG_DipoleChainOrdering_H */
bool virtualityOrdering
True, if virtuality instead of pt ordering should be performed.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
DipoleIndex is used to index splitting generators for a particular dipole.
DipoleChainOrdering performs ordering on complete colour singlet dipole chains.
DipoleEvolutionOrdering defines a particular evolution algortihm for the dipole shower.
ThePEG::Ptr< Particle >::transient_pointer tPPtr
-*- C++ -*-
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
The DipoleChain class is used by the dipole shower to represent a chain of dipoles.
Definition: DipoleChain.h:29
static ClassDescription< DipoleChainOrdering > initDipoleChainOrdering
The static object used to initialize the description of this class.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.