herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
Hadronization
Cluster.h
1
// -*- C++ -*-
2
//
3
// Cluster.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_Cluster_H
10
#define HERWIG_Cluster_H
11
12
#include <ThePEG/EventRecord/Particle.h>
13
#include "Herwig/Utilities/EnumParticles.h"
14
#include "CluHadConfig.h"
15
#include "ClusterHadronizationHandler.fh"
16
#include "Cluster.fh"
17
#include "ThePEG/Utilities/ClassDescription.h"
18
19
namespace
Herwig
{
20
using namespace
ThePEG
;
21
60
class
Cluster
:
public
Particle
{
61
62
protected
:
63
69
Cluster
();
70
75
friend
struct
ClassTraits
<
Cluster
>;
76
77
public
:
81
Cluster
(
tcEventPDPtr
);
82
86
Cluster
(
tPPtr
part1,
tPPtr
part2,
tPPtr
part3 =
tPPtr
());
87
91
Cluster
(
const
Particle
&);
93
97
int
numComponents
()
const
98
{
return
_numComp; }
99
103
Energy sumConstituentMasses()
const
;
104
108
tPPtr
particle(
int
i)
const
;
109
113
tPPtr
colParticle(
bool
anti =
false
)
const
;
114
118
tPPtr
antiColParticle()
const
;
119
123
bool
isPerturbative(
int
)
const
;
124
128
bool
isBeamRemnant(
int
)
const
;
129
133
void
setBeamRemnant(
int
,
bool
);
134
138
int
clusterId
()
const
{
return
_id; }
139
140
public
:
141
145
bool
isBeamCluster()
const
;
146
150
void
flagAsReshuffled
()
151
{ _hasReshuffled =
true
; }
152
156
void
isBeamCluster(
tPPtr
part);
157
161
bool
isAvailable
()
const
162
{
return
_isAvailable; }
163
167
void
isAvailable
(
bool
inputAvailable)
168
{ _isAvailable = inputAvailable; }
169
173
bool
isStatusInitial
()
const
174
{
return
parents().empty(); }
175
181
bool
isReadyToDecay
()
const
182
{
return
children().empty(); }
183
196
bool
isRedefined
()
const
{
197
return
( children().size() == 1
198
&& children()[0]->
id
() ==
ParticleID::Cluster
);
199
}
200
207
bool
hasBeenReshuffled
()
const
208
{
return
_hasReshuffled; }
209
213
bool
isStatusFinal()
const
;
214
215
public
:
216
234
static
LorentzPoint calculateX(
tPPtr
q1,
tPPtr
q2);
235
236
protected
:
237
244
virtual
PPtr
clone()
const
;
245
250
virtual
PPtr
fullclone()
const
;
252
253
public
:
254
260
void
persistentOutput(
PersistentOStream
&)
const
;
261
265
void
persistentInput(
PersistentIStream
&,
int
);
266
267
private
:
271
Cluster
& operator=(
const
Cluster
&) =
delete
;
272
279
void
calculateP();
280
284
bool
initPerturbative(
tPPtr
p);
285
289
static
ClassDescription<Cluster>
initCluster
;
290
291
292
293
bool
_isAvailable
;
294
bool
_hasReshuffled
;
295
ParticleVector
_component
;
296
tParticleVector
_original
;
297
vector<bool>
_isBeamRemnant
;
298
vector<bool>
_isPerturbative
;
299
int
_numComp
;
300
long
_id
;
301
};
302
303
}
// end namespace Herwig
304
305
#include "ThePEG/Utilities/ClassTraits.h"
306
307
namespace
ThePEG
{
308
315
template
<>
316
struct
BaseClassTrait
<Herwig::
Cluster
,1> {
318
typedef
Particle
NthBase;
319
};
320
325
template
<>
326
struct
ClassTraits
<Herwig::
Cluster
>:
327
public
ClassTraitsBase
<Herwig::Cluster> {
329
static
string
className() {
return
"Herwig::Cluster"
; }
331
static
TPtr create() {
return
TPtr::Create(
Herwig::Cluster
()); }
332
};
333
336
}
337
338
339
340
341
#endif // HERWIG_Cluster_H
ThePEG::PPtr
ThePEG::Ptr< Particle >::pointer PPtr
Herwig::Cluster::_numComp
int _numComp
The number of constituents.
Definition:
Cluster.h:299
ThePEG::PersistentIStream
ThePEG::Particle
ThePEG::ClassDescription
Herwig::Cluster::_hasReshuffled
bool _hasReshuffled
Whether the cluster has been reshuffled.
Definition:
Cluster.h:294
Herwig::Cluster::isAvailable
bool isAvailable() const
Returns true if this cluster is to be handled by the hadronization.
Definition:
Cluster.h:161
ThePEG::PersistentOStream
ThePEG
ThePEG::ParticleID::Cluster
Herwig Cluster for Hadronization.
Definition:
EnumParticles.h:17
Herwig::Cluster
This class describes a cluster object.
Definition:
Cluster.h:60
Herwig::Cluster::_component
ParticleVector _component
The constituent partons.
Definition:
Cluster.h:295
ThePEG::tParticleVector
vector< tPPtr > tParticleVector
Herwig::Cluster::hasBeenReshuffled
bool hasBeenReshuffled() const
Return true when it has a reshuffling partner.
Definition:
Cluster.h:207
Herwig::Cluster::numComponents
int numComponents() const
Number of quark (diquark) constituents (normally two).
Definition:
Cluster.h:97
Herwig::Cluster::_original
tParticleVector _original
The original components.
Definition:
Cluster.h:296
Herwig::Cluster::_isAvailable
bool _isAvailable
Whether the cluster is hadronizing.
Definition:
Cluster.h:293
ThePEG::tPPtr
ThePEG::Ptr< Particle >::transient_pointer tPPtr
Herwig::Cluster::initCluster
static ClassDescription< Cluster > initCluster
Describe an abstract base class with persistent data.
Definition:
Cluster.h:289
Herwig::Cluster::_isPerturbative
vector< bool > _isPerturbative
Whether a parton is perturbative.
Definition:
Cluster.h:298
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
Herwig::Cluster::_isBeamRemnant
vector< bool > _isBeamRemnant
Whether a parton is a beam remnant.
Definition:
Cluster.h:297
ThePEG::ClassTraits
Herwig::Cluster::isStatusInitial
bool isStatusInitial() const
Return true if the cluster does not have cluster parent.
Definition:
Cluster.h:173
Herwig::Cluster::flagAsReshuffled
void flagAsReshuffled()
Set the pointer to the reshuffling partner cluster.
Definition:
Cluster.h:150
Herwig::Cluster::isAvailable
void isAvailable(bool inputAvailable)
Sets the value of availability.
Definition:
Cluster.h:167
ThePEG::ParticleVector
vector< PPtr > ParticleVector
Herwig::Cluster::_id
long _id
The id of this cluster.
Definition:
Cluster.h:300
Herwig::Cluster::isReadyToDecay
bool isReadyToDecay() const
Return true if the cluster does not have cluster children and it is not already decayed (i...
Definition:
Cluster.h:181
ThePEG::BaseClassTrait
ThePEG::tcEventPDPtr
Ptr< ParticleDataClass >::transient_const_pointer tcEventPDPtr
Herwig::Cluster::clusterId
int clusterId() const
Returns the clusters id, not the same as the PDG id.
Definition:
Cluster.h:138
Herwig::Cluster::isRedefined
bool isRedefined() const
Return true if the cluster has one and only one cluster children and no hadron children: that means e...
Definition:
Cluster.h:196
ThePEG::ClassTraitsBase
Generated on Sat Apr 11 2020 14:50:28 for Herwig by
1.8.13