herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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 "ThePEG/Helicity/LorentzPolarizationVector.h"
17
18namespace Herwig {
19
20using namespace ThePEG;
21
45
46public:
47
52 // don't generate the intermediates in the phase-space
54 }
55
62 virtual int modeNumber(bool & cc, tcPDPtr parent,
63 const tPDVector & children) const;
64
74 double me2(const int ichan,const Particle & part,
75 const tPDVector & outgoing,
76 const vector<Lorentz5Momentum> & momenta,
77 MEOption meopt) const;
78
82 virtual void constructSpinInfo(const Particle & part,
84
90 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
91
105 virtual double threeBodyMatrixElement(const int imode, const Energy2 q2,
106 const Energy2 s3, const Energy2 s2, const
107 Energy2 s1, const Energy m1,
108 const Energy m2, const Energy m3) const;
109
115 virtual void dataBaseOutput(ofstream & os,bool header) const;
116
117public:
118
126
132 void persistentInput(PersistentIStream & is, int version);
134
141 static void Init();
142
143protected:
144
151 virtual IBPtr clone() const {return new_ptr(*this);}
152
157 virtual IBPtr fullclone() const {return new_ptr(*this);}
159
160protected:
161
169 virtual void doinit();
170
174 virtual void doinitrun();
176
177private:
178
184
185public:
186
190 string setUpDecayMode(string arg);
191
192private:
193
197 vector<long> incoming_;
198
202 vector<long> outgoing_;
203
207 vector<double> maxWeight_;
208
216 vector<double> coupling_;
217
221 vector<complex<InvEnergy2> > cA_;
222
226 vector<complex<InvEnergy2> > cB_;
227
231 vector<complex<InvEnergy2> > cC_;
233
238
242 mutable vector<Helicity::LorentzPolarizationVector> vectors_[2];
243
244};
245
246}
247
248#endif /* HERWIG_OniumToOniumPiPiDecayer_H */
Main class for Decayers implementing multi-channel phase space integration.
int imode() const
The mode being used for this decay.
bool generateIntermediates() const
Set whether or not the intermediates are included.
MEOption
Enum for the matrix element option.
The OniumToOniumPiPiDecayer class uses the matrix element of Brown and Cahn PRL35,...
vector< complex< InvEnergy2 > > cA_
The complex coupling.
OniumToOniumPiPiDecayer()
The default constructor.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
vector< double > coupling_
The couplings for the decays.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
string setUpDecayMode(string arg)
Set the parameters for a decay mode.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual IBPtr clone() const
Make a simple clone of this object.
vector< double > maxWeight_
the maximum weight for the integration
virtual void doinitrun()
Initialize this object to the begining of the run phase.
virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode &dm) const
Method to return an object to calculate the 3 body partial width.
vector< complex< InvEnergy2 > > cB_
The complex coupling.
virtual double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const
The matrix element to be integrated for the three-body decays as a function of the invariant masses o...
RhoDMatrix rho_
Spin density matrix.
vector< long > incoming_
the PDG codes for the incoming onium resonace
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
vector< Helicity::LorentzPolarizationVector > vectors_[2]
Polarization vectors for the incomng and outgoing onium resonances.
double me2(const int ichan, const Particle &part, const tPDVector &outgoing, const vector< Lorentz5Momentum > &momenta, MEOption meopt) const
Return the matrix element squared for a given mode and phase-space channel.
OniumToOniumPiPiDecayer & operator=(const OniumToOniumPiPiDecayer &)=delete
The assignment operator is private and must never be called.
static void Init()
The standard Init function used to initialize the interfaces.
virtual int modeNumber(bool &cc, tcPDPtr parent, const tPDVector &children) const
Which of the possible decays is required.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< long > outgoing_
the PDG codes for the outgoing onium resonance
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
vector< complex< InvEnergy2 > > cC_
The complex coupling.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr