herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
MEPP2Higgs.h
1 // -*- C++ -*-
2 //
3 // MEPP2Higgs.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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/Core/Couplings/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 
97  virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial,
98  ShowerParticlePtr parent,
99  Branching br);
100 
104  virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr,
107 
108 public:
109 
116  virtual unsigned int orderInAlphaS() const;
117 
122  virtual unsigned int orderInAlphaEW() const;
123 
131  virtual double me2() const;
132 
141  virtual bool generateKinematics(const double * r);
142 
146  virtual Energy2 scale() const;
147 
152  virtual int nDim() const;
153 
157  virtual void getDiagrams() const;
158 
167  virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
168 
176  virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const;
177 
181  virtual void constructVertex(tSubProPtr);
183 
184 public:
185 
192  void persistentOutput(PersistentOStream & os) const;
193 
199  void persistentInput(PersistentIStream & is, int version);
201 
208  static void Init();
209 
210 protected:
211 
218  virtual IBPtr clone() const { return new_ptr(*this); }
219 
224  virtual IBPtr fullclone() const { return new_ptr(*this); }
226 
227 protected:
228 
236  virtual void doinit();
237 
242  virtual void dofinish();
244 
245 protected:
246 
254  Energy4 loME() const;
255 
259  Energy2 ggME(Energy2 s, Energy2 t, Energy2 u);
260 
264  Energy2 qgME(Energy2 s, Energy2 t, Energy2 u);
265 
269  Energy2 qbargME(Energy2 s, Energy2 t, Energy2 u);
271 
281  Complex B(Energy2 s,Energy2 mf2) const;
282 
288  complex<InvEnergy2> C(Energy2 s,Energy2 mf2) const;
289 
297  complex<InvEnergy4> D(Energy2 s,Energy2 t, Energy2 u,Energy2 mf2) const;
298 
306  Complex dIntegral(Energy2 a, Energy2 b, double y0) const;
307 
321  complex<Energy> me1(Energy2 s,Energy2 t,Energy2 u, Energy2 mf2,
322  unsigned int i,unsigned int j, unsigned int k,
323  unsigned int i1,unsigned int j1, unsigned int k1) const;
324 
332  complex<Energy> me2(Energy2 s,Energy2 t,Energy2 u, Energy2 mf2) const;
333 
337  Complex F(double x) const;
339 
344  tPDPtr quarkFlavour(tcPDFPtr pdf, Energy2 scale, double x, tcBeamPtr beam,
345  double & pdfweight, bool anti);
346 
361  bool applyHard(ParticleVector gluons,
362  vector<tcBeamPtr> beams,
363  PPtr higgs,unsigned int & iemit,
364  unsigned int & itype,vector<Lorentz5Momentum> & pnew,
365  pair<double,double> & xnew,
366  tPDPtr & out);
367 
374  bool getEvent(vector<Lorentz5Momentum> & pnew,int & emissiontype);
375 
385  double getResult(int emis_type, Energy pt, double yj,tcPDPtr & outParton);
386 
387 private:
388 
394 
399  MEPP2Higgs & operator=(const MEPP2Higgs &) = delete;
401 
413  double ggME(vector<VectorWaveFunction> g1,
414  vector<VectorWaveFunction> g2,
416  bool calc) const;
417 
425  double qqME(vector<SpinorWaveFunction> & fin,
426  vector<SpinorBarWaveFunction> & ain,
428  bool calc) const;
430 
431 private:
432 
436  unsigned int scaleopt_;
437 
441  Energy mu_F_;
442 
446  unsigned int shapeOption_;
447 
451  unsigned int processOption_;
452 
457 
462 
467 
471  AbstractVVSVertexPtr HGGVertex_;
472 
476  AbstractFFSVertexPtr HFFVertex_;
477 
481  GenericMassGeneratorPtr hmass_;
482 
486  Energy mh_;
487 
491  Energy wh_;
492 
505  unsigned int minLoop_;
506 
510  unsigned int maxLoop_;
511 
515  unsigned int massOption_;
516 
520  unsigned int mu_R_opt_;
521 
525  unsigned int mu_F_opt_;
527 
529 
533  static const complex<Energy2> epsi_;
534 
542  mutable Complex bi_[5];
543 
547  mutable complex<InvEnergy2> ci_[8];
548 
552  mutable complex<InvEnergy4> di_[4];
554 
558  ShowerAlphaPtr alpha_;
559 
563  Energy2 mh2_;
564 
568  double channelwgtA_;
569 
573  double channelwgtB_;
574 
578  vector<double> channelWeights_;
579 
584  double ggPow_;
585 
590  double qgPow_;
591 
595  double enhance_;
596 
600  unsigned int nover_;
601 
605  unsigned int ntry_;
606 
610  unsigned int ngen_;
611 
615  double maxwgt_;
617 
626  double power_;
627 
631  double pregg_;
632 
636  double preqg_;
637 
641  double pregqbar_;
642 
646  vector<double> prefactor_;
648 
652  Energy minpT_;
653 
661  vector<tcBeamPtr> beams_;
662 
666  vector<tcPDPtr> partons_;
668 
676  double yh_;
677 
681  Energy mass_;
682 
686  double yj_;
687 
691  Energy pt_;
692 
698 
703 
704 };
705 
706 }
707 
708 #include "ThePEG/Utilities/ClassTraits.h"
709 
710 namespace ThePEG {
711 
715 template <>
716 struct BaseClassTrait<Herwig::MEPP2Higgs,1> {
718  typedef Herwig::HwMEBase NthBase;
719 };
720 
723 template <>
724 struct ClassTraits<Herwig::MEPP2Higgs>
725  : public ClassTraitsBase<Herwig::MEPP2Higgs> {
727  static string className() { return "Herwig::MEPP2Higgs"; }
735  static string library() { return "HwMEHadron.so"; }
736 };
737 
740 }
741 
742 #endif /* HERWIG_MEPP2Higgs_H */
Ptr< BeamParticleData >::transient_const_pointer tcBeamPtr
A typedef for the BeamParticleData.
Definition: HwMEBase.h:22
Energy pt_
The transverse momentum of the jet.
Definition: MEPP2Higgs.h:691
ThePEG::Ptr< Particle >::pointer PPtr
double pregqbar_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:641
unsigned int scaleopt_
Selects a dynamic (sHat) or fixed factorization scale.
Definition: MEPP2Higgs.h:436
bool spinCorrelations_
Whether of not to construct the vertex for spin correlations.
Definition: MEPP2Higgs.h:702
Energy mh_
On-shell mass for the higgs.
Definition: MEPP2Higgs.h:486
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: MEPP2Higgs.h:218
double maxwgt_
Maximum weight.
Definition: MEPP2Higgs.h:615
double yj_
the rapidity of the jet
Definition: MEPP2Higgs.h:686
int minFlavour_
Minimum flavour of incoming quarks.
Definition: MEPP2Higgs.h:456
ShowerInteraction
Handy header file to be included in all Shower classes.
unsigned int massOption_
Option for treatment of the fermion loops.
Definition: MEPP2Higgs.h:515
unsigned int processOption_
The processes to be included (GG->H and/or qq->H)
Definition: MEPP2Higgs.h:451
ShowerAlphaPtr alpha_
Pointer to the object calculating the strong coupling.
Definition: MEPP2Higgs.h:558
AbstractVVSVertexPtr HGGVertex_
Pointer to the H-> 2 gluon vertex (used in gg->H)
Definition: MEPP2Higgs.h:471
static ClassDescription< MEPP2Higgs > initMEPP2Higgs
The static object used to initialize the description of this class.
Definition: MEPP2Higgs.h:393
double channelwgtA_
Relative weight of the to the channel.
Definition: MEPP2Higgs.h:568
std::complex< double > Complex
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:573
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:696
double preqg_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:636
unsigned int ngen_
Number which suceed.
Definition: MEPP2Higgs.h:610
vector< double > prefactor_
The prefactors as a vector for easy use.
Definition: MEPP2Higgs.h:646
Energy minpT_
The transverse momentum of the jet.
Definition: MEPP2Higgs.h:652
unsigned int mu_R_opt_
Option for dynamic scale choice in alpha_S (0=mT,>0=pT)
Definition: MEPP2Higgs.h:520
double power_
Constants for the sampling.
Definition: MEPP2Higgs.h:626
ProductionMatrixElement me_
Matrix element for spin correlations.
Definition: MEPP2Higgs.h:466
GenericMassGeneratorPtr hmass_
The mass generator for the Higgs.
Definition: MEPP2Higgs.h:481
Energy2 mh2_
Mass squared of Higgs.
Definition: MEPP2Higgs.h:563
unsigned int nover_
Number of weights greater than 1.
Definition: MEPP2Higgs.h:600
unsigned int minLoop_
Stuff for the ME correction.
Definition: MEPP2Higgs.h:505
unsigned int shapeOption_
Defines the Higgs resonance shape.
Definition: MEPP2Higgs.h:446
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:224
vector< double > channelWeights_
Weights for the channels as a vector.
Definition: MEPP2Higgs.h:578
unsigned int maxLoop_
Maximum flavour of quarks to include in the loops.
Definition: MEPP2Higgs.h:510
Energy mu_F_
The value associated to the fixed factorization scale option.
Definition: MEPP2Higgs.h:441
Energy mass_
The mass of the Higgs boson.
Definition: MEPP2Higgs.h:681
double qgPow_
Power for the importance sampling of the and components.
Definition: MEPP2Higgs.h:590
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::Ptr< SubProcess >::transient_pointer tSubProPtr
unsigned int ntry_
Number of attempts.
Definition: MEPP2Higgs.h:605
The branching struct is used to store information on the branching.
Definition: Branching.h:20
vector< tcPDPtr > partons_
Pointers to the ParticleDataObjects for the partons.
Definition: MEPP2Higgs.h:666
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:89
int maxFlavour_
Maximum flavour of incoming quarks.
Definition: MEPP2Higgs.h:461
Energy wh_
On-shell width for the higgs.
Definition: MEPP2Higgs.h:491
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:533
double enhance_
The enhancement factor for initial-state radiation.
Definition: MEPP2Higgs.h:595
vector< DiagPtr > DiagramVector
vector< tcBeamPtr > beams_
Properties of the incoming particles.
Definition: MEPP2Higgs.h:661
-*- C++ -*-
double pregg_
The prefactor, for the channel.
Definition: MEPP2Higgs.h:631
unsigned int mu_F_opt_
Option for dynamic scale choice in PDFs (0=mT,>0=pT)
Definition: MEPP2Higgs.h:525
The HwMEBase class serves a number of purposes.
Definition: HwMEBase.h:37
double yh_
Properties of the boson and jets.
Definition: MEPP2Higgs.h:676
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:476
double ggPow_
Power for the importance sampling of the component.
Definition: MEPP2Higgs.h:584