herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.2.1
Contrib
HiggsPairOL
MEHiggsPairOL.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_MEHiggsPairOL_H
10
#define HERWIG_MEHiggsPairOL_H
11
//
12
// This is the declaration of the MEHiggsPairOL 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/MatrixElement/HwMEBase.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 "HiggsPair.h"
22
23
24
namespace
Herwig
{
25
using namespace
ThePEG
;
26
27
28
/*
29
* Interface to external FORTRAN hpair functions (T.Plehn, M.Spira & P.Zerwas, arXiv:hep-ph/9603205)
30
* original Program found at http://people.web.psi.ch/spira/hpair/
31
*/
32
extern
"C"
{
33
complex<double> eta_(complex<double>* C1, complex<double>* C2);
34
complex<double> d04_(
double
* P1,
double
* P2,
double
* P3,
double
* P4,
double
* P12,
double
* P23,
double
* M1,
double
* M2,
double
* M3,
double
* M4);
35
complex<double> c03_(
double
* P1,
double
* P2,
double
* P3,
double
* M1,
double
* M2,
double
* M3);
36
complex<double> cspen_(
double
* Z);
37
complex<double> sqe_(
double
* A,
double
* B,
double
* C);
38
complex<double> etas_(complex<double>*Y,complex<double>* R,complex<double>*RS);
39
void
formfac_(
double
* AMQ,
double
* S,
double
* T,
double
* U,
double
* M1,
double
* M2, complex<double>* C0AB,complex<double>* C0AC,complex<double>* C0AD,complex<double>* C0BC,complex<double>* C0BD,complex<double>* C0CD,complex<double>* D0ABC,complex<double>* D0BAC,complex<double>* D0ACB);
40
}
41
42
extern
"C"
{
43
void
ol_setparameter_int(
const
char
* param,
int
val);
44
void
ol_setparameter_double(
const
char
* param,
double
val);
45
void
ol_setparameter_string(
const
char
* param,
char
* val);
46
int
ol_register_process(
const
char
* process,
int
amptype);
47
int
ol_n_external(
int
id
);
48
void
ol_phase_space_point(
int
id
,
double
sqrt_s,
double
* pp);
49
void
ol_start();
50
void
ol_finish();
51
void
ol_evaluate_tree(
int
id
,
double
* pp,
double
* m2_tree);
52
void
ol_evaluate_loop(
int
id
,
double
* pp,
double
* m2_tree,
double
* m2_loop,
double
* acc);
53
void
ol_evaluate_loop2(
int
id
,
double
* pp,
double
* m2_loop2,
double
* acc);
54
}
55
56
extern
"C"
{
57
extern
struct
{
58
complex<double> A1;
59
complex<double> A2;
60
complex<double> H1;
61
complex<double> H2;
62
complex<double> Z1;
63
complex<double> Z2;
64
complex<double> AA1;
65
complex<double> AA2;
66
complex<double> HH1;
67
complex<double> HH2;
68
complex<double> AH1;
69
complex<double> AH2;
70
} form_;
71
}
72
77
class
MEHiggsPairOL
:
public
HwMEBase
{
78
79
80
public
:
81
85
MEHiggsPairOL
();
86
93
virtual
unsigned
int
orderInAlphaS
()
const
{
return
0; }
94
99
virtual
unsigned
int
orderInAlphaEW
()
const
{
return
0; }
100
104
virtual
Energy2 scale()
const
;
105
109
virtual
void
getDiagrams()
const
;
110
115
virtual
bool
generateKinematics(
const
double
* r);
116
117
122
virtual
CrossSection dSigHatDR()
const
;
123
124
125
126
135
virtual
Selector<DiagramIndex>
diagrams(
const
DiagramVector
& dv)
const
;
136
144
virtual
Selector<const ColourLines *>
145
colourGeometries(tcDiagPtr diag)
const
;
146
154
virtual
double
me2()
const
;
156
157
158
virtual
void
setKinematics();
159
164
virtual
int
nDim()
const
;
165
166
167
protected
:
168
176
virtual
void
doinit();
177
182
virtual
void
doinitrun();
183
184
194
virtual
void
rebind(
const
TranslationMap
& trans);
195
201
virtual
IVector
getReferences();
203
207
PDPtr
higgs
()
const
{
return
_higgs; }
208
212
void
higgs
(
PDPtr
in) {_higgs =in;}
213
214
215
public
:
216
223
void
persistentOutput(
PersistentOStream
& os)
const
;
224
230
void
persistentInput(
PersistentIStream
& is,
int
version);
232
239
static
void
Init();
240
241
242
243
protected
:
244
251
virtual
IBPtr
clone()
const
;
252
257
virtual
IBPtr
fullclone()
const
;
259
260
protected
:
261
267
private
:
272
static
ClassDescription<MEHiggsPairOL>
initMEHiggsPairOL
;
273
278
MEHiggsPairOL
& operator=(
const
MEHiggsPairOL
&) =
delete
;
279
280
284
int
_id
, _idtri, _idbox, _idint;
285
289
PDPtr
_higgs
;
290
291
/*
292
* The top mass
293
*/
294
Energy _topmass;
295
296
/*
297
* The bottom mass
298
*/
299
Energy _bottommass;
300
301
/*
302
* The Z boson mass
303
*/
304
Energy _zmass;
305
306
307
/*
308
* Higgs boson mass(es)
309
*/
310
Energy _m1, _m2;
311
312
/*
313
* Heavy H mass
314
*/
315
Energy _heavyHmass;
316
317
318
/*
319
* Heavy H width
320
*/
321
Energy _heavyHwidth;
322
323
324
325
326
private
:
330
tcSMPtr
_theModel
;
331
335
GenericMassGeneratorPtr
_hmass
;
336
340
double
_selfcoupling
;
341
342
346
unsigned
int
_process
;
347
351
Energy
_mh
;
352
353
357
Energy
_wh
;
358
359
/*
360
* Fix alphaS
361
*/
362
unsigned
int
_fixedalphaS;
363
364
/*
365
* Value of AlphaS if fixed using option 2 above
366
*/
367
double
_alphasfixedvalue;
368
369
/*
370
* Fix scale of whole process
371
*/
372
unsigned
int
_fixedscale;
373
374
/*
375
* Scale to use for alpha_S if fixed
376
*/
377
Energy _alphascale;
378
379
/*
380
* Choose between the OpenLoops and HPAIR implementations
381
*/
382
unsigned
int
_implementation;
383
384
/*
385
* include the widths
386
*/
387
unsigned
int
_includeWidths;
388
389
/*
390
* include the b quark loops
391
*/
392
unsigned
int
_includeBquark;
393
394
395
/*
396
* Base scale to use if chosen to be fixed
397
*/
398
Energy _basescale;
399
400
/*
401
* scale multiplier
402
*/
403
double
_scalemultiplier;
404
405
406
/*
407
* Masses of fermions
408
*/
409
double
Mass_E;
410
double
Mass_M;
411
double
Mass_L;
412
double
Mass_T;
413
double
Mass_U;
414
double
Mass_C;
415
double
Mass_D;
416
double
Mass_S;
417
double
Mass_B;
418
double
Mass_Z;
419
double
Mass_W;
420
double
Mass_H;
421
double
Width_C;
422
double
Width_B;
423
double
Width_T;
424
double
Width_W;
425
double
Width_Z;
426
double
Width_H;
427
428
429
double
getMass_E()
const
{
return
Mass_E; }
430
double
getMass_M()
const
{
return
Mass_M; }
431
double
getMass_L()
const
{
return
Mass_L; }
432
433
double
getMass_T()
const
{
return
Mass_T; }
434
double
getMass_U()
const
{
return
Mass_U; }
435
double
getMass_C()
const
{
return
Mass_C; }
436
double
getMass_D()
const
{
return
Mass_D; }
437
double
getMass_S()
const
{
return
Mass_S; }
438
double
getMass_B()
const
{
return
Mass_B; }
439
440
/*
441
* Masses of bosons
442
*/
443
double
getMass_Z()
const
{
return
Mass_Z; }
444
double
getMass_W()
const
{
return
Mass_W; }
445
double
getMass_H()
const
{
return
Mass_H; }
446
447
/*
448
* Widths of particles
449
*/
450
double
getWidth_C()
const
{
return
Width_C; }
451
double
getWidth_B()
const
{
return
Width_B; }
452
double
getWidth_T()
const
{
return
Width_T; }
453
double
getWidth_W()
const
{
return
Width_W; }
454
double
getWidth_Z()
const
{
return
Width_Z; }
455
double
getWidth_H()
const
{
return
Width_H; }
456
457
458
/*
459
* QCD and QED couplings
460
*/
461
double
Coupl_Alpha_QED;
462
double
Coupl_Alpha_QCD;
463
464
465
/* Scalar integral initialization from hpair.f (T.Plehn, M.Spira & P.Zerwas, arXiv:hep-ph/9603205)
466
Program found at http://people.web.psi.ch/spira/hpair/ */
467
468
virtual
vector<Complex> iniscal(
double
AMQ,
double
S,
double
T,
double
U,
double
M1,
double
M2)
const
;
469
470
/* Matrix element calculation from hpair */
471
472
virtual
double
MATRIX(
double
S,
double
T,
double
U,
double
M1,
double
M2)
const
;
473
474
475
/* OpenLoops initialization */
476
virtual
void
InitOpenLoops();
477
478
};
479
480
}
481
482
#include "ThePEG/Utilities/ClassTraits.h"
483
484
namespace
ThePEG
{
485
490
template
<>
491
struct
BaseClassTrait
<Herwig::
MEHiggsPairOL
,1> {
493
typedef
Herwig::HwMEBase
NthBase;
494
495
};
496
499
template
<>
500
struct
ClassTraits
<Herwig::
MEHiggsPairOL
>
501
:
public
ClassTraitsBase
<Herwig::MEHiggsPairOL> {
503
static
string
className() {
return
"Herwig::MEHiggsPairOL"
; }
511
static
string
library() {
return
"HiggsPair.so"
; }
512
};
513
516
}
517
518
519
#endif
/* HERWIG_MEHiggsPairOL_H */
Herwig::MEHiggsPairOL::_wh
Energy _wh
On-shell width for the higgs.
Definition:
MEHiggsPairOL.h:357
Herwig::MEHiggsPairOL
The MEHiggsPairOL class implements the matrix elements for HiggsPairian scattering process...
Definition:
MEHiggsPairOL.h:77
ThePEG::PersistentIStream
ThePEG::ClassDescription
Herwig::MEHiggsPairOL::_theModel
tcSMPtr _theModel
Pointer to the model.
Definition:
MEHiggsPairOL.h:330
ThePEG::PersistentOStream
Herwig::MEHiggsPairOL::_hmass
GenericMassGeneratorPtr _hmass
The mass generator for the Higgs.
Definition:
MEHiggsPairOL.h:335
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Herwig::MEHiggsPairOL::orderInAlphaS
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
Definition:
MEHiggsPairOL.h:93
Herwig::MEHiggsPairOL::initMEHiggsPairOL
static ClassDescription< MEHiggsPairOL > initMEHiggsPairOL
The static object used to initialize the description of this class.
Definition:
MEHiggsPairOL.h:272
Herwig::MEHiggsPairOL::_higgs
PDPtr _higgs
The higgs boson.
Definition:
MEHiggsPairOL.h:289
ThePEG::Rebinder
Herwig::MEHiggsPairOL::_id
int _id
process identifiers
Definition:
MEHiggsPairOL.h:284
Herwig::MEHiggsPairOL::_process
unsigned int _process
Processes to include.
Definition:
MEHiggsPairOL.h:346
ThePEG
ThePEG::tcSMPtr
ThePEG::Ptr< StandardModelBase >::transient_const_pointer tcSMPtr
Herwig::MEHiggsPairOL::_mh
Energy _mh
On-shell mass for the higgs.
Definition:
MEHiggsPairOL.h:351
Herwig::MEHiggsPairOL::higgs
void higgs(PDPtr in)
Set the higgs data.
Definition:
MEHiggsPairOL.h:212
ThePEG::PDPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
Herwig::MEHiggsPairOL::orderInAlphaEW
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
Definition:
MEHiggsPairOL.h:99
ThePEG::Selector
ThePEG::MEBase::DiagramVector
vector< DiagPtr > DiagramVector
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG::ClassTraits
Herwig::MEHiggsPairOL::higgs
PDPtr higgs() const
Access to the higgs data.
Definition:
MEHiggsPairOL.h:207
Herwig::MEHiggsPairOL::_selfcoupling
double _selfcoupling
multiplier for the SM triple-coupling
Definition:
MEHiggsPairOL.h:340
Herwig::HwMEBase
The HwMEBase class serves a number of purposes.
Definition:
HwMEBase.h:35
ThePEG::IVector
vector< IBPtr > IVector
ThePEG::BaseClassTrait
ThePEG::ClassTraitsBase
Generated on Sat Apr 11 2020 14:50:30 for Herwig by
1.8.13