herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
MEPP2HiggsVBF.h
1 // -*- C++ -*-
2 #ifndef HERWIG_MEPP2HiggsVBF_H
3 #define HERWIG_MEPP2HiggsVBF_H
4 //
5 // This is the declaration of the MEPP2HiggsVBF class.
6 //
7 
8 #include "Herwig/MatrixElement/MEfftoffH.h"
9 #include "Herwig/Shower/ShowerAlpha.h"
10 
11 namespace Herwig {
12 
13 using namespace ThePEG;
14 
23 class MEPP2HiggsVBF: public MEfftoffH {
24 
28  struct tChannelPair{
29 
34 
39 
44 
49 
54  };
55 
56 public:
57 
61  MEPP2HiggsVBF();
62 
65 
69  virtual void getDiagrams() const;
71 
80  virtual POWHEGType hasPOWHEGCorrection() {return Both;}
81 
85  virtual bool hasMECorrection() {return true;}
86 
90  virtual void initializeMECorrection(RealEmissionProcessPtr, double &,
91  double & );
92 
96  virtual RealEmissionProcessPtr applyHardMatrixElementCorrection(RealEmissionProcessPtr);
97 
110  virtual bool softMatrixElementVeto(PPtr parent,
111  PPtr progenitor,
112  const bool & fs,
113  const Energy & highestpT,
114  const vector<tcPDPtr> & ids,
115  const double & z,
116  const Energy & scale,
117  const Energy & pT);
118 
122  virtual RealEmissionProcessPtr generateHardest(RealEmissionProcessPtr,
125 
126 public:
127 
134  void persistentOutput(PersistentOStream & os) const;
135 
141  void persistentInput(PersistentIStream & is, int version);
143 
150  static void Init();
151 
152 protected:
153 
161  void generateCompton(unsigned int system);
162 
166  void generateBGF(unsigned int system);
167 
171  double comptonME(unsigned int system,
172  double xT,double xp, double zp, double phi);
173 
177  double BGFME(unsigned int system,
178  double xT,double xp, double zp, double phi);
179 
183  Energy4 loMatrixElement(const Lorentz5Momentum &p1,
184  const Lorentz5Momentum &p2,
185  const Lorentz5Momentum &q1,
186  const Lorentz5Momentum &q2,
187  double G1, double G2) const;
189 
199  double generateComptonPoint(double &xp, double & zp);
200 
206  double generateBGFPoint(double &xp, double & zp);
207 
220  vector<double> ComptonME(double xp, double x2, double xperp,
223 
237  vector<double> BGFME(double xp, double x2, double x3, double xperp,
240 
244  double A(tcPDPtr qin1, tcPDPtr qout1, tcPDPtr qin2, tcPDPtr qout2);
246 
247 protected:
248 
256  virtual void doinit();
257 
262  virtual void dofinish();
264 
265 protected:
266 
273  virtual IBPtr clone() const { return new_ptr(*this); }
274 
279  virtual IBPtr fullclone() const { return new_ptr(*this); }
281 
282 private:
283 
288  MEPP2HiggsVBF & operator=(const MEPP2HiggsVBF &) = delete;
289 
290 private:
291 
299  ShowerAlphaPtr alpha_;
300 
305 
309  double BGFWeight_;
310 
314  Energy pTmin_;
315 
321 
329  tcBeamPtr beam_[2];
330 
334  tcPDFPtr pdf_[2];
335 
339  tcPDPtr partons_[2][4];
340 
344  Lorentz5Momentum q_[2];
345 
349  Energy2 q2_[2];
350 
354  double acoeff_;
355 
360 
365 
369  double xB_[2];
370 
375 
379  Lorentz5Momentum pother_[2][2];
380 
384  Lorentz5Momentum psystem_[2][2];
385 
389  Lorentz5Momentum phiggs_[2];
390 
394  Energy pTCompton_[2];
395 
399  Energy pTBGF_[2];
400 
404  bool ComptonISFS_[2];
405 
409  vector<Lorentz5Momentum> ComptonMomenta_[2];
410 
414  vector<Lorentz5Momentum> BGFMomenta_[2];
415 
419  vector<tChannelPair> systems_;
420 
426 
434  double initial_;
435 
439  double final_;
440 
444  double procProb_;
445 
449  double comptonInt_;
450 
454  double bgfInt_;
455 
459  unsigned int nover_;
460 
464  pair<double,double> maxwgt_;
466 
467 };
468 
469 }
470 
471 #endif /* HERWIG_MEPP2HiggsVBF_H */
ShowerAlphaPtr alpha_
Parameters for the hard POWHEG emission.
Ptr< BeamParticleData >::transient_const_pointer tcBeamPtr
A typedef for the BeamParticleData.
Definition: HwMEBase.h:20
PPtr incoming
The incoming particle.
Definition: MEPP2HiggsVBF.h:43
double comptonInt_
Integral for compton process.
ThePEG::Ptr< Particle >::pointer PPtr
PPtr higgs_
Higgs boson.
double comptonWeight_
Weight for the compton channel.
virtual POWHEGType hasPOWHEGCorrection()
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: MEPP2HiggsVBF.h:80
ShowerInteraction
Handy header file to be included in all Shower classes.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double acoeff_
Coupling factor.
The MEPP2HiggsVBF class provides the matrix elements for the production of the Higgs boson via the ve...
Definition: MEPP2HiggsVBF.h:23
double bgfInt_
Integral for BGF process.
ThePEG::Ptr< PDFBase >::transient_const_pointer tcPDFPtr
PPtr outgoing
The outgoing particle.
Definition: MEPP2HiggsVBF.h:48
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Struct to contain the hadronic system.
Definition: MEPP2HiggsVBF.h:28
virtual IBPtr clone() const
Make a simple clone of this object.
PDPtr gluon_
Gluon particle data object.
double procProb_
Relative fraction of compton and BGF processes to generate.
The MEfftoffH class is the base class for vector boson fusion type processes in Herwig.
Definition: MEfftoffH.h:25
double final_
Enchancement factor for FSR.
pair< double, double > maxwgt_
Maximum weight.
Energy pTmin_
Minimum value of .
virtual bool hasMECorrection()
Has an old fashioned ME correction.
Definition: MEPP2HiggsVBF.h:85
LorentzVector< double > l_
Lorentz vectors for the matrix element.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
double BGFWeight_
Weight for the BGF channel.
ThePEG::Ptr< ParticleData >::pointer PDPtr
LorentzVector< double > m_
Lorentz vectors for the matrix element.
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwMEBase.h:87
double initial_
Parameters for the matrix element correction.
tcBeamPtr beam
The beam particle data object.
Definition: MEPP2HiggsVBF.h:38
-*- C++ -*-
unsigned int nover_
Number of weights greater than 1.
vector< tChannelPair > systems_
the systems