herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
Hadronization
ClusterFissioner.h
1
// -*- C++ -*-
2
//
3
// ClusterFissioner.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_ClusterFissioner_H
10
#define HERWIG_ClusterFissioner_H
11
12
#include <ThePEG/Interface/Interfaced.h>
13
#include "CluHadConfig.h"
14
#include "HadronSelector.h"
15
#include "ClusterFissioner.fh"
16
17
namespace
Herwig
{
18
using namespace
ThePEG
;
19
20
//class Cluster; // forward declaration
21
71
class
ClusterFissioner
:
public
Interfaced
{
72
73
public
:
74
80
ClusterFissioner
();
81
83
101
tPVector
fission(
ClusterVector
& clusters,
bool
softUEisOn);
102
103
public
:
104
111
void
persistentOutput(
PersistentOStream
& os)
const
;
112
118
void
persistentInput(
PersistentIStream
& is,
int
version);
120
124
static
void
Init();
125
126
protected
:
127
134
virtual
IBPtr
clone()
const
;
135
140
virtual
IBPtr
fullclone()
const
;
142
143
private
:
144
148
ClusterFissioner
& operator=(
const
ClusterFissioner
&) =
delete
;
149
169
void
cut(stack<ClusterPtr> &,
170
ClusterVector
&,
tPVector
& finalhadrons,
bool
softUEisOn);
171
172
public
:
173
177
typedef
pair<PPtr,PPtr>
PPair
;
178
182
typedef
pair<PPair,PPair>
cutType
;
183
200
virtual
cutType cutTwo(ClusterPtr &,
tPVector
& finalhadrons,
bool
softUEisOn);
201
205
virtual
cutType cutThree(ClusterPtr &,
tPVector
& finalhadrons,
bool
softUEisOn);
207
public
:
208
215
PPair produceHadron(
tcPDPtr
hadron,
tPPtr
newPtr,
const
Lorentz5Momentum &a,
216
const
LorentzPoint &b)
const
;
217
protected
:
218
227
PPair produceCluster(
tPPtr
ptrQ,
tPPtr
newPtr,
const
Lorentz5Momentum &a,
228
const
LorentzPoint &b,
const
Lorentz5Momentum &c,
229
const
Lorentz5Momentum &d,
const
bool
rem,
230
tPPtr
spect=
tPPtr
(),
bool
remSpect=
false
)
const
;
231
237
void
drawNewFlavour(
PPtr
& newPtrPos,
PPtr
& newPtrNeg)
const
;
238
245
void
drawNewFlavourEnhanced(
PPtr
& newPtrPos,
PPtr
& newPtrNeg, Energy2 mass2)
const
;
246
247
274
Energy drawChildMass(
const
Energy M,
const
Energy m1,
const
Energy m2,
275
const
Energy m,
const
double
exp,
const
bool
soft)
const
;
276
280
void
calculateKinematics(
const
Lorentz5Momentum &pClu,
281
const
Lorentz5Momentum &p0Q1,
282
const
bool
toHadron1,
const
bool
toHadron2,
283
Lorentz5Momentum &pClu1, Lorentz5Momentum &pClu2,
284
Lorentz5Momentum &pQ1, Lorentz5Momentum &pQb,
285
Lorentz5Momentum &pQ2, Lorentz5Momentum &pQ2b)
const
;
286
294
void
calculatePositions(
const
Lorentz5Momentum &pClu,
295
const
LorentzPoint & positionClu,
296
const
Lorentz5Momentum & pClu1,
297
const
Lorentz5Momentum & pClu2,
298
LorentzPoint & positionClu1,
299
LorentzPoint & positionClu2 )
const
;
300
301
302
306
Energy2 clustermass(
const
ClusterPtr & cluster);
307
308
protected
:
309
315
HadronSelectorPtr
hadronsSelector
()
const
{
return
_hadronsSelector;}
316
320
Energy
btClM
()
const
{
return
_btClM;}
321
325
double
pSplitLight
()
const
{
return
_pSplitLight;}
326
330
double
pSplitBottom
()
const
{
return
_pSplitBottom;}
331
335
double
pSplitCharm
()
const
{
return
_pSplitCharm;}
336
340
double
pSplitExotic
()
const
{
return
_pSplitExotic;}
342
343
private
:
344
348
bool
isHeavy(tcClusterPtr );
349
353
HadronSelectorPtr
_hadronsSelector
;
354
360
Energy _clMaxLight;
361
Energy _clMaxBottom;
362
Energy _clMaxCharm;
363
Energy _clMaxExotic;
365
369
double
_clPowLight;
370
double
_clPowBottom;
371
double
_clPowCharm;
372
double
_clPowExotic;
374
378
double
_pSplitLight;
379
double
_pSplitBottom;
380
double
_pSplitCharm;
381
double
_pSplitExotic;
382
383
384
// weights for alternaive cluster fission
385
double
_fissionPwtUquark;
386
double
_fissionPwtDquark;
387
double
_fissionPwtSquark;
388
392
int
_fissionCluster
;
393
395
399
Energy
_btClM
;
400
404
int
_iopRem
;
405
409
Tension
_kappa
;
410
415
int
_enhanceSProb
;
416
420
Energy
_m0Fission
;
421
426
int
_massMeasure
;
427
432
const
double
_maxScale = 20.;
433
434
435
};
436
437
}
438
439
#endif
/* HERWIG_ClusterFissioner_H */
ThePEG::PPtr
ThePEG::Ptr< Particle >::pointer PPtr
ThePEG::PersistentIStream
Herwig::ClusterFissioner::pSplitCharm
double pSplitCharm() const
Cluster splitting paramater for charm quarks.
Definition:
ClusterFissioner.h:335
Herwig::ClusterFissioner::_fissionCluster
int _fissionCluster
Flag used to determine between normal cluster fission and alternative cluster fission.
Definition:
ClusterFissioner.h:392
Herwig::ClusterFissioner::btClM
Energy btClM() const
Access to soft-cluster parameter.
Definition:
ClusterFissioner.h:320
ThePEG::PersistentOStream
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Herwig::ClusterFissioner::pSplitBottom
double pSplitBottom() const
Cluster splitting paramater for bottom quarks.
Definition:
ClusterFissioner.h:330
ThePEG
Herwig::ClusterVector
vector< ClusterPtr > ClusterVector
This file contains the typedef declarations used in Hadronization.
Definition:
CluHadConfig.h:38
Herwig::ClusterFissioner::_hadronsSelector
HadronSelectorPtr _hadronsSelector
A pointer to a Herwig::HadronSelector object for generating hadrons.
Definition:
ClusterFissioner.h:353
Herwig::ClusterFissioner::cutType
pair< PPair, PPair > cutType
Definition for use in the cut function.
Definition:
ClusterFissioner.h:182
ThePEG::tcPDPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::tPPtr
ThePEG::Ptr< Particle >::transient_pointer tPPtr
Herwig::ClusterFissioner::_m0Fission
Energy _m0Fission
Parameter that governs the strangeness enhancement scaling.
Definition:
ClusterFissioner.h:420
ThePEG::Interfaced
Herwig::ClusterFissioner::_massMeasure
int _massMeasure
Flag that switches between mass measures used in strangeness enhancement: cluster mass...
Definition:
ClusterFissioner.h:426
Herwig::ClusterFissioner::_btClM
Energy _btClM
Parameter used (2/b) for the beam cluster mass generation.
Definition:
ClusterFissioner.h:399
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
Herwig::ClusterFissioner::_kappa
Tension _kappa
The string constant.
Definition:
ClusterFissioner.h:409
Herwig::ClusterFissioner::hadronsSelector
HadronSelectorPtr hadronsSelector() const
Access to the hadron selector.
Definition:
ClusterFissioner.h:315
Herwig::ClusterFissioner
This class handles clusters which are too heavy.
Definition:
ClusterFissioner.h:71
ThePEG::tPVector
vector< tPPtr > tPVector
Herwig::ClusterFissioner::PPair
pair< PPtr, PPtr > PPair
Definition for easy passing of two particles.
Definition:
ClusterFissioner.h:177
Herwig::ClusterFissioner::pSplitExotic
double pSplitExotic() const
Cluster splitting paramater for exotic particles.
Definition:
ClusterFissioner.h:340
Herwig::ClusterFissioner::pSplitLight
double pSplitLight() const
Cluster splitting paramater for light quarks.
Definition:
ClusterFissioner.h:325
Herwig::ClusterFissioner::_enhanceSProb
int _enhanceSProb
Flag that switches between no strangeness enhancement, scaling enhancement, and exponential enhanceme...
Definition:
ClusterFissioner.h:415
Herwig::ClusterFissioner::_iopRem
int _iopRem
Flag used to determine what distributions to use for the cluster masses.
Definition:
ClusterFissioner.h:404
Generated on Sat Apr 11 2020 14:50:28 for Herwig by
1.8.13