herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
VectorMeson2FermionDecayer.h
1 // -*- C++ -*-
2 //
3 // VectorMeson2FermionDecayer.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_VectorMeson2FermionDecayer_H
10 #define HERWIG_VectorMeson2FermionDecayer_H
11 // This is the declaration of the VectorMeson2FermionDecayer class.
12 
13 #include "Herwig/Decay/DecayIntegrator.h"
14 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
15 #include "ThePEG/Helicity/LorentzPolarizationVector.h"
16 #include "ThePEG/Helicity/LorentzSpinorBar.h"
17 
18 namespace Herwig {
19 using namespace ThePEG;
20 
47 
48 public:
49 
54 
61  virtual int modeNumber(bool & cc, tcPDPtr parent,
62  const tPDVector & children) const;
63 
72  double me2(const int ichan,const Particle & part,
73  const ParticleVector & decay, MEOption meopt) const;
74 
83  bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
84 
90  virtual void dataBaseOutput(ofstream & os,bool header) const;
91 
92 public:
93 
100  void persistentOutput(PersistentOStream & os) const;
101 
107  void persistentInput(PersistentIStream & is, int version);
109 
113  static void Init();
114 
115 protected:
116 
123  virtual IBPtr clone() const {return new_ptr(*this);}
124 
129  virtual IBPtr fullclone() const {return new_ptr(*this);}
131 
132 protected:
133 
141  virtual void doinit();
142 
146  virtual void doinitrun();
148 
149 private:
150 
154  VectorMeson2FermionDecayer & operator=(const VectorMeson2FermionDecayer &) = delete;
155 
156 private:
157 
161  vector<double> _coupling;
162 
166  vector<int> _incoming;
167 
171  vector<int> _outgoingf;
172 
176  vector<int> _outgoinga;
177 
181  vector<double> _maxweight;
182 
186  unsigned int _initsize;
187 
191  mutable RhoDMatrix _rho;
192 
196  mutable vector<Helicity::LorentzPolarizationVector> _vectors;
197 
201  mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave;
202 
206  mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar;
207 };
208 
209 }
210 
211 
212 #endif /* HERWIG_VectorMeson2FermionDecayer_H */
vector< int > _outgoingf
the PDG codes for the outgoing fermion
vector< int > _outgoinga
the PDG codes for the outgoing antifermion.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< Helicity::LorentzSpinorBar< SqrtEnergy > > _wavebar
barred spinors for the decay products
vector< int > _incoming
the PDG codes for the incoming particles
The VectorMeson2FermionDecayer class is designed for the decay of a vector meson to a fermion-antifer...
MEOption
Enum for the matrix element option.
vector< Helicity::LorentzPolarizationVector > _vectors
Polarization vectors for the decaying particle.
RhoDMatrix _rho
Spin density matrix.
vector< tPDPtr > tPDVector
virtual IBPtr clone() const
Make a simple clone of this object.
Main class for Decayers implementing multi-channel phase space integration.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< double > _maxweight
maximum weight for a decay
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< double > _coupling
coupling for a decay
-*- C++ -*-
vector< Helicity::LorentzSpinor< SqrtEnergy > > _wave
Spinors for the decay products.
vector< PPtr > ParticleVector
unsigned int _initsize
Initial size of the vectors.