herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
Shower
Dipole
Utility
ConstituentReshuffler.h
1
// -*- C++ -*-
2
//
3
// ConstituentReshuffler.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_ConstituentReshuffler_H
10
#define HERWIG_ConstituentReshuffler_H
11
//
12
// This is the declaration of the ConstituentReshuffler class.
13
//
14
15
#include "ThePEG/Handlers/HandlerBase.h"
16
#include "ThePEG/Utilities/Exception.h"
17
#include "Herwig/Shower/PerturbativeProcess.h"
18
19
namespace
Herwig
{
20
21
using namespace
ThePEG
;
22
32
class
ConstituentReshuffler
:
public
HandlerBase
{
33
34
public
:
35
41
ConstituentReshuffler
();
42
46
virtual
~
ConstituentReshuffler
();
48
49
public
:
50
59
void
reshuffle(
PList
& out,
60
PPair
& in,
61
PList
& intermediates,
62
const
bool
decay,
63
PList
& decayPartons,
64
PList
& decayRecoilers);
65
74
void
reshuffle
(
PList
& out,
75
PPair
& in,
76
PList
& intermediates,
77
const
bool
decay=
false
) {
78
79
PList
decayPartons;
80
PList
decayRecoilers;
81
82
reshuffle(out,
83
in,
84
intermediates,
85
decay,
86
decayPartons,
87
decayRecoilers);
88
}
89
90
99
void
hardProcDecayReshuffle(
PList
& decaying,
100
PList
& eventOutgoing,
101
PList
& eventHard,
102
PPair
& eventIncoming,
103
PList
& eventIntermediates) ;
104
112
void
decayReshuffle(PerturbativeProcessPtr& decayProc,
113
PList
& eventOutgoing,
114
PList
& eventHard,
115
PList
& eventIntermediates) ;
116
121
void
updateEvent(
PList
& intermediates,
122
PList
& eventIntermediates,
123
PList
& out,
124
PList
& eventOutgoing,
125
PList
& eventHard,
126
PerturbativeProcessPtr decayProc = PerturbativeProcessPtr() ) ;
127
128
134
void
updateSpinInfo(
PPtr
& oldPart,
135
PPtr
& newPart ) ;
136
137
protected
:
138
143
struct
ReshuffleEquation
{
144
145
ReshuffleEquation
(Energy q,
146
PList::iterator m_begin,
147
PList::iterator m_end)
148
: w(q), p_begin(m_begin), p_end(m_end) {}
149
150
typedef
double
ArgType;
151
typedef
double
ValType;
152
153
static
double
aUnit();
154
static
double
vUnit();
155
156
double
operator() (
double
xi)
const
;
157
158
Energy w;
159
160
PList::iterator p_begin;
161
PList::iterator p_end;
162
163
};
164
170
struct
DecayReshuffleEquation
{
171
172
DecayReshuffleEquation
(Energy q,
173
PList::iterator m_begin,
174
PList::iterator m_end,
175
PList::iterator n_begin,
176
PList::iterator n_end)
177
: w(q), p_begin(m_begin), p_end(m_end), r_begin(n_begin), r_end(n_end) {}
178
179
typedef
double
ArgType;
180
typedef
double
ValType;
181
182
static
double
aUnit();
183
static
double
vUnit();
184
185
double
operator() (
double
xi)
const
;
186
187
Energy w;
188
189
PList::iterator p_begin;
190
PList::iterator p_end;
191
192
PList::iterator r_begin;
193
PList::iterator r_end;
194
};
195
196
197
198
public
:
199
206
void
persistentOutput(
PersistentOStream
& os)
const
;
207
213
void
persistentInput(
PersistentIStream
& is,
int
version);
215
222
static
void
Init();
223
224
protected
:
225
232
virtual
IBPtr
clone()
const
;
233
238
virtual
IBPtr
fullclone()
const
;
240
241
242
// If needed, insert declarations of virtual function defined in the
243
// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
244
245
246
private
:
247
252
static
ClassDescription<ConstituentReshuffler>
initConstituentReshuffler
;
253
258
ConstituentReshuffler
& operator=(
const
ConstituentReshuffler
&) =
delete
;
259
260
};
261
262
}
263
264
#include "ThePEG/Utilities/ClassTraits.h"
265
266
namespace
ThePEG
{
267
272
template
<>
273
struct
BaseClassTrait
<Herwig::
ConstituentReshuffler
,1> {
275
typedef
HandlerBase
NthBase;
276
};
277
280
template
<>
281
struct
ClassTraits
<Herwig::
ConstituentReshuffler
>
282
:
public
ClassTraitsBase
<Herwig::ConstituentReshuffler> {
284
static
string
className() {
return
"Herwig::ConstituentReshuffler"
; }
292
static
string
library() {
return
"HwDipoleShower.so"
; }
293
};
294
297
}
298
299
#endif
/* HERWIG_ConstituentReshuffler_H */
ThePEG::PPtr
ThePEG::Ptr< Particle >::pointer PPtr
ThePEG::PersistentIStream
Herwig::ConstituentReshuffler::reshuffle
void reshuffle(PList &out, PPair &in, PList &intermediates, const bool decay=false)
Reshuffle the outgoing partons to constituent masses.
Definition:
ConstituentReshuffler.h:74
Herwig::ConstituentReshuffler::initConstituentReshuffler
static ClassDescription< ConstituentReshuffler > initConstituentReshuffler
The static object used to initialize the description of this class.
Definition:
ConstituentReshuffler.h:252
ThePEG::ClassDescription
ThePEG::PersistentOStream
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG
Herwig::ConstituentReshuffler
The ConstituentReshuffler class implements reshuffling of partons on their nominal mass shell to thei...
Definition:
ConstituentReshuffler.h:32
Herwig::ConstituentReshuffler::DecayReshuffleEquation
The function object defining the equation to be solved in the case of separate recoilers TODO - refin...
Definition:
ConstituentReshuffler.h:170
ThePEG::PPair
pair< PPtr, PPtr > PPair
ThePEG::HandlerBase
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::ClassTraits
ThePEG::BaseClassTrait
Herwig::ConstituentReshuffler::ReshuffleEquation
The function object defining the equation to be solved.
Definition:
ConstituentReshuffler.h:143
ThePEG::PList
list< PPtr > PList
ThePEG::ClassTraitsBase
Generated on Sat Apr 11 2020 14:50:29 for Herwig by
1.8.13