herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
HardBranching.h
1// -*- C++ -*-
2#ifndef HERWIG_HardBranching_H
3#define HERWIG_HardBranching_H
4//
5// This is the declaration of the HardBranching class.
6//
7
9#include "Herwig/Shower/QTilde/Base/ShowerProgenitor.h"
10#include "Herwig/Shower/QTilde/Base/ShowerTree.h"
11#include "Herwig/Shower/QTilde/SplittingFunctions/SudakovFormFactor.h"
12#include "HardBranching.fh"
13#include "HardTree.fh"
14
15namespace Herwig {
16
17using namespace ThePEG;
18
23class HardBranching : public Base {
24
28 friend class HardTree;
29
30public:
31
35 enum Status {Outgoing=0,Incoming,Decay};
36
37public:
38
46 HardBranching(ShowerParticlePtr particle, SudakovPtr sudakov,
47 tHardBranchingPtr parent,Status status);
48
53 void addChild(HardBranchingPtr child) {_children.push_back(child);}
54
58 void clearChildren() { _children.clear(); }
59
63 void setMomenta(LorentzRotation R, double alpha, Lorentz5Momentum pt,
64 bool setMomentum=true);
65
73 tShowerParticlePtr branchingParticle() const {return _particle;}
74
78 void branchingParticle(ShowerParticlePtr in) {_particle=in;}
79
83 const Lorentz5Momentum & original() const {return _original;}
84
88 void original(const Lorentz5Momentum & in) {_original=in;}
89
93 const Lorentz5Momentum & pVector() const {return _p;}
94
98 void pVector(const Lorentz5Momentum & in) {_p=in;}
99
103 const Lorentz5Momentum & nVector() const {return _n;}
104
108 void nVector(const Lorentz5Momentum & in) {_n=in;}
109
113 const Lorentz5Momentum & qPerp() const {return _qt;}
114
118 void qPerp(const Lorentz5Momentum & in) {_qt=in;}
119
123 const Lorentz5Momentum & showerMomentum() const {return _shower;}
124
128 void showerMomentum(const Lorentz5Momentum & in ) {_shower=in;}
129
133 Energy pT() const {return _pt;}
134
138 void pT(Energy in) { _pt=in;}
139
143 double x_frac() const {return _x_frac;}
144
148 void x_frac( double x ) { _x_frac = x; }
149
153 Status status() const {return _status;}
154
158 void status(Status in) {_status=in;}
159
163 tHardBranchingPtr parent() const {return _parent;}
164
168 void parent(tHardBranchingPtr in) {_parent=in;}
169
173 SudakovPtr sudakov() const {return _sudakov;}
174
178 void sudakov(SudakovPtr in) {_sudakov=in;}
179
183 PPtr beam() const {return _beam;}
184
188 void beam(PPtr in) {_beam=in;}
189
193 vector<HardBranchingPtr> & children() {return _children;}
195
203 Energy scale() const {return _scale;}
204
208 void scale(Energy in) {_scale=in;}
209
213 double z() const {return _z;}
214
218 void z(double in) {_z=in;}
219
223 double phi() const {return _phi;}
224
228 void phi(double in) {_phi=in;}
230
238 tHardBranchingPtr colourPartner() const {return _partner;}
239
243 void colourPartner(tHardBranchingPtr in) {_partner=in;}
244
246
251 assert(type_!=ShowerPartnerType::Undefined);
252 return type_;
253 }
254
259 type_ = in;
260 assert(type_!=ShowerPartnerType::Undefined);
261 }
262
263private:
264
268 ShowerParticlePtr _particle;
269
273 Lorentz5Momentum _original;
274
278 Lorentz5Momentum _p;
279
283 Lorentz5Momentum _n;
284
288 Lorentz5Momentum _qt;
289
293 Lorentz5Momentum _shower;
294
298 Energy _pt;
299
303 double _x_frac;
304
309
317 Energy _scale;
318
322 double _z;
323
327 double _phi;
329
333 tHardBranchingPtr _parent;
334
338 SudakovPtr _sudakov;
339
343 vector<HardBranchingPtr> _children;
344
349
353 tHardBranchingPtr _partner;
354
359};
360
361}
362
363#endif /* HERWIG_HardBranching_H */
The HardBranching class is designed to contain the information needed for an individual branching in ...
Definition: HardBranching.h:23
Energy scale() const
Information on the Shower variables for the branching.
SudakovPtr sudakov() const
The Sudakov form-factor.
tShowerParticlePtr branchingParticle() const
Set and get members for the private member variables.
Definition: HardBranching.h:73
void x_frac(double x)
Set the fraction of beam momentum x.
Status
Enum for the status.
Definition: HardBranching.h:35
ShowerParticlePtr _particle
The branching particle.
ShowerPartnerType type_
The type of branching.
void original(const Lorentz5Momentum &in)
Set the original momentum.
Definition: HardBranching.h:88
const Lorentz5Momentum & showerMomentum() const
Get the momentum the particle should have as the start of a shower.
tHardBranchingPtr _partner
The colour partner.
void pVector(const Lorentz5Momentum &in)
Set the p reference vector.
Definition: HardBranching.h:98
Lorentz5Momentum _n
The reference vector.
void clearChildren()
Clear the children.
Definition: HardBranching.h:58
SudakovPtr _sudakov
The Sudakov form-factor.
void status(Status in)
Set whether the branching is incoming, outgoing or decay.
PPtr _beam
The beam particle.
const Lorentz5Momentum & original() const
Get the original momentum.
Definition: HardBranching.h:83
void parent(tHardBranchingPtr in)
Set the parent of the branching.
Energy pT() const
Get the transverse momentum.
tHardBranchingPtr colourPartner() const
Colour partners.
double _z
The energy fraction.
double x_frac() const
Get the fraction of beam momentum x.
void nVector(const Lorentz5Momentum &in)
Set the n reference vector.
void scale(Energy in)
The evolution scale.
Lorentz5Momentum _p
The reference vector.
double z() const
The energy fraction.
void addChild(HardBranchingPtr child)
Add a child of the branching.
Definition: HardBranching.h:53
double _x_frac
The beam momentum fraction carried by an incoming parton x.
const Lorentz5Momentum & nVector() const
Get the n reference vector.
tHardBranchingPtr parent() const
The parent of the branching.
Lorentz5Momentum _shower
The momentum the particle should have as the start of a shower.
void colourPartner(tHardBranchingPtr in)
The colour partner of the branching.
Status status() const
Get whether the branching is incoming, outgoing or decay.
void phi(double in)
The azimthual angle.
Lorentz5Momentum _qt
The transverse momentum vector.
void setMomenta(LorentzRotation R, double alpha, Lorentz5Momentum pt, bool setMomentum=true)
Set the momenta of the particles.
PPtr beam() const
Get the beam particle.
tHardBranchingPtr _parent
The parent of the branching.
void branchingParticle(ShowerParticlePtr in)
Set the branching particle.
Definition: HardBranching.h:78
void sudakov(SudakovPtr in)
The Sudakov form-factor.
double phi() const
The azimthual angle.
ShowerPartnerType type() const
Type of branching.
Status _status
Whether the branching is incoming, outgoing or a decay.
vector< HardBranchingPtr > _children
The children.
double _phi
The azimthual angle.
void showerMomentum(const Lorentz5Momentum &in)
Set the momentum the particle should have as the start of a shower.
Lorentz5Momentum _original
The rescaled momentum.
HardBranching(ShowerParticlePtr particle, SudakovPtr sudakov, tHardBranchingPtr parent, Status status)
The default constructor.
Energy _scale
Information on the Shower variables for the branching.
void qPerp(const Lorentz5Momentum &in)
Set the transverse momentum vector.
void pT(Energy in)
Set the transverse momentum.
const Lorentz5Momentum & qPerp() const
Get the transverse momentum vector.
void z(double in)
The energy fraction.
Energy _pt
The transverse momentum.
vector< HardBranchingPtr > & children()
The children.
void type(ShowerPartnerType in)
Type of branching.
void beam(PPtr in)
Set the beam particle.
const Lorentz5Momentum & pVector() const
Get the p reference vector.
Definition: HardBranching.h:93
The HardTree class is designed to contain the information required to implement the POWHEG approach f...
Definition: HardTree.h:23
-*- C++ -*-
ShowerPartnerType
Enum for the type of shower partner.
ThePEG::Ptr< Particle >::pointer PPtr