herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
OniumToOniumPiPiDecayer.h
1 // -*- C++ -*-
2 //
3 // OniumToOniumPiPiDecayer.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_OniumToOniumPiPiDecayer_H
10 #define HERWIG_OniumToOniumPiPiDecayer_H
11 //
12 // This is the declaration of the OniumToOniumPiPiDecayer class.
13 //
14 
15 #include "Herwig/Decay/DecayIntegrator.h"
16 #include "Herwig/Decay/DecayPhaseSpaceMode.h"
17 #include "ThePEG/Helicity/LorentzPolarizationVector.h"
18 
19 namespace Herwig {
20 
21 using namespace ThePEG;
22 
46 
47 public:
48 
53 
60  virtual int modeNumber(bool & cc, tcPDPtr parent,
61  const tPDVector & children) const;
62 
71  double me2(const int ichan,const Particle & part,
72  const ParticleVector & decay, MEOption meopt) const;
73 
79  virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
80 
94  virtual double threeBodyMatrixElement(const int imode, const Energy2 q2,
95  const Energy2 s3, const Energy2 s2, const
96  Energy2 s1, const Energy m1,
97  const Energy m2, const Energy m3) const;
98 
104  virtual void dataBaseOutput(ofstream & os,bool header) const;
105 
106 public:
107 
114  void persistentOutput(PersistentOStream & os) const;
115 
121  void persistentInput(PersistentIStream & is, int version);
123 
130  static void Init();
131 
132 protected:
133 
140  virtual IBPtr clone() const {return new_ptr(*this);}
141 
146  virtual IBPtr fullclone() const {return new_ptr(*this);}
148 
149 protected:
150 
158  virtual void doinit();
159 
163  virtual void doinitrun();
165 
166 private:
167 
172  OniumToOniumPiPiDecayer & operator=(const OniumToOniumPiPiDecayer &) = delete;
173 
174 private:
175 
179  vector<long> _incoming;
180 
184  vector<long> _outgoing;
185 
189  vector<double> _maxweight;
190 
194  unsigned int _initsize;
195 
203  vector<double> _coupling;
207  vector<InvEnergy2> _reA;
208 
212  vector<InvEnergy2> _imA;
213 
217  vector<complex<InvEnergy2> > _cA;
218 
222  vector<InvEnergy2> _reB;
223 
227  vector<InvEnergy2> _imB;
228 
232  vector<complex<InvEnergy2> > _cB;
233 
237  vector<InvEnergy2> _reC;
238 
242  vector<InvEnergy2> _imC;
243 
247  vector<complex<InvEnergy2> > _cC;
249 
253  mutable RhoDMatrix _rho;
254 
258  mutable vector<Helicity::LorentzPolarizationVector> _vectors[2];
259 
260 };
261 
262 }
263 
264 #endif /* HERWIG_OniumToOniumPiPiDecayer_H */
vector< complex< InvEnergy2 > > _cC
The complex coupling.
RhoDMatrix _rho
Spin density matrix.
vector< InvEnergy2 > _reB
The real part of .
vector< InvEnergy2 > _reA
The real part of .
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< long > _outgoing
the PDG codes for the outgoing onium resonance
vector< long > _incoming
the PDG codes for the incoming onium resonace
vector< double > _coupling
The couplings for the decays.
vector< complex< InvEnergy2 > > _cB
The complex coupling.
MEOption
Enum for the matrix element option.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< InvEnergy2 > _imC
The imaginary part of .
vector< tPDPtr > tPDVector
vector< InvEnergy2 > _imB
The imaginary part of .
Main class for Decayers implementing multi-channel phase space integration.
vector< double > _maxweight
the maximum weight for the integration
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
unsigned int _initsize
Initial size of the vectors.
-*- C++ -*-
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
vector< PPtr > ParticleVector
vector< InvEnergy2 > _imA
The imaginary part of .
vector< InvEnergy2 > _reC
The real part of .
vector< complex< InvEnergy2 > > _cA
The complex coupling.
The OniumToOniumPiPiDecayer class uses the matrix element of Brown and Cahn PRL35, 1 (1975) for the decay of onium resonaces to lighter states and pion pairs.