herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
ThreeMesonCurrentBase.h
1// -*- C++ -*-
2//
3// ThreeMesonCurrentBase.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_ThreeMesonCurrentBase_H
10#define HERWIG_ThreeMesonCurrentBase_H
11// This is the declaration of the ThreeMesonCurrentBase class.
12
13#include "WeakDecayCurrent.h"
14
15namespace Herwig {
16using namespace ThePEG;
17
59class ThreeMesonCurrentBase: public WeakDecayCurrent {
60
61public:
62
67
71 static void Init();
72
73public:
74
75
85 virtual vector<LorentzPolarizationVectorE>
86 current(const int imode,const int ichan,Energy & scale,
87 const ParticleVector & decay,DecayIntegrator::MEOption meopt) const;
88
94 virtual bool accept(vector<int> id);
95
102 virtual unsigned int decayMode(vector<int> id);
103
112 virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
113
120 virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
121
122protected:
123
129 virtual bool acceptMode(int imode) const=0;
130
134 struct FormFactors {
135
139 complex<InvEnergy> F1;
140
144 complex<InvEnergy> F2;
145
149 complex<InvEnergy> F3;
150
154 complex<InvEnergy> F4;
155
159 complex<InvEnergy3> F5;
160
169 FormFactors(complex<InvEnergy> f1 = InvEnergy(),
170 complex<InvEnergy> f2 = InvEnergy(),
171 complex<InvEnergy> f3 = InvEnergy(),
172 complex<InvEnergy> f4 = InvEnergy(),
173 complex<InvEnergy3> f5 = InvEnergy3())
174 : F1(f1), F2(f2), F3(f3), F4(f4), F5(f5) {}
175 };
176
186 virtual FormFactors calculateFormFactors(const int ichan, const int imode,
187 Energy2 q2,
188 Energy2 s1, Energy2 s2, Energy2 s3) const = 0;
189
190private:
191
197
198};
199
200}
201
202#endif /* HERWIG_ThreeMesonCurrentBase_H */
MEOption
Enum for the matrix element option.
This is the base class for the three meson decays of the weak current.
static void Init()
Standard Init function used to initialize the interfaces.
virtual FormFactors calculateFormFactors(const int ichan, const int imode, Energy2 q2, Energy2 s1, Energy2 s2, Energy2 s3) const =0
Calculate the form factor for the current.
virtual bool accept(vector< int > id)
Accept the decay.
ThreeMesonCurrentBase & operator=(const ThreeMesonCurrentBase &)=delete
The assignment operator is private and must never be called.
virtual vector< LorentzPolarizationVectorE > current(const int imode, const int ichan, Energy &scale, const ParticleVector &decay, DecayIntegrator::MEOption meopt) const
Hadronic current.
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)
The particles produced by the current.
virtual unsigned int decayMode(vector< int > id)
Return the decay mode number for a given set of particles in the current.
virtual void dataBaseOutput(ofstream &os, bool header, bool create) const
Output the setup information for the particle database.
virtual bool acceptMode(int imode) const =0
can a particular decayer handle this type of mode
ThreeMesonCurrentBase()
Default constructor.
-*- C++ -*-
vector< tPDPtr > tPDVector
vector< PPtr > ParticleVector
FormFactors(complex< InvEnergy > f1=InvEnergy(), complex< InvEnergy > f2=InvEnergy(), complex< InvEnergy > f3=InvEnergy(), complex< InvEnergy > f4=InvEnergy(), complex< InvEnergy3 > f5=InvEnergy3())
Constructor.