herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
15 namespace Herwig {
16 using namespace ThePEG;
17 
60 
61 public:
62 
67 
71  static void Init();
72 
73 public:
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 
122 protected:
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 
190 private:
191 
196  ThreeMesonCurrentBase & operator=(const ThreeMesonCurrentBase &) = delete;
197 
198 };
199 
200 }
201 
202 #endif /* HERWIG_ThreeMesonCurrentBase_H */
The WeakDecayCurrent class is the base class for the hadronic currents produced in weak decays...
MEOption
Enum for the matrix element option.
vector< tPDPtr > tPDVector
FormFactors(complex< InvEnergy > f1=InvEnergy(), complex< InvEnergy > f2=InvEnergy(), complex< InvEnergy > f3=InvEnergy(), complex< InvEnergy > f4=InvEnergy(), complex< InvEnergy3 > f5=InvEnergy3())
Constructor.
-*- C++ -*-
vector< PPtr > ParticleVector
This is the base class for the three meson decays of the weak current.