herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
ScalarTo3ScalarDalitz.h
1// -*- C++ -*-
2#ifndef Herwig_ScalarTo3ScalarDalitz_H
3#define Herwig_ScalarTo3ScalarDalitz_H
4//
5// This is the declaration of the ScalarTo3ScalarDalitz class.
6//
7
8#include "DalitzBase.h"
9
10namespace Herwig {
11using namespace ThePEG;
12
13
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
58public:
59
67
73 void persistentInput(PersistentIStream & is, int version);
75
82 static void Init();
83
84protected:
85
92 virtual IBPtr clone() const;
93
98 virtual IBPtr fullclone() const;
100
101protected:
102
106 virtual Complex amplitude(int ichan) const {
107 Complex amp(0.);
108 int iloc=-1;
109 for(int ix=0;ix<int(resonances().size());++ix) {
110 ++iloc;
111 if(channel1()>=0) {
112 if(ix!=channel1() && ix!=channel2()) continue;
113 }
114 if(ichan>=0&&ichan!=iloc) continue;
115 amp += resAmp(ix);
116 }
117 return amp;
118 }
119
123 Complex resAmp(unsigned int i) const;
124
128 const Energy & mInv(unsigned int i,unsigned int j) const {
129 return m2_[i][j];
130 }
131
135 const Energy & mOut(unsigned int i) const {
136 return mOut_[i];
137 }
138
139private:
140
146
147private:
148
154
155private :
156
164 mutable Energy mD_;
165
169 mutable Energy mOut_[3];
170
174 mutable Energy m2_[3][3];
176
181};
182
183}
184
185#endif /* Herwig_ScalarTo3ScalarDalitz_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
MEOption
Enum for the matrix element option.
The ScalarTo3ScalarDalitz class provides a base class for the implementation of weak three-body decay...
Energy mD_
Storage of the kinematics.
Energy m2_[3][3]
Masses of the children.
virtual void dataBaseOutput(ofstream &os, bool header) const
Output the setup information for the particle database.
bool useResonanceMass_
Choice of the mass to use in the denominator of the expressions.
ScalarTo3ScalarDalitz & operator=(const ScalarTo3ScalarDalitz &)=delete
The assignment operator is private and must never be called.
RhoDMatrix rho_
Spin density matrix.
ScalarTo3ScalarDalitz()
The default constructor.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
const Energy & mOut(unsigned int i) const
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.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual void constructSpinInfo(const Particle &part, ParticleVector outgoing) const
Construct the SpinInfos for the particles produced in the decay.
virtual Complex amplitude(int ichan) const
Calculate the amplitude.
virtual IBPtr clone() const
Make a simple clone of this object.
static void Init()
The standard Init function used to initialize the interfaces.
Energy mOut_[3]
Masses of the children.
const Energy & mInv(unsigned int i, unsigned int j) const
Access to the invariants.
Complex resAmp(unsigned int i) const
Calculate the amplitude for the ith resonance.
-*- C++ -*-
std::complex< double > Complex
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector