herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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"
22
23namespace Herwig {
24
25class HiggsPair;
26
27}
28
29namespace ThePEG {
30
31ThePEG_DECLARE_POINTERS(Herwig::HiggsPair,HiggsPairPtr);
32
33}
34
35namespace Herwig {
36using namespace ThePEG;
37
38
39
40
41
46class HiggsPair: public BSMModel {
47
48public:
49
54
55
56protected:
57
65 virtual void doinit();
67
68 virtual void doinitrun();
69
70 virtual void InitOpenLoops();
71
72public:
73
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
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
239private:
244
248 GenericMassGeneratorPtr _hmass;
249
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
383protected:
384
391 virtual IBPtr clone() const;
392
397 virtual IBPtr fullclone() const;
399
400protected:
401
407private:
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
436private:
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
461namespace ThePEG {
462
467template <>
468struct BaseClassTrait<Herwig::HiggsPair,1> {
471
472};
473
476template <>
477struct 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 */
Here is the documentation of the BSMModel class.
Definition: BSMModel.h:21
The HiggsPair class implements the matrix elements for HiggsPairian scattering process.
Definition: HiggsPair.h:46
Energy _mh
On-shell mass for the higgs.
Definition: HiggsPair.h:264
unsigned int process() const
Processes to include.
Definition: HiggsPair.h:107
HiggsPair()
The default constructor.
GenericMassGeneratorPtr _hmass
The mass generator for the Higgs.
Definition: HiggsPair.h:248
double scalemultiplier() const
Return multiplier for scale.
Definition: HiggsPair.h:169
int _id1
process identifiers
Definition: HiggsPair.h:426
static ClassDescription< HiggsPair > initHiggsPair
The static object used to initialize the description of this class.
Definition: HiggsPair.h:412
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
unsigned int _process
Processes to include.
Definition: HiggsPair.h:259
Energy _wh
On-shell width for the higgs.
Definition: HiggsPair.h:270
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
PDPtr higgs() const
Access to the higgs data.
Definition: HiggsPair.h:373
tcSMPtr _theModel
Pointer to the model.
Definition: HiggsPair.h:243
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
int id1() const
Return OL Ids.
Definition: HiggsPair.h:174
virtual IBPtr clone() const
Make a simple clone of this object.
PDPtr _higgs
The higgs boson.
Definition: HiggsPair.h:202
HiggsPair & operator=(const HiggsPair &)=delete
The assignment operator is private and must never be called.
double _selfcoupling
multiplier for the SM triple-coupling
Definition: HiggsPair.h:253
static void Init()
The standard Init function used to initialize the interfaces.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
double selfcoupling() const
Return multiplier for the SM triple-coupling.
Definition: HiggsPair.h:102
-*- C++ -*-
Qty< 0, 1, 0 > Energy
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< StandardModelBase >::transient_const_pointer tcSMPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr
static string className()
static string library()