herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
Shower
QTilde
Base
ShowerParticle.h
1
// -*- C++ -*-
2
//
3
// ShowerParticle.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_ShowerParticle_H
10
#define HERWIG_ShowerParticle_H
11
//
12
// This is the declaration of the ShowerParticle class.
13
//
14
15
#include "ThePEG/EventRecord/Particle.h"
16
#include "Herwig/Shower/QTilde/SplittingFunctions/SplittingFunction.fh"
17
#include "Herwig/Shower/QTilde/ShowerConfig.h"
18
#include "Herwig/Shower/QTilde/Kinematics/ShowerBasis.h"
19
#include "Herwig/Shower/QTilde/Kinematics/ShowerKinematics.h"
20
#include "ShowerParticle.fh"
21
#include <iosfwd>
22
23
namespace
Herwig
{
24
25
using namespace
ThePEG
;
26
60
class
ShowerParticle
:
public
Particle
{
61
62
public
:
63
67
struct
EvolutionPartner
{
68
72
EvolutionPartner
(tShowerParticlePtr p,
double
w,
ShowerPartnerType
t,
73
Energy s) : partner(p), weight(w), type(t), scale(s)
74
{}
75
79
tShowerParticlePtr
partner
;
80
84
double
weight
;
85
89
ShowerPartnerType
type
;
90
94
Energy
scale
;
95
};
96
100
struct
EvolutionScales
{
101
105
EvolutionScales
() : QED(),QCD_c(),QCD_ac(),
106
QED_noAO(),QCD_c_noAO(),QCD_ac_noAO()
107
{}
108
112
Energy
QED
;
113
117
Energy
QCD_c
;
118
122
Energy
QCD_ac
;
123
127
Energy
QED_noAO
;
128
132
Energy
QCD_c_noAO
;
133
137
Energy
QCD_ac_noAO
;
138
139
};
140
141
144
153
ShowerParticle
(
tcEventPDPtr
x,
bool
fs,
bool
tls=
false
)
154
:
Particle
(x), _isFinalState(fs),
155
_perturbative(0), _initiatesTLS(tls), _x(1.0), _showerKinematics(),
156
_vMass(
ZERO
), _thePEGBase() {}
157
165
ShowerParticle
(
const
Particle
& x,
unsigned
int
pert,
bool
fs,
bool
tls=
false
)
166
:
Particle
(x), _isFinalState(fs),
167
_perturbative(pert), _initiatesTLS(tls), _x(1.0), _showerKinematics(),
168
_vMass(
ZERO
), _thePEGBase(&x) {}
170
171
public
:
172
176
void
setShowerMomentum(
bool
timelike);
177
181
void
constructSpinInfo(
bool
timelike);
182
186
void
initializeDecay();
187
192
void
initializeInitialState(
PPtr
parent);
193
197
void
initializeFinalState();
198
207
bool
isFinalState
()
const
{
return
_isFinalState; }
208
213
bool
initiatesTLS
()
const
{
return
_initiatesTLS; }
214
220
unsigned
int
perturbative
()
const
{
return
_perturbative; }
222
230
void
x
(
double
x) { _x =
x
; }
231
235
double
x
()
const
{
return
_x; }
237
245
const
ShoKinPtr &
showerKinematics
()
const
{
return
_showerKinematics; }
246
247
251
void
showerKinematics
(
const
ShoKinPtr in) { _showerKinematics = in; }
253
261
const
ShowerBasisPtr &
showerBasis
()
const
{
return
_showerBasis; }
262
263
267
void
showerBasis
(
const
ShowerBasisPtr in,
bool
copy) {
268
if
(!copy)
269
_showerBasis = in;
270
else
{
271
_showerBasis = new_ptr(
ShowerBasis
());
272
_showerBasis->setBasis(in->pVector(),in->nVector(),in->frame());
273
}
274
}
276
284
void
vetoEmission(
ShowerPartnerType
type, Energy scale);
285
289
const
EvolutionScales
&
scales
()
const
{
return
scales_;}
290
294
EvolutionScales
&
scales
() {
return
scales_;}
295
299
Energy virtualMass()
const
{
return
_vMass; }
300
304
void
virtualMass(Energy mass) { _vMass = mass; }
305
309
tShowerParticlePtr partner()
const
{
return
_partner; }
310
314
void
partner(
const
tShowerParticlePtr partner) { _partner = partner; }
315
319
vector<EvolutionPartner> & partners() {
return
partners_; }
320
324
void
addPartner(
EvolutionPartner
in );
325
329
void
clearPartners() { partners_.clear(); }
330
334
tShowerParticlePtr progenitor()
const
{
return
_progenitor; }
335
339
void
progenitor(
const
tShowerParticlePtr progenitor) { _progenitor = progenitor; }
341
342
348
struct
Parameters {
349
Parameters() : alpha(1.), beta(), ptx(), pty(), pt() {}
350
double
alpha;
351
double
beta;
352
Energy ptx;
353
Energy pty;
354
Energy pt;
355
};
356
357
361
Parameters & showerParameters() {
return
_parameters; }
363
368
const
tcPPtr
thePEGBase()
const
{
return
_thePEGBase; }
369
370
public
:
371
375
RhoDMatrix
extractRhoMatrix(
bool
forward);
376
384
bool
getMapping(
SpinPtr
&,
RhoDMatrix
& map);
385
386
protected
:
387
391
virtual
PPtr
clone()
const
;
392
396
virtual
PPtr
fullclone()
const
;
397
398
private
:
399
404
static
ClassDescription<ShowerParticle>
initShowerParticle;
405
410
ShowerParticle
& operator=(
const
ShowerParticle
&) =
delete
;
411
412
private
:
413
417
bool
_isFinalState;
418
422
unsigned
int
_perturbative;
423
427
bool
_initiatesTLS;
428
432
Parameters _parameters;
433
437
double
_x;
438
442
ShoKinPtr _showerKinematics;
443
447
ShowerBasisPtr _showerBasis;
448
452
EvolutionScales
scales_;
453
457
Energy _vMass;
458
462
tShowerParticlePtr _partner;
463
467
const
tcPPtr
_thePEGBase;
468
472
tShowerParticlePtr _progenitor;
473
477
vector<EvolutionPartner> partners_;
478
479
};
480
481
inline
ostream &
operator<<
(ostream & os,
const
ShowerParticle::EvolutionScales
& es) {
482
os <<
"Scales: QED="
<< es.
QED
/ GeV
483
<<
" QCD_c="
<< es.
QCD_c
/ GeV
484
<<
" QCD_ac="
<< es.
QCD_ac
/ GeV
485
<<
" QED_noAO="
<< es.
QED_noAO
/ GeV
486
<<
" QCD_c_noAO="
<< es.
QCD_c_noAO
/ GeV
487
<<
" QCD_ac_noAO="
<< es.
QCD_ac_noAO
/ GeV
488
<<
'\n'
;
489
return
os;
490
}
491
492
}
493
494
#include "ThePEG/Utilities/ClassTraits.h"
495
496
namespace
ThePEG
{
497
502
template
<>
503
struct
BaseClassTrait
<Herwig::
ShowerParticle
,1> {
505
typedef
Particle
NthBase;
506
};
507
510
template
<>
511
struct
ClassTraits
<Herwig::
ShowerParticle
>
512
:
public
ClassTraitsBase
<Herwig::ShowerParticle> {
514
static
string
className() {
return
"Herwig::ShowerParticle"
; }
516
static
TPtr create() {
return
TPtr::Create(
Herwig::ShowerParticle
(
tcEventPDPtr
(),
true
)); }
517
};
518
521
}
522
523
#endif
/* HERWIG_ShowerParticle_H */
Herwig::ShowerParticle::EvolutionScales::QCD_ac_noAO
Energy QCD_ac_noAO
QCD anticolour scale.
Definition:
ShowerParticle.h:137
ThePEG::PPtr
ThePEG::Ptr< Particle >::pointer PPtr
Herwig::ShowerParticle::EvolutionScales::EvolutionScales
EvolutionScales()
Constructor.
Definition:
ShowerParticle.h:105
Herwig::ShowerParticle::EvolutionPartner::weight
double weight
Weight.
Definition:
ShowerParticle.h:84
ThePEG::Particle
Herwig::ShowerParticle::scales
EvolutionScales & scales()
Access to the evolution scales.
Definition:
ShowerParticle.h:294
Herwig::ShowerPartnerType
ShowerPartnerType
Enum for the type of shower partner.
Definition:
ShowerInteraction.h:33
Herwig::ShowerBasis
The ShowerBasis class stores the basis vectors used by the shower.
Definition:
ShowerBasis.h:21
ThePEG::ClassDescription
Herwig::ShowerParticle::showerBasis
const ShowerBasisPtr & showerBasis() const
Set/Get methods for the ShowerBasis objects.
Definition:
ShowerParticle.h:261
Herwig::ShowerParticle::EvolutionPartner::partner
tShowerParticlePtr partner
The partner.
Definition:
ShowerParticle.h:79
Herwig::ShowerParticle::showerKinematics
const ShoKinPtr & showerKinematics() const
Set/Get methods for the ShowerKinematics objects.
Definition:
ShowerParticle.h:245
Herwig::ShowerParticle::EvolutionScales::QCD_c
Energy QCD_c
QCD colour scale.
Definition:
ShowerParticle.h:117
ThePEG
Herwig::ShowerParticle::EvolutionPartner::scale
Energy scale
The assoicated evolution scale.
Definition:
ShowerParticle.h:94
Herwig::ShowerParticle::EvolutionPartner::EvolutionPartner
EvolutionPartner(tShowerParticlePtr p, double w, ShowerPartnerType t, Energy s)
Constructor.
Definition:
ShowerParticle.h:72
Herwig::ShowerParticle::EvolutionScales::QED
Energy QED
QED scale.
Definition:
ShowerParticle.h:112
Herwig::ShowerParticle::EvolutionPartner::type
ShowerPartnerType type
Type.
Definition:
ShowerParticle.h:89
Herwig::ShowerParticle::showerBasis
void showerBasis(const ShowerBasisPtr in, bool copy)
Set the ShowerBasis object.
Definition:
ShowerParticle.h:267
Herwig::ShowerParticle::perturbative
unsigned int perturbative() const
Access the flag which tells us where the particle came from This is 0 for a particle produced in the ...
Definition:
ShowerParticle.h:220
Herwig::ShowerParticle::EvolutionPartner
Struct for all the info on an evolution partner.
Definition:
ShowerParticle.h:67
Herwig::operator<<
ostream & operator<<(ostream &, const DecayIntegrator &)
Output information on the DecayIntegrator for debugging purposes.
Herwig::ShowerParticle::EvolutionScales::QCD_c_noAO
Energy QCD_c_noAO
QCD colour scale.
Definition:
ShowerParticle.h:132
Herwig::ShowerParticle::ShowerParticle
ShowerParticle(const Particle &x, unsigned int pert, bool fs, bool tls=false)
Copy constructor from a ThePEG Particle.
Definition:
ShowerParticle.h:165
ThePEG::tcPPtr
ThePEG::Ptr< Particle >::transient_const_pointer tcPPtr
Herwig::ShowerParticle::ShowerParticle
ShowerParticle(tcEventPDPtr x, bool fs, bool tls=false)
Standard Constructor.
Definition:
ShowerParticle.h:153
Herwig::ShowerParticle
This class represents a particle in the showering process.
Definition:
ShowerParticle.h:60
ThePEG::SpinPtr
ThePEG::Ptr< SpinInfo >::pointer SpinPtr
Herwig::ShowerParticle::scales
const EvolutionScales & scales() const
Access to the evolution scales.
Definition:
ShowerParticle.h:289
Herwig::ShowerParticle::x
void x(double x)
Set/Get the momentum fraction for initial-state particles.
Definition:
ShowerParticle.h:230
Herwig::ShowerParticle::EvolutionScales::QED_noAO
Energy QED_noAO
QED scale.
Definition:
ShowerParticle.h:127
Herwig::ShowerParticle::isFinalState
bool isFinalState() const
Access/Set various flags about the state of the particle.
Definition:
ShowerParticle.h:207
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::ClassTraits
Herwig::ShowerParticle::initiatesTLS
bool initiatesTLS() const
Access the flag that tells if the particle is initiating a time like shower when it has been emitted ...
Definition:
ShowerParticle.h:213
Herwig::ShowerParticle::showerKinematics
void showerKinematics(const ShoKinPtr in)
Set the ShowerKinematics object.
Definition:
ShowerParticle.h:251
ThePEG::RhoDMatrix
ThePEG::BaseClassTrait
Herwig::ShowerParticle::x
double x() const
For an initial state particle set the fraction of the beam momentum.
Definition:
ShowerParticle.h:235
ThePEG::tcEventPDPtr
Ptr< ParticleDataClass >::transient_const_pointer tcEventPDPtr
ZERO
constexpr ZeroUnit ZERO
Herwig::ShowerParticle::EvolutionScales
Struct to store the evolution scales.
Definition:
ShowerParticle.h:100
ThePEG::ClassTraitsBase
Herwig::ShowerParticle::EvolutionScales::QCD_ac
Energy QCD_ac
QCD anticolour scale.
Definition:
ShowerParticle.h:122
Generated on Sat Apr 11 2020 14:50:31 for Herwig by
1.8.13