herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
DipoleEvolutionOrdering.h
1// -*- C++ -*-
2//
3// DipoleEvolutionOrdering.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_DipoleEvolutionOrdering_H
10#define HERWIG_DipoleEvolutionOrdering_H
11//
12// This is the declaration of the DipoleEvolutionOrdering class.
13//
14
15#include "ThePEG/Handlers/HandlerBase.h"
16
17#include "Herwig/Shower/Dipole/Base/Dipole.h"
18#include "Herwig/Shower/Dipole/Base/DipoleChain.h"
19#include "Herwig/Shower/Dipole/Kernels/DipoleSplittingKernel.h"
20
21namespace Herwig {
22
23using namespace ThePEG;
24
34
35public:
36
43
49
50public:
51
56 virtual bool independentDipoles() const { return false; }
57
62 virtual Energy hardScale(tPPtr emitter, tPPtr spectator,
63 double emitterX, double spectatorX,
65 const DipoleIndex&) const = 0;
66
72 virtual void setEvolutionScale(Energy scale,
75 pair<list<Dipole>::iterator,list<Dipole>::iterator>) const = 0;
76
82 virtual void setEvolutionScale(Energy scale,
85 list<Dipole>::iterator) const = 0;
86
90 virtual Energy evolutionScale(const DipoleSplittingInfo&,
91 const DipoleSplittingKernel&) const = 0;
92
97 virtual Energy maxPt(Energy scale,
99 const DipoleSplittingKernel&) const = 0;
100
101public:
102
110
116 void persistentInput(PersistentIStream & is, int version);
118
125 static void Init();
126
127// If needed, insert declarations of virtual function defined in the
128// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
129
130
131private:
132
138
144
145};
146
147}
148
149#include "ThePEG/Utilities/ClassTraits.h"
150
151namespace ThePEG {
152
157template <>
158struct BaseClassTrait<Herwig::DipoleEvolutionOrdering,1> {
160 typedef HandlerBase NthBase;
161};
162
165template <>
166struct ClassTraits<Herwig::DipoleEvolutionOrdering>
167 : public ClassTraitsBase<Herwig::DipoleEvolutionOrdering> {
169 static string className() { return "Herwig::DipoleEvolutionOrdering"; }
177 static string library() { return "HwDipoleShower.so"; }
178};
179
182}
183
184#endif /* HERWIG_DipoleEvolutionOrdering_H */
The DipoleChain class is used by the dipole shower to represent a chain of dipoles.
Definition: DipoleChain.h:29
DipoleEvolutionOrdering defines a particular evolution algortihm for the dipole shower.
virtual void setEvolutionScale(Energy scale, const DipoleSplittingInfo &, DipoleChain &, list< Dipole >::iterator) const =0
For the given performed splitting, dipole chain and dipole taking a recoil, set the next scale.
virtual Energy hardScale(tPPtr emitter, tPPtr spectator, double emitterX, double spectatorX, const DipoleSplittingKernel &, const DipoleIndex &) const =0
For the given dipole and splitting kernel return the hard scale.
DipoleEvolutionOrdering()
The default constructor.
virtual ~DipoleEvolutionOrdering()
The destructor.
virtual Energy maxPt(Energy scale, const DipoleSplittingInfo &, const DipoleSplittingKernel &) const =0
Return the maximum pt corresponding to the given evolution scale.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual void setEvolutionScale(Energy scale, const DipoleSplittingInfo &, DipoleChain &, pair< list< Dipole >::iterator, list< Dipole >::iterator >) const =0
For the given performed splitting, dipole chain and dipoles originating from the splitting,...
virtual bool independentDipoles() const
Return true, if this ordering requests an independent dipole evolution.
DipoleEvolutionOrdering & operator=(const DipoleEvolutionOrdering &)=delete
The assignment operator is private and must never be called.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual Energy evolutionScale(const DipoleSplittingInfo &, const DipoleSplittingKernel &) const =0
For the given selected splitting return the evolution scale.
static AbstractClassDescription< DipoleEvolutionOrdering > initDipoleEvolutionOrdering
The static object used to initialize the description of this class.
static void Init()
The standard Init function used to initialize the interfaces.
DipoleIndex is used to index splitting generators for a particular dipole.
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.
-*- C++ -*-
ThePEG::Ptr< Particle >::transient_pointer tPPtr
static string className()
static string library()