herwig is hosted by Hepforge, IPPP Durham
Herwig  7.1.5
VectorMesonVectorVectorDecayer.h
1 // -*- C++ -*-
2 //
3 // VectorMesonVectorVectorDecayer.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4 // Copyright (C) 2002-2017 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 
161 
166 
167 private:
168 
172  vector<double> _coupling;
173 
177  vector<int> _incoming;
178 
182  vector<int> _outgoing1;
183 
187  vector<int> _outgoing2;
188 
192  vector<double> _maxweight;
193 
197  unsigned int _initsize;
198 
202  mutable RhoDMatrix _rho;
203 
207  mutable vector<Helicity::LorentzPolarizationVector> _vectors[3];
208 
209 
210 };
211 
212 }
213 
214 
215 #include "ThePEG/Utilities/ClassTraits.h"
216 
217 namespace ThePEG {
218 
225 template <>
228  typedef Herwig::DecayIntegrator NthBase;
229 };
230 
235 template <>
237  : public ClassTraitsBase<Herwig::VectorMesonVectorVectorDecayer> {
239  static string className() { return "Herwig::VectorMesonVectorVectorDecayer"; }
245  static string library() { return "HwVMDecay.so"; }
246 
247 };
248 
251 }
252 
253 #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
static ClassDescription< VectorMesonVectorVectorDecayer > initVectorMesonVectorVectorDecayer
Describe a concrete class with persistent data.
-*- 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