herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
VectorTo3PseudoScalarDalitz.h
1// -*- C++ -*-
2#ifndef Herwig_VectorTo3PseudoScalarDalitz_H
3#define Herwig_VectorTo3PseudoScalarDalitz_H
4//
5// This is the declaration of the VectorTo3PseudoScalarDalitz class.
6//
7
8#include "DalitzBase.h"
9#include "ThePEG/Helicity/LorentzPolarizationVector.h"
10
11namespace Herwig {
12
13using namespace ThePEG;
14
22
23public:
24
29 {}
30
40 virtual double me2(const int ichan,const Particle & part,
41 const tPDVector & outgoing,
42 const vector<Lorentz5Momentum> & momenta,
43 MEOption meopt) const;
44
48 virtual void constructSpinInfo(const Particle & part,
50
56 virtual void dataBaseOutput(ofstream & os,bool header) const;
57
63 virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const;
64
78 virtual double threeBodyMatrixElement(const int imode, const Energy2 q2,
79 const Energy2 s3, const Energy2 s2, const
80 Energy2 s1, const Energy m1,
81 const Energy m2, const Energy m3) const;
82
83public:
84
92
98 void persistentInput(PersistentIStream & is, int version);
100
107 static void Init();
108
109protected:
110
117 virtual IBPtr clone() const;
118
123 virtual IBPtr fullclone() const;
125
126protected:
127
131 virtual complex<InvEnergy2> amplitude(int ichan) const {
132 complex<InvEnergy2> amp(ZERO);
133 int iloc=-1;
134 for(int ix=0;ix<int(resonances().size());++ix) {
135 ++iloc;
136 if(channel1()>=0) {
137 if(ix!=channel1() && ix!=channel2()) continue;
138 }
139 if(ichan>=0&&ichan!=iloc) continue;
140 amp += resAmp(ix);
141 }
142 return amp;
143 }
144
148 complex<InvEnergy2> resAmp(unsigned int i) const;
149
150private:
151
157
158private:
159
163 InvEnergy coupling_;
164
172 mutable Energy mD_;
173
177 mutable Energy mOut_[3];
178
182 mutable Energy m2_[3][3];
184
189 mutable vector<Helicity::LorentzPolarizationVector> vectors_;
190
195
196};
197
198}
199
200#endif /* Herwig_VectorTo3PseudoScalarDalitz_H */
The DalitzBase class provides a base class for the implementation of three-body Dalitz decays.
Definition: DalitzBase.h:22
const vector< DalitzResonancePtr > & resonances() const
Access to the resonances.
Definition: DalitzBase.h:103
const int & channel1() const
Access to the first channel.
Definition: DalitzBase.h:108
const int & channel2() const
Access to the second channel.
Definition: DalitzBase.h:115
int imode() const
The mode being used for this decay.
MEOption
Enum for the matrix element option.
The VectorTo3PseudoScalarDalitz class provides a base class for the decay of vector mesons to 3 pseud...
static void Init()
The standard Init function used to initialize the interfaces.
vector< Helicity::LorentzPolarizationVector > vectors_
Storage of polarization vectors to try and increase speed.
VectorTo3PseudoScalarDalitz & operator=(const VectorTo3PseudoScalarDalitz &)=delete
The assignment operator is private and must never be called.
Energy m2_[3][3]
Masses of the children.
virtual 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.
VectorTo3PseudoScalarDalitz()
The default constructor.
Energy mOut_[3]
Masses of the children.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual complex< InvEnergy2 > amplitude(int ichan) const
Calculate the amplitude.
InvEnergy coupling_
Coupling for the normalisation of the mode.
complex< InvEnergy2 > resAmp(unsigned int i) const
Calculate the amplitude for the ith resonance.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode &dm) const
Method to return an object to calculate the 3 body partial width.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
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...
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
constexpr ZeroUnit ZERO