herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
26 namespace Herwig {
27 using namespace ThePEG;
28 using namespace ThePEG::Helicity;
29 
38 class MEPP2Higgs: public HwMEBase {
39 
40 public:
41 
45  MEPP2Higgs();
46 
52  virtual CrossSection dSigHatDR() const;
53 
59  virtual void setKinematics() {
61  mh2_ = sHat();
62  }
63 
64 public:
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 
117 public:
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 
176  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
177 
185  virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const;
186 
190  virtual void constructVertex(tSubProPtr);
192 
193 public:
194 
201  void persistentOutput(PersistentOStream & os) const;
202 
208  void persistentInput(PersistentIStream & is, int version);
210 
217  static void Init();
218 
219 protected:
220 
227  virtual IBPtr clone() const { return new_ptr(*this); }
228 
233  virtual IBPtr fullclone() const { return new_ptr(*this); }
235 
236 protected:
237 
245  virtual void doinit();
246 
251  virtual void dofinish();
253 
254 protected:
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 
370  bool applyHard(ParticleVector gluons,
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 
396 private:
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 
434 private:
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 
571  double channelwgtA_;
572 
576  double channelwgtB_;
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 */
Ptr< BeamParticleData >::transient_const_pointer tcBeamPtr
A typedef for the BeamParticleData.
Definition: HwMEBase.h:20
Energy pt_
The transverse momentum of the jet.
Definition: MEPP2Higgs.h:694
ThePEG::Ptr< Particle >::pointer PPtr
double pregqbar_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:644
unsigned int scaleopt_
Selects a dynamic (sHat) or fixed factorization scale.
Definition: MEPP2Higgs.h:439
bool spinCorrelations_
Whether of not to construct the vertex for spin correlations.
Definition: MEPP2Higgs.h:705
Energy mh_
On-shell mass for the higgs.
Definition: MEPP2Higgs.h:489
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEPP2Higgs.h:227
double maxwgt_
Maximum weight.
Definition: MEPP2Higgs.h:618
double yj_
the rapidity of the jet
Definition: MEPP2Higgs.h:689
int minFlavour_
Minimum flavour of incoming quarks.
Definition: MEPP2Higgs.h:459
std::complex< double > Complex
ShowerInteraction
Handy header file to be included in all Shower classes.
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
ShowerAlphaPtr alpha_
Pointer to the object calculating the strong coupling.
Definition: MEPP2Higgs.h:561
AbstractVVSVertexPtr HGGVertex_
Pointer to the H-> 2 gluon vertex (used in gg->H)
Definition: MEPP2Higgs.h:474
double channelwgtA_
Relative weight of the to the channel.
Definition: MEPP2Higgs.h:571
ThePEG::Ptr< ParticleData >::transient_pointer tPDPtr
virtual bool hasMECorrection()
Has an old fashioned ME correction.
Definition: MEPP2Higgs.h:76
double channelwgtB_
Relative weight for the to the channel.
Definition: MEPP2Higgs.h:576
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: MEPP2Higgs.h:71
tcPDPtr out_
The outgoing parton.
Definition: MEPP2Higgs.h:699
double preqg_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:639
unsigned int ngen_
Number which suceed.
Definition: MEPP2Higgs.h:613
vector< double > prefactor_
The prefactors as a vector for easy use.
Definition: MEPP2Higgs.h:649
Energy minpT_
The transverse momentum of the jet.
Definition: MEPP2Higgs.h:655
unsigned int mu_R_opt_
Option for dynamic scale choice in alpha_S (0=mT,>0=pT)
Definition: MEPP2Higgs.h:523
double power_
Constants for the sampling.
Definition: MEPP2Higgs.h:629
ProductionMatrixElement me_
Matrix element for spin correlations.
Definition: MEPP2Higgs.h:469
GenericMassGeneratorPtr hmass_
The mass generator for the Higgs.
Definition: MEPP2Higgs.h:484
Energy2 mh2_
Mass squared of Higgs.
Definition: MEPP2Higgs.h:566
unsigned int nover_
Number of weights greater than 1.
Definition: MEPP2Higgs.h:603
unsigned int minLoop_
Stuff for the ME correction.
Definition: MEPP2Higgs.h:508
unsigned int shapeOption_
Defines the Higgs resonance shape.
Definition: MEPP2Higgs.h:449
The storage of the helicity amplitude expression for the matrix element of a hard process...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: MEPP2Higgs.h:233
vector< double > channelWeights_
Weights for the channels as a vector.
Definition: MEPP2Higgs.h:581
unsigned int maxLoop_
Maximum flavour of quarks to include in the loops.
Definition: MEPP2Higgs.h:513
Energy mu_F_
The value associated to the fixed factorization scale option.
Definition: MEPP2Higgs.h:444
Energy mass_
The mass of the Higgs boson.
Definition: MEPP2Higgs.h:684
double qgPow_
Power for the importance sampling of the and components.
Definition: MEPP2Higgs.h:593
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
unsigned int ntry_
Number of attempts.
Definition: MEPP2Higgs.h:608
vector< tcPDPtr > partons_
Pointers to the ParticleDataObjects for the partons.
Definition: MEPP2Higgs.h:669
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:87
int maxFlavour_
Maximum flavour of incoming quarks.
Definition: MEPP2Higgs.h:464
Energy wh_
On-shell width for the higgs.
Definition: MEPP2Higgs.h:494
The MEPP2Higgs class implements the matrix element for the process pp->Higgs with different Higgs sha...
Definition: MEPP2Higgs.h:38
virtual void setKinematics()
Set the typed and momenta of the incoming and outgoing partons to be used in subsequent calls to me()...
static const complex< Energy2 > epsi_
Small complex number to regularize some integrals.
Definition: MEPP2Higgs.h:536
double enhance_
The enhancement factor for initial-state radiation.
Definition: MEPP2Higgs.h:598
vector< DiagPtr > DiagramVector
vector< tcBeamPtr > beams_
Properties of the incoming particles.
Definition: MEPP2Higgs.h:664
-*- C++ -*-
double pregg_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:634
unsigned int mu_F_opt_
Option for dynamic scale choice in PDFs (0=mT,>0=pT)
Definition: MEPP2Higgs.h:528
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:35
double yh_
Properties of the boson and jets.
Definition: MEPP2Higgs.h:679
vector< PPtr > ParticleVector
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
AbstractFFSVertexPtr HFFVertex_
Pointer to the fermion-fermion Higgs vertex (used in qq->H)
Definition: MEPP2Higgs.h:479
double ggPow_
Power for the importance sampling of the component.
Definition: MEPP2Higgs.h:587