herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
KaonThreeMesonCurrent.h
1 // -*- C++ -*-
2 //
3 // KaonThreeMesonCurrent.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_KaonThreeMesonCurrent_H
10 #define HERWIG_KaonThreeMesonCurrent_H
11 //
12 // This is the declaration of the KaonThreeMesonCurrent class.
13 //
14 
15 #include "ThreeMesonCurrentBase.h"
16 
17 namespace Herwig {
18 
19 using namespace ThePEG;
20 
31 
32 public:
33 
38 
55  virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode,
56  unsigned int iloc,unsigned int ires,
57  DecayPhaseSpaceChannelPtr phase,Energy upp);
59 
66  virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
67 
80  double threeBodyMatrixElement(const int imode, const Energy2 q2,
81  const Energy2 s3, const Energy2 s2,
82  const Energy2 s1, const Energy m1,
83  const Energy m2, const Energy m3) const;
84 
85 protected:
86 
91  virtual bool acceptMode(int) const;
92 
103  virtual FormFactors calculateFormFactors(const int ichan,const int imode,
104  Energy2 q2,Energy2 s1,Energy2 s2,Energy2 s3) const;
105 
106 public:
107 
114  void persistentOutput(PersistentOStream & os) const;
115 
121  void persistentInput(PersistentIStream & is, int version);
123 
130  static void Init();
131 
132 protected:
133 
140  virtual IBPtr clone() const;
141 
146  virtual IBPtr fullclone() const;
148 
149 protected:
150 
158  virtual void doinit();
159 
163  virtual void doinitrun();
164 
168  virtual void doupdate();
170 
171 private:
172 
177  KaonThreeMesonCurrent & operator=(const KaonThreeMesonCurrent &) = delete;
178 
179 private:
180 
186  Complex Trho1(Energy2 q2,int ires) const;
187 
193  Complex Trho2(Energy2 q2,int ires) const;
194 
200  Complex TKstar1(Energy2 q2,int ires) const;
201 
207  Complex TKstar2(Energy2 q2,int ires) const;
208 
214  Complex BWrho1(Energy2 q2, unsigned int ires) const;
215 
221  Complex BWrho2(Energy2 q2, unsigned int ires) const;
222 
228  Complex BWKstar1(Energy2 q2, unsigned int ires) const;
229 
235  Complex BWKstar2(Energy2 q2, unsigned int ires) const;
236 
242  Complex a1BreitWigner(Energy2 q2) const;
243 
250  Complex TK1(Energy2 q2,unsigned int iopt,int ires) const;
251 
258  Complex K1BreitWigner(Energy2 q2,unsigned int ires) const;
259 
265  Energy a1Width(Energy2 q2) const;
266 
270  double g(Energy2 q2) const;
271 
276  void inita1Width(int iopt);
277 
283  Complex Tomega(Energy2 q2, int ires) const;
284 
290  Complex OmegaPhiBreitWigner(Energy2 q2, unsigned int ires) const;
291 
299  Complex TOmegaKStar(Energy2 s1,Energy2 s2,int ires) const;
300 
301 private:
302 
310  vector<double> _rho1wgts;
311 
315  vector<Energy> _rho1mass;
316 
320  vector<Energy> _rho1width;
322 
330  vector<double> _rho2wgts;
331 
335  vector<Energy> _rho2mass;
336 
340  vector<Energy> _rho2width;
342 
350  vector<double> _kstar1wgts;
351 
355  vector<Energy> _kstar1mass;
356 
360  vector<Energy> _kstar1width;
362 
370  vector<double> _kstar2wgts;
371 
375  vector<Energy> _kstar2mass;
376 
380  vector<Energy> _kstar2width;
382 
390  Energy _a1mass;
391 
395  Energy _a1width;
396 
400  vector<Energy> _k1mass;
401 
405  vector<Energy> _k1width;
406 
410  vector<double> _k1wgta;
411 
415  vector<double> _k1wgtb;
416 
420  vector<Energy> _a1runwidth;
421 
425  vector<Energy2> _a1runq2;
426 
432 
440  double _epsomega;
441 
445  Energy _omegamass;
446 
450  Energy _omegawidth;
451 
455  Energy _phimass;
456 
460  Energy _phiwidth;
462 
467 
471  Energy _fpi;
472 
476  Energy _mpi;
477 
481  Energy _mK;
482 
491 
496 
501 
506 
511 
515  bool _a1opt;
516 
520  bool _omegaopt;
522 
526  Energy _maxmass;
527 
531  Energy _maxcalc;
532 };
533 
534 }
535 
536 #endif /* HERWIG_KaonThreeMesonCurrent_H */
vector< double > _k1wgta
The weights for the different resonances for .
bool _rhoparameters
use local values of the masses and widths
vector< Energy > _rho1mass
Masses.
bool _k1parameters
Use local values of the parameters.
Energy _fpi
The pion decay constant, .
std::complex< double > Complex
Interpolator< Energy, Energy2 >::Ptr _a1runinter
The interpolator for the running width calculation.
double _epsomega
Parameters for the function.
vector< Energy > _k1mass
The masses of the resonances.
Energy _maxmass
The maximum mass of the hadronic system.
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
bool _a1opt
Option for the width.
Energy _maxcalc
The maximum mass when the running width was calculated.
vector< Energy > _kstar2mass
Masses.
vector< Energy > _k1width
The widths of the resonances.
bool _kstarparameters
use local values of the resonances masses and widths
vector< Energy > _rho2width
Widths.
vector< Energy > _a1runwidth
The width for the running width calculation.
vector< Energy > _rho1width
Widths.
vector< Energy > _kstar1width
Widths.
vector< Energy2 > _a1runq2
The for the running width calculation.
vector< Energy > _rho2mass
Masses.
vector< Energy > _kstar1mass
Masses.
bool _initializea1
Initialization switches.
Energy _a1mass
Parameters for the three meson resonances.
vector< double > _kstar1wgts
Parameters for the in the axial-vector terms.
Energy _a1width
The width of the resonances.
The KaonThreeMesonCurrent class implements the model of M.
vector< double > _rho1wgts
Parameters for the in the axial-vector terms.
-*- C++ -*-
vector< double > _k1wgtb
The weights for the different resonaces for .
vector< double > _kstar2wgts
Parameters for the in the vector terms.
vector< double > _rho2wgts
Parameters for the in the vector terms.
bool _a1parameters
Use local values of the parameters.
double _omegaKstarwgt
The relative weight of the and where needed.
This is the base class for the three meson decays of the weak current.
vector< Energy > _kstar2width
Widths.
bool _omegaopt
Option for the parameters.