herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
VectorMesonPScalarFermionsDecayer.h
1 // -*- C++ -*-
2 //
3 // VectorMesonPScalarFermionsDecayer.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_VectorMesonPScalarFermionsDecayer_H
10 #define HERWIG_VectorMesonPScalarFermionsDecayer_H
11 //
12 // This is the declaration of the VectorMesonPScalarFermionsDecayer class.
13 //
14 #include "Herwig/Decay/DecayIntegrator.h"
15 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
16 #include "ThePEG/Helicity/LorentzPolarizationVector.h"
17 #include "ThePEG/Helicity/LorentzSpinorBar.h"
18 
19 namespace Herwig {
20 using namespace ThePEG;
21 
50 
51 public:
52 
57 
64  virtual int modeNumber(bool & cc, tcPDPtr parent,
65  const tPDVector & children) const;
66 
75  double me2(const int ichan,const Particle & part,
76  const ParticleVector & decay, MEOption meopt) const;
77 
83  virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
84 
95  virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2,
96  const Energy2 s,
97  const Energy m1, const Energy m2,
98  const Energy m3) const;
99 
105  virtual void dataBaseOutput(ofstream & os,bool header) const;
106 
107 public:
108 
115  void persistentOutput(PersistentOStream & os) const;
116 
122  void persistentInput(PersistentIStream & is, int version);
124 
128  static void Init();
129 
130 protected:
131 
138  virtual IBPtr clone() const {return new_ptr(*this);}
139 
144  virtual IBPtr fullclone() const {return new_ptr(*this);}
146 
147 protected:
148 
156  virtual void doinit();
157 
161  virtual void doinitrun();
163 
164 private:
165 
170 
171 private:
172 
176  vector<InvEnergy> _coupling;
177 
181  vector<int> _incoming;
182 
186  vector<int> _outgoingP;
187 
191  vector<int> _outgoingf;
192 
196  vector<int> _outgoinga;
197 
201  vector<double> _maxweight;
202 
206  vector<double> _weight;
207 
211  vector<int> _includeVMD;
212 
216  vector<int> _VMDid;
217 
221  vector<Energy> _VMDmass;
222 
226  vector<Energy> _VMDwidth;
227 
231  unsigned int _initsize;
232 
236  mutable RhoDMatrix _rho;
237 
241  mutable vector<Helicity::LorentzPolarizationVector> _vectors;
242 
246  mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave;
247 
251  mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar;
252 };
253 
254 }
255 
256 
257 #endif /* HERWIG_VectorMesonPScalarFermionsDecayer_H */
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< Energy > _VMDwidth
Width for the VMD form factor.
vector< Helicity::LorentzPolarizationVector > _vectors
Polarization vectors for the decaying particle.
vector< double > _weight
Relative weights for the two channels.
vector< Helicity::LorentzSpinorBar< SqrtEnergy > > _wavebar
Barred spinors for the fermions.
The VectorMesonPScalarFermionsDecayer class is designed to perform the decay of a vector meson to a p...
vector< int > _outgoingf
PDG codes for the outgoing fermion.
vector< int > _outgoingP
PDG codes for the outgoing meson.
MEOption
Enum for the matrix element option.
vector< double > _maxweight
Maximum weight for a decay.
vector< int > _outgoinga
PDG codes for the outgoing antifermion.
vector< tPDPtr > tPDVector
vector< int > _incoming
PDG codes for the incoming particle.
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< Helicity::LorentzSpinor< SqrtEnergy > > _wave
Spinors for the fermions.
vector< InvEnergy > _coupling
coupling for a decay
vector< int > _VMDid
PDG code for the particle mass and width to use for the VMD form factor.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
unsigned int _initsize
Initial size of the vectors.
-*- C++ -*-
vector< int > _includeVMD
Include the VMD form factor.
vector< PPtr > ParticleVector
vector< Energy > _VMDmass
Mass for the VMD form factor.