herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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/DecayPhaseSpaceMode.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 
16 namespace Herwig {
17 using namespace ThePEG;
18 
58 
62  friend class BaryonWidthGenerator;
63 
64 public:
65 
76  double me2(const int ichan,const Particle & part,
77  const ParticleVector & decay,MEOption meopt) const;
78 
87  virtual bool twoBodyMEcode(const DecayMode & dm, int & mecode,
88  double & coupling) const;
89 
95  virtual void dataBaseOutput(ofstream & os,bool header) const;
96 
97 protected:
98 
114  virtual void halfHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
115  Complex& A,Complex& B) const;
116 
130  virtual void halfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2,
131  Complex& A1,Complex& A2,
132  Complex& B1,Complex& B2) const;
133 
145  virtual void halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
146  Complex& A,Complex& B) const;
147 
163  virtual void halfThreeHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2,
164  Complex& A1,Complex& A2,Complex& A3,
165  Complex& B1,Complex& B2,Complex& B3) const;
166 
167 
179  virtual void threeHalfHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2,
180  Complex& A,Complex& B) const;
181 
197  virtual void threeHalfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2,
198  Complex& A1,Complex& A2,Complex& A3,
199  Complex& B1,Complex& B2,Complex& B3) const;
200 
214  virtual void threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2,
215  Complex& A1,Complex& A2,
216  Complex& B1,Complex& B2) const;
218 
219 public:
220 
224  static void Init();
225 
226 private:
227 
240  double halfHalfScalar(const int ichan,const Particle & inpart,
241  const ParticleVector & decay,MEOption meopt) const;
242 
251  double halfHalfVector(const int ichan,const Particle & inpart,
252  const ParticleVector & decay,MEOption meopt) const;
253 
262  double halfThreeHalfScalar(const int ichan,const Particle & inpart,
263  const ParticleVector & decay,MEOption meopt) const;
264 
273  double halfThreeHalfVector(const int ichan,const Particle & inpart,
274  const ParticleVector & decay,MEOption meopt) const;
275 
284  double threeHalfHalfScalar(const int ichan,const Particle & inpart,
285  const ParticleVector & decay,MEOption meopt) const;
286 
295  double threeHalfHalfVector(const int ichan,const Particle & inpart,
296  const ParticleVector & decay,MEOption meopt) const;
297 
306  double threeHalfThreeHalfScalar(const int ichan,const Particle & inpart,
307  const ParticleVector & decay,MEOption meopt) const;
309 
310 private:
311 
315  Baryon1MesonDecayerBase & operator=(const Baryon1MesonDecayerBase &) = delete;
316 
317 private:
318 
322  mutable RhoDMatrix _rho;
323 
327  mutable vector<Helicity::LorentzSpinor<SqrtEnergy> > _inHalf;
328 
332  mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _inHalfBar;
333 
337  mutable vector<Helicity::LorentzRSSpinor<SqrtEnergy> > _inThreeHalf;
338 
342  mutable vector<Helicity::LorentzRSSpinorBar<SqrtEnergy> > _inThreeHalfBar;
343 
347  mutable vector<Helicity::LorentzPolarizationVector> _inVec;
348 };
349 
350 }
351 
352 
353 #endif /* HERWIG_Baryon1MesonDecayerBase_H */
The BaryonWidthGenerator class is designed to automatically calculate the running width for a given p...
std::complex< double > Complex
vector< Helicity::LorentzRSSpinorBar< SqrtEnergy > > _inThreeHalfBar
Spin- barred spinor.
vector< Helicity::LorentzRSSpinor< SqrtEnergy > > _inThreeHalf
Spin- spinor.
vector< Helicity::LorentzSpinorBar< SqrtEnergy > > _inHalfBar
Spin- barred spinor.
MEOption
Enum for the matrix element option.
The Baryon1MesonDecayerBase class is the base class for the decay of a baryon to another baryon and a...
RhoDMatrix _rho
Spin density matrx.
Main class for Decayers implementing multi-channel phase space integration.
vector< Helicity::LorentzPolarizationVector > _inVec
Polarization vector.
-*- C++ -*-
vector< PPtr > ParticleVector
vector< Helicity::LorentzSpinor< SqrtEnergy > > _inHalf
Spin- spinor.