herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
Baryon1MesonDecayerBase.h
1// -*- C++ -*-
2#ifndef HERWIG_Baryon1MesonDecayerBase_H
3#define HERWIG_Baryon1MesonDecayerBase_H
4//
5// This is the declaration of the Baryon1MesonDecayerBase class.
6//
7#include "Herwig/Decay/DecayIntegrator.h"
8#include "Herwig/PDT/BaryonWidthGenerator.fh"
9#include "Herwig/Decay/PhaseSpaceMode.h"
10#include "ThePEG/Helicity/LorentzSpinor.h"
11#include "ThePEG/Helicity/LorentzSpinorBar.h"
12#include "ThePEG/Helicity/LorentzRSSpinor.h"
13#include "ThePEG/Helicity/LorentzRSSpinorBar.h"
14#include "Baryon1MesonDecayerBase.fh"
15
16namespace Herwig {
17using namespace ThePEG;
18
58
62 friend class BaryonWidthGenerator;
63
64public:
65
66
76 double me2(const int ichan,const Particle & part,
77 const tPDVector & outgoing,
78 const vector<Lorentz5Momentum> & momenta,
79 MEOption meopt) const;
80
84 virtual void constructSpinInfo(const Particle & part,
86
95 virtual bool twoBodyMEcode(const DecayMode & dm, int & mecode,
96 double & coupling) const;
97
103 virtual void dataBaseOutput(ofstream & os,bool header) const;
104
105protected:
106
122 virtual void halfHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
123 Complex& A,Complex& B) const;
124
138 virtual void halfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2,
139 Complex& A1,Complex& A2,
140 Complex& B1,Complex& B2) const;
141
153 virtual void halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
154 Complex& A,Complex& B) const;
155
171 virtual void halfThreeHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2,
172 Complex& A1,Complex& A2,Complex& A3,
173 Complex& B1,Complex& B2,Complex& B3) const;
174
175
187 virtual void threeHalfHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
188 Complex& A,Complex& B) const;
189
205 virtual void threeHalfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2,
206 Complex& A1,Complex& A2,Complex& A3,
207 Complex& B1,Complex& B2,Complex& B3) const;
208
222 virtual void threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
223 Complex& A1,Complex& A2,
224 Complex& B1,Complex& B2) const;
226
227public:
228
232 static void Init();
233
234private:
235
249 double halfHalfScalar(const int ichan,const Particle & part,
250 const tPDVector & outgoing,
251 const vector<Lorentz5Momentum> & momenta,
252 MEOption meopt) const;
253
263 double halfHalfVector(const int ichan,const Particle & part,
264 const tPDVector & outgoing,
265 const vector<Lorentz5Momentum> & momenta,
266 MEOption meopt) const;
267
277 double halfThreeHalfScalar(const int ichan,const Particle & part,
278 const tPDVector & outgoing,
279 const vector<Lorentz5Momentum> & momenta,
280 MEOption meopt) const;
281
291 double halfThreeHalfVector(const int ichan,const Particle & part,
292 const tPDVector & outgoing,
293 const vector<Lorentz5Momentum> & momenta,
294 MEOption meopt) const;
295
305 double threeHalfHalfScalar(const int ichan,const Particle & part,
306 const tPDVector & outgoing,
307 const vector<Lorentz5Momentum> & momenta,
308 MEOption meopt) const;
309
319 double threeHalfHalfVector(const int ichan,const Particle & part,
320 const tPDVector & outgoing,
321 const vector<Lorentz5Momentum> & momenta,
322 MEOption meopt) const;
323
333 double threeHalfThreeHalfScalar(const int ichan,const Particle & part,
334 const tPDVector & outgoing,
335 const vector<Lorentz5Momentum> & momenta,
336 MEOption meopt) const;
338
339private:
340
345
346private:
347
352
356 mutable vector<Helicity::LorentzSpinor<SqrtEnergy> > _inHalf;
357
361 mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _inHalfBar;
362
366 mutable vector<Helicity::LorentzRSSpinor<SqrtEnergy> > _inThreeHalf;
367
371 mutable vector<Helicity::LorentzRSSpinorBar<SqrtEnergy> > _inThreeHalfBar;
372
376 mutable vector<Helicity::LorentzPolarizationVector> _inVec;
377};
378
379}
380
381
382#endif /* HERWIG_Baryon1MesonDecayerBase_H */
The Baryon1MesonDecayerBase class is the base class for the decay of a baryon to another baryon and a...
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
double halfHalfScalar(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix Element Calculation Members.
vector< Helicity::LorentzRSSpinor< SqrtEnergy > > _inThreeHalf
Spin- spinor.
virtual void threeHalfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex &A1, Complex &A2, Complex &A3, Complex &B1, Complex &B2, Complex &B3) const
Couplings for spin- to spin- and a vector.
vector< Helicity::LorentzRSSpinorBar< SqrtEnergy > > _inThreeHalfBar
Spin- barred spinor.
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.
double threeHalfHalfScalar(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for spin- to spin- and a scalar.
virtual void halfHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex &A, Complex &B) const
Coupling Members.
double threeHalfThreeHalfScalar(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for spin- to spin- and a scalar.
double halfThreeHalfVector(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for spin- to spin- and a vector.
double threeHalfHalfVector(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for spin- to spin- and a vector.
static void Init()
Standard Init function used to initialize the interfaces.
Baryon1MesonDecayerBase & operator=(const Baryon1MesonDecayerBase &)=delete
Private and non-existent assignment operator.
double halfThreeHalfScalar(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for spin- to spin- and a scalar.
virtual void halfThreeHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex &A1, Complex &A2, Complex &A3, Complex &B1, Complex &B2, Complex &B3) const
Couplings for spin- to spin- and a vector.
virtual void halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex &A, Complex &B) const
Couplings for spin- to spin- and a scalar.
vector< Helicity::LorentzPolarizationVector > _inVec
Polarization vector.
double halfHalfVector(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Matrix element for spin- to spin- and a vector.
virtual bool twoBodyMEcode(const DecayMode &dm, int &mecode, double &coupling) const
Specify the matrix element to be used in the running width calculation.
virtual void threeHalfHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex &A, Complex &B) const
Couplings for spin- to spin- and a scalar.
vector< Helicity::LorentzSpinorBar< SqrtEnergy > > _inHalfBar
Spin- barred spinor.
vector< Helicity::LorentzSpinor< SqrtEnergy > > _inHalf
Spin- spinor.
RhoDMatrix _rho
Spin density matrx.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual void halfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex &A1, Complex &A2, Complex &B1, Complex &B2) const
Couplings for spin- to spin- and a vector.
virtual void threeHalfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex &A1, Complex &A2, Complex &B1, Complex &B2) const
Couplings for spin- to spin- and a scalar.
The BaryonWidthGenerator class is designed to automatically calculate the running width for a given p...
Main class for Decayers implementing multi-channel phase space integration.
int imode() const
The mode being used for this decay.
MEOption
Enum for the matrix element option.
-*- C++ -*-
std::complex< double > Complex
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector