herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
HQETStrongDecayer.h
1// -*- C++ -*-
2#ifndef Herwig_HQETStrongDecayer_H
3#define Herwig_HQETStrongDecayer_H
4//
5// This is the declaration of the HQETStrongDecayer class.
6//
7
8#include "Herwig/Decay/DecayIntegrator.h"
9#include "Herwig/PDT/HeavyMesonWidthGenerator.fh"
10#include "Herwig/Decay/PhaseSpaceMode.h"
11#include "ThePEG/Helicity/LorentzPolarizationVector.h"
12#include "ThePEG/Helicity/LorentzRank3Tensor.h"
13
14namespace Herwig {
15
16using namespace ThePEG;
17
26
31
32public:
33
38
45 virtual int modeNumber(bool & cc, tcPDPtr parent,
46 const tPDVector & children) const;
47
57 double me2(const int ichan,const Particle & part,
58 const tPDVector & outgoing,
59 const vector<Lorentz5Momentum> & momenta,
60 MEOption meopt) const;
61
65 virtual void constructSpinInfo(const Particle & part,
67
76 bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
77
83 virtual void dataBaseOutput(ofstream & os,bool header) const;
84
85public:
86
94
100 void persistentInput(PersistentIStream & is, int version);
102
109 static void Init();
110
111protected:
112
119 virtual IBPtr clone() const;
120
125 virtual IBPtr fullclone() const;
127
128protected:
129
137 virtual void doinit();
138
142 virtual void doinitrun();
144
145private:
146
152
153public:
154
158 string setUpDecayMode(string arg);
159
160private:
161
169 Energy fPi_;
170
174 double g_;
175
179 double gp_;
180
184 double h_;
185
189 double hp_;
190
194 double k_;
195
199 double kp_;
200
204 double gtilde_;
205
209 double psiL_;
210
214 double psiS_;
215
219 double deltaEta_;
221
226 Energy Lambda_;
228
236 vector<long> incoming_;
237
241 vector<pair<long,long> > outgoing_;
242
246 vector<double> maxWeight_;
248
257
261 mutable vector<Helicity::LorentzPolarizationVector> vecIn_;
262
266 mutable vector<Helicity::LorentzTensor<double> > tensorIn_;
267
271 mutable vector<Helicity::LorentzRank3Tensor<double> > spin3In_;
272
276 mutable vector<Helicity::LorentzPolarizationVector> vecOut_;
278
279};
280
281}
282
283#endif /* Herwig_HQETStrongDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
MEOption
Enum for the matrix element option.
The HQETStrongDecayer class implements the strong decays of excited heavy, i.e.
bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
double k_
Coupling for decays from the multiplet.
double gtilde_
Coupling for decays from the 2S multiplet.
virtual void doinitrun()
Initialize this object to the begining of the run phase.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
vector< pair< long, long > > outgoing_
the PDG codes for outgoing heavy meson
virtual IBPtr clone() const
Make a simple clone of this object.
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.
RhoDMatrix rho_
Storage of wavefunctions etx.
vector< double > maxWeight_
the maximum weight for the decay
vector< Helicity::LorentzPolarizationVector > vecIn_
Storage of polarization vectors of the decaying particle.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< Helicity::LorentzPolarizationVector > vecOut_
Storage of polarization vectors of the decay product.
vector< Helicity::LorentzRank3Tensor< double > > spin3In_
Storage of polarization tensors of the decaying particle.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
double deltaEta_
mixing for isospin violating decays
double psiL_
D_1 mixing angle (up and down)
vector< long > incoming_
Particles etc for thye different modes.
double h_
Coupling for decays from the multiplet.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
HQETStrongDecayer & operator=(const HQETStrongDecayer &)=delete
The assignment operator is private and must never be called.
double psiS_
D_1 mixing angle (strange)
static void Init()
The standard Init function used to initialize the interfaces.
vector< Helicity::LorentzTensor< double > > tensorIn_
Storage of polarization tensors of the decaying particle.
double gp_
Coupling for decays within the multiplet.
HQETStrongDecayer()
The default constructor.
Energy fPi_
Coupings for the decays.
double g_
Coupling for decays within the multiplet.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double hp_
Coupling for decays from the multiplet.
Energy Lambda_
A momentum scale characterising the convergence of the derivative expansion.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual void doinit()
Initialize this object after the setup phase before saving and EventGenerator to disk.
double kp_
Coupling for decays from the multiplet.
The HeavyMesonWidthGenerator class calculates the running width for heavy mesons.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr