herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
HQETRadiativeDecayer.h
1// -*- C++ -*-
2#ifndef Herwig_HQETRadiativeDecayer_H
3#define Herwig_HQETRadiativeDecayer_H
4//
5// This is the declaration of the HQETRadiativeDecayer class.
6//
7
8#include "Herwig/Decay/DecayIntegrator.h"
9#include "Herwig/Decay/PhaseSpaceMode.h"
10#include "ThePEG/Helicity/LorentzPolarizationVector.h"
11
12namespace Herwig {
13
14using namespace ThePEG;
15
24
25public:
26
30 HQETRadiativeDecayer() : Ch_(0.76), Lambda_(1.*GeV)
31 {}
32
39 virtual int modeNumber(bool & cc, tcPDPtr parent,
40 const tPDVector & children) const;
41
51 double me2(const int ichan,const Particle & part,
52 const tPDVector & outgoing,
53 const vector<Lorentz5Momentum> & momenta,
54 MEOption meopt) const;
55
59 virtual void constructSpinInfo(const Particle & part,
61
70 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
71
77 virtual void dataBaseOutput(ofstream & os,bool header) const;
78
79public:
80
88
94 void persistentInput(PersistentIStream & is, int version);
96
103 static void Init();
104
105protected:
106
113 virtual IBPtr clone() const;
114
119 virtual IBPtr fullclone() const;
121
122protected:
123
131 virtual void doinit();
132
136 virtual void doinitrun();
138
139private:
140
146
147public:
148
152 string setUpDecayMode(string arg);
153
154private:
155
160
164 double Ch_;
166
171 Energy Lambda_;
173
181 vector<int> incoming_;
182
186 vector<int> outgoing_;
187
191 vector<int> type_;
192
196 vector<InvEnergy> coupling_;
197
201 vector<double> maxWeight_;
203
212
216 mutable vector<Helicity::LorentzPolarizationVector> vecIn_;
217
221 mutable vector<Helicity::LorentzTensor<double> > tensorIn_;
222
226 mutable vector<Helicity::LorentzPolarizationVector> vecOut_;
228
229};
230
231}
232
233#endif /* Herwig_HQETRadiativeDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The HQETRadiativeDecayer class implements the electromagnetic decays of excited heavy,...
HQETRadiativeDecayer & operator=(const HQETRadiativeDecayer &)=delete
The assignment operator is private and must never be called.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< Helicity::LorentzPolarizationVector > vecOut_
Storage of polarization vectors of the decay product.
double Ch_
Coupings for the decays.
Energy Lambda_
A momentum scale characterising the convergence of the derivative expansion.
bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
static void Init()
The standard Init function used to initialize the interfaces.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
vector< int > incoming_
Particles etc for thye different modes.
vector< Helicity::LorentzPolarizationVector > vecIn_
Storage of polarization vectors of the decaying particle.
vector< InvEnergy > coupling_
Coupling for the decay.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< double > maxWeight_
the maximum weight for the decay
vector< int > type_
Type of decay.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
RhoDMatrix rho_
Storage of wavefunctions etx.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< Helicity::LorentzTensor< double > > tensorIn_
Storage of polarization tensors of the decaying particle.
HQETRadiativeDecayer()
The default constructor.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
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.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< int > outgoing_
the PDG codes for outgoing heavy meson
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr