herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Contrib
HiggsPairOL
HiggsPair.h
1
// -*- C++ -*-
2
//
3
// MEHiggsPair.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4
// Copyright (C) 2009-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_HiggsPair_H
10
#define HERWIG_HiggsPair_H
11
//
12
// This is the declaration of the HiggsPair class.
13
//
14
// The implementation of this process is based upon hep-ph/0112161 by G.F. Giudice, R. Rattazzi, J.D. Wells.
15
16
#include "Herwig/Models/General/BSMModel.h"
17
#include "ThePEG/Repository/UseRandom.h"
18
#include "Herwig/PDT/GenericMassGenerator.h"
19
#include "Herwig/Utilities/Kinematics.h"
20
#include "Herwig/MatrixElement/ProductionMatrixElement.h"
21
#include "
ThePEG/Config/Pointers.h
"
22
23
namespace
Herwig
{
24
25
class
HiggsPair;
26
27
}
28
29
namespace
ThePEG
{
30
31
ThePEG_DECLARE_POINTERS(
Herwig::HiggsPair
,HiggsPairPtr);
32
33
}
34
35
namespace
Herwig
{
36
using namespace
ThePEG
;
37
38
39
40
41
46
class
HiggsPair
:
public
BSMModel
{
47
48
public
:
49
53
HiggsPair
();
54
55
56
protected
:
57
65
virtual
void
doinit
();
67
68
virtual
void
doinitrun();
69
70
virtual
void
InitOpenLoops();
71
72
public
:
73
80
void
persistentOutput
(
PersistentOStream
& os)
const
;
81
87
void
persistentInput
(
PersistentIStream
& is,
int
version);
89
96
static
void
Init
();
97
98
102
double
selfcoupling
()
const
{
return
_selfcoupling
;}
103
107
unsigned
int
process
()
const
{
return
_process
; }
108
109
110
/*
111
* Fix alphaS
112
*/
113
unsigned
int
fixedalphaS()
const
{
return
_fixedalphaS; }
114
115
/*
116
* Fixed alphaS value if AlphaS is chosen (option 2 above)
117
*/
118
double
alphasfixedvalue()
const
{
return
_alphasfixedvalue; }
119
120
/*
121
* Fix scale for the whole process.
122
*/
123
unsigned
int
fixedscale()
const
{
return
_fixedscale; }
124
125
/*
126
* Return Scale to use for alpha_S if fixed
127
*/
128
Energy
alphascale()
const
{
return
_alphascale; }
129
130
/*
131
* Return choice between the OpenLoops and HPAIR implementations
132
*/
133
unsigned
int
implementation()
const
{
return
_implementation; }
134
135
/*
136
* Return choice to include the widths
137
*/
138
unsigned
int
includeWidths()
const
{
return
_includeWidths; }
139
140
/*
141
* Return choice whether to include the b quark loops
142
*/
143
unsigned
int
includeBquark()
const
{
return
_includeBquark; }
144
145
/*
146
* Return number of allowed flavours for the incoming quarks
147
*/
148
int
maxflavour()
const
{
return
_maxflavour; }
149
150
/*
151
* Return number of allowed flavours for the incoming quarks
152
*/
153
Energy
basescale()
const
{
return
_basescale; }
154
155
/*
156
* Return the SubProcess to include in pp > HHj
157
*/
158
unsigned
int
subprocessjet()
const
{
return
_subprocessjet; }
159
160
/*
161
* enable
162
*/
163
164
unsigned
int
alphasreweight()
const
{
return
_alphasreweight; }
165
169
double
scalemultiplier
()
const
{
return
_scalemultiplier;}
170
174
int
id1
()
const
{
return
_id1
;}
175
int
id2()
const
{
return
_id2;}
176
int
id3()
const
{
return
_id3;}
177
int
id4()
const
{
return
_id4;}
178
179
int
id1tri()
const
{
return
_id1tri;}
180
int
id2tri()
const
{
return
_id2tri;}
181
int
id3tri()
const
{
return
_id3tri;}
182
int
id4tri()
const
{
return
_id4tri;}
183
184
int
id1box()
const
{
return
_id1box;}
185
int
id2box()
const
{
return
_id2box;}
186
int
id3box()
const
{
return
_id3box;}
187
int
id4box()
const
{
return
_id4box;}
188
189
int
id1int()
const
{
return
_id1int;}
190
int
id2int()
const
{
return
_id2int;}
191
int
id3int()
const
{
return
_id3int;}
192
int
id4int()
const
{
return
_id4int;}
193
194
int
id()
const
{
return
_id;}
195
int
idtri()
const
{
return
_idtri;}
196
int
idbox()
const
{
return
_idbox;}
197
int
idint()
const
{
return
_idint;}
198
202
PDPtr
_higgs
;
203
204
/*
205
* The top mass
206
*/
207
Energy _topmass;
208
209
/*
210
* The bottom mass
211
*/
212
Energy _bottommass;
213
214
/*
215
* The Z boson mass
216
*/
217
Energy _zmass;
218
219
220
/*
221
* Higgs boson mass(es)
222
*/
223
Energy _m1, _m2;
224
225
/*
226
* Heavy H mass
227
*/
228
Energy _heavyHmass;
229
230
231
/*
232
* Heavy H width
233
*/
234
Energy _heavyHwidth;
235
236
237
238
239
private
:
243
tcSMPtr
_theModel
;
244
248
GenericMassGeneratorPtr
_hmass
;
249
253
double
_selfcoupling
;
254
255
259
unsigned
int
_process
;
260
264
Energy
_mh
;
265
266
270
Energy
_wh
;
271
272
/*
273
* Fix alphaS
274
*/
275
unsigned
int
_fixedalphaS;
276
277
/*
278
* Value of AlphaS if fixed using option 2 above
279
*/
280
double
_alphasfixedvalue;
281
282
/*
283
* Fix scale of whole process
284
*/
285
unsigned
int
_fixedscale;
286
287
/*
288
* Scale to use for alpha_S if fixed
289
*/
290
Energy _alphascale;
291
292
/*
293
* Choose between the OpenLoops and HPAIR implementations
294
*/
295
unsigned
int
_implementation;
296
297
/*
298
* include the widths
299
*/
300
unsigned
int
_includeWidths;
301
302
/*
303
* include the b quark loops
304
*/
305
unsigned
int
_includeBquark;
306
307
308
/*
309
* Base scale to use if chosen to be fixed
310
*/
311
Energy _basescale;
312
313
/*
314
* scale multiplier
315
*/
316
double
_scalemultiplier;
317
318
319
/*
320
* Masses of fermions
321
*/
322
double
Mass_E;
323
double
Mass_M;
324
double
Mass_L;
325
double
Mass_T;
326
double
Mass_U;
327
double
Mass_C;
328
double
Mass_D;
329
double
Mass_S;
330
double
Mass_B;
331
double
Mass_Z;
332
double
Mass_W;
333
double
Mass_H;
334
double
Width_C;
335
double
Width_B;
336
double
Width_T;
337
double
Width_W;
338
double
Width_Z;
339
double
Width_H;
340
341
342
double
getMass_E()
const
{
return
Mass_E; }
343
double
getMass_M()
const
{
return
Mass_M; }
344
double
getMass_L()
const
{
return
Mass_L; }
345
346
double
getMass_T()
const
{
return
Mass_T; }
347
double
getMass_U()
const
{
return
Mass_U; }
348
double
getMass_C()
const
{
return
Mass_C; }
349
double
getMass_D()
const
{
return
Mass_D; }
350
double
getMass_S()
const
{
return
Mass_S; }
351
double
getMass_B()
const
{
return
Mass_B; }
352
353
/*
354
* Masses of bosons
355
*/
356
double
getMass_Z()
const
{
return
Mass_Z; }
357
double
getMass_W()
const
{
return
Mass_W; }
358
double
getMass_H()
const
{
return
Mass_H; }
359
360
/*
361
* Widths of particles
362
*/
363
double
getWidth_C()
const
{
return
Width_C; }
364
double
getWidth_B()
const
{
return
Width_B; }
365
double
getWidth_T()
const
{
return
Width_T; }
366
double
getWidth_W()
const
{
return
Width_W; }
367
double
getWidth_Z()
const
{
return
Width_Z; }
368
double
getWidth_H()
const
{
return
Width_H; }
369
373
PDPtr
higgs
()
const
{
return
_higgs
; }
374
375
/*
376
* QCD and QED couplings
377
*/
378
double
Coupl_Alpha_QED;
379
double
Coupl_Alpha_QCD;
380
381
382
383
protected
:
384
391
virtual
IBPtr
clone
()
const
;
392
397
virtual
IBPtr
fullclone
()
const
;
399
400
protected
:
401
407
private
:
412
static
ClassDescription<HiggsPair>
initHiggsPair
;
413
418
HiggsPair
&
operator=
(
const
HiggsPair
&) =
delete
;
419
423
/*
424
* hh + j
425
*/
426
int
_id1
, _id1tri, _id1box, _id1int;
427
int
_id2, _id2tri, _id2box, _id2int;
428
int
_id3, _id3tri, _id3box, _id3int;
429
int
_id4, _id4tri, _id4box, _id4int;
430
/*
431
* hh
432
*/
433
int
_id, _idtri, _idbox, _idint;
434
435
436
private
:
437
438
/*
439
* Which subprocesses to include for the pp -> HHj
440
*/
441
442
unsigned
int
_subprocessjet;
443
444
/*
445
* alphaS reweighting
446
*/
447
unsigned
int
_alphasreweight;
448
449
/*
450
* max flavour
451
*/
452
int
_maxflavour;
453
454
455
};
456
457
}
458
459
#include "ThePEG/Utilities/ClassTraits.h"
460
461
namespace
ThePEG
{
462
467
template
<>
468
struct
BaseClassTrait
<
Herwig
::HiggsPair,1> {
470
typedef
Herwig::BSMModel
NthBase
;
471
472
};
473
476
template
<>
477
struct
ClassTraits
<
Herwig
::HiggsPair>
478
:
public
ClassTraitsBase
<Herwig::HiggsPair> {
480
static
string
className
() {
return
"Herwig::HiggsPair"
; }
488
static
string
library
() {
return
"HiggsPair.so"
; }
489
};
490
493
}
494
495
496
#endif
/* HERWIG_HiggsPair_H */
Pointers.h
Herwig::BSMModel
Here is the documentation of the BSMModel class.
Definition:
BSMModel.h:21
Herwig::HiggsPair
The HiggsPair class implements the matrix elements for HiggsPairian scattering process.
Definition:
HiggsPair.h:46
Herwig::HiggsPair::_mh
Energy _mh
On-shell mass for the higgs.
Definition:
HiggsPair.h:264
Herwig::HiggsPair::process
unsigned int process() const
Processes to include.
Definition:
HiggsPair.h:107
Herwig::HiggsPair::HiggsPair
HiggsPair()
The default constructor.
Herwig::HiggsPair::_hmass
GenericMassGeneratorPtr _hmass
The mass generator for the Higgs.
Definition:
HiggsPair.h:248
Herwig::HiggsPair::scalemultiplier
double scalemultiplier() const
Return multiplier for scale.
Definition:
HiggsPair.h:169
Herwig::HiggsPair::_id1
int _id1
process identifiers
Definition:
HiggsPair.h:426
Herwig::HiggsPair::initHiggsPair
static ClassDescription< HiggsPair > initHiggsPair
The static object used to initialize the description of this class.
Definition:
HiggsPair.h:412
Herwig::HiggsPair::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::HiggsPair::_process
unsigned int _process
Processes to include.
Definition:
HiggsPair.h:259
Herwig::HiggsPair::_wh
Energy _wh
On-shell width for the higgs.
Definition:
HiggsPair.h:270
Herwig::HiggsPair::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::HiggsPair::higgs
PDPtr higgs() const
Access to the higgs data.
Definition:
HiggsPair.h:373
Herwig::HiggsPair::_theModel
tcSMPtr _theModel
Pointer to the model.
Definition:
HiggsPair.h:243
Herwig::HiggsPair::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::HiggsPair::id1
int id1() const
Return OL Ids.
Definition:
HiggsPair.h:174
Herwig::HiggsPair::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::HiggsPair::_higgs
PDPtr _higgs
The higgs boson.
Definition:
HiggsPair.h:202
Herwig::HiggsPair::operator=
HiggsPair & operator=(const HiggsPair &)=delete
The assignment operator is private and must never be called.
Herwig::HiggsPair::_selfcoupling
double _selfcoupling
multiplier for the SM triple-coupling
Definition:
HiggsPair.h:253
Herwig::HiggsPair::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::HiggsPair::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::HiggsPair::selfcoupling
double selfcoupling() const
Return multiplier for the SM triple-coupling.
Definition:
HiggsPair.h:102
ThePEG::ClassDescription
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::Units::Energy
Qty< 0, 1, 0 > Energy
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::tcSMPtr
ThePEG::Ptr< StandardModelBase >::transient_const_pointer tcSMPtr
ThePEG::PDPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
ThePEG::BaseClassTrait
ThePEG::BaseClassTrait::NthBase
int NthBase
ThePEG::ClassTraitsBase
ThePEG::ClassTraitsBase::className
static string className()
ThePEG::ClassTraitsBase::library
static string library()
ThePEG::ClassTraits
Generated on Thu Jun 20 2024 17:50:52 for Herwig by
1.9.6