herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
VectorMeson2MesonDecayer.h
1 // -*- C++ -*-
2 //
3 // VectorMeson2MesonDecayer.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_VectorMeson2MesonDecayer_H
10 #define HERWIG_VectorMeson2MesonDecayer_H
11 //
12 // This is the declaration of the VectorMeson2MesonDecayer class.
13 //
14 #include "Herwig/Decay/DecayIntegrator.h"
15 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
16 #include "ThePEG/Helicity/LorentzPolarizationVector.h"
17 
18 namespace Herwig {
19 
20 using namespace ThePEG;
21 
52 
53 public:
54 
59 
66  virtual int modeNumber(bool & cc, tcPDPtr parent,
67  const tPDVector & children) const;
68 
77  double me2(const int ichan,const Particle & part,
78  const ParticleVector & decay, MEOption meopt) const;
79 
88  bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
89 
95  virtual void dataBaseOutput(ofstream & os,bool header) const;
96 
97 public:
98 
105  void persistentOutput(PersistentOStream & os) const;
106 
112  void persistentInput(PersistentIStream & is, int version);
114 
118  static void Init();
119 
120 protected:
121 
128  virtual IBPtr clone() const { return new_ptr(*this);}
129 
134  virtual IBPtr fullclone() const { return new_ptr(*this);}
136 
137 protected:
138 
146  virtual void doinit();
147 
151  virtual void doinitrun();
153 
154 private:
155 
159  VectorMeson2MesonDecayer & operator=(const VectorMeson2MesonDecayer &) = delete;
160 
161 private:
162 
163 
167  vector<int> _incoming;
168 
172  vector<int> _outgoing1;
173 
177  vector<int> _outgoing2;
178 
182  vector<double> _maxweight;
183 
187  vector<double> _coupling;
188 
192  unsigned int _initsize;
193 
198  mutable vector<Helicity::LorentzPolarizationVector> _vectors;
199 
203  mutable RhoDMatrix _rho;
204 };
205 
206 }
207 
208 
209 #endif /* HERWIG_VectorMeson2MesonDecayer_H */
RhoDMatrix _rho
Storage of the matrix.
vector< int > _outgoing1
the PDG codes for the first outgoing meson
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< int > _outgoing2
the PDG codes for the second outgoing meson
virtual IBPtr clone() const
Make a simple clone of this object.
MEOption
Enum for the matrix element option.
vector< double > _coupling
the coupling for the decay
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< tPDPtr > tPDVector
vector< Helicity::LorentzPolarizationVector > _vectors
Storage of polarization tensors to try and increase speed.
Main class for Decayers implementing multi-channel phase space integration.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< int > _incoming
the PDG codes for the incoming particles
vector< double > _maxweight
the maximum weight for the integration
This class is the implementation for the decay of a vector meson to two scalar mesons, the classic example is , via a current which is the difference of the momenta of the mesons.
unsigned int _initsize
Initial size of the vectors.
-*- C++ -*-
vector< PPtr > ParticleVector