herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
FILightKinematics.h
1 // -*- C++ -*-
2 //
3 // FILightKinematics.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_FILightKinematics_H
10 #define HERWIG_FILightKinematics_H
11 //
12 // This is the declaration of the FILightKinematics class.
13 //
14 
15 #include "DipoleSplittingKinematics.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
30 
31 public:
32 
39 
43  virtual ~FILightKinematics();
45 
46 public:
47 
51  virtual Energy ptMax(Energy dScale,
52  double emX, double specX,
53  const DipoleIndex& dIndex,
54  const DipoleSplittingKernel&) const;
55 
59  virtual Energy QMax(Energy dScale,
60  double emX, double specX,
61  const DipoleIndex& dIndex,
62  const DipoleSplittingKernel&) const;
63 
67  virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const;
68 
72  virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const;
73 
77  virtual pair<double,double> zBoundaries(Energy pt,
78  const DipoleSplittingInfo& dInfo,
79  const DipoleSplittingKernel& split) const;
80 
86  virtual bool generateSplitting(double kappa, double xi, double phi,
87  DipoleSplittingInfo& dIndex,
88  const DipoleSplittingKernel&);
89 
95  virtual void generateKinematics(const Lorentz5Momentum& pEmitter,
96  const Lorentz5Momentum& pSpectator,
97  const DipoleSplittingInfo& dInfo);
98 
99 public:
100 
107  void persistentOutput(PersistentOStream & os) const;
108 
114  void persistentInput(PersistentIStream & is, int version);
116 
123  static void Init();
124 
125 protected:
126 
133  virtual IBPtr clone() const;
134 
139  virtual IBPtr fullclone() const;
141 
142 
143 // If needed, insert declarations of virtual function defined in the
144 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
145 
146 
147 private:
148 
154 
159  FILightKinematics & operator=(const FILightKinematics &) = delete;
160 
161 };
162 
163 }
164 
165 #include "ThePEG/Utilities/ClassTraits.h"
166 
167 namespace ThePEG {
168 
173 template <>
174 struct BaseClassTrait<Herwig::FILightKinematics,1> {
176  typedef Herwig::DipoleSplittingKinematics NthBase;
177 };
178 
181 template <>
182 struct ClassTraits<Herwig::FILightKinematics>
183  : public ClassTraitsBase<Herwig::FILightKinematics> {
185  static string className() { return "Herwig::FILightKinematics"; }
193  static string library() { return "HwDipoleShower.so"; }
194 };
195 
198 }
199 
200 #endif /* HERWIG_FILightKinematics_H */
DipoleSplittingKinematics is the base class for dipole splittings as performed in the dipole shower...
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
DipoleIndex is used to index splitting generators for a particular dipole.
static ClassDescription< FILightKinematics > initFILightKinematics
The static object used to initialize the description of this class.
-*- C++ -*-
FILightKinematics implements massless splittings off a final-initial dipole.
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.