herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
IILightInvertedTildeKinematics.h
1// -*- C++ -*-
2//
3// IILightInvertedTildeKinematics.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_IILightInvertedTildeKinematics_H
10#define HERWIG_IILightInvertedTildeKinematics_H
11//
12// This is the declaration of the IILightInvertedTildeKinematics class.
13//
14
15#include "Herwig/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h"
16
17namespace Herwig {
18
19using namespace ThePEG;
20
30
31public:
32
41 virtual bool doMap(const double *);
42
46 virtual Energy lastPt() const;
47
51 virtual double lastZ() const;
52
56 virtual Energy ptMax() const;
57
61 virtual pair<double,double> zBounds(Energy pt, Energy hardPt = ZERO) const;
62
67 virtual bool doesTransform() const { return true; }
68
74 virtual Lorentz5Momentum transform(const Lorentz5Momentum& p) const {
75 return p-(2.*(KplusKtilde*p)/KplusKtilde2)*KplusKtilde+(2.*(Ktilde*p)/K2)*K;
76 }
77
78public:
79
87
93 void persistentInput(PersistentIStream & is, int version);
95
102 static void Init();
103
104protected:
105
112 virtual IBPtr clone() const;
113
118 virtual IBPtr fullclone() const;
120
121
122// If needed, insert declarations of virtual function defined in the
123// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
124
125private:
126
127 Lorentz5Momentum K;
128 Energy2 K2;
129 Lorentz5Momentum Ktilde;
130 Lorentz5Momentum KplusKtilde;
131 Energy2 KplusKtilde2;
132
133private:
134
140
141};
142
143}
144
145#endif /* HERWIG_IILightInvertedTildeKinematics_H */
IILightInvertedTildeKinematics inverts the final-final tilde kinematics.
virtual double lastZ() const
Return the momentum fraction associated to the last splitting.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual bool doesTransform() const
Return true, if this InvertedTildeKinematics object needs to transform all other particles in the pro...
virtual Energy ptMax() const
Return the upper bound on pt.
IILightInvertedTildeKinematics & operator=(const IILightInvertedTildeKinematics &)=delete
The assignment operator is private and must never be called.
virtual Energy lastPt() const
Return the pt associated to the last generated splitting.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
static void Init()
The standard Init function used to initialize the interfaces.
virtual Lorentz5Momentum transform(const Lorentz5Momentum &p) const
If this InvertedTildeKinematics object needs to transform all other particles in the process except t...
virtual bool doMap(const double *)
Perform the mapping of the tilde kinematics for the last selected process and store all dimensionless...
virtual pair< double, double > zBounds(Energy pt, Energy hardPt=ZERO) const
Given a pt, return the boundaries on z.
virtual IBPtr clone() const
Make a simple clone of this object.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
InvertedTildeKinematics is the base class for the inverted 'tilde' kinematics being used for subtract...
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr ZeroUnit ZERO