herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MEPP2Higgs.h
1// -*- C++ -*-
2//
3// MEPP2Higgs.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4// Copyright (C) 2002-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_MEPP2Higgs_H
10#define HERWIG_MEPP2Higgs_H
11//
12// This is the declaration of the MEPP2Higgs class.
13//
14
15#include "Herwig/MatrixElement/HwMEBase.h"
16#include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h"
17#include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h"
18#include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h"
19#include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h"
20#include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h"
21#include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h"
22#include "Herwig/PDT/GenericMassGenerator.h"
23#include "Herwig/MatrixElement/ProductionMatrixElement.h"
24#include "Herwig/Shower/ShowerAlpha.h"
25
26namespace Herwig {
27using namespace ThePEG;
28using namespace ThePEG::Helicity;
29
38class MEPP2Higgs: public HwMEBase {
39
40public:
41
46
52 virtual CrossSection dSigHatDR() const;
53
59 virtual void setKinematics() {
61 mh2_ = sHat();
62 }
63
64public:
65
71 virtual POWHEGType hasPOWHEGCorrection() {return ISR;}
72
76 virtual bool hasMECorrection() {return true;}
77
81 virtual void initializeMECorrection(RealEmissionProcessPtr, double &,
82 double & );
83
87 virtual RealEmissionProcessPtr applyHardMatrixElementCorrection(RealEmissionProcessPtr);
88
101 virtual bool softMatrixElementVeto(PPtr parent,
102 PPtr progenitor,
103 const bool & fs,
104 const Energy & highestpT,
105 const vector<tcPDPtr> & ids,
106 const double & z,
107 const Energy & scale,
108 const Energy & pT);
109
113 virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr,
116
117public:
118
125 virtual unsigned int orderInAlphaS() const;
126
131 virtual unsigned int orderInAlphaEW() const;
132
140 virtual double me2() const;
141
150 virtual bool generateKinematics(const double * r);
151
155 virtual Energy2 scale() const;
156
161 virtual int nDim() const;
162
166 virtual void getDiagrams() const;
167
177
185 virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const;
186
192
193public:
194
202
208 void persistentInput(PersistentIStream & is, int version);
210
217 static void Init();
218
219protected:
220
227 virtual IBPtr clone() const { return new_ptr(*this); }
228
233 virtual IBPtr fullclone() const { return new_ptr(*this); }
235
236protected:
237
245 virtual void doinit();
246
251 virtual void dofinish();
253
254protected:
255
263 Energy4 loME() const;
264
268 Energy2 ggME(Energy2 s, Energy2 t, Energy2 u);
269
273 Energy2 qgME(Energy2 s, Energy2 t, Energy2 u);
274
278 Energy2 qbargME(Energy2 s, Energy2 t, Energy2 u);
280
290 Complex B(Energy2 s,Energy2 mf2) const;
291
297 complex<InvEnergy2> C(Energy2 s,Energy2 mf2) const;
298
306 complex<InvEnergy4> D(Energy2 s,Energy2 t, Energy2 u,Energy2 mf2) const;
307
315 Complex dIntegral(Energy2 a, Energy2 b, double y0) const;
316
330 complex<Energy> me1(Energy2 s,Energy2 t,Energy2 u, Energy2 mf2,
331 unsigned int i,unsigned int j, unsigned int k,
332 unsigned int i1,unsigned int j1, unsigned int k1) const;
333
341 complex<Energy> me2(Energy2 s,Energy2 t,Energy2 u, Energy2 mf2) const;
342
346 Complex F(double x) const;
348
353 tPDPtr quarkFlavour(tcPDFPtr pdf, Energy2 scale, double x, tcBeamPtr beam,
354 double & pdfweight, bool anti);
355
371 vector<tcBeamPtr> beams,
372 PPtr higgs,unsigned int & iemit,
373 unsigned int & itype,vector<Lorentz5Momentum> & pnew,
374 pair<double,double> & xnew,
375 tPDPtr & out);
376
383 bool getEvent(vector<Lorentz5Momentum> & pnew,int & emissiontype);
384
394 double getResult(int emis_type, Energy pt, double yj,tcPDPtr & outParton);
395
396private:
397
402 MEPP2Higgs & operator=(const MEPP2Higgs &) = delete;
404
416 double ggME(vector<VectorWaveFunction> g1,
417 vector<VectorWaveFunction> g2,
419 bool calc) const;
420
428 double qqME(vector<SpinorWaveFunction> & fin,
429 vector<SpinorBarWaveFunction> & ain,
431 bool calc) const;
433
434private:
435
439 unsigned int scaleopt_;
440
444 Energy mu_F_;
445
449 unsigned int shapeOption_;
450
454 unsigned int processOption_;
455
460
465
470
474 AbstractVVSVertexPtr HGGVertex_;
475
479 AbstractFFSVertexPtr HFFVertex_;
480
484 GenericMassGeneratorPtr hmass_;
485
489 Energy mh_;
490
494 Energy wh_;
495
508 unsigned int minLoop_;
509
513 unsigned int maxLoop_;
514
518 unsigned int massOption_;
519
523 unsigned int mu_R_opt_;
524
528 unsigned int mu_F_opt_;
530
532
536 static const complex<Energy2> epsi_;
537
545 mutable Complex bi_[5];
546
550 mutable complex<InvEnergy2> ci_[8];
551
555 mutable complex<InvEnergy4> di_[4];
557
561 ShowerAlphaPtr alpha_;
562
566 Energy2 mh2_;
567
572
577
581 vector<double> channelWeights_;
582
587 double ggPow_;
588
593 double qgPow_;
594
598 double enhance_;
599
603 unsigned int nover_;
604
608 unsigned int ntry_;
609
613 unsigned int ngen_;
614
618 double maxwgt_;
620
629 double power_;
630
634 double pregg_;
635
639 double preqg_;
640
644 double pregqbar_;
645
649 vector<double> prefactor_;
651
655 Energy minpT_;
656
664 vector<tcBeamPtr> beams_;
665
669 vector<tcPDPtr> partons_;
671
679 double yh_;
680
684 Energy mass_;
685
689 double yj_;
690
694 Energy pt_;
695
701
706
707};
708
709}
710
711#endif /* HERWIG_MEPP2Higgs_H */
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:87
The MEPP2Higgs class implements the matrix element for the process pp->Higgs with different Higgs sha...
Definition: MEPP2Higgs.h:38
bool getEvent(vector< Lorentz5Momentum > &pnew, int &emissiontype)
generates the hardest emission (yj,p)
MEPP2Higgs()
The default constructor.
Energy minpT_
The transverse momentum of the jet.
Definition: MEPP2Higgs.h:655
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEPP2Higgs.h:227
virtual RealEmissionProcessPtr applyHardMatrixElementCorrection(RealEmissionProcessPtr)
Apply the hard matrix element correction to a given hard process or decay.
double enhance_
The enhancement factor for initial-state radiation.
Definition: MEPP2Higgs.h:598
int minFlavour_
Minimum flavour of incoming quarks.
Definition: MEPP2Higgs.h:459
bool applyHard(ParticleVector gluons, vector< tcBeamPtr > beams, PPtr higgs, unsigned int &iemit, unsigned int &itype, vector< Lorentz5Momentum > &pnew, pair< double, double > &xnew, tPDPtr &out)
Return the momenta and type of hard matrix element correction.
virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr, ShowerInteraction)
Apply the POWHEG style correction.
static const complex< Energy2 > epsi_
Small complex number to regularize some integrals.
Definition: MEPP2Higgs.h:536
AbstractVVSVertexPtr HGGVertex_
Pointer to the H-> 2 gluon vertex (used in gg->H)
Definition: MEPP2Higgs.h:474
virtual bool hasMECorrection()
Has an old fashioned ME correction.
Definition: MEPP2Higgs.h:76
Energy2 ggME(Energy2 s, Energy2 t, Energy2 u)
The matrix element for .
Energy2 qgME(Energy2 s, Energy2 t, Energy2 u)
The matrix element for .
complex< InvEnergy2 > C(Energy2 s, Energy2 mf2) const
The function of NBP339 (1990) 38-66.
Energy wh_
On-shell width for the higgs.
Definition: MEPP2Higgs.h:494
double power_
Constants for the sampling.
Definition: MEPP2Higgs.h:629
Energy mu_F_
The value associated to the fixed factorization scale option.
Definition: MEPP2Higgs.h:444
complex< Energy > me1(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2, unsigned int i, unsigned int j, unsigned int k, unsigned int i1, unsigned int j1, unsigned int k1) const
The matrix element of NBP339 (1990) 38-66.
double pregg_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:634
virtual bool generateKinematics(const double *r)
Generate internal degrees of freedom given nDim() uniform random numbers in the interval .
AbstractFFSVertexPtr HFFVertex_
Pointer to the fermion-fermion Higgs vertex (used in qq->H)
Definition: MEPP2Higgs.h:479
Energy mh_
On-shell mass for the higgs.
Definition: MEPP2Higgs.h:489
unsigned int minLoop_
Stuff for the ME correction.
Definition: MEPP2Higgs.h:508
double ggME(vector< VectorWaveFunction > g1, vector< VectorWaveFunction > g2, ScalarWaveFunction &, bool calc) const
Members to return the matrix elements for the different subprocesses.
unsigned int ngen_
Number which suceed.
Definition: MEPP2Higgs.h:613
unsigned int mu_F_opt_
Option for dynamic scale choice in PDFs (0=mT,>0=pT)
Definition: MEPP2Higgs.h:528
unsigned int massOption_
Option for treatment of the fermion loops.
Definition: MEPP2Higgs.h:518
unsigned int processOption_
The processes to be included (GG->H and/or qq->H)
Definition: MEPP2Higgs.h:454
Energy4 loME() const
Members to calculate the real emission matrix elements.
tPDPtr quarkFlavour(tcPDFPtr pdf, Energy2 scale, double x, tcBeamPtr beam, double &pdfweight, bool anti)
Method to extract the PDF weight for quark/antiquark initiated processes and select the quark flavour...
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< tcBeamPtr > beams_
Properties of the incoming particles.
Definition: MEPP2Higgs.h:664
virtual Energy2 scale() const
Return the scale associated with the last set phase space point.
virtual int nDim() const
The number of internal degrees of freedom used in the matrix element.
complex< Energy > me2(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) const
The matrix element of NBP339 (1990) 38-66.
virtual CrossSection dSigHatDR() const
Return the matrix element for the kinematical configuation previously provided by the last call to se...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual void constructVertex(tSubProPtr)
Construct the vertex of spin correlations.
vector< tcPDPtr > partons_
Pointers to the ParticleDataObjects for the partons.
Definition: MEPP2Higgs.h:669
virtual unsigned int orderInAlphaEW() const
Return the order in in which this matrix element is given.
virtual void dofinish()
Finalize this object.
unsigned int ntry_
Number of attempts.
Definition: MEPP2Higgs.h:608
complex< InvEnergy2 > ci_[8]
C functions.
Definition: MEPP2Higgs.h:550
complex< InvEnergy4 > di_[4]
D functions.
Definition: MEPP2Higgs.h:555
double yh_
Properties of the boson and jets.
Definition: MEPP2Higgs.h:679
unsigned int mu_R_opt_
Option for dynamic scale choice in alpha_S (0=mT,>0=pT)
Definition: MEPP2Higgs.h:523
double preqg_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:639
double pregqbar_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:644
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEPP2Higgs.h:233
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
Definition: MEPP2Higgs.h:59
Energy pt_
The transverse momentum of the jet.
Definition: MEPP2Higgs.h:694
int maxFlavour_
Maximum flavour of incoming quarks.
Definition: MEPP2Higgs.h:464
complex< InvEnergy4 > D(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) const
The function of NBP339 (1990) 38-66.
double channelwgtB_
Relative weight for the to the channel.
Definition: MEPP2Higgs.h:576
ShowerAlphaPtr alpha_
Pointer to the object calculating the strong coupling.
Definition: MEPP2Higgs.h:561
unsigned int nover_
Number of weights greater than 1.
Definition: MEPP2Higgs.h:603
unsigned int maxLoop_
Maximum flavour of quarks to include in the loops.
Definition: MEPP2Higgs.h:513
Energy mass_
The mass of the Higgs boson.
Definition: MEPP2Higgs.h:684
Energy2 qbargME(Energy2 s, Energy2 t, Energy2 u)
The matrix element for .
Complex B(Energy2 s, Energy2 mf2) const
Members to calculate the functions for the loop diagrams.
unsigned int shapeOption_
Defines the Higgs resonance shape.
Definition: MEPP2Higgs.h:449
vector< double > prefactor_
The prefactors as a vector for easy use.
Definition: MEPP2Higgs.h:649
double maxwgt_
Maximum weight.
Definition: MEPP2Higgs.h:618
unsigned int scaleopt_
Selects a dynamic (sHat) or fixed factorization scale.
Definition: MEPP2Higgs.h:439
Complex bi_[5]
Storage of the loop functions.
Definition: MEPP2Higgs.h:545
ProductionMatrixElement me_
Matrix element for spin correlations.
Definition: MEPP2Higgs.h:469
virtual Selector< const ColourLines * > colourGeometries(tcDiagPtr diag) const
Return a Selector with possible colour geometries for the selected diagram weighted by their relative...
double channelwgtA_
Relative weight of the to the channel.
Definition: MEPP2Higgs.h:571
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: MEPP2Higgs.h:71
double qgPow_
Power for the importance sampling of the and components.
Definition: MEPP2Higgs.h:593
virtual bool softMatrixElementVeto(PPtr parent, PPtr progenitor, const bool &fs, const Energy &highestpT, const vector< tcPDPtr > &ids, const double &z, const Energy &scale, const Energy &pT)
Apply the soft matrix element correction.
tcPDPtr out_
The outgoing parton.
Definition: MEPP2Higgs.h:699
static void Init()
The standard Init function used to initialize the interfaces.
virtual double me2() const
The matrix element for the kinematical configuration previously provided by the last call to setKinem...
virtual void initializeMECorrection(RealEmissionProcessPtr, double &, double &)
Initialize the ME correction.
virtual Selector< DiagramIndex > diagrams(const DiagramVector &dv) const
Get diagram selector.
double getResult(int emis_type, Energy pt, double yj, tcPDPtr &outParton)
Returns the matrix element for a given type of process, rapidity of the jet and transverse momentum ...
MEPP2Higgs & operator=(const MEPP2Higgs &)=delete
The assignment operator is private and must never be called.
double qqME(vector< SpinorWaveFunction > &fin, vector< SpinorBarWaveFunction > &ain, ScalarWaveFunction &, bool calc) const
Calculates the matrix element for the process q,qbar->h.
double ggPow_
Power for the importance sampling of the component.
Definition: MEPP2Higgs.h:587
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual unsigned int orderInAlphaS() const
Return the order in in which this matrix element is given.
double yj_
the rapidity of the jet
Definition: MEPP2Higgs.h:689
Complex dIntegral(Energy2 a, Energy2 b, double y0) const
The integral from NBP339 (1990) 38-66.
Energy2 mh2_
Mass squared of Higgs.
Definition: MEPP2Higgs.h:566
vector< double > channelWeights_
Weights for the channels as a vector.
Definition: MEPP2Higgs.h:581
virtual void getDiagrams() const
Add all possible diagrams with the add() function.
Complex F(double x) const
The function for the leading-order result.
GenericMassGeneratorPtr hmass_
The mass generator for the Higgs.
Definition: MEPP2Higgs.h:484
bool spinCorrelations_
Whether of not to construct the vertex for spin correlations.
Definition: MEPP2Higgs.h:705
The storage of the helicity amplitude expression for the matrix element of a hard process.
PDFT pdf(tcPPtr parton) const
vector< DiagPtr > DiagramVector
Energy2 sHat() const
ShowerInteraction
Handy header file to be included in all Shower classes.
-*- C++ -*-
Ptr< BeamParticleData >::transient_const_pointer tcBeamPtr
A typedef for the BeamParticleData.
Definition: HwMEBase.h:20
ThePEG::Ptr< ParticleData >::transient_pointer tPDPtr
std::complex< double > Complex
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
ThePEG::Ptr< Particle >::pointer PPtr
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr