herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
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::HwMEBase
The HwMEBase class serves a number of purposes.
Definition:
HwMEBase.h:35
Herwig::MEHiggsPairOL
The MEHiggsPairOL class implements the matrix elements for HiggsPairian scattering process.
Definition:
MEHiggsPairOL.h:77
Herwig::MEHiggsPairOL::operator=
MEHiggsPairOL & operator=(const MEHiggsPairOL &)=delete
The assignment operator is private and must never be called.
Herwig::MEHiggsPairOL::doinitrun
virtual void doinitrun()
Initialize this object before the run phase.
Herwig::MEHiggsPairOL::_mh
Energy _mh
On-shell mass for the higgs.
Definition:
MEHiggsPairOL.h:351
Herwig::MEHiggsPairOL::diagrams
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
Herwig::MEHiggsPairOL::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::MEHiggsPairOL::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::MEHiggsPairOL::_theModel
tcSMPtr _theModel
Pointer to the model.
Definition:
MEHiggsPairOL.h:330
Herwig::MEHiggsPairOL::setKinematics
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
Herwig::MEHiggsPairOL::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::MEHiggsPairOL::_selfcoupling
double _selfcoupling
multiplier for the SM triple-coupling
Definition:
MEHiggsPairOL.h:340
Herwig::MEHiggsPairOL::MEHiggsPairOL
MEHiggsPairOL()
The default constructor.
Herwig::MEHiggsPairOL::scale
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
Herwig::MEHiggsPairOL::orderInAlphaEW
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
Definition:
MEHiggsPairOL.h:99
Herwig::MEHiggsPairOL::dSigHatDR
virtual CrossSection dSigHatDR() const
Return the matrix element squared differential in the variables given by the last call to generateKin...
Herwig::MEHiggsPairOL::generateKinematics
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom.
Herwig::MEHiggsPairOL::_id
int _id
process identifiers
Definition:
MEHiggsPairOL.h:284
Herwig::MEHiggsPairOL::nDim
virtual int nDim() const
The number of internal degrees of freedom used in the matrix element.
Herwig::MEHiggsPairOL::getDiagrams
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
Herwig::MEHiggsPairOL::higgs
void higgs(PDPtr in)
Set the higgs data.
Definition:
MEHiggsPairOL.h:212
Herwig::MEHiggsPairOL::_wh
Energy _wh
On-shell width for the higgs.
Definition:
MEHiggsPairOL.h:357
Herwig::MEHiggsPairOL::me2
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
Herwig::MEHiggsPairOL::_higgs
PDPtr _higgs
The higgs boson.
Definition:
MEHiggsPairOL.h:289
Herwig::MEHiggsPairOL::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::MEHiggsPairOL::colourGeometries
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
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::higgs
PDPtr higgs() const
Access to the higgs data.
Definition:
MEHiggsPairOL.h:207
Herwig::MEHiggsPairOL::_process
unsigned int _process
Processes to include.
Definition:
MEHiggsPairOL.h:346
Herwig::MEHiggsPairOL::getReferences
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
Herwig::MEHiggsPairOL::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::MEHiggsPairOL::_hmass
GenericMassGeneratorPtr _hmass
The mass generator for the Higgs.
Definition:
MEHiggsPairOL.h:335
Herwig::MEHiggsPairOL::initMEHiggsPairOL
static ClassDescription< MEHiggsPairOL > initMEHiggsPairOL
The static object used to initialize the description of this class.
Definition:
MEHiggsPairOL.h:272
Herwig::MEHiggsPairOL::rebind
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
Herwig::MEHiggsPairOL::Init
static void Init()
The standard Init function used to initialize the interfaces.
ThePEG::ClassDescription
ThePEG::MEBase::DiagramVector
vector< DiagPtr > DiagramVector
ThePEG::PersistentIStream
ThePEG::PersistentOStream
ThePEG::Rebinder
ThePEG::Selector
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
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::IVector
vector< IBPtr > IVector
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