herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
VectorMeson3PionDecayer.h
1 // -*- C++ -*-
2 //
3 // VectorMeson3PionDecayer.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_VectorMeson3PionDecayer_H
10 #define HERWIG_VectorMeson3PionDecayer_H
11 // This is the declaration of the VectorMeson3PionDecayer class.
12 
13 #include "Herwig/Decay/DecayIntegrator.h"
14 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
15 #include "ThePEG/Helicity/LorentzPolarizationVector.h"
16 
17 namespace Herwig {
18 using namespace ThePEG;
19 
100 
101 public:
102 
107 
116  double me2(const int ichan,const Particle & part,
117  const ParticleVector & decay, MEOption meopt) const;
118 
125  virtual int modeNumber(bool & cc, tcPDPtr parent,
126  const tPDVector & children) const;
127 
133  virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
134 
148  virtual double threeBodyMatrixElement(const int imode, const Energy2 q2,
149  const Energy2 s3, const Energy2 s2, const
150  Energy2 s1, const Energy m1,
151  const Energy m2, const Energy m3) const;
152 
158  virtual void dataBaseOutput(ofstream & os,bool header) const;
159 
160 public:
161 
168  void persistentOutput(PersistentOStream & os) const;
169 
175  void persistentInput(PersistentIStream & is, int version);
177 
181  static void Init();
182 
183 protected:
184 
191  virtual IBPtr clone() const {return new_ptr(*this);}
192 
197  virtual IBPtr fullclone() const {return new_ptr(*this);}
199 
200 protected:
201 
209  virtual void doinit();
210 
214  virtual void doinitrun();
216 
217 private:
218 
222  VectorMeson3PionDecayer & operator=(const VectorMeson3PionDecayer &) = delete;
223 
224 private:
225 
229  vector<double> _incoming;
230 
234  vector<InvEnergy> _coupling;
235 
239  vector<double> _directcoupling;
240 
244  vector<double> _directphase;
245 
249  vector<double> _rho2coupling;
250 
254  vector<double> _rho2phase;
255 
259  vector<double> _rho3coupling;
260 
264  vector<double> _rho3phase;
265 
269  vector<double> _maxwgt;
270 
274  vector<double> _rho1wgt;
275 
279  vector<double> _rho2wgt;
280 
284  vector<double> _rho3wgt;
285 
289  vector<Energy> _rho1mass;
290 
294  vector<Energy> _rho2mass;
295 
299  vector<Energy> _rho3mass;
300 
304  vector<Energy> _rho1width;
305 
309  vector<Energy> _rho2width;
310 
314  vector<Energy> _rho3width;
315 
319  vector<bool> _defaultmass;
320 
328  vector<vector <double> > _rho0const;
329 
333  vector<vector <double> > _rhocconst;
335 
339  vector<vector<Energy> > _rhomass;
340 
344  vector<vector<Energy2> > _rhomass2;
345 
349  vector<vector <complex<InvEnergy2> > > _ccoupling;
350 
354  Energy _mpic;
355 
359  Energy _mpi0;
360 
364  unsigned int _initsize;
365 
370  mutable vector<Helicity::LorentzPolarizationVector> _vectors;
371 
375  mutable RhoDMatrix _rho;
376 };
377 
378 }
379 
380 
381 #endif /* HERWIG_VectorMeson3PionDecayer_H */
vector< double > _rho3coupling
relative coupling for the second rho multiplet, .
Energy _mpic
The charge pion mass.
vector< vector< Energy2 > > _rhomass2
rho mass parameters
vector< vector< complex< InvEnergy2 > > > _ccoupling
couplings as complex numbers
vector< Energy > _rho1width
width of the first rho multiplet, .
vector< InvEnergy > _coupling
the overall coupling for the decay, .
vector< double > _rho1wgt
weight for the first rho multiplet in the integration
vector< double > _rho3phase
relative phase for the second rho multiplet, .
vector< Helicity::LorentzPolarizationVector > _vectors
Storage of polarization tensors to try and increase speed.
vector< Energy > _rho2width
width of the second rho multiplet, .
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< vector< Energy > > _rhomass
rho mass parameters
vector< Energy > _rho2mass
mass of the second rho multiplet, .
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< double > _directcoupling
relative coupling for the direct term, .
unsigned int _initsize
Initial size of the vectors.
MEOption
Enum for the matrix element option.
RhoDMatrix _rho
Storage of the matrix.
vector< tPDPtr > tPDVector
vector< double > _maxwgt
maximum weight for the integration of the channel
vector< double > _rho2phase
relative phase for the second rho multiplet, .
The VectorMeson3PionDecayer class is designed to perform the decay of an meson to three pions via rh...
Main class for Decayers implementing multi-channel phase space integration.
vector< Energy > _rho3width
width of the third rho multiplet, .
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< double > _rho2wgt
weight for the second rho multiplet in the integration
vector< bool > _defaultmass
use the default parameters for the rho masses and widths
vector< double > _directphase
relative phase for the direct term, .
virtual IBPtr clone() const
Make a simple clone of this object.
-*- C++ -*-
vector< double > _rho3wgt
weight for the third rho multiplet in the integration
vector< Energy > _rho1mass
mass of the first rho multiplet, .
vector< double > _rho2coupling
relative coupling for the second rho multiplet, .
vector< vector< double > > _rhocconst
For the charged .
vector< PPtr > ParticleVector
vector< double > _incoming
vector storing the decaying particles for the different modes
vector< vector< double > > _rho0const
Constants for the running widths.
vector< Energy > _rho3mass
mass of the third rho multiplet, .
Energy _mpi0
The neutral pion mass.