Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8723857
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
43 KB
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
rHERWIGHG herwighg
Event Timeline
Log In to Comment