Page MenuHomeHEPForge

No OneTemporary

diff --git a/Decay/WeakCurrents/Makefile.am b/Decay/WeakCurrents/Makefile.am
--- a/Decay/WeakCurrents/Makefile.am
+++ b/Decay/WeakCurrents/Makefile.am
@@ -1,40 +1,42 @@
BUILT_SOURCES = WeakCurrents__all.cc
CLEANFILES = WeakCurrents__all.cc
WeakCurrents__all.cc : $(DIR_H_FILES) $(DIR_CC_FILES) Makefile
@echo "Concatenating .cc files into $@"
@$(top_srcdir)/cat_with_cpplines $(DIR_CC_FILES) > $@
EXTRA_DIST = $(ALL_H_FILES) $(ALL_CC_FILES)
DIR_H_FILES = $(addprefix $(srcdir)/,$(ALL_H_FILES))
ALL_H_FILES = \
FourPionNovosibirskCurrent.h \
ScalarMesonCurrent.h\
ThreeMesonCurrentBase.h \
ThreeMesonDefaultCurrent.h\
ThreePionCLEOCurrent.h\
TwoPionRhoCurrent.h\
KPiKStarCurrent.h\
TwoPionPhotonCurrent.h\
VectorMesonCurrent.h\
FivePionCurrent.h \
KPiCurrent.h\
KaonThreeMesonCurrent.h\
-TwoPionCzyzCurrent.h
+TwoPionCzyzCurrent.h\
+TwoKaonCzyzCurrent.h
DIR_CC_FILES = $(addprefix $(srcdir)/,$(ALL_CC_FILES))
ALL_CC_FILES = \
FourPionNovosibirskCurrent.cc \
ScalarMesonCurrent.cc \
ThreeMesonCurrentBase.cc \
ThreeMesonDefaultCurrent.cc \
ThreePionCLEOCurrent.cc \
TwoPionRhoCurrent.cc \
KPiKStarCurrent.cc \
TwoPionPhotonCurrent.cc \
VectorMesonCurrent.cc \
FivePionCurrent.cc \
KPiCurrent.cc \
KaonThreeMesonCurrent.cc \
-TwoPionCzyzCurrent.cc
+TwoPionCzyzCurrent.cc \
+TwoKaonCzyzCurrent.cc
diff --git a/Decay/WeakCurrents/TwoPionCzyzCurrent.cc b/Decay/WeakCurrents/TwoKaonCzyzCurrent.cc
copy from Decay/WeakCurrents/TwoPionCzyzCurrent.cc
copy to Decay/WeakCurrents/TwoKaonCzyzCurrent.cc
--- a/Decay/WeakCurrents/TwoPionCzyzCurrent.cc
+++ b/Decay/WeakCurrents/TwoKaonCzyzCurrent.cc
@@ -1,372 +1,602 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
-// functions of the TwoPionCzyzCurrent class.
+// functions of the TwoKaonCzyzCurrent class.
//
-#include "TwoPionCzyzCurrent.h"
+#include "TwoKaonCzyzCurrent.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "Herwig/Decay/ResonanceHelpers.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
+#include <cmath>
using namespace Herwig;
-TwoPionCzyzCurrent::TwoPionCzyzCurrent()
- : omegaMag_(18.7e-4), omegaPhase_(0.106),
- omegaMass_(782.4*MeV),omegaWidth_(8.33*MeV), beta_(2.148),
- nMax_(1000) {
+TwoKaonCzyzCurrent::TwoKaonCzyzCurrent()
+ : betaRho_(2.23), betaOmega_(2.23), betaPhi_(1.97),
+ nMax_(1000), etaPhi_(1.04), gammaOmega_(0.5), gammaPhi_(0.2) {
+ using Constants::pi;
// various parameters
- rhoMag_ = {1.,1.,0.59,0.048,0.40,0.43};
- rhoPhase_ = {0.,0.,-2.20,-2.0,-2.9,1.19};
- rhoMasses_ = {773.37*MeV,1490*MeV, 1870*MeV,2120*MeV,2321*MeV,2567*MeV};
- rhoWidths_ = { 147.1*MeV, 429*MeV, 357*MeV, 300*MeV, 444*MeV, 491*MeV};
+ // rho parameters
+ rhoMag_ = {1.138, 0.043, 0.144,0.004,0.0662};
+ rhoPhase_ = {0 , pi, pi, pi, 0};
+ rhoMasses_ = {775.49*MeV,1465*MeV,1680*MeV};
+ rhoWidths_ = {149.4 *MeV,400 *MeV, 365*MeV};
+ // omega parameters
+ omegaMag_ = {1.138, 0.043, 0.144,0.004,0.0662};
+ omegaPhase_ = {0 , pi, pi, pi, 0};
+ omegaMasses_ = {782.65*MeV,1425*MeV,1729*MeV};
+ omegaWidths_ = {8.49 *MeV, 145*MeV, 245*MeV};
+ // phi parameters
+ phiMag_ = {0.985,0.0042,0.0039,0.0033};
+ phiPhase_ = {0. ,0. ,0. ,0. };
+ phiMasses_ = {1019.415*MeV,1680*MeV};
+ phiWidths_ = {4.34 *MeV, 150*MeV};
// set up for the modes in the base class
addDecayMode(2,-1);
addDecayMode(1,-1);
addDecayMode(2,-2);
- setInitialModes(3);
+ addDecayMode(1,-1);
+ addDecayMode(2,-2);
+ setInitialModes(5);
}
-IBPtr TwoPionCzyzCurrent::clone() const {
+IBPtr TwoKaonCzyzCurrent::clone() const {
return new_ptr(*this);
}
-IBPtr TwoPionCzyzCurrent::fullclone() const {
+IBPtr TwoKaonCzyzCurrent::fullclone() const {
return new_ptr(*this);
}
-void TwoPionCzyzCurrent::persistentOutput(PersistentOStream & os) const {
- os << beta_ << omegaWgt_ << omegaMag_ << omegaPhase_
- << ounit(omegaMass_,GeV) << ounit(omegaWidth_,GeV)
+void TwoKaonCzyzCurrent::persistentOutput(PersistentOStream & os) const {
+ os << betaRho_ << betaOmega_ << betaPhi_
<< rhoWgt_ << rhoMag_ << rhoPhase_
<< ounit(rhoMasses_,GeV) << ounit(rhoWidths_,GeV)
+ << phiWgt_ << phiMag_ << phiPhase_
+ << ounit(phiMasses_,GeV) << ounit(phiWidths_,GeV)
<< ounit(mass_,GeV) << ounit(width_,GeV) << coup_
- << dh_ << ounit(hres_,GeV2) << ounit(h0_,GeV2) << nMax_;
+ << dh_ << ounit(hres_,GeV2) << ounit(h0_,GeV2)
+ << nMax_ << etaPhi_ << gammaOmega_ << gammaPhi_;
}
-void TwoPionCzyzCurrent::persistentInput(PersistentIStream & is, int) {
- is >> beta_ >> omegaWgt_ >> omegaMag_ >> omegaPhase_
- >> iunit(omegaMass_,GeV) >> iunit(omegaWidth_,GeV)
+void TwoKaonCzyzCurrent::persistentInput(PersistentIStream & is, int) {
+ is >> betaRho_ >> betaOmega_ >> betaPhi_
>> rhoWgt_ >> rhoMag_ >> rhoPhase_
>> iunit(rhoMasses_,GeV) >> iunit(rhoWidths_,GeV)
+ >> phiWgt_ >> phiMag_ >> phiPhase_
+ >> iunit(phiMasses_,GeV) >> iunit(phiWidths_,GeV)
>> iunit(mass_,GeV) >> iunit(width_,GeV) >> coup_
- >> dh_ >> iunit(hres_,GeV2) >> iunit(h0_,GeV2) >> nMax_;
+ >> dh_ >> iunit(hres_,GeV2) >> iunit(h0_,GeV2)
+ >> nMax_ >> etaPhi_ >> gammaOmega_ >> gammaPhi_;
}
// The following static variable is needed for the type
// description system in ThePEG.
-DescribeClass<TwoPionCzyzCurrent,WeakDecayCurrent>
- describeHerwigTwoPionCzyzCurrent("Herwig::TwoPionCzyzCurrent", "HwWeakCurrents.so");
+DescribeClass<TwoKaonCzyzCurrent,WeakDecayCurrent>
+ describeHerwigTwoKaonCzyzCurrent("Herwig::TwoKaonCzyzCurrent", "HwWeakCurrents.so");
-void TwoPionCzyzCurrent::Init() {
+void TwoKaonCzyzCurrent::Init() {
- static ClassDocumentation<TwoPionCzyzCurrent> documentation
- ("The TwoPionCzyzCurrent class uses the currents from "
- "PRD 81 094014 for the weak current with two pions",
- "The current for two pions from \\cite{Czyz:2010hj} was used.",
+ static ClassDocumentation<TwoKaonCzyzCurrent> documentation
+ ("The TwoKaonCzyzCurrent class uses the currents from "
+ "PRD 81 094014 for the weak current with two kaons",
+ "The current for two kaons from \\cite{Czyz:2010hj} was used.",
"%\\cite{Czyz:2010hj}\n"
"\\bibitem{Czyz:2010hj}\n"
"H.~Czyz, A.~Grzelinska and J.~H.~Kuhn,\n"
"%``Narrow resonances studies with the radiative return method,''\n"
"Phys.\\ Rev.\\ D {\\bf 81} (2010) 094014\n"
"doi:10.1103/PhysRevD.81.094014\n"
"[arXiv:1002.0279 [hep-ph]].\n"
"%%CITATION = doi:10.1103/PhysRevD.81.094014;%%\n"
"%28 citations counted in INSPIRE as of 30 Jul 2018\n");
- static ParVector<TwoPionCzyzCurrent,Energy> interfaceRhoMasses
+ static ParVector<TwoKaonCzyzCurrent,Energy> interfaceRhoMasses
("RhoMasses",
"The masses of the different rho resonances for the pi pi channel",
- &TwoPionCzyzCurrent::rhoMasses_, MeV, -1, 775.8*MeV, ZERO, 10000.*MeV,
+ &TwoKaonCzyzCurrent::rhoMasses_, MeV, -1, 775.8*MeV, ZERO, 10000.*MeV,
false, false, true);
- static ParVector<TwoPionCzyzCurrent,Energy> interfaceRhoWidths
+ static ParVector<TwoKaonCzyzCurrent,Energy> interfaceRhoWidths
("RhoWidths",
"The widths of the different rho resonances for the pi pi channel",
- &TwoPionCzyzCurrent::rhoWidths_, MeV, -1, 150.3*MeV, ZERO, 1000.*MeV,
+ &TwoKaonCzyzCurrent::rhoWidths_, MeV, -1, 150.3*MeV, ZERO, 1000.*MeV,
false, false, true);
- static ParVector<TwoPionCzyzCurrent,double> interfaceRhoMagnitude
+ static ParVector<TwoKaonCzyzCurrent,double> interfaceRhoMagnitude
("RhoMagnitude",
"Magnitude of the weight of the different resonances for the pi pi channel",
- &TwoPionCzyzCurrent::rhoMag_, -1, 0., 0, 0,
+ &TwoKaonCzyzCurrent::rhoMag_, -1, 0., 0, 0,
false, false, Interface::nolimits);
- static ParVector<TwoPionCzyzCurrent,double> interfaceRhoPhase
+ static ParVector<TwoKaonCzyzCurrent,double> interfaceRhoPhase
("RhoPhase",
"Phase of the weight of the different resonances for the pi pi channel",
- &TwoPionCzyzCurrent::rhoPhase_, -1, 0., 0, 0,
+ &TwoKaonCzyzCurrent::rhoPhase_, -1, 0., 0, 0,
false, false, Interface::nolimits);
+
+ static ParVector<TwoKaonCzyzCurrent,Energy> interfaceOmegaMasses
+ ("OmegaMasses",
+ "The masses of the different omega resonances for the pi pi channel",
+ &TwoKaonCzyzCurrent::omegaMasses_, MeV, -1, 775.8*MeV, ZERO, 10000.*MeV,
+ false, false, true);
+
+ static ParVector<TwoKaonCzyzCurrent,Energy> interfaceOmegaWidths
+ ("OmegaWidths",
+ "The widths of the different omega resonances for the pi pi channel",
+ &TwoKaonCzyzCurrent::omegaWidths_, MeV, -1, 150.3*MeV, ZERO, 1000.*MeV,
+ false, false, true);
- static Parameter<TwoPionCzyzCurrent,unsigned int> interfacenMax
+ static ParVector<TwoKaonCzyzCurrent,double> interfaceOmegaMagnitude
+ ("OmegaMagnitude",
+ "Magnitude of the weight of the different resonances for the pi pi channel",
+ &TwoKaonCzyzCurrent::omegaMag_, -1, 0., 0, 0,
+ false, false, Interface::nolimits);
+
+ static ParVector<TwoKaonCzyzCurrent,double> interfaceOmegaPhase
+ ("OmegaPhase",
+ "Phase of the weight of the different resonances for the pi pi channel",
+ &TwoKaonCzyzCurrent::omegaPhase_, -1, 0., 0, 0,
+ false, false, Interface::nolimits);
+
+ static ParVector<TwoKaonCzyzCurrent,Energy> interfacePhiMasses
+ ("PhiMasses",
+ "The masses of the different phi resonances for the pi pi channel",
+ &TwoKaonCzyzCurrent::phiMasses_, MeV, -1, 775.8*MeV, ZERO, 10000.*MeV,
+ false, false, true);
+
+ static ParVector<TwoKaonCzyzCurrent,Energy> interfacePhiWidths
+ ("PhiWidths",
+ "The widths of the different phi resonances for the pi pi channel",
+ &TwoKaonCzyzCurrent::phiWidths_, MeV, -1, 150.3*MeV, ZERO, 1000.*MeV,
+ false, false, true);
+
+ static ParVector<TwoKaonCzyzCurrent,double> interfacePhiMagnitude
+ ("PhiMagnitude",
+ "Magnitude of the weight of the different resonances for the pi pi channel",
+ &TwoKaonCzyzCurrent::phiMag_, -1, 0., 0, 0,
+ false, false, Interface::nolimits);
+
+ static ParVector<TwoKaonCzyzCurrent,double> interfacePhiPhase
+ ("PhiPhase",
+ "Phase of the weight of the different resonances for the pi pi channel",
+ &TwoKaonCzyzCurrent::phiPhase_, -1, 0., 0, 0,
+ false, false, Interface::nolimits);
+
+ static Parameter<TwoKaonCzyzCurrent,unsigned int> interfacenMax
("nMax",
"The maximum number of resonances to include in the sum,"
" should be approx infinity",
- &TwoPionCzyzCurrent::nMax_, 1000, 10, 10000,
+ &TwoKaonCzyzCurrent::nMax_, 1000, 10, 10000,
+ false, false, Interface::limited);
+
+ static Parameter<TwoKaonCzyzCurrent,double> interfacebetaRho
+ ("betaRho",
+ "The beta parameter for the rho couplings",
+ &TwoKaonCzyzCurrent::betaRho_, 2.23, 0.0, 100.,
+ false, false, Interface::limited);
+
+ static Parameter<TwoKaonCzyzCurrent,double> interfacebetaOmega
+ ("betaOmega",
+ "The beta parameter for the rho couplings",
+ &TwoKaonCzyzCurrent::betaOmega_, 2.23, 0.0, 100.,
+ false, false, Interface::limited);
+
+ static Parameter<TwoKaonCzyzCurrent,double> interfacebetaPhi
+ ("betaPhi",
+ "The beta parameter for the phi couplings",
+ &TwoKaonCzyzCurrent::betaPhi_, 1.97, 0.0, 100.,
+ false, false, Interface::limited);
+
+ static Parameter<TwoKaonCzyzCurrent,double> interfaceEtaPhi
+ ("EtaPhi",
+ "The eta_phi mixing parameter",
+ &TwoKaonCzyzCurrent::etaPhi_, 1.04, 0.0, 10.0,
false, false, Interface::limited);
- static Parameter<TwoPionCzyzCurrent,double> interfacebeta
- ("beta",
- "The beta parameter for the couplings",
- &TwoPionCzyzCurrent::beta_, 2.148, 0.0, 100.,
+ static Parameter<TwoKaonCzyzCurrent,double> interfacegammaOmega
+ ("gammaOmega",
+ "The gamma parameter for the widths of omega resonances",
+ &TwoKaonCzyzCurrent::gammaOmega_, 0.5, 0.0, 1.0,
false, false, Interface::limited);
- static Parameter<TwoPionCzyzCurrent,Energy> interfaceOmegaMass
- ("OmegaMass",
- "The mass of the omega meson",
- &TwoPionCzyzCurrent::omegaMass_, MeV,782.4*MeV, 0.0*MeV, 100.0*MeV,
- false, false, Interface::limited);
-
- static Parameter<TwoPionCzyzCurrent,Energy> interfaceOmegaWidth
- ("OmegaWidth",
- "The mass of the omega meson",
- &TwoPionCzyzCurrent::omegaWidth_, MeV, 8.33*MeV, 0.0*MeV, 100.0*MeV,
- false, false, Interface::limited);
-
- static Parameter<TwoPionCzyzCurrent,double> interfaceOmegaMagnitude
- ("OmegaMagnitude",
- "The magnitude of the omega couplings",
- &TwoPionCzyzCurrent::omegaMag_, 18.7e-4, 0.0, 10.0,
- false, false, Interface::limited);
-
- static Parameter<TwoPionCzyzCurrent,double> interfaceOmegaPhase
- ("OmegaPhase",
- "The magnitude of the omega couplings",
- &TwoPionCzyzCurrent::omegaPhase_, 0.106, 0.0, 2.*Constants::pi,
+ static Parameter<TwoKaonCzyzCurrent,double> interfacegammaPhi
+ ("gammaPhi",
+ "The gamma parameter for the widths of phi resonances",
+ &TwoKaonCzyzCurrent::gammaPhi_, 0.2, 0.0, 1.0,
false, false, Interface::limited);
}
-void TwoPionCzyzCurrent::doinit() {
+void TwoKaonCzyzCurrent::doinit() {
WeakDecayCurrent::doinit();
// check consistency of parametrers
- if(rhoMasses_.size()!=rhoWidths_.size())
- throw InitException() << "Inconsistent parameters in TwoPionCzyzCurrent"
+ if(rhoMasses_.size() != rhoWidths_.size() ||
+ omegaMasses_.size() != omegaWidths_.size() ||
+ phiMasses_.size() != phiWidths_.size() )
+ throw InitException() << "Inconsistent parameters in TwoKaonCzyzCurrent"
<< "::doinit()" << Exception::abortnow;
// weights for the rho channels
if(rhoMag_.size()!=rhoPhase_.size())
throw InitException() << "The vectors containing the weights and phase for the"
<< " rho channel must be the same size in "
- << "TwoPionCzyzCurrent::doinit()" << Exception::runerror;
- Complex rhoSum(0.);
+ << "TwoKaonCzyzCurrent::doinit()" << Exception::runerror;
+ // combine mags and phase
for(unsigned int ix=0;ix<rhoMag_.size();++ix) {
rhoWgt_.push_back(rhoMag_[ix]*(cos(rhoPhase_[ix])+Complex(0.,1.)*sin(rhoPhase_[ix])));
- if(ix>0) rhoSum +=rhoWgt_.back();
}
- omegaWgt_ = omegaMag_*(cos(omegaPhase_)+Complex(0.,1.)*sin(omegaPhase_));
- // set up the masses and widths of the rho resonances
- double gamB(tgamma(2.-beta_));
- Complex cwgt(0.);
+ for(unsigned int ix=0;ix<omegaMag_.size();++ix) {
+ omegaWgt_.push_back(omegaMag_[ix]*(cos(omegaPhase_[ix])+Complex(0.,1.)*sin(omegaPhase_[ix])));
+ }
+ for(unsigned int ix=0;ix<phiMag_.size();++ix) {
+ phiWgt_.push_back(phiMag_[ix]*(cos(phiPhase_[ix])+Complex(0.,1.)*sin(phiPhase_[ix])));
+ }
+ // rho masses and couplings
+ double gamB(std::tgamma(2.-betaRho_));
Energy mpi(getParticleData(ParticleID::piplus)->mass());
+ mass_.push_back(vector<Energy>());
+ width_.push_back(vector<Energy>());
+ coup_.push_back(vector<Complex>());
for(unsigned int ix=0;ix<nMax_;++ix) {
// this is gam(2-beta+n)/gam(n+1)
if(ix>0) {
- gamB *= ((1.-beta_+double(ix)))/double(ix);
+ gamB *= ((1.-betaRho_+double(ix)))/double(ix);
}
- Complex c_n = tgamma(beta_-0.5) /(0.5+double(ix)) / sqrt(Constants::pi) *
- sin(Constants::pi*(beta_-1.-double(ix)))/Constants::pi*gamB;
+ Complex c_n = std::tgamma(betaRho_-0.5) /(0.5+double(ix)) / sqrt(Constants::pi) *
+ sin(Constants::pi*(betaRho_-1.-double(ix)))/Constants::pi*gamB;
if(ix%2!=0) c_n *= -1.;
+ // couplings
+ if(ix>=rhoWgt_.size()) {
+ coup_[0].push_back(c_n);
+ }
+ else {
+ coup_[0].push_back(rhoWgt_[ix]);
+ }
// set the masses and widths
// calc for higher resonances
if(ix>=rhoMasses_.size()) {
- mass_ .push_back(rhoMasses_[0]*sqrt(1.+2.*double(ix)));
- width_.push_back(rhoWidths_[0]/rhoMasses_[0]*mass_.back());
+ mass_ [0].push_back(rhoMasses_[0]*sqrt(1.+2.*double(ix)));
+ width_[0].push_back(rhoWidths_[0]/rhoMasses_[0]*mass_[0].back());
}
// input for lower ones
else {
- mass_ .push_back(rhoMasses_[ix]);
- width_.push_back(rhoWidths_[ix]);
- if(ix>0) cwgt += c_n;
+ mass_ [0].push_back(rhoMasses_[ix]);
+ width_[0].push_back(rhoWidths_[ix]);
}
// parameters for the gs propagators
- hres_.push_back(Resonance::Hhat(sqr(mass_.back()),mass_.back(),width_.back(),mpi,mpi));
- dh_ .push_back(Resonance::dHhatds(mass_.back(),width_.back(),mpi,mpi));
- h0_.push_back(Resonance::H(ZERO,mass_.back(),width_.back(),mpi,mpi,dh_.back(),hres_.back()));
- coup_.push_back(c_n);
+ hres_.push_back(Resonance::Hhat(sqr(mass_[0].back()),
+ mass_[0].back(),width_[0].back(),mpi,mpi));
+ dh_ .push_back(Resonance::dHhatds(mass_[0].back(),width_[0].back(),mpi,mpi));
+ h0_ .push_back(Resonance::H(ZERO,mass_[0].back(),width_[0].back(),
+ mpi,mpi,dh_.back(),hres_.back()));
}
- // fix up the early weights
- for(unsigned int ix=1;ix<rhoMasses_.size();++ix) {
- coup_[ix] = rhoWgt_[ix]*cwgt/rhoSum;
+ // omega masses and couplings
+ gamB = std::tgamma(2.-betaOmega_);
+ mass_.push_back(vector<Energy>());
+ width_.push_back(vector<Energy>());
+ coup_.push_back(vector<Complex>());
+ for(unsigned int ix=0;ix<nMax_;++ix) {
+ // this is gam(2-beta+n)/gam(n+1)
+ if(ix>0) {
+ gamB *= ((1.-betaOmega_+double(ix)))/double(ix);
+ }
+ Complex c_n = std::tgamma(betaOmega_-0.5) /(0.5+double(ix)) / sqrt(Constants::pi) *
+ sin(Constants::pi*(betaOmega_-1.-double(ix)))/Constants::pi*gamB;
+ if(ix%2!=0) c_n *= -1.;
+ // couplings
+ if(ix>=omegaWgt_.size()) {
+ coup_[1].push_back(c_n);
+ }
+ else {
+ coup_[1].push_back(omegaWgt_[ix]);
+ }
+ // set the masses and widths
+ // calc for higher resonances
+ if(ix>=omegaMasses_.size()) {
+ mass_ [1].push_back(omegaMasses_[0]*sqrt(1.+2.*double(ix)));
+ width_[1].push_back(gammaOmega_*mass_[1].back());
+ }
+ // input for lower ones
+ else {
+ mass_ [1].push_back(omegaMasses_[ix]);
+ width_[1].push_back(omegaWidths_[ix]);
+ }
+ }
+ // phi masses and couplings
+ gamB = std::tgamma(2.-betaPhi_);
+ gamB = 32.78;
+ mass_.push_back(vector<Energy>());
+ width_.push_back(vector<Energy>());
+ coup_.push_back(vector<Complex>());
+ for(unsigned int ix=0;ix<nMax_;++ix) {
+ // this is gam(2-beta+n)/gam(n+1)
+ if(ix>0) {
+ gamB *= ((1.-betaPhi_+double(ix)))/double(ix);
+ }
+ Complex c_n = std::tgamma(betaPhi_-0.5) /(0.5+double(ix)) / sqrt(Constants::pi) *
+ sin(Constants::pi*(betaPhi_-1.-double(ix)))/Constants::pi*gamB;
+ if(ix%2!=0) c_n *= -1.;
+ // couplings
+ if(ix>=phiWgt_.size()) {
+ coup_[2].push_back(c_n);
+ }
+ else {
+ coup_[2].push_back(phiWgt_[ix]);
+ }
+ // set the masses and widths
+ // calc for higher resonances
+ if(ix>=phiMasses_.size()) {
+ mass_ [2].push_back(phiMasses_[0]*sqrt(1.+2.*double(ix)));
+ width_[2].push_back(gammaPhi_*mass_[2].back());
+ }
+ // input for lower ones
+ else {
+ mass_ [2].push_back(phiMasses_[ix]);
+ width_[2].push_back(phiWidths_[ix]);
+ }
}
}
// complete the construction of the decay mode for integration
-bool TwoPionCzyzCurrent::createMode(int icharge, unsigned int imode,
+bool TwoKaonCzyzCurrent::createMode(int icharge, unsigned int imode,
DecayPhaseSpaceModePtr mode,
unsigned int iloc,unsigned int,
DecayPhaseSpaceChannelPtr phase,Energy upp) {
if((imode==0 && abs(icharge)!=3) ||
(imode>0 && icharge !=0)) return false;
// make sure that the decays are kinematically allowed
tPDPtr part[2];
if(imode==0) {
- part[0]=getParticleData(ParticleID::piplus);
- part[1]=getParticleData(ParticleID::pi0);
+ part[0]=getParticleData(ParticleID::Kplus);
+ part[1]=getParticleData(ParticleID::K0);
}
- else {
- part[0]=getParticleData(ParticleID::piplus);
- part[1]=getParticleData(ParticleID::piminus);
+ else if(imode==1|| imode==2) {
+ part[0]=getParticleData(ParticleID::K0 );
+ part[1]=getParticleData(ParticleID::Kbar0);
+ }
+ else {
+ part[0]=getParticleData(ParticleID::Kplus);
+ part[1]=getParticleData(ParticleID::Kminus);
}
Energy min(part[0]->massMin()+part[1]->massMin());
if(min>upp) return false;
DecayPhaseSpaceChannelPtr newchannel;
// set the resonances
- tPDPtr res[3];
+ vector<tPDPtr> res;
if(icharge==0) {
- res[0] =getParticleData(113);
- res[1] =getParticleData(100113);
- res[2] =getParticleData(30113);
+ res.push_back(getParticleData(113 ));
+ res.push_back(getParticleData(100113));
+ res.push_back(getParticleData(30113 ));
+ res.push_back(getParticleData( 223));
+ res.push_back(getParticleData( 333));
}
else {
- res[0] =getParticleData(213);
- res[1] =getParticleData(100213);
- res[2] =getParticleData(30213);
+ res.push_back(getParticleData(213 ));
+ res.push_back(getParticleData(100213));
+ res.push_back(getParticleData(30213 ));
if(icharge==-3) {
for(unsigned int ix=0;ix<3;++ix) {
if(res[ix]&&res[ix]->CC()) res[ix]=res[ix]->CC();
}
}
}
// create the channels
- for(unsigned int ix=0;ix<3;++ix) {
+ for(unsigned int ix=0;ix<res.size();++ix) {
if(res[ix]) {
newchannel=new_ptr(DecayPhaseSpaceChannel(*phase));
newchannel->addIntermediate(res[ix],0,0.0,iloc,iloc+1);
mode->addChannel(newchannel);
}
}
// reset the masses in the intergrators
for(unsigned int ix=0;ix<3;++ix) {
if(ix<rhoMasses_.size()&&res[ix]) {
mode->resetIntermediate(res[ix],rhoMasses_[ix],rhoWidths_[ix]);
}
}
+ if(res.size()>3) {
+ mode->resetIntermediate(res[3],omegaMasses_[0],omegaWidths_[0]);
+ mode->resetIntermediate(res[4],phiMasses_ [0], phiWidths_[0]);
+ }
// return if successful
return true;
}
// the particles produced by the current
-tPDVector TwoPionCzyzCurrent::particles(int icharge, unsigned int imode,
+tPDVector TwoKaonCzyzCurrent::particles(int icharge, unsigned int imode,
int,int) {
tPDVector output(2);
if(imode==0) {
- output[0]=getParticleData(ParticleID::piplus);
- output[1]=getParticleData(ParticleID::pi0);
+ output[0]=getParticleData(ParticleID::Kplus);
+ output[1]=getParticleData(ParticleID::K0);
+ }
+ else if(imode==1||imode==2) {
+ output[0]=getParticleData(ParticleID::K0);
+ output[1]=getParticleData(ParticleID::Kbar0);
}
else {
- output[0]=getParticleData(ParticleID::piplus);
- output[1]=getParticleData(ParticleID::piminus);
+ output[0]=getParticleData(ParticleID::Kplus );
+ output[1]=getParticleData(ParticleID::Kminus);
}
if(icharge==-3) {
for(unsigned int ix=0;ix<output.size();++ix) {
if(output[ix]->CC()) output[ix]=output[ix]->CC();
}
}
return output;
}
// hadronic current
vector<LorentzPolarizationVectorE>
-TwoPionCzyzCurrent::current(const int imode, const int ichan,
+TwoKaonCzyzCurrent::current(const int imode, const int ichan,
Energy & scale,const ParticleVector & outpart,
DecayIntegrator::MEOption meopt) const {
useMe();
if(meopt==DecayIntegrator::Terminate) {
for(unsigned int ix=0;ix<2;++ix)
ScalarWaveFunction::constructSpinInfo(outpart[ix],outgoing,true);
return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE());
}
// momentum difference and sum of the mesons
Lorentz5Momentum pdiff(outpart[0]->momentum()-outpart[1]->momentum());
Lorentz5Momentum psum (outpart[0]->momentum()+outpart[1]->momentum());
psum.rescaleMass();
scale=psum.mass();
// mass2 of vector intermediate state
Energy2 q2(psum.m2());
double dot(psum*pdiff/q2);
psum *=dot;
LorentzPolarizationVector vect;
// calculate the current
- Complex FPI(0.);
+ Complex FK(0.);
Energy ma = outpart[0]->mass();
Energy mb = outpart[1]->mass();
- for(unsigned int ix=0;ix<coup_.size();++ix) {
- if(ichan>=0&&ix!=abs(ichan)) continue;
- Complex term = coup_[ix]*Resonance::BreitWignerGS(q2,mass_[ix],width_[ix],
- ma,mb,h0_[ix],dh_[ix],hres_[ix]);
- // include rho-omega if needed
- if(ix==0&&imode!=0)
- term *= 1./(1.+omegaWgt_)*(1.+omegaWgt_*Resonance::BreitWignerFW(q2,omegaMass_,omegaWidth_));
- FPI += term;
+ Energy mpi = getParticleData(ParticleID::piplus)->mass();
+ int icharge = abs(outpart[0]->dataPtr()->iCharge())+abs(outpart[1]->dataPtr()->iCharge());
+ if(imode==0||imode==1) {
+ pdiff-=psum;
+ return vector<LorentzPolarizationVectorE>(1,FK*pdiff);
+ }
+ for(unsigned int ix=0;ix<coup_[0].size();++ix) {
+ if(ichan>=0&&ix>3) break;
+ // rho exchange
+ Complex term = coup_[0][ix]*Resonance::BreitWignerGS(q2,mass_[0][ix],width_[0][ix],
+ mpi,mpi,h0_[ix],dh_[ix],hres_[ix]);
+ FK += icharge!=0 ? 0.5*term : -0.5*term;
+ if(ichan>0&&ichan<3&&ichan==int(ix)) {
+ FK = icharge!=0 ? 0.5*term : -0.5*term;
+ break;
+ }
+ // omega exchange
+ term = coup_[1][ix]*Resonance::BreitWignerFW(q2,mass_[1][ix],width_[1][ix]);
+ FK += 1./6.*term;
+ if(ichan==3) {
+ FK = 1./6.*term;
+ break;
+ }
+ // phi exchange
+ term = coup_[2][ix]*Resonance::BreitWignerPWave(q2,mass_[2][ix],width_[2][ix],ma,mb);
+ if(ix==0 && icharge==0 ) term *=etaPhi_;
+ FK += term/3.;
+ if(ichan==4) {
+ FK = 1./3.*term;
+ break;
+ }
}
// factor for cc mode
- if(imode==0) FPI *= sqrt(2.0);
+ if(imode==0) FK *= sqrt(2.0);
// compute the current
pdiff-=psum;
- return vector<LorentzPolarizationVectorE>(1,FPI*pdiff);
+ return vector<LorentzPolarizationVectorE>(1,FK*pdiff);
}
-bool TwoPionCzyzCurrent::accept(vector<int> id) {
+bool TwoKaonCzyzCurrent::accept(vector<int> id) {
// check there are only two particles
if(id.size()!=2) return false;
// pion modes
- if((abs(id[0])==ParticleID::piplus && id[1] ==ParticleID::pi0 ) ||
- ( id[0] ==ParticleID::pi0 && abs(id[1])==ParticleID::piplus))
+ if((id[0]==ParticleID::Kminus && id[1]==ParticleID::K0) ||
+ (id[0]==ParticleID::K0 && id[1]==ParticleID::Kminus) ||
+ (id[0]==ParticleID::Kplus && id[1]==ParticleID::Kbar0) ||
+ (id[0]==ParticleID::Kbar0 && id[1]==ParticleID::Kplus))
return true;
- else if((id[0]==ParticleID::piminus && id[1]==ParticleID::piplus) ||
- (id[0]==ParticleID::piplus && id[1]==ParticleID::piminus))
+ else if((id[0]==ParticleID::Kminus && id[1]==ParticleID::Kplus) ||
+ (id[0]==ParticleID::Kplus && id[1]==ParticleID::Kminus))
+ return true;
+ else if((id[0]==ParticleID::Kbar0 && id[1]==ParticleID::K0) ||
+ (id[0]==ParticleID::K0 && id[1]==ParticleID::Kbar0))
return true;
else
return false;
}
// the decay mode
-unsigned int TwoPionCzyzCurrent::decayMode(vector<int> idout) {
- unsigned int npi(0);
+unsigned int TwoKaonCzyzCurrent::decayMode(vector<int> idout) {
+ unsigned int nk0(0),nkp(0);
for(unsigned int ix=0;ix<idout.size();++ix) {
- if(abs(idout[ix])==ParticleID::piplus) ++npi;
+ if(abs(idout[ix])==ParticleID::Kplus) ++nkp;
+ else if(abs(idout[ix])==ParticleID::K0) ++nk0;
}
- if(npi==2) return 1;
- else return 0;
+ if(nkp==1&&nk0==1) return 0;
+ else if(nkp==2) return 1;
+ else if(nk0==2) return 3;
+ else return false;
}
// output the information for the database
-void TwoPionCzyzCurrent::dataBaseOutput(ofstream & output,bool header,
+void TwoKaonCzyzCurrent::dataBaseOutput(ofstream & output,bool header,
bool create) const {
if(header) output << "update decayers set parameters=\"";
- if(create) output << "create Herwig::TwoPionCzyzCurrent "
+ if(create) output << "create Herwig::TwoKaonCzyzCurrent "
<< name() << " HwWeakCurrents.so\n";
unsigned int ix;
for(ix=0;ix<rhoMasses_.size();++ix) {
- if(ix<6) output << "newdef ";
+ if(ix<3) output << "newdef ";
else output << "insert ";
output << name() << ":RhoMasses " << ix << " " << rhoMasses_[ix]/MeV << "\n";
}
for(ix=0;ix<rhoWidths_.size();++ix) {
- if(ix<6) output << "newdef ";
+ if(ix<3) output << "newdef ";
else output << "insert ";
output << name() << ":RhoWidths " << ix << " " << rhoWidths_[ix]/MeV << "\n";
}
for(ix=0;ix<rhoWgt_.size();++ix) {
- if(ix<6) output << "newdef ";
+ if(ix<5) output << "newdef ";
else output << "insert ";
output << name() << ":RhoMagnitude " << ix << " " << rhoMag_[ix] << "\n";
- if(ix<6) output << "newdef ";
+ if(ix<5) output << "newdef ";
else output << "insert ";
output << name() << ":RhoPhase " << ix << " " << rhoPhase_[ix] << "\n";
}
- output << "newdef " << name() << ":OmegaMass " << omegaMass_/MeV << "\n";
- output << "newdef " << name() << ":OmegaWidth " << omegaWidth_/MeV << "\n";
- output << "newdef " << name() << ":OmegaMagnitude " << omegaMag_ << "\n";
- output << "newdef " << name() << ":OmegaPhase " << omegaPhase_ << "\n";
+ for(ix=0;ix<omegaMasses_.size();++ix) {
+ if(ix<3) output << "newdef ";
+ else output << "insert ";
+ output << name() << ":OmegaMasses " << ix << " " << omegaMasses_[ix]/MeV << "\n";
+ }
+ for(ix=0;ix<omegaWidths_.size();++ix) {
+ if(ix<3) output << "newdef ";
+ else output << "insert ";
+ output << name() << ":OmegaWidths " << ix << " " << omegaWidths_[ix]/MeV << "\n";
+ }
+ for(ix=0;ix<omegaWgt_.size();++ix) {
+ if(ix<5) output << "newdef ";
+ else output << "insert ";
+ output << name() << ":OmegaMagnitude " << ix << " " << omegaMag_[ix] << "\n";
+ if(ix<5) output << "newdef ";
+ else output << "insert ";
+ output << name() << ":OmegaPhase " << ix << " " << omegaPhase_[ix] << "\n";
+ }
+ for(ix=0;ix<phiMasses_.size();++ix) {
+ if(ix<2) output << "newdef ";
+ else output << "insert ";
+ output << name() << ":PhiMasses " << ix << " " << phiMasses_[ix]/MeV << "\n";
+ }
+ for(ix=0;ix<phiWidths_.size();++ix) {
+ if(ix<2) output << "newdef ";
+ else output << "insert ";
+ output << name() << ":PhiWidths " << ix << " " << phiWidths_[ix]/MeV << "\n";
+ }
+ for(ix=0;ix<phiWgt_.size();++ix) {
+ if(ix<4) output << "newdef ";
+ else output << "insert ";
+ output << name() << ":PhiMagnitude " << ix << " " << phiMag_[ix] << "\n";
+ if(ix<4) output << "newdef ";
+ else output << "insert ";
+ output << name() << ":PhiPhase " << ix << " " << phiPhase_[ix] << "\n";
+ }
+ output << "newdef " << name() << ":betaRho " << betaRho_ << "\n";
+ output << "newdef " << name() << ":betaOmega " << betaOmega_ << "\n";
+ output << "newdef " << name() << ":betaPhi " << betaPhi_ << "\n";
+ output << "newdef " << name() << ":gammaOmega " << gammaOmega_ << "\n";
+ output << "newdef " << name() << ":gammaPhi " << gammaPhi_ << "\n";
+ output << "newdef " << name() << ":etaPhi " << etaPhi_ << "\n";
output << "newdef " << name() << ":nMax " << nMax_ << "\n";
- output << "newdef " << name() << ":beta " << beta_ << "\n";
WeakDecayCurrent::dataBaseOutput(output,false,false);
if(header) output << "\n\" where BINARY ThePEGName=\""
<< fullName() << "\";" << endl;
}
diff --git a/Decay/WeakCurrents/TwoPionCzyzCurrent.h b/Decay/WeakCurrents/TwoKaonCzyzCurrent.h
copy from Decay/WeakCurrents/TwoPionCzyzCurrent.h
copy to Decay/WeakCurrents/TwoKaonCzyzCurrent.h
--- a/Decay/WeakCurrents/TwoPionCzyzCurrent.h
+++ b/Decay/WeakCurrents/TwoKaonCzyzCurrent.h
@@ -1,265 +1,325 @@
// -*- C++ -*-
-#ifndef Herwig_TwoPionCzyzCurrent_H
-#define Herwig_TwoPionCzyzCurrent_H
+#ifndef Herwig_TwoKaonCzyzCurrent_H
+#define Herwig_TwoKaonCzyzCurrent_H
//
-// This is the declaration of the TwoPionCzyzCurrent class.
+// This is the declaration of the TwoKaonCzyzCurrent class.
//
#include "WeakDecayCurrent.h"
namespace Herwig {
using namespace ThePEG;
/**
- * Here is the documentation of the TwoPionCzyzCurrent class.
+ * Here is the documentation of the TwoKaonCzyzCurrent class.
*
- * @see \ref TwoPionCzyzCurrentInterfaces "The interfaces"
- * defined for TwoPionCzyzCurrent.
+ * @see \ref TwoKaonCzyzCurrentInterfaces "The interfaces"
+ * defined for TwoKaonCzyzCurrent.
*/
-class TwoPionCzyzCurrent: public WeakDecayCurrent {
+class TwoKaonCzyzCurrent: public WeakDecayCurrent {
public:
/**
* The default constructor.
*/
- TwoPionCzyzCurrent();
+ TwoKaonCzyzCurrent();
/** @name Methods for the construction of the phase space integrator. */
//@{
/**
* Complete the construction of the decay mode for integration.
* This version just adds the intermediate resonances, two outgoing mesons
* and photon.
* @param icharge The total charge of the outgoing particles in the current.
* @param imode The mode in the current being asked for.
* @param mode The phase space mode for the integration
* @param iloc The location of the of the first particle from the current in
* the list of outgoing particles.
* @param ires The location of the first intermediate for the current.
* @param phase The prototype phase space channel for the integration.
* @param upp The maximum possible mass the particles in the current are
* allowed to have.
* @return Whether the current was sucessfully constructed.
*/
virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode,
unsigned int iloc,unsigned int ires,
DecayPhaseSpaceChannelPtr phase,Energy upp);
/**
* The particles produced by the current. This just returns the two pseudoscalar
* mesons and the photon.
* @param icharge The total charge of the particles in the current.
* @param imode The mode for which the particles are being requested
* @param iq The PDG code for the quark
* @param ia The PDG code for the antiquark
* @return The external particles for the current.
*/
virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia);
//@}
/**
* Hadronic current. This version returns the hadronic current described above.
* @param imode The mode
* @param ichan The phase-space channel the current is needed for
* @param scale The invariant mass of the particles in the current.
* @param decay The decay products
* @param meopt Option for the calculation of the matrix element
* @return The current.
*/
virtual vector<LorentzPolarizationVectorE>
current(const int imode, const int ichan,Energy & scale,
const ParticleVector & decay, DecayIntegrator::MEOption meopt) const;
/**
* Accept the decay. Checks the particles are the allowed mode.
* @param id The id's of the particles in the current.
* @return Can this current have the external particles specified.
*/
virtual bool accept(vector<int> id);
/**
* Return the decay mode number for a given set of particles in the current.
* @param id The id's of the particles in the current.
* @return The number of the mode
*/
virtual unsigned int decayMode(vector<int> id);
/**
* Output the setup information for the particle database
* @param os The stream to output the information to
* @param header Whether or not to output the information for MySQL
* @param create Whether or not to add a statement creating the object
*/
virtual void dataBaseOutput(ofstream & os,bool header,bool create) const;
public:
/** @name Functions used by the persistent I/O system. */
//@{
/**
* Function used to write out object persistently.
* @param os the persistent output stream written to.
*/
void persistentOutput(PersistentOStream & os) const;
/**
* Function used to read in object persistently.
* @param is the persistent input stream read from.
* @param version the version number of the object when written.
*/
void persistentInput(PersistentIStream & is, int version);
//@}
/**
* The standard Init function used to initialize the interfaces.
* Called exactly once for each class by the class description system
* before the main function starts or
* when this class is dynamically loaded.
*/
static void Init();
protected:
/** @name Clone Methods. */
//@{
/**
* Make a simple clone of this object.
* @return a pointer to the new object.
*/
virtual IBPtr clone() const;
/** Make a clone of this object, possibly modifying the cloned object
* to make it sane.
* @return a pointer to the new object.
*/
virtual IBPtr fullclone() const;
//@}
protected:
/** @name Standard Interfaced functions. */
//@{
/**
* Initialize this object after the setup phase before saving and
* EventGenerator to disk.
* @throws InitException if object could not be initialized properly.
*/
virtual void doinit();
//@}
private:
/**
* The assignment operator is private and must never be called.
* In fact, it should not even be implemented.
*/
- TwoPionCzyzCurrent & operator=(const TwoPionCzyzCurrent &);
+ TwoKaonCzyzCurrent & operator=(const TwoKaonCzyzCurrent &);
private:
/**
* Weights for the different \f$\rho\f$ resonances in the current, \f$\alpha_k\f$.
*/
//@{
/**
* The Complex weight used in the calculation
*/
vector<Complex> rhoWgt_;
/**
* The magnitude for input
*/
vector<double> rhoMag_;
/**
* The phase for input
*/
vector<double> rhoPhase_;
//@}
/**
- * Weight for the omega resonance
+ * Weights for the different \f$\omega\f$ resonances in the current, \f$\alpha_k\f$.
*/
- Complex omegaWgt_;
+ //@{
+ /**
+ * The Complex weight used in the calculation
+ */
+ vector<Complex> omegaWgt_;
/**
* The magnitude for input
*/
- double omegaMag_;
+ vector<double> omegaMag_;
/**
- * The phase for input
+ * The phase for input
*/
- double omegaPhase_;
+ vector<double> omegaPhase_;
+ //@}
/**
+ * Weights for the different \f$\phi\f$ resonances in the current, \f$\alpha_k\f$.
+ */
+ //@{
+ /**
+ * The Complex weight used in the calculation
+ */
+ vector<Complex> phiWgt_;
+
+ /**
+ * The magnitude for input
+ */
+ vector<double> phiMag_;
+
+ /**
+ * The phase for input
+ */
+ vector<double> phiPhase_;
+ //@}
+
+ /**
* The masses of the \f$\rho\f$ resonances.
*/
vector<Energy> rhoMasses_;
/**
* The widths of the \f$\rho\f$ resonances.
*/
vector<Energy> rhoWidths_;
/**
- * The mass of the \f$\omega\f$ resonance
+ * The masses of the \f$\omega\f$ resonances.
*/
- Energy omegaMass_;
+ vector<Energy> omegaMasses_;
/**
- * The width of the \f$\omega\f$ resonance
+ * The widths of the \f$\omega\f$ resonances.
*/
- Energy omegaWidth_;
+ vector<Energy> omegaWidths_;
+
+ /**
+ * The masses of the \f$\phi\f$ resonances.
+ */
+ vector<Energy> phiMasses_;
/**
- * Regge \f$\beta\f$ parameter
+ * The widths of the \f$\phi\f$ resonances.
*/
- double beta_;
+ vector<Energy> phiWidths_;
/**
+ * Regge \f$\beta\f$ parameter for \f$\rho\f$ resonances
+ */
+ double betaRho_;
+
+ /**
+ * Regge \f$\beta\f$ parameter for \f$\omega\f$ resonances
+ */
+ double betaOmega_;
+
+ /**
+ * Regge \f$\beta\f$ parameter for \f$\phi\f$ resonances
+ */
+ double betaPhi_;
+
+ /**
* Number of resonaces at which to trucated the series
*/
unsigned int nMax_;
/**
+ * The \f$\eta_\phi\f$ parameter
+ */
+ double etaPhi_;
+
+ /**
+ * The \f$\gamma_\omega\f$ parameter
+ */
+ double gammaOmega_;
+
+ /**
+ * The \f$\gamma_\phi\f$ parameter
+ */
+ double gammaPhi_;
+
+ /**
* Masses of the resonances
*/
- vector<Energy> mass_;
+ vector<vector<Energy> > mass_;
/**
* Widths of the resonances
*/
- vector<Energy> width_;
+ vector<vector<Energy> > width_;
/**
* Couplings of the resonaces
*/
- vector<Complex> coup_;
+ vector<vector<Complex> > coup_;
/**
* The function \f$\frac{\\hat{H}}{dq^2}\f$ at \f$q^2=m^2\f$ for the GS form of the
* Breit-Wigner
*/
vector<double> dh_;
/**
* The function \f$\\hat{H}\f$ at \f$q^2=m^2\f$ for the GS form of the
* Breit-Wigner
*/
vector<Energy2> hres_;
/**
* The \f$H(0)\f$ parameter for the GS form of the
* Breit-Wigner
*/
vector<Energy2> h0_;
};
}
-#endif /* Herwig_TwoPionCzyzCurrent_H */
+#endif /* Herwig_TwoKaonCzyzCurrent_H */
diff --git a/src/LEP-LowEnergy.in b/src/LEP-LowEnergy.in
--- a/src/LEP-LowEnergy.in
+++ b/src/LEP-LowEnergy.in
@@ -1,66 +1,70 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on LEP parameters
# usage: Herwig read LEP.in
##################################################
read snippets/EECollider.in
##################################################
# Change settings for the ee->Z->qq matrix element
# to avoid producing top quarks
#
# 'set' lines like this can be omitted if the
# default value is already okay.
#
# Any repository setting can be modified here
##################################################
##################################################
# Selected the hard process
##################################################
# leading-order processes
##################################################
cd /Herwig/MatrixElements
create Herwig::MEee2Mesons MEee2Pions HwMELeptonLowEnergy.so
create Herwig::TwoPionCzyzCurrent /Herwig/Decays/TwoPionCzyzCurrent
set MEee2Pions:WeakCurrent /Herwig/Decays/TwoPionCzyzCurrent
+create Herwig::MEee2Mesons MEee2Kaons HwMELeptonLowEnergy.so
+create Herwig::TwoKaonCzyzCurrent /Herwig/Decays/TwoKaonCzyzCurrent
+set MEee2Kaons:WeakCurrent /Herwig/Decays/TwoKaonCzyzCurrent
# default e+e- > q qbar (5 flavours d,u,s,c,b)
insert SubProcess:MatrixElements 0 MEee2Pions
+insert SubProcess:MatrixElements 0 MEee2Kaons
##################################################
# LEP physics parameters (override defaults)
##################################################
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 2.
set /Herwig/Generators/EventGenerator:EventHandler:Cuts:MHatMin 1.
set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF
set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF
cd /Herwig/Generators
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
###################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun LEP-LowEnergy EventGenerator
##################################################
# uncomment this section for an example batch run
# of two repeats with different parameters
#
# Note that a separate call of 'Herwig run'
# is not required
##################################################
# set EventGenerator:NumberOfEvents 100
# run LEP-Zpole EventGenerator
# set EventGenerator:EventHandler:LuminosityFunction:Energy 208.0
# run LEP-maxE EventGenerator

File Metadata

Mime Type
text/x-diff
Expires
Mon, Jan 20, 9:48 PM (1 d, 4 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4211270
Default Alt Text
(43 KB)

Event Timeline