herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Contrib
HiggsPair
MEHiggsPair.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_MEHiggsPair_H
10
#define HERWIG_MEHiggsPair_H
11
//
12
// This is the declaration of the MEHiggsPair class.
13
//
14
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
22
23
namespace
Herwig
{
24
using namespace
ThePEG
;
25
26
27
/*
28
* Interface to external FORTRAN hpair functions (T.Plehn, M.Spira & P.Zerwas, arXiv:hep-ph/9603205)
29
* original Program found at http://people.web.psi.ch/spira/hpair/
30
*/
31
extern
"C"
{
32
complex<double> eta_(complex<double>* C1, complex<double>* C2);
33
complex<double> d04_(
double
* P1,
double
* P2,
double
* P3,
double
* P4,
double
* P12,
double
* P23,
double
* M1,
double
* M2,
double
* M3,
double
* M4);
34
complex<double> c03_(
double
* P1,
double
* P2,
double
* P3,
double
* M1,
double
* M2,
double
* M3);
35
complex<double> cspen_(
double
* Z);
36
complex<double> sqe_(
double
* A,
double
* B,
double
* C);
37
complex<double> etas_(complex<double>*Y,complex<double>* R,complex<double>*RS);
38
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);
39
}
40
41
extern
"C"
{
42
extern
struct
{
43
complex<double> A1;
44
complex<double> A2;
45
complex<double> H1;
46
complex<double> H2;
47
complex<double> Z1;
48
complex<double> Z2;
49
complex<double> AA1;
50
complex<double> AA2;
51
complex<double> HH1;
52
complex<double> HH2;
53
complex<double> AH1;
54
complex<double> AH2;
55
} form_;
56
}
57
58
63
class
MEHiggsPair
:
public
HwMEBase
{
64
65
public
:
66
70
MEHiggsPair
();
71
78
virtual
unsigned
int
orderInAlphaS
()
const
{
return
0; }
79
84
virtual
unsigned
int
orderInAlphaEW
()
const
{
return
0; }
85
89
virtual
Energy2
scale
()
const
;
90
94
virtual
void
getDiagrams
()
const
;
95
100
virtual
bool
generateKinematics
(
const
double
* r);
101
102
107
virtual
CrossSection
dSigHatDR
()
const
;
108
109
/*
110
* Fix alphaS
111
*/
112
unsigned
int
fixedalphaS()
const
{
return
_fixedalphaS; }
113
114
/*
115
* Fixed alphaS value if AlphaS is chosen (option 2 above)
116
*/
117
double
alphasfixedvalue()
const
{
return
_alphasfixedvalue; }
118
122
double
scalemultiplier
()
const
{
return
_scalemultiplier;}
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
187
virtual
void
rebind
(
const
TranslationMap
& trans);
188
194
virtual
IVector
getReferences
();
196
200
PDPtr
higgs
()
const
{
return
_higgs
; }
201
205
void
higgs
(
PDPtr
in) {
_higgs
=in;}
206
207
208
public
:
209
216
void
persistentOutput
(
PersistentOStream
& os)
const
;
217
223
void
persistentInput
(
PersistentIStream
& is,
int
version);
225
232
static
void
Init
();
233
234
235
236
protected
:
237
244
virtual
IBPtr
clone
()
const
;
245
250
virtual
IBPtr
fullclone
()
const
;
252
253
protected
:
254
260
private
:
265
static
ClassDescription<MEHiggsPair>
initMEHiggsPair
;
266
271
MEHiggsPair
&
operator=
(
const
MEHiggsPair
&) =
delete
;
272
273
277
PDPtr
_higgs
;
278
279
/*
280
* The W mass
281
*/
282
Energy _Wmass;
283
284
285
/*
286
* The top mass
287
*/
288
Energy _topmass;
289
290
/*
291
* The bottom mass
292
*/
293
Energy _bottommass;
294
295
/*
296
* The Z boson mass
297
*/
298
Energy _zmass;
299
300
301
/*
302
* Higgs boson mass(es)
303
*/
304
Energy _m1, _m2;
305
306
307
/*
308
* Heavy H mass
309
*/
310
Energy _heavyHmass;
311
312
313
/*
314
* Heavy H width
315
*/
316
Energy _heavyHwidth;
317
318
/*
319
* top yukawa multiplier, Heavy
320
*/
321
double
_yH;
322
323
/*
324
* top yukawa multiplier, light
325
*/
326
double
_yh;
327
328
/*
329
* bottom yukawa multiplier, Heavy
330
*/
331
double
_ybH;
332
333
/*
334
* bottom yukawa multiplier, light
335
*/
336
double
_ybh;
337
338
private
:
339
343
GenericMassGeneratorPtr
_hmass
;
344
348
double
_selfcoupling
;
349
353
double
_hhHcoupling
;
354
358
unsigned
int
_process
;
359
360
/*
361
* Fix alphaS
362
*/
363
unsigned
int
_fixedalphaS;
364
365
/*
366
* Scale to use for alpha_S if fixed
367
*/
368
Energy _alphascale;
369
370
371
/*
372
* Value of AlphaS if fixed using option 2 above
373
*/
374
double
_alphasfixedvalue;
375
376
/*
377
* Base scale to use if chosen to be fixed
378
*/
379
Energy _basescale;
380
381
/*
382
* scale multiplier
383
*/
384
double
_scalemultiplier;
385
386
/*
387
* Fix scale of whole process
388
*/
389
unsigned
int
_fixedscale;
390
391
395
Energy
_mh
;
396
397
401
Energy
_wh
;
402
406
Energy
_mW
;
407
408
409
410
/*
411
* _cH, effective theory coefficient
412
*/
413
double
_cH;
414
415
/* _c6, effective theory coefficient
416
*
417
*/
418
double
_c6;
419
420
/*
421
* _cg1, effective theory coefficient
422
*/
423
double
_cg1;
424
425
/* _cg2, effective theory coefficient
426
*
427
*/
428
double
_cg2;
429
430
/*
431
* _ct1, effective theory coefficient
432
*/
433
double
_ct1;
434
435
/*
436
* _ct2, effective theory coefficient
437
*/
438
double
_ct2;
439
440
441
/* _ct2, effective theory coefficient
442
*
443
*/
444
double
_cb1;
445
446
/* f_b2, effective theory coefficient
447
*
448
*/
449
double
_cb2;
450
451
/* effective theory scale
452
*
453
*/
454
Energy _EFTScale;
455
456
/* Scalar integral initialization from hpair.f (T.Plehn, M.Spira & P.Zerwas, arXiv:hep-ph/9603205)
457
Program found at http://people.web.psi.ch/spira/hpair/ */
458
459
virtual
vector<Complex> iniscal(
double
AMQ,
double
S,
double
T,
double
U,
double
M1,
double
M2)
const
;
460
461
/* Matrix element calculation from hpair */
462
463
virtual
double
MATRIX(
double
S,
double
T,
double
U,
double
M1,
double
M2)
const
;
464
465
466
};
467
468
}
469
470
#include "ThePEG/Utilities/ClassTraits.h"
471
472
namespace
ThePEG
{
473
478
template
<>
479
struct
BaseClassTrait
<
Herwig
::MEHiggsPair,1> {
481
typedef
Herwig::HwMEBase
NthBase
;
482
483
};
484
487
template
<>
488
struct
ClassTraits
<
Herwig
::MEHiggsPair>
489
:
public
ClassTraitsBase
<Herwig::MEHiggsPair> {
491
static
string
className
() {
return
"Herwig::MEHiggsPair"
; }
499
static
string
library
() {
return
"MEHiggsPair.so"
; }
500
};
501
504
}
505
506
507
#endif
/* HERWIG_MEHiggsPair_H */
Herwig::HwMEBase
The HwMEBase class serves a number of purposes.
Definition:
HwMEBase.h:35
Herwig::MEHiggsPair
The MEHiggsPair class implements the matrix elements for HiggsPairian scattering process.
Definition:
MEHiggsPair.h:63
Herwig::MEHiggsPair::dSigHatDR
virtual CrossSection dSigHatDR() const
Return the matrix element squared differential in the variables given by the last call to generateKin...
Herwig::MEHiggsPair::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::MEHiggsPair::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::MEHiggsPair::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::MEHiggsPair::_hhHcoupling
double _hhHcoupling
multiplier for the hhH triple-coupling
Definition:
MEHiggsPair.h:353
Herwig::MEHiggsPair::generateKinematics
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom.
Herwig::MEHiggsPair::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::MEHiggsPair::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::MEHiggsPair::scalemultiplier
double scalemultiplier() const
Return multiplier for scale.
Definition:
MEHiggsPair.h:122
Herwig::MEHiggsPair::nDim
virtual int nDim() const
The number of internal degrees of freedom used in the matrix element.
Herwig::MEHiggsPair::orderInAlphaEW
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
Definition:
MEHiggsPair.h:84
Herwig::MEHiggsPair::getDiagrams
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
Herwig::MEHiggsPair::orderInAlphaS
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
Definition:
MEHiggsPair.h:78
Herwig::MEHiggsPair::rebind
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
Herwig::MEHiggsPair::_process
unsigned int _process
Processes to include.
Definition:
MEHiggsPair.h:358
Herwig::MEHiggsPair::_higgs
PDPtr _higgs
The higgs boson.
Definition:
MEHiggsPair.h:277
Herwig::MEHiggsPair::higgs
void higgs(PDPtr in)
Set the higgs data.
Definition:
MEHiggsPair.h:205
Herwig::MEHiggsPair::operator=
MEHiggsPair & operator=(const MEHiggsPair &)=delete
The assignment operator is private and must never be called.
Herwig::MEHiggsPair::_mh
Energy _mh
On-shell mass for the higgs.
Definition:
MEHiggsPair.h:395
Herwig::MEHiggsPair::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::MEHiggsPair::me2
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
Herwig::MEHiggsPair::scale
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
Herwig::MEHiggsPair::_hmass
GenericMassGeneratorPtr _hmass
The mass generator for the Higgs.
Definition:
MEHiggsPair.h:343
Herwig::MEHiggsPair::setKinematics
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
Herwig::MEHiggsPair::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::MEHiggsPair::initMEHiggsPair
static ClassDescription< MEHiggsPair > initMEHiggsPair
The static object used to initialize the description of this class.
Definition:
MEHiggsPair.h:265
Herwig::MEHiggsPair::_selfcoupling
double _selfcoupling
multiplier for the SM triple-coupling
Definition:
MEHiggsPair.h:348
Herwig::MEHiggsPair::_mW
Energy _mW
On-shell mass for the W.
Definition:
MEHiggsPair.h:406
Herwig::MEHiggsPair::MEHiggsPair
MEHiggsPair()
The default constructor.
Herwig::MEHiggsPair::diagrams
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
Herwig::MEHiggsPair::higgs
PDPtr higgs() const
Access to the higgs data.
Definition:
MEHiggsPair.h:200
Herwig::MEHiggsPair::_wh
Energy _wh
On-shell width for the higgs.
Definition:
MEHiggsPair.h:401
Herwig::MEHiggsPair::getReferences
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
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::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