herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
IFMassiveKinematics.h
1 // -*- C++ -*-
2 //
3 // IFLightKinematics.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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 ~IFMassiveKinematics();
47 
48 public:
49 
55  virtual pair<double,double> kappaSupport(const DipoleSplittingInfo& dIndex) const;
56 
61  virtual pair<double,double> xiSupport(const DipoleSplittingInfo& dIndex) const;
62 
66  virtual pair<double,double> zBoundaries(Energy,
67  const DipoleSplittingInfo&,
68  const DipoleSplittingKernel&) const {
69  return {0.0,1.0};
70  }
71 
80  virtual Energy dipoleScale(const Lorentz5Momentum& pEmitter,
81  const Lorentz5Momentum& pSpectator) const;
82 
86  virtual Energy ptMax(Energy dScale,
87  double emX, double specX,
88  const DipoleIndex& ind,
89  const DipoleSplittingKernel& split) const;
90 
94  virtual Energy QMax(Energy dScale,
95  double emX, double specX,
96  const DipoleIndex& dIndex,
97  const DipoleSplittingKernel&) const;
98 
102  virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const;
103 
107  virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const;
108 
113  virtual double ptToRandom(Energy pt, Energy dScale,
114  double emX, double specX,
115  const DipoleIndex& dIndex,
116  const DipoleSplittingKernel&) const;
117 
123  virtual bool generateSplitting(double kappa, double xi, double phi,
124  DipoleSplittingInfo& dIndex,
125  const DipoleSplittingKernel&);
126 
132  virtual void generateKinematics(const Lorentz5Momentum& pEmitter,
133  const Lorentz5Momentum& pSpectator,
134  const DipoleSplittingInfo& dInfo);
135 
136 public:
137 
144  void persistentOutput(PersistentOStream & os) const;
145 
151  void persistentInput(PersistentIStream & is, int version);
153 
160  static void Init();
161 
162 protected:
163 
170  virtual IBPtr clone() const;
171 
176  virtual IBPtr fullclone() const;
178 
179 
180 // If needed, insert declarations of virtual function defined in the
181 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
182 
183 
184 private:
185 
191 
196  IFMassiveKinematics & operator=(const IFMassiveKinematics &) = delete;
197 
198 private:
199 
204 
205 };
206 
207 }
208 
209 #include "ThePEG/Utilities/ClassTraits.h"
210 
211 namespace ThePEG {
212 
217 template <>
218 struct BaseClassTrait<Herwig::IFMassiveKinematics,1> {
220  typedef Herwig::DipoleSplittingKinematics NthBase;
221 };
222 
225 template <>
226 struct ClassTraits<Herwig::IFMassiveKinematics>
227  : public ClassTraitsBase<Herwig::IFMassiveKinematics> {
229  static string className() { return "Herwig::IFMassiveKinematics"; }
237  static string library() { return "HwDipoleShower.so"; }
238 };
239 
242 }
243 
244 #endif /* HERWIG_IFMassiveKinematics_H */
DipoleSplittingKinematics is the base class for dipole splittings as performed in the dipole shower...
IFMassiveKinematics implements massless splittings off an initial-final dipole.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
DipoleIndex is used to index splitting generators for a particular dipole.
virtual pair< double, double > zBoundaries(Energy, const DipoleSplittingInfo &, const DipoleSplittingKernel &) const
Return the boundaries on the momentum fraction.
static ClassDescription< IFMassiveKinematics > initIFMassiveKinematics
The static object used to initialize the description of this class.
bool theCollinearScheme
Wether or not to choose the `collinear&#39; scheme.
-*- C++ -*-
DipoleSplittingInfo contains all parameters to generate a full dipole splitting.
DipoleSplittingKernel is the base class for all kernels used within the dipole shower.