herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
SMTopDecayer.h
1 // -*- C++ -*-
2 //
3 // SMTopDecayer.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_SMTopDecayer_H
10 #define HERWIG_SMTopDecayer_H
11 //
12 // This is the declaration of the SMTopDecayer class.
13 //
14 
15 #include "Herwig/Decay/PerturbativeDecayer.h"
16 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h"
17 #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h"
18 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
19 #include "Herwig/Models/StandardModel/StandardModel.h"
20 #include "Herwig/Shower/ShowerAlpha.fh"
21 
22 namespace Herwig {
23  using namespace ThePEG;
24  using namespace ThePEG::Helicity;
25 
34 
35 public:
36 
40  SMTopDecayer();
41 
42 public:
43 
52  virtual bool hasMECorrection() {return true;}
53 
57  virtual void initializeMECorrection(RealEmissionProcessPtr , double & ,
58  double & );
59 
72  virtual bool softMatrixElementVeto(PPtr parent,
73  PPtr progenitor,
74  const bool & fs,
75  const Energy & highestpT,
76  const vector<tcPDPtr> & ids,
77  const double & z,
78  const Energy & scale,
79  const Energy & pT);
80 
84  virtual POWHEGType hasPOWHEGCorrection() {return FSR;}
86 
87 public:
88 
92  virtual int modeNumber(bool & , tcPDPtr , const tPDVector & ) const {return -1;}
93 
100  virtual bool accept(tcPDPtr parent, const tPDVector & children) const;
101 
108  virtual ParticleVector decay(const Particle & parent,
109  const tPDVector & children) const;
110 
119  virtual double me2(const int ichan, const Particle & part,
120  const ParticleVector & decay, MEOption meopt) const;
121 
127  virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
128 
139  virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2,
140  const Energy2 s, const Energy m1,
141  const Energy m2, const Energy m3) const;
142 
148  virtual void dataBaseOutput(ofstream & os,bool header) const;
149 
150 public:
151 
158  void persistentOutput(PersistentOStream & os) const;
159 
165  void persistentInput(PersistentIStream & is, int version);
167 
174  static void Init();
175 
176 protected:
177 
181  Energy6 dGammaIntegrand(Energy2 mffb2, Energy2 mbf2, Energy mt, Energy mb,
182  Energy mf, Energy mfb, Energy mw) const;
183 
184 protected:
185 
192  virtual IBPtr clone() const {return new_ptr(*this);}
193 
198  virtual IBPtr fullclone() const {return new_ptr(*this);}
200 
201 protected:
202 
210  virtual void doinit();
211 
216  virtual void doinitrun();
218 
219 protected:
220 
227  double xgbcut(double);
228 
234  double me(double xw, double xg);
235 
236 protected:
237 
241  virtual double matrixElementRatio(const Particle & inpart, const ParticleVector & decay2,
242  const ParticleVector & decay3, MEOption meopt,
243  ShowerInteraction inter);
244 
248  double loME(const Particle & inpart, const ParticleVector & decay);
249 
253  double realME(const Particle & inpart, const ParticleVector & decay,
254  ShowerInteraction inter);
255 
256 private:
257 
262  SMTopDecayer & operator=(const SMTopDecayer &) = delete;
263 
267  AbstractFFVVertexPtr FFWVertex_;
268 
272  AbstractFFVVertexPtr FFGVertex_;
273 
277  AbstractFFVVertexPtr FFPVertex_;
278 
282  AbstractVVVVertexPtr WWWVertex_;
283 
291  vector<double> _wquarkwgt;
292 
296  vector<double> _wleptonwgt;
298 
303 
307  mutable RhoDMatrix _rho;
308 
312  mutable vector<SpinorWaveFunction > _inHalf;
313 
317  mutable vector<SpinorWaveFunction > _outHalf;
318 
322  mutable vector<SpinorBarWaveFunction> _inHalfBar;
323 
327  mutable vector<SpinorBarWaveFunction> _outHalfBar;
328 
332  Energy _ma;
333 
337  Energy _mc;
338 
342  Energy _mt;
343 
347  Energy _mg;
348 
352  double _a;
353 
357  double _c;
358 
362  double _g;
363 
367  double _ktb;
368 
372  double _ktc;
373 
374 
379  double _xg_sampling;
380 
385 
390 };
391 
392 }
393 
394 #endif /* HERWIG_SMTopDecayer_H */
AbstractFFVVertexPtr FFPVertex_
Pointer to the photon vertex.
Definition: SMTopDecayer.h:277
ThePEG::Ptr< Particle >::pointer PPtr
Energy _mt
The top mass.
Definition: SMTopDecayer.h:342
double _g
The mass ratio for the gluon.
Definition: SMTopDecayer.h:362
double _ktb
Two times the energy fraction of a.
Definition: SMTopDecayer.h:367
ShowerInteraction
Handy header file to be included in all Shower classes.
vector< double > _wleptonwgt
Weight .
Definition: SMTopDecayer.h:296
vector< SpinorBarWaveFunction > _inHalfBar
1st barred spinor for the decay
Definition: SMTopDecayer.h:322
double _initialenhance
The enhancement factor for initial-state radiation.
Definition: SMTopDecayer.h:384
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: SMTopDecayer.h:192
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
Energy _ma
The mass of the W boson.
Definition: SMTopDecayer.h:332
AbstractFFVVertexPtr FFGVertex_
Pointer to the gluon vertex.
Definition: SMTopDecayer.h:272
RhoDMatrix _rho
Spin density matrix for the decay.
Definition: SMTopDecayer.h:307
vector< SpinorBarWaveFunction > _outHalfBar
2nd barred spinor for the decay
Definition: SMTopDecayer.h:327
MEOption
Enum for the matrix element option.
Energy _mc
The mass of the bottom quark.
Definition: SMTopDecayer.h:337
vector< tPDPtr > tPDVector
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:76
Energy _mg
The gluon mass.
Definition: SMTopDecayer.h:347
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
The PerturbativeDecayer class is the base class for perturbative decays in Herwig and implements the ...
ThePEG::Ptr< ParticleData >::pointer PDPtr
double _finalenhance
The enhancement factor for final-state radiation.
Definition: SMTopDecayer.h:389
double _ktc
Two times the energy fraction of the gluon.
Definition: SMTopDecayer.h:372
PDPtr _wplus
Pointer to the .
Definition: SMTopDecayer.h:302
vector< SpinorWaveFunction > _outHalf
2nd spinor for the decay
Definition: SMTopDecayer.h:317
double _c
The mass ratio for the bottom.
Definition: SMTopDecayer.h:357
-*- C++ -*-
virtual int modeNumber(bool &, tcPDPtr, const tPDVector &) const
Which of the possible decays is required.
Definition: SMTopDecayer.h:92
double _a
The mass ratio for the W.
Definition: SMTopDecayer.h:352
The SMTopDecayer performs decays of the top quark into the bottom quark and qqbar pairs or to the bot...
Definition: SMTopDecayer.h:33
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: SMTopDecayer.h:84
AbstractFFVVertexPtr FFWVertex_
Pointer to the W vertex.
Definition: SMTopDecayer.h:267
AbstractVVVVertexPtr WWWVertex_
Pointer to the photon vertex.
Definition: SMTopDecayer.h:282
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: SMTopDecayer.h:198
vector< PPtr > ParticleVector
vector< double > _wquarkwgt
Max weight for integration.
Definition: SMTopDecayer.h:291
virtual bool hasMECorrection()
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: SMTopDecayer.h:52
double _xg_sampling
This determines the hard matrix element importance sampling in _xg.
Definition: SMTopDecayer.h:379
vector< SpinorWaveFunction > _inHalf
1st spinor for the decay
Definition: SMTopDecayer.h:312