herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
8 #include "ThePEG/Config/ThePEG.h"
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 
15 namespace Herwig {
16 
17 using namespace ThePEG;
18 
23 class HardBranching : public Base {
24 
28  friend class HardTree;
29 
30 public:
31 
35  enum Status {Outgoing=0,Incoming,Decay};
36 
37 public:
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 
263 private:
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 */
const Lorentz5Momentum & nVector() const
Get the n reference vector.
ThePEG::Ptr< Particle >::pointer PPtr
Energy pT() const
Get the transverse momentum.
const Lorentz5Momentum & showerMomentum() const
Get the momentum the particle should have as the start of a shower.
const Lorentz5Momentum & qPerp() const
Get the transverse momentum vector.
ShowerPartnerType type() const
Type of branching.
ShowerPartnerType
Enum for the type of shower partner.
void clearChildren()
Clear the children.
Definition: HardBranching.h:58
void beam(PPtr in)
Set the beam particle.
void original(const Lorentz5Momentum &in)
Set the original momentum.
Definition: HardBranching.h:88
double z() const
The energy fraction.
Lorentz5Momentum _qt
The transverse momentum vector.
PPtr beam() const
Get the beam particle.
const Lorentz5Momentum & pVector() const
Get the p reference vector.
Definition: HardBranching.h:93
double phi() const
The azimthual angle.
Energy scale() const
Information on the Shower variables for the branching.
PPtr _beam
The beam particle.
tHardBranchingPtr _parent
The parent of the branching.
Lorentz5Momentum _shower
The momentum the particle should have as the start of a shower.
Energy _pt
The transverse momentum.
void showerMomentum(const Lorentz5Momentum &in)
Set the momentum the particle should have as the start of a shower.
Status
Enum for the status.
Definition: HardBranching.h:35
void z(double in)
The energy fraction.
void parent(tHardBranchingPtr in)
Set the parent of the branching.
void sudakov(SudakovPtr in)
The Sudakov form-factor.
Lorentz5Momentum _p
The reference vector.
void x_frac(double x)
Set the fraction of beam momentum x.
double x_frac() const
Get the fraction of beam momentum x.
void type(ShowerPartnerType in)
Type of branching.
Status status() const
Get whether the branching is incoming, outgoing or decay.
void scale(Energy in)
The evolution scale.
ShowerPartnerType type_
The type of branching.
double _z
The energy fraction.
tShowerParticlePtr branchingParticle() const
Set and get members for the private member variables.
Definition: HardBranching.h:73
The HardBranching class is designed to contain the information needed for an individual branching in ...
Definition: HardBranching.h:23
void status(Status in)
Set whether the branching is incoming, outgoing or decay.
void branchingParticle(ShowerParticlePtr in)
Set the branching particle.
Definition: HardBranching.h:78
double _x_frac
The beam momentum fraction carried by an incoming parton x.
void phi(double in)
The azimthual angle.
Lorentz5Momentum _n
The reference vector.
The HardTree class is designed to contain the information required to implement the POWHEG approach f...
Definition: HardTree.h:23
tHardBranchingPtr colourPartner() const
Colour partners.
vector< HardBranchingPtr > _children
The children.
SudakovPtr _sudakov
The Sudakov form-factor.
-*- C++ -*-
vector< HardBranchingPtr > & children()
The children.
Lorentz5Momentum _original
The rescaled momentum.
void pVector(const Lorentz5Momentum &in)
Set the p reference vector.
Definition: HardBranching.h:98
void qPerp(const Lorentz5Momentum &in)
Set the transverse momentum vector.
double _phi
The azimthual angle.
void pT(Energy in)
Set the transverse momentum.
const Lorentz5Momentum & original() const
Get the original momentum.
Definition: HardBranching.h:83
SudakovPtr sudakov() const
The Sudakov form-factor.
Status _status
Whether the branching is incoming, outgoing or a decay.
void addChild(HardBranchingPtr child)
Add a child of the branching.
Definition: HardBranching.h:53
tHardBranchingPtr _partner
The colour partner.
void nVector(const Lorentz5Momentum &in)
Set the n reference vector.
ShowerParticlePtr _particle
The branching particle.
void colourPartner(tHardBranchingPtr in)
The colour partner of the branching.
Energy _scale
Information on the Shower variables for the branching.
tHardBranchingPtr parent() const
The parent of the branching.