herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
Contrib
HiggsPairOL
MEHiggsPairJet.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_MEHiggsPairJet_H
10
#define HERWIG_MEHiggsPairJet_H
11
//
12
// This is the declaration of the MEHiggsPairJet 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
33
extern
"C"
{
34
void
ol_setparameter_int(
const
char
* param,
int
val);
35
void
ol_setparameter_double(
const
char
* param,
double
val);
36
void
ol_setparameter_string(
const
char
* param,
char
* val);
37
int
ol_register_process(
const
char
* process,
int
amptype);
38
int
ol_n_external(
int
id
);
39
void
ol_phase_space_point(
int
id
,
double
sqrt_s,
double
* pp);
40
void
ol_start();
41
void
ol_finish();
42
void
ol_evaluate_tree(
int
id
,
double
* pp,
double
* m2_tree);
43
void
ol_evaluate_loop(
int
id
,
double
* pp,
double
* m2_tree,
double
* m2_loop,
double
* acc);
44
void
ol_evaluate_loop2(
int
id
,
double
* pp,
double
* m2_loop2,
double
* acc);
45
}
46
47
48
53
class
MEHiggsPairJet
:
public
HwMEBase
{
54
55
public
:
56
60
MEHiggsPairJet
();
61
68
virtual
unsigned
int
orderInAlphaS
()
const
{
return
0; }
69
74
virtual
unsigned
int
orderInAlphaEW
()
const
{
return
0; }
75
79
virtual
Energy2
scale
()
const
;
80
84
virtual
void
getDiagrams
()
const
;
85
90
virtual
bool
generateKinematics
(
const
double
* r);
91
92
97
virtual
CrossSection
dSigHatDR
()
const
;
98
99
100
101
110
virtual
Selector<DiagramIndex>
diagrams
(
const
DiagramVector
& dv)
const
;
111
119
virtual
Selector<const ColourLines *>
120
colourGeometries
(tcDiagPtr diag)
const
;
121
129
virtual
double
me2
()
const
;
131
132
133
virtual
void
setKinematics
();
134
139
virtual
int
nDim
()
const
;
140
141
142
protected
:
143
151
virtual
void
doinit
();
152
157
virtual
void
doinitrun
();
158
159
/* OpenLoops initialization */
160
virtual
void
InitOpenLoops();
161
171
virtual
void
rebind
(
const
TranslationMap
& trans);
172
178
virtual
IVector
getReferences
();
180
184
PDPtr
higgs
()
const
{
return
_higgs
; }
185
189
void
higgs
(
PDPtr
in) {
_higgs
=in;}
190
191
192
public
:
193
200
void
persistentOutput
(
PersistentOStream
& os)
const
;
201
207
void
persistentInput
(
PersistentIStream
& is,
int
version);
209
216
static
void
Init
();
217
218
219
220
protected
:
221
228
virtual
IBPtr
clone
()
const
;
229
234
virtual
IBPtr
fullclone
()
const
;
236
237
protected
:
238
244
private
:
249
static
ClassDescription<MEHiggsPairJet>
initMEHiggsPairJet
;
250
255
MEHiggsPairJet
&
operator=
(
const
MEHiggsPairJet
&) =
delete
;
256
260
int
_id1
, _id1tri, _id1box, _id1int;
261
int
_id2, _id2tri, _id2box, _id2int;
262
int
_id3, _id3tri, _id3box, _id3int;
263
int
_id4, _id4tri, _id4box, _id4int;
264
265
269
PDPtr
_higgs
;
270
271
/*
272
* The top mass
273
*/
274
Energy _topmass;
275
276
/*
277
* The bottom mass
278
*/
279
Energy _bottommass;
280
281
/*
282
* The Z boson mass
283
*/
284
Energy _zmass;
285
286
287
/*
288
* Higgs boson mass(es)
289
*/
290
Energy _m1, _m2;
291
292
293
/*
294
* Heavy H mass
295
*/
296
Energy _heavyHmass;
297
298
299
/*
300
* Heavy H width
301
*/
302
Energy _heavyHwidth;
303
307
Energy2
_mbt2
;
308
312
Energy2
_scale
;
313
317
int
_maxflavour
;
318
319
private
:
320
324
tcSMPtr
_theModel
;
325
326
330
GenericMassGeneratorPtr
_hmass
;
331
335
double
_selfcoupling
;
336
337
341
double
_hhHcoupling
;
342
343
347
unsigned
int
_process
;
348
352
Energy
_mh
;
353
354
358
Energy
_wh
;
359
360
/*
361
* Fix alphaS
362
*/
363
unsigned
int
_fixedalphaS;
364
365
/*
366
* Value of AlphaS if fixed using option 2 above
367
*/
368
double
_alphasfixedvalue;
369
370
/*
371
* Fix scale for the whole process.
372
*/
373
unsigned
int
_fixedscale;
374
375
/*
376
* Scale to use for alpha_S if fixed
377
*/
378
Energy _alphascale;
379
380
381
/*
382
* Choose between the OpenLoops and HPAIR implementations
383
*/
384
unsigned
int
_implementation;
385
386
/*
387
* include the widths
388
*/
389
unsigned
int
_includeWidths;
390
391
/*
392
* include the b quark loops
393
*/
394
unsigned
int
_includeBquark;
395
396
397
/*
398
* Base scale to use if chosen to be fixed
399
*/
400
Energy _basescale;
401
402
/*
403
* Which subprocesses to include in the pp > HHj process
404
*/
405
unsigned
int
_subprocessjet;
406
407
/*
408
* AlphaS reweighting
409
*/
410
unsigned
int
_alphasreweight;
411
412
/*
413
* scale multiplier
414
*/
415
double
_scalemultiplier;
416
417
/*
418
* Masses of fermions
419
*/
420
double
Mass_E;
421
double
getMass_E()
const
{
return
Mass_E; }
422
double
Mass_M;
423
double
getMass_M()
const
{
return
Mass_M; }
424
double
Mass_L;
425
double
getMass_L()
const
{
return
Mass_L; }
426
427
double
Mass_T;
428
double
getMass_T()
const
{
return
Mass_T; }
429
double
Mass_U;
430
double
getMass_U()
const
{
return
Mass_U; }
431
double
Mass_C;
432
double
getMass_C()
const
{
return
Mass_C; }
433
double
Mass_D;
434
double
getMass_D()
const
{
return
Mass_D; }
435
double
Mass_S;
436
double
getMass_S()
const
{
return
Mass_S; }
437
double
Mass_B;
438
double
getMass_B()
const
{
return
Mass_B; }
439
440
/*
441
* Masses of bosons
442
*/
443
double
Mass_Z;
444
double
getMass_Z()
const
{
return
Mass_Z; }
445
double
Mass_W;
446
double
getMass_W()
const
{
return
Mass_W; }
447
double
Mass_H;
448
double
getMass_H()
const
{
return
Mass_H; }
449
450
/*
451
* Widths of particles
452
*/
453
double
Width_C;
454
double
getWidth_C()
const
{
return
Width_C; }
455
double
Width_B;
456
double
getWidth_B()
const
{
return
Width_B; }
457
double
Width_T;
458
double
getWidth_T()
const
{
return
Width_T; }
459
double
Width_W;
460
double
getWidth_W()
const
{
return
Width_W; }
461
double
Width_Z;
462
double
getWidth_Z()
const
{
return
Width_Z; }
463
double
Width_H;
464
double
getWidth_H()
const
{
return
Width_H; }
465
466
467
/*
468
* QCD and QED couplings
469
*/
470
double
Coupl_Alpha_QED;
471
double
Coupl_Alpha_QCD;
472
473
/* OpenLoops initialization */
474
// virtual void InitOpenLoops() const;
475
476
};
477
478
479
}
480
481
#include "ThePEG/Utilities/ClassTraits.h"
482
483
namespace
ThePEG
{
484
489
template
<>
490
struct
BaseClassTrait
<
Herwig
::MEHiggsPairJet,1> {
492
typedef
Herwig::HwMEBase
NthBase
;
493
494
};
495
498
template
<>
499
struct
ClassTraits
<
Herwig
::MEHiggsPairJet>
500
:
public
ClassTraitsBase
<Herwig::MEHiggsPairJet> {
502
static
string
className
() {
return
"Herwig::MEHiggsPairJet"
; }
510
static
string
library
() {
return
"HiggsPair.so"
; }
511
};
512
515
}
516
517
518
#endif
/* HERWIG_MEHiggsPairJet_H */
Herwig::HwMEBase
The HwMEBase class serves a number of purposes.
Definition:
HwMEBase.h:35
Herwig::MEHiggsPairJet
The MEHiggsPairJet class implements the matrix elements for HiggsPairian scattering process.
Definition:
MEHiggsPairJet.h:53
Herwig::MEHiggsPairJet::_scale
Energy2 _scale
Storage of the scale to avoid the need to recalculate.
Definition:
MEHiggsPairJet.h:312
Herwig::MEHiggsPairJet::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::MEHiggsPairJet::me2
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
Herwig::MEHiggsPairJet::_mbt2
Energy2 _mbt2
Storage of the triangon/boxon mass to avoid the need to recalculate.
Definition:
MEHiggsPairJet.h:307
Herwig::MEHiggsPairJet::dSigHatDR
virtual CrossSection dSigHatDR() const
Return the matrix element squared differential in the variables given by the last call to generateKin...
Herwig::MEHiggsPairJet::setKinematics
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
Herwig::MEHiggsPairJet::_hhHcoupling
double _hhHcoupling
multiplier for the hhH triple-coupling
Definition:
MEHiggsPairJet.h:341
Herwig::MEHiggsPairJet::_id1
int _id1
process identifiers
Definition:
MEHiggsPairJet.h:260
Herwig::MEHiggsPairJet::_hmass
GenericMassGeneratorPtr _hmass
The mass generator for the Higgs.
Definition:
MEHiggsPairJet.h:330
Herwig::MEHiggsPairJet::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::MEHiggsPairJet::_maxflavour
int _maxflavour
Allowed flavours for the incoming quarks.
Definition:
MEHiggsPairJet.h:317
Herwig::MEHiggsPairJet::operator=
MEHiggsPairJet & operator=(const MEHiggsPairJet &)=delete
The assignment operator is private and must never be called.
Herwig::MEHiggsPairJet::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::MEHiggsPairJet::scale
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
Herwig::MEHiggsPairJet::initMEHiggsPairJet
static ClassDescription< MEHiggsPairJet > initMEHiggsPairJet
The static object used to initialize the description of this class.
Definition:
MEHiggsPairJet.h:249
Herwig::MEHiggsPairJet::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::MEHiggsPairJet::_process
unsigned int _process
Processes to include.
Definition:
MEHiggsPairJet.h:347
Herwig::MEHiggsPairJet::getReferences
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
Herwig::MEHiggsPairJet::generateKinematics
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom.
Herwig::MEHiggsPairJet::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::MEHiggsPairJet::_mh
Energy _mh
On-shell mass for the higgs.
Definition:
MEHiggsPairJet.h:352
Herwig::MEHiggsPairJet::diagrams
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
Herwig::MEHiggsPairJet::orderInAlphaS
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
Definition:
MEHiggsPairJet.h:68
Herwig::MEHiggsPairJet::_selfcoupling
double _selfcoupling
multiplier for the SM triple-coupling
Definition:
MEHiggsPairJet.h:335
Herwig::MEHiggsPairJet::nDim
virtual int nDim() const
The number of internal degrees of freedom used in the matrix element.
Herwig::MEHiggsPairJet::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::MEHiggsPairJet::doinitrun
virtual void doinitrun()
Initialize this object before the run phase.
Herwig::MEHiggsPairJet::_theModel
tcSMPtr _theModel
Pointer to the model.
Definition:
MEHiggsPairJet.h:324
Herwig::MEHiggsPairJet::MEHiggsPairJet
MEHiggsPairJet()
The default constructor.
Herwig::MEHiggsPairJet::_wh
Energy _wh
On-shell width for the higgs.
Definition:
MEHiggsPairJet.h:358
Herwig::MEHiggsPairJet::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::MEHiggsPairJet::_higgs
PDPtr _higgs
The higgs boson.
Definition:
MEHiggsPairJet.h:269
Herwig::MEHiggsPairJet::getDiagrams
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
Herwig::MEHiggsPairJet::higgs
PDPtr higgs() const
Access to the higgs data.
Definition:
MEHiggsPairJet.h:184
Herwig::MEHiggsPairJet::rebind
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
Herwig::MEHiggsPairJet::higgs
void higgs(PDPtr in)
Set the higgs data.
Definition:
MEHiggsPairJet.h:189
Herwig::MEHiggsPairJet::orderInAlphaEW
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
Definition:
MEHiggsPairJet.h:74
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