herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
IFLightKinematics.h
1 // -*- C++ -*-
2 //
3 // IFLightKinematics.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_IFLightKinematics_H
10 #define HERWIG_IFLightKinematics_H
11 //
12 // This is the declaration of the IFLightKinematics class.
13 //
14 
15 #include "DipoleSplittingKinematics.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
32 
33 public:
34 
41 
45  virtual ~IFLightKinematics();
47 
48 public:
49 
53  virtual Energy ptMax(Energy dScale,
54  double emX, double specX,
55  const DipoleIndex&,
56  const DipoleSplittingKernel&) const;
57 
61  virtual Energy QMax(Energy dScale,
62  double emX, double specX,
63  const DipoleIndex& dIndex,
64  const DipoleSplittingKernel&) const;
65 
69  virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const;
70 
74  virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const;
75 
79  virtual pair<double,double> zBoundaries(Energy pt,
80  const DipoleSplittingInfo& dInfo,
81  const DipoleSplittingKernel& split) const;
82 
88  virtual bool generateSplitting(double kappa, double xi, double phi,
89  DipoleSplittingInfo& dIndex,
90  const DipoleSplittingKernel&);
91 
97  virtual void generateKinematics(const Lorentz5Momentum& pEmitter,
98  const Lorentz5Momentum& pSpectator,
99  const DipoleSplittingInfo& dInfo);
100 
101 public:
102 
109  void persistentOutput(PersistentOStream & os) const;
110 
116  void persistentInput(PersistentIStream & is, int version);
118 
125  static void Init();
126 
127 protected:
128 
135  virtual IBPtr clone() const;
136 
141  virtual IBPtr fullclone() const;
143 
144 
145 // If needed, insert declarations of virtual function defined in the
146 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
147 
148 
149 private:
150 
156 
161  IFLightKinematics & operator=(const IFLightKinematics &) = delete;
162 
163 private:
164 
169 
170 };
171 
172 }
173 
174 #include "ThePEG/Utilities/ClassTraits.h"
175 
176 namespace ThePEG {
177 
182 template <>
183 struct BaseClassTrait<Herwig::IFLightKinematics,1> {
185  typedef Herwig::DipoleSplittingKinematics NthBase;
186 };
187 
190 template <>
191 struct ClassTraits<Herwig::IFLightKinematics>
192  : public ClassTraitsBase<Herwig::IFLightKinematics> {
194  static string className() { return "Herwig::IFLightKinematics"; }
202  static string library() { return "HwDipoleShower.so"; }
203 };
204 
207 }
208 
209 #endif /* HERWIG_IFLightKinematics_H */
DipoleSplittingKinematics is the base class for dipole splittings as performed in the dipole shower...
static ClassDescription< IFLightKinematics > initIFLightKinematics
The static object used to initialize the description of this class.
IFLightKinematics implements massless splittings off an initial-final dipole.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
DipoleIndex is used to index splitting generators for a particular dipole.
-*- C++ -*-
bool theCollinearScheme
Wether or not to choose the `collinear&#39; scheme.
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.