herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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/PhaseSpaceMode.h"
19#include "Herwig/Models/StandardModel/StandardModel.h"
20#include "Herwig/Shower/ShowerAlpha.fh"
21
22namespace Herwig {
23 using namespace ThePEG;
24 using namespace ThePEG::Helicity;
25
34
35public:
36
41
42public:
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
87public:
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
120 double me2(const int ichan,const Particle & part,
121 const tPDVector & outgoing,
122 const vector<Lorentz5Momentum> & momenta,
123 MEOption meopt) const;
124
128 virtual void constructSpinInfo(const Particle & part,
130
136 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
137
148 virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2,
149 const Energy2 s, const Energy m1,
150 const Energy m2, const Energy m3) const;
151
157 virtual void dataBaseOutput(ofstream & os,bool header) const;
158
159public:
160
168
174 void persistentInput(PersistentIStream & is, int version);
176
183 static void Init();
184
185protected:
186
190 Energy6 dGammaIntegrand(Energy2 mffb2, Energy2 mbf2, Energy mt, Energy mb,
191 Energy mf, Energy mfb, Energy mw) const;
192
193protected:
194
201 virtual IBPtr clone() const {return new_ptr(*this);}
202
207 virtual IBPtr fullclone() const {return new_ptr(*this);}
209
210protected:
211
219 virtual void doinit();
220
225 virtual void doinitrun();
227
228protected:
229
236 double xgbcut(double);
237
243 double me(double xw, double xg);
244
245protected:
246
250 virtual double matrixElementRatio(const Particle & inpart, const ParticleVector & decay2,
251 const ParticleVector & decay3, MEOption meopt,
252 ShowerInteraction inter);
253
257 double loME(const Particle & inpart, const ParticleVector & decay);
258
262 double realME(const Particle & inpart, const ParticleVector & decay,
263 ShowerInteraction inter);
264
265private:
266
272
276 AbstractFFVVertexPtr FFWVertex_;
277
281 AbstractFFVVertexPtr FFGVertex_;
282
286 AbstractFFVVertexPtr FFPVertex_;
287
291 AbstractVVVVertexPtr WWWVertex_;
292
300 vector<double> _wquarkwgt;
301
305 vector<double> _wleptonwgt;
307
312
317
321 mutable vector<SpinorWaveFunction > _inHalf;
322
326 mutable vector<SpinorWaveFunction > _outHalf;
327
331 mutable vector<SpinorBarWaveFunction> _inHalfBar;
332
336 mutable vector<SpinorBarWaveFunction> _outHalfBar;
337
341 Energy _ma;
342
346 Energy _mc;
347
351 Energy _mt;
352
356 Energy _mg;
357
361 double _a;
362
366 double _c;
367
371 double _g;
372
376 double _ktb;
377
381 double _ktc;
382
383
389
394
399};
400
401}
402
403#endif /* HERWIG_SMTopDecayer_H */
int imode() const
The mode being used for this decay.
MEOption
Enum for the matrix element option.
POWHEGType
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: HwDecayerBase.h:76
The PerturbativeDecayer class is the base class for perturbative decays in Herwig and implements the ...
const Energy & mb() const
Mass of decaying particle.
const Energy & pT() const
Access to the kinematics for inheriting classes.
const double & s() const
Reduced mass of spectator child particle.
The SMTopDecayer performs decays of the top quark into the bottom quark and qqbar pairs or to the bot...
Definition: SMTopDecayer.h:33
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Definition: SMTopDecayer.h:207
Energy _mg
The gluon mass.
Definition: SMTopDecayer.h:356
double _finalenhance
The enhancement factor for final-state radiation.
Definition: SMTopDecayer.h:398
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< SpinorWaveFunction > _outHalf
2nd spinor for the decay
Definition: SMTopDecayer.h:326
AbstractFFVVertexPtr FFGVertex_
Pointer to the gluon vertex.
Definition: SMTopDecayer.h:281
double me2(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Return the matrix element squared for a given mode and phase-space channel.
AbstractFFVVertexPtr FFPVertex_
Pointer to the photon vertex.
Definition: SMTopDecayer.h:286
virtual POWHEGType hasPOWHEGCorrection()
Has a POWHEG style correction.
Definition: SMTopDecayer.h:84
PDPtr _wplus
Pointer to the .
Definition: SMTopDecayer.h:311
vector< SpinorBarWaveFunction > _outHalfBar
2nd barred spinor for the decay
Definition: SMTopDecayer.h:336
RhoDMatrix _rho
Spin density matrix for the decay.
Definition: SMTopDecayer.h:316
vector< SpinorBarWaveFunction > _inHalfBar
1st barred spinor for the decay
Definition: SMTopDecayer.h:331
vector< SpinorWaveFunction > _inHalf
1st spinor for the decay
Definition: SMTopDecayer.h:321
SMTopDecayer()
The default constructor.
double realME(const Particle &inpart, const ParticleVector &decay, ShowerInteraction inter)
LO matrix element for .
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.
Energy _mc
The mass of the bottom quark.
Definition: SMTopDecayer.h:346
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
AbstractFFVVertexPtr FFWVertex_
Pointer to the W vertex.
Definition: SMTopDecayer.h:276
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
double xgbcut(double)
This function determines the point ( ) where the condition that be real supersedes that due to the e...
virtual bool hasMECorrection()
Virtual members to be overridden by inheriting classes which implement hard corrections.
Definition: SMTopDecayer.h:52
virtual IBPtr clone() const
Make a simple clone of this object.
Definition: SMTopDecayer.h:201
double _xg_sampling
This determines the hard matrix element importance sampling in _xg.
Definition: SMTopDecayer.h:388
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
virtual bool accept(tcPDPtr parent, const tPDVector &children) const
Check if this decayer can perfom the decay for a particular mode.
vector< double > _wleptonwgt
Weight .
Definition: SMTopDecayer.h:305
vector< double > _wquarkwgt
Max weight for integration.
Definition: SMTopDecayer.h:300
virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2, const Energy2 s, const Energy m1, const Energy m2, const Energy m3) const
The differential three body decay rate with one integral performed.
double _ktc
Two times the energy fraction of the gluon.
Definition: SMTopDecayer.h:381
static void Init()
The standard Init function used to initialize the interfaces.
double _ktb
Two times the energy fraction of a.
Definition: SMTopDecayer.h:376
Energy6 dGammaIntegrand(Energy2 mffb2, Energy2 mbf2, Energy mt, Energy mb, Energy mf, Energy mfb, Energy mw) const
The integrand for the integrate partial width.
virtual int modeNumber(bool &, tcPDPtr, const tPDVector &) const
Which of the possible decays is required.
Definition: SMTopDecayer.h:92
double loME(const Particle &inpart, const ParticleVector &decay)
LO matrix element for .
virtual void initializeMECorrection(RealEmissionProcessPtr, double &, double &)
Initialize the ME correction.
double _a
The mass ratio for the W.
Definition: SMTopDecayer.h:361
AbstractVVVVertexPtr WWWVertex_
Pointer to the photon vertex.
Definition: SMTopDecayer.h:291
double me(double xw, double xg)
Full matrix element with a factor of removed.
double _g
The mass ratio for the gluon.
Definition: SMTopDecayer.h:371
virtual double matrixElementRatio(const Particle &inpart, const ParticleVector &decay2, const ParticleVector &decay3, MEOption meopt, ShowerInteraction inter)
Calculate matrix element ratio R/B.
double _c
The mass ratio for the bottom.
Definition: SMTopDecayer.h:366
SMTopDecayer & operator=(const SMTopDecayer &)=delete
The assignment operator is private and must never be called.
Energy _mt
The top mass.
Definition: SMTopDecayer.h:351
virtual ParticleVector decay(const Particle &parent, const tPDVector &children) const
For a given decay mode and a given particle instance, perform the decay and return the decay products...
Energy _ma
The mass of the W boson.
Definition: SMTopDecayer.h:341
double _initialenhance
The enhancement factor for initial-state radiation.
Definition: SMTopDecayer.h:393
virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode &dm) const
Method to return an object to calculate the 3 (or higher body) partial width.
virtual void doinitrun()
Initialize this object.
ShowerInteraction
Handy header file to be included in all Shower classes.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
ThePEG::Ptr< Particle >::pointer PPtr
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::Ptr< ParticleData >::pointer PDPtr