herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
VectorMesonVectorVectorDecayer.h
1 // -*- C++ -*-
2 //
3 // VectorMesonVectorVectorDecayer.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_VectorMesonVectorVectorDecayer_H
10 #define HERWIG_VectorMesonVectorVectorDecayer_H
11 //
12 // This is the declaration of the VectorMesonVectorVectorDecayer 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 using namespace ThePEG;
20 
52 
53 public:
54 
59 
66  virtual int modeNumber(bool & cc, tcPDPtr parent,
67  const tPDVector & children) const;
68 
77  bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const;
78 
87  double me2(const int ichan,const Particle & part,
88  const ParticleVector & decay, MEOption meopt) 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 
160 
161 private:
162 
166  vector<double> _coupling;
167 
171  vector<int> _incoming;
172 
176  vector<int> _outgoing1;
177 
181  vector<int> _outgoing2;
182 
186  vector<double> _maxweight;
187 
191  unsigned int _initsize;
192 
196  mutable RhoDMatrix _rho;
197 
201  mutable vector<Helicity::LorentzPolarizationVector> _vectors[3];
202 
203 
204 };
205 
206 }
207 
208 
209 #endif /* HERWIG_VectorMesonVectorVectorDecayer_H */
unsigned int _initsize
Initial size of the vectors.
vector< double > _maxweight
maximum weight for a decay
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
MEOption
Enum for the matrix element option.
vector< int > _outgoing2
the PDG codes for the 2nd outgoing particle
vector< tPDPtr > tPDVector
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Main class for Decayers implementing multi-channel phase space integration.
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< int > _outgoing1
the PDG codes for the 1st outgoing particle
-*- C++ -*-
virtual IBPtr clone() const
Make a simple clone of this object.
vector< int > _incoming
the PDG codes for the incoming particles
vector< double > _coupling
the coupling for the decay
This class is designed for the decay of a vector meson to two spin one particles, either other vector...
vector< PPtr > ParticleVector