Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F7879274
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
28 KB
Subscribers
None
View Options
diff --git a/Decay/ScalarMeson/DtoKPiPiE691.cc b/Decay/ScalarMeson/DtoKPiPiE691.cc
--- a/Decay/ScalarMeson/DtoKPiPiE691.cc
+++ b/Decay/ScalarMeson/DtoKPiPiE691.cc
@@ -1,700 +1,700 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
// functions of the DtoKPiPiE691 class.
//
#include "DtoKPiPiE691.h"
#include "ThePEG/Interface/Parameter.h"
#include "ThePEG/Interface/ParVector.h"
#include "ThePEG/Interface/Switch.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "Herwig++/Helicity/WaveFunction/ScalarWaveFunction.h"
using namespace Herwig;
using ThePEG::Helicity::RhoDMatrix;
using Herwig::Helicity::ScalarWaveFunction;
using Herwig::Helicity::incoming;
using Herwig::Helicity::outgoing;
DtoKPiPiE691::DtoKPiPiE691() {
// amplitudes and phases for D+ -> K-pi+pi+
_a1NR = 1. ; _phi1NR = 0.;
_a1K892 = 0.78; _phi1K892 = - 60.;
_a1K1430 = 0.53; _phi1K1430 = 132.;
_a1K1680 = 0.47; _phi1K1680 = - 51.;
// amplitudes and phases for D0 -> K-pi+pi0
_a2NR = 1.00; _phi2NR = 0.;
_a2K8920 = 3.19; _phi2K8920 = 167.;
_a2K892m = 2.96; _phi2K892m = -112.;
_a2rho = 8.56; _phi2rho = 40.;
// amplitudes and phases for D0 -> Kbar0 pi+pi-
_a3NR = 1.00; _phi3NR = 0.;
_a3K892 = 2.31; _phi3K892 = 109.;
_a3rho = 1.59; _phi3rho = -123.;
// masses and widths
_localparameters=true;
_mK8920 = 0.8961 *GeV; _wK8920 = 0.0505*GeV;
_mK892m = 0.89159*GeV; _wK892m = 0.0498*GeV;
_mK1680 = 1.714 *GeV; _wK1680 = 0.323 *GeV;
_mK1430 = 1.429 *GeV; _wK1430 = 0.287 *GeV;
_mrho0 = 0.7681 *GeV; _wrho0 = 0.1515*GeV;
_mrhop = 0.7681 *GeV; _wrhop = 0.1515*GeV;
// generate the intermediate particles
generateIntermediates(true);
}
void DtoKPiPiE691::doinit() throw(InitException) {
DecayIntegrator::doinit();
// complex amplitudes calculated from magnitudes and phases
double fact = pi/180.;
// D+ -> K-pi+pi+
_c1NR = _a1NR *Complex(cos(_phi1NR *fact),sin(_phi1NR *fact));
_c1K892 = _a1K892 *Complex(cos(_phi1K892 *fact),sin(_phi1K892 *fact));
_c1K1430= _a1K1430*Complex(cos(_phi1K1430*fact),sin(_phi1K1430*fact));
_c1K1680= _a1K1680*Complex(cos(_phi1K1680*fact),sin(_phi1K1680*fact));
// D0 -> K-pi+pi0
_c2NR = _a2NR *Complex(cos(_phi2NR *fact),sin(_phi2NR *fact));
_c2K8920= _a2K8920*Complex(cos(_phi2K8920*fact),sin(_phi2K8920*fact));
_c2K892m= _a2K892m*Complex(cos(_phi2K892m*fact),sin(_phi2K892m*fact));
_c2rho = _a2rho *Complex(cos(_phi2rho *fact),sin(_phi2rho *fact));
// D0 -> Kbar0pi+pi-
_c3NR = _a3NR *Complex(cos(_phi3NR *fact),sin(_phi3NR *fact));
_c3K892 = _a3K892 *Complex(cos(_phi3K892 *fact),sin(_phi3K892 *fact));
_c3rho = _a3rho *Complex(cos(_phi3rho *fact),sin(_phi3rho *fact));
// intermediate resonances
tPDPtr k8920 = getParticleData(ParticleID::Kstarbar0 );
tPDPtr k892m = getParticleData(ParticleID::Kstarminus);
tPDPtr k1430 = getParticleData(ParticleID::Kstar_0bar0);
tPDPtr k1680 = getParticleData(-30313);
tPDPtr rho0 = getParticleData(ParticleID::rho0);
tPDPtr rhop = getParticleData(ParticleID::rhoplus);
// D+ -> K-pi+pi+
PDVector extpart(4);
extpart[0]=getParticleData(ParticleID::Dplus);
extpart[1]=getParticleData(ParticleID::Kminus);
extpart[2]=getParticleData(ParticleID::piplus);
extpart[3]=getParticleData(ParticleID::piplus);
DecayPhaseSpaceChannelPtr newchannel;
DecayPhaseSpaceModePtr mode = new_ptr(DecayPhaseSpaceMode(extpart,this));
int ix=0;
if(k8920) {
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,3);
newchannel->addIntermediate(k8920,0,0., 1,2);
mode->addChannel(newchannel);
++ix;
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,2);
newchannel->addIntermediate(k8920,0,0., 1,3);
mode->addChannel(newchannel);
++ix;
}
if(k1430) {
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,3);
newchannel->addIntermediate(k1430,0,0., 1,2);
mode->addChannel(newchannel);
++ix;
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,2);
newchannel->addIntermediate(k1430,0,0., 1,3);
mode->addChannel(newchannel);
++ix;
}
if(k1680) {
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,3);
newchannel->addIntermediate(k1680,0,0., 1,2);
mode->addChannel(newchannel);
++ix;
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,2);
newchannel->addIntermediate(k1680,0,0., 1,3);
mode->addChannel(newchannel);
++ix;
}
// add the mode
vector<double> wtemp;
if(ix<=int(_weights.size())) {
vector<double>::const_iterator wit=_weights.begin();
wtemp=vector<double>(wit,wit+ix);
}
else {
wtemp=vector<double>(ix,1./double(ix));
}
if(_maxwgt.empty()) _maxwgt.push_back(1.);
addMode(mode,_maxwgt[0],wtemp);
// D0 -> K-pi+pi0
extpart[0]=getParticleData(ParticleID::D0);
extpart[1]=getParticleData(ParticleID::Kminus);
extpart[2]=getParticleData(ParticleID::piplus);
extpart[3]=getParticleData(ParticleID::pi0);
mode = new_ptr(DecayPhaseSpaceMode(extpart,this));
int iy=ix;
if(k8920) {
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,3);
newchannel->addIntermediate(k8920,0,0., 1,2);
mode->addChannel(newchannel);
++iy;
}
if(k892m) {
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,2);
newchannel->addIntermediate(k892m,0,0., 1,3);
mode->addChannel(newchannel);
++iy;
}
if(rhop) {
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,1);
newchannel->addIntermediate(rhop,0,0., 2,3);
mode->addChannel(newchannel);
++iy;
}
// add the mode
if(iy<=int(_weights.size())) {
vector<double>::const_iterator wit=_weights.begin();
wtemp=vector<double>(wit+ix,wit+iy);
}
else {
wtemp=vector<double>(iy-ix,1./double(iy-ix));
}
if(_maxwgt.size()<2) _maxwgt.push_back(1.);
addMode(mode,_maxwgt[1],wtemp);
// D0 -> Kbar0 pi+ pi-
extpart[0]=getParticleData(ParticleID::D0);
extpart[1]=getParticleData(ParticleID::Kbar0);
extpart[2]=getParticleData(ParticleID::piplus);
extpart[3]=getParticleData(ParticleID::piminus);
mode = new_ptr(DecayPhaseSpaceMode(extpart,this));
ix=iy;
if(rho0) {
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,1);
newchannel->addIntermediate(rho0,0,0., 2,3);
mode->addChannel(newchannel);
++iy;
}
if(k892m) {
newchannel=new_ptr(DecayPhaseSpaceChannel(mode));
newchannel->addIntermediate(extpart[0],0, 0.0,-1,2);
newchannel->addIntermediate(k892m,0,0., 1,3);
mode->addChannel(newchannel);
++iy;
}
// add the mode
if(iy<=int(_weights.size())) {
vector<double>::const_iterator wit=_weights.begin();
wtemp=vector<double>(wit+ix,wit+iy);
}
else {
wtemp=vector<double>(iy-ix,1./double(iy-ix));
}
if(_maxwgt.size()<3) _maxwgt.push_back(1.);
addMode(mode,_maxwgt[2],wtemp);
// reset the resonance parameters in the integration if needed
if(_localparameters) {
resetIntermediate(k8920,_mK8920,_wK8920);
resetIntermediate(k892m,_mK892m,_wK892m);
resetIntermediate(k1430,_mK1680,_wK1680);
resetIntermediate(k1680,_mK1430,_wK1430);
resetIntermediate(rho0 ,_mrho0 ,_wrho0 );
resetIntermediate(rhop ,_mrhop ,_wrhop );
}
// get values from the ParticleData objects if needed
else {
_mK8920 = k8920->mass();
_mK892m = k892m->mass();
_mK1680 = k1430->mass();
_mK1430 = k1680->mass();
_mrho0 = rho0 ->mass();
_mrhop = rhop ->mass();
_wK8920 = k8920->width();
_wK892m = k892m->width();
_wK1680 = k1430->width();
_wK1430 = k1680->width();
_wrho0 = rho0 ->width();
_wrhop = rhop ->width();
}
}
void DtoKPiPiE691::persistentOutput(PersistentOStream & os) const {
os << _a1NR << _phi1NR << _a1K892 << _phi1K892 << _a1K1430 << _phi1K1430
<< _a1K1680 << _phi1K1680 << _a2NR << _phi2NR << _a2K8920 << _phi2K8920
<< _a2K892m << _phi2K892m << _a2rho << _phi2rho << _a3NR << _phi3NR
<< _a3K892 << _phi3K892 << _a3rho << _phi3rho << _c1NR << _c1K892 << _c1K1430
<< _c1K1680 << _c2NR << _c2K8920 << _c2K892m << _c2rho << _c3NR << _c3K892
<< _c3rho << _localparameters << _mK8920 << _wK8920 << _mK892m << _wK892m
<< _mK1680 << _wK1680 << _mK1430 << _wK1430 << _mrho0 << _wrho0 << _mrhop
<< _wrhop << _maxwgt << _weights;
}
void DtoKPiPiE691::persistentInput(PersistentIStream & is, int) {
is >> _a1NR >> _phi1NR >> _a1K892 >> _phi1K892 >> _a1K1430 >> _phi1K1430
>> _a1K1680 >> _phi1K1680 >> _a2NR >> _phi2NR >> _a2K8920 >> _phi2K8920
>> _a2K892m >> _phi2K892m >> _a2rho >> _phi2rho >> _a3NR >> _phi3NR
>> _a3K892 >> _phi3K892 >> _a3rho >> _phi3rho >> _c1NR >> _c1K892 >> _c1K1430
>> _c1K1680 >> _c2NR >> _c2K8920 >> _c2K892m >> _c2rho >> _c3NR >> _c3K892
>> _c3rho >> _localparameters >> _mK8920 >> _wK8920 >> _mK892m >> _wK892m
>> _mK1680 >> _wK1680 >> _mK1430 >> _wK1430 >> _mrho0 >> _wrho0 >> _mrhop
>> _wrhop >> _maxwgt >> _weights;
}
ClassDescription<DtoKPiPiE691> DtoKPiPiE691::initDtoKPiPiE691;
// Definition of the static class description member.
void DtoKPiPiE691::Init() {
static ClassDocumentation<DtoKPiPiE691> documentation
("The DtoKPiPiE691 class implements the model of E691 for D -> K pi pi"
"Dalitz decays",
"The model of \\cite{Anjos:1992kb} for $D\\to K\\pi\\pi$ decays was used",
"\\bibitem{Anjos:1992kb} J.~C.~Anjos {\\it et al.} [E691 Collaboration],"
"Phys.\\ Rev.\\ D {\\bf 48} (1993) 56.");
static Parameter<DtoKPiPiE691,double> interfaceKmPipPipNonResonantMagnitude
("KmPipPipNonResonantMagnitude",
"The magnitude of the non-resonant component for D+ -> K- pi+ pi+",
&DtoKPiPiE691::_a1NR, 1.0, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPipNonResonantPhase
("KmPipPipNonResonantPhase",
"The phase of the non-resonant component for D+ -> K- pi+ pi+",
&DtoKPiPiE691::_phi1NR, 0., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK892Magnitude
("KmPipPipK892Magnitude",
"The magnitude of the K*(892) component for D+ -> K- pi+ pi+",
&DtoKPiPiE691::_a1K892, 0.78, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK892Phase
("KmPipPipK892Phase",
"The phase of the K*(892) component for D+ -> K- pi+ pi+",
&DtoKPiPiE691::_phi1K892, -60., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK1430Magnitude
("KmPipPipK1430Magnitude",
"The magnitude of the K*0(1430) component for D+ -> K- pi+ pi+",
&DtoKPiPiE691::_a1K1430, 0.53, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK1430Phase
("KmPipPipK1430Phase",
"The phase of the K*0(1430) component for D+ -> K- pi+ pi+",
&DtoKPiPiE691::_phi1K1430, 132., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK1680Magnitude
("KmPipPipK1680Magnitude",
"The magnitude of the K*(1680) component for D+ -> K- pi+ pi+",
&DtoKPiPiE691::_a1K1680, 0.47, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK1680Phase
("KmPipPipK1680Phase",
"The phase of the K*(1680) component for D+ -> K- pi+ pi+",
&DtoKPiPiE691::_phi1K1680, - 51., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0NonResonantMagnitude
("KmPipPi0NonResonantMagnitude",
"The magnitude of the non-resonant component for D0 -> K- pi+ pi0",
&DtoKPiPiE691::_a2NR, 1.0, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0NonResonantPhase
("KmPipPi0NonResonantPhase",
"The phase of the non-resonant component for D0 -> K- pi+ pi0",
&DtoKPiPiE691::_phi2NR, 0., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0K8920Magnitude
("KmPipPi0K8920Magnitude",
"The magnitude of the K*(892)0 component for D0 -> K- pi+ pi0",
&DtoKPiPiE691::_a2K8920, 3.19, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0K8920Phase
("KmPipPi0K8920Phase",
"The phase of the K*(892)0 component for D0 -> K- pi+ pi0",
&DtoKPiPiE691::_phi2K8920, 167., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0K892mMagnitude
("KmPipPi0K892mMagnitude",
"The magnitude of the K*(892)- component for D0 -> K- pi+ pi0",
&DtoKPiPiE691::_a2K892m, 2.96, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0K892mPhase
("KmPipPi0K892mPhase",
"The phase of the K*(892)- component for D0 -> K- pi+ pi0",
&DtoKPiPiE691::_phi2K892m, -112., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0RhoMagnitude
("KmPipPi0RhoMagnitude",
"The magnitude of the rho component for D0 -> K- pi+ pi0",
&DtoKPiPiE691::_a2rho, 8.56, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0RhoPhase
("KmPipPi0RhoPhase",
"The phase of the rho component for D0 -> K- pi+ pi0",
&DtoKPiPiE691::_phi2rho, 40., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceK0PipPimNonResonantMagnitude
("K0PipPimNonResonantMagnitude",
"The magnitude of the non-resonant component for D0 -> Kbar0 pi+pi-",
&DtoKPiPiE691::_a3NR, 1.0, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceK0PipPimNonResonantPhase
("K0PipPimNonResonantPhase",
"The phase of the non-resonant component for D0 -> Kbar0 pi+pi-",
&DtoKPiPiE691::_phi3NR, 0., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceK0PipPimK892Magnitude
("K0PipPimK892Magnitude",
"The magnitude of the K*(892) component for D0 -> Kbar0 pi+pi-",
&DtoKPiPiE691::_a3K892, 2.31, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceK0PipPimK892Phase
("K0PipPimK892Phase",
"The phase of the K*(892)0 component for D0 -> Kbar0 pi+pi-",
&DtoKPiPiE691::_phi3K892, 109., -180., 180.,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceK0PipPimRhoMagnitude
("K0PipPimRhoMagnitude",
"The magnitude of the rho component for D0 -> Kbar0 pi+pi-",
&DtoKPiPiE691::_a3rho, 1.59, 0.0, 10.0,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,double> interfaceK0PipPimRhoPhase
("K0PipPimRhoPhase",
"The phase of the rho component for D0 -> Kbar0 pi+pi-",
&DtoKPiPiE691::_phi3rho, -123., -180., 180.,
false, false, Interface::limited);
static Switch<DtoKPiPiE691,bool> interfaceLocalParameters
("LocalParameters",
"Whether to use local values for the masses and widths or"
" those from the ParticleData objects",
&DtoKPiPiE691::_localparameters, true, false, false);
static SwitchOption interfaceLocalParametersLocal
(interfaceLocalParameters,
"Local",
"Use local values",
true);
static SwitchOption interfaceLocalParametersParticleData
(interfaceLocalParameters,
"ParticleData",
"Use the values from the ParticleData objects",
false);
static Parameter<DtoKPiPiE691,Energy> interfaceK8920Mass
("K8920Mass",
"The mass of the K*(892)0",
&DtoKPiPiE691::_mK8920, GeV, 0.8961 *GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceK8920Width
("K8920Width",
"The width of the K*(892)0",
&DtoKPiPiE691::_wK8920, GeV, 0.0505*GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceK892MinusMass
("K892MinusMass",
"The mass of the K*(892)-",
&DtoKPiPiE691::_mK892m, GeV, 0.89159*GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceK892MinusWidth
("K892MinusWidth",
"The width of the K*(892)-",
&DtoKPiPiE691::_wK892m, GeV, 0.0498*GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceK1680Mass
("K1680Mass",
"The mass of the K*(1680)",
&DtoKPiPiE691::_mK1680, GeV, 1.714 *GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceK1680Width
("K1680Width",
"The width of the K*(1680)",
&DtoKPiPiE691::_wK1680, GeV, 0.323 *GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceK1430Mass
("K1430Mass",
"The mass of the K*(1430)",
&DtoKPiPiE691::_mK1430, GeV, 1.429 *GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceK1430Width
("K1430Width",
"The width of the K*(1430)",
&DtoKPiPiE691::_wK1430, GeV, 0.287 *GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceRho0Mass
("Rho0Mass",
"The mass of the rho0",
&DtoKPiPiE691::_mrho0, GeV, 0.7681 *GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceRho0Width
("Rho0Width",
"The width of the rho0",
&DtoKPiPiE691::_wrho0, GeV, 0.1515*GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceRhoPlusMass
("RhoPlusMass",
"The mass of the rho+",
&DtoKPiPiE691::_mrhop, GeV, 0.7681 *GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static Parameter<DtoKPiPiE691,Energy> interfaceRhoPlusWidth
("RhoPlusWidth",
"The width of the rho+",
&DtoKPiPiE691::_wrhop, GeV, 0.1515*GeV, 0.0*GeV, 10.0*GeV,
false, false, Interface::limited);
static ParVector<DtoKPiPiE691,double> interfaceMaximumWeights
("MaximumWeights",
"The maximum weights for the unweighting of the decays",
&DtoKPiPiE691::_maxwgt, -1, 1.0, 0.0, 10000.0,
false, false, Interface::limited);
static ParVector<DtoKPiPiE691,double> interfaceWeights
("Weights",
"The weights for the different channels for the phase-space integration",
&DtoKPiPiE691::_weights, -1, 1.0, 0.0, 1.0,
false, false, Interface::limited);
}
int DtoKPiPiE691::modeNumber(bool & cc,const DecayMode & dm) const {
int id0(dm.parent()->id());
// incoming particle must be D0 or D+
if(abs(id0)!=ParticleID::D0&&abs(id0)!=ParticleID::Dplus) return -1;
cc = id0<0;
// must be three decay products
if(dm.products().size()!=3) return -1;
ParticleMSet::const_iterator pit = dm.products().begin();
unsigned int npip(0),npim(0),nkm(0),nk0(0),npi0(0);
int id;
for( ;pit!=dm.products().end();++pit) {
id=(**pit).id();
if(id ==ParticleID::piplus) ++npip;
else if(id ==ParticleID::pi0) ++npi0;
else if(id ==ParticleID::piminus) ++npim;
else if(abs(id)==ParticleID::K0) ++nk0;
else if(id ==ParticleID::K_L0) ++nk0;
else if(id ==ParticleID::K_S0) ++nk0;
else if(abs(id)==ParticleID::Kplus) ++nkm;
}
if(abs(id0)==ParticleID::Dplus) {
if((id0==ParticleID::Dplus &&(nkm==1&&npip==2))||
(id0==ParticleID::Dminus&&(nkm==1&&npim==2))) return 0;
else return -1;
}
else {
if(npim==1&&npip==1&&nk0==1) return 2;
else if(nkm==1&&(npip+npim)==1&&npi0==1) return 1;
else return -1;
}
}
double DtoKPiPiE691::me2(bool vertex, const int ichan,
const Particle & inpart,
const ParticleVector & decay) const {
useMe();
// wavefunnction for the decaying particle
tPPtr mytempInpart = const_ptr_cast<tPPtr>(&inpart);
ScalarWaveFunction(mytempInpart,incoming,true,vertex);
// wavefunctions for the outgoing particles
for(unsigned int ix=0;ix<3;++ix) {
PPtr mytemp = decay[ix];
ScalarWaveFunction(mytemp,outgoing,true,vertex);
}
Complex amp;
- // D+ -> K-pi+pi_
+ // D+ -> K-pi+pi+
if(imode()==0) {
Lorentz5Momentum pres1=decay[0]->momentum()+decay[1]->momentum();
pres1.rescaleMass();
double ct1 =-decayAngle(inpart.momentum(),pres1,decay[0]->momentum());
Lorentz5Momentum pres2=decay[0]->momentum()+decay[2]->momentum();
pres2.rescaleMass();
double ct2 =-decayAngle(inpart.momentum(),pres2,decay[0]->momentum());
if(ichan<0) {
- amp = _c1NR
+ amp = _c1NR*sqrt(2.)
+_c1K892 *amplitude(1,ct1,pres1.mass(),_wK8920,_mK8920)
+_c1K892 *amplitude(1,ct2,pres2.mass(),_wK8920,_mK8920)
+_c1K1430*amplitude(0,ct1,pres1.mass(),_wK1430,_mK1430)
+_c1K1430*amplitude(0,ct2,pres2.mass(),_wK1430,_mK1430)
+_c1K1680*amplitude(1,ct1,pres1.mass(),_wK1680,_mK1680)
+_c1K1680*amplitude(1,ct2,pres2.mass(),_wK1680,_mK1680);
}
else if(ichan==0) {
amp=_c1K892 *amplitude(1,ct1,pres1.mass(),_wK8920,_mK8920);
}
else if(ichan==1) {
amp=_c1K892 *amplitude(1,ct2,pres2.mass(),_wK8920,_mK8920);
}
else if(ichan==2) {
amp=_c1K1430*amplitude(1,ct1,pres1.mass(),_wK1430,_mK1430);
}
else if(ichan==3) {
amp=_c1K1430*amplitude(1,ct2,pres2.mass(),_wK1430,_mK1430);
}
else if(ichan==4) {
amp=_c1K1680*amplitude(1,ct1,pres1.mass(),_wK1680,_mK1680);
}
else if(ichan==5) {
amp=_c1K1680*amplitude(1,ct2,pres2.mass(),_wK1680,_mK1680);
}
}
// D0 -> K-pi+pi0
else if(imode()==1) {
Lorentz5Momentum pres1=decay[0]->momentum()+decay[1]->momentum();
pres1.rescaleMass();
double ct1 = decayAngle(inpart.momentum(),pres1,decay[0]->momentum());
Lorentz5Momentum pres2=decay[0]->momentum()+decay[2]->momentum();
pres2.rescaleMass();
double ct2 = decayAngle(inpart.momentum(),pres2,decay[2]->momentum());
Lorentz5Momentum pres3=decay[1]->momentum()+decay[2]->momentum();
pres3.rescaleMass();
double ct3 = decayAngle(inpart.momentum(),pres3,decay[2]->momentum());
if(ichan<0) {
amp = _c2NR
+_c2K8920*amplitude(1,ct1,pres1.mass(),_wK8920,_mK8920)
+_c2K892m*amplitude(1,ct2,pres2.mass(),_wK892m,_mK892m)
+_c2rho *amplitude(1,ct3,pres3.mass(),_wrhop ,_mrhop );
}
else if(ichan==0) {
amp = _c2K8920*amplitude(1,ct1,pres1.mass(),_wK8920,_mK8920);
}
else if(ichan==1) {
amp = _c2K892m*amplitude(1,ct2,pres2.mass(),_wK892m,_mK892m);
}
else if(ichan==2) {
amp = _c2rho *amplitude(1,ct3,pres3.mass(),_wrhop ,_mrhop);
}
}
// D0 -> Kbar0pi+pi-
else if(imode()==2) {
Lorentz5Momentum pres1=decay[0]->momentum()+decay[2]->momentum();
pres1.rescaleMass();
double ct1 = decayAngle(inpart.momentum(),pres1,decay[0]->momentum());
Lorentz5Momentum pres2=decay[1]->momentum()+decay[2]->momentum();
pres2.rescaleMass();
double ct2 = decayAngle(inpart.momentum(),pres2,decay[1]->momentum());
if(ichan<0) {
amp = _c3NR
+_c3K892*amplitude(1,ct1,pres1.mass(),_wK892m,_mK892m)
+_c3rho *amplitude(1,ct2,pres2.mass(),_wrho0 ,_mrho0 );
}
else if(ichan==0) {
amp = _c3K892*amplitude(1,ct1,pres1.mass(),_wK892m,_mK892m);
}
else if(ichan==1) {
amp = _c3rho *amplitude(1,ct2,pres2.mass(),_wrho0 ,_mrho0 );
}
}
// now compute the matrix element
DecayMatrixElement newME(PDT::Spin0,PDT::Spin0,PDT::Spin0,PDT::Spin0);
newME(0,0,0,0)=amp;
ME(newME);
return real(amp*conj(amp));
}
void DtoKPiPiE691::dataBaseOutput(ofstream & output, bool header) const {
if(header) output << "update decayers set parameters=\"";
// parameters for the DecayIntegrator base class
DecayIntegrator::dataBaseOutput(output,false);
// parameters
output << "set " << fullName() << ":KmPipPipNonResonantMagnitude "
<< _a1NR << "\n";
output << "set " << fullName() << ":KmPipPipNonResonantPhase "
<< _phi1NR << "\n";
output << "set " << fullName() << ":KmPipPipK892Magnitude "
<< _a1K892 << "\n";
output << "set " << fullName() << ":KmPipPipK892Phase "
<< _phi1K892 << "\n";
output << "set " << fullName() << ":KmPipPipK1430Magnitude "
<< _a1K1430 << "\n";
output << "set " << fullName() << ":KmPipPipK1430Phase "
<< _phi1K1430 << "\n";
output << "set " << fullName() << ":KmPipPipK1680Magnitude "
<< _a1K1680 << "\n";
output << "set " << fullName() << ":KmPipPipK1680Phase "
<< _phi1K1680 << "\n";
output << "set " << fullName() << ":KmPipPi0NonResonantMagnitude "
<< _a2NR << "\n";
output << "set " << fullName() << ":KmPipPi0NonResonantPhase "
<< _phi2NR << "\n";
output << "set " << fullName() << ":KmPipPi0K8920Magnitude "
<< _a2K8920 << "\n";
output << "set " << fullName() << ":KmPipPi0K8920Phase "
<< _phi2K8920 << "\n";
output << "set " << fullName() << ":KmPipPi0K892mMagnitude "
<< _a2K892m << "\n";
output << "set " << fullName() << ":KmPipPi0K892mPhase "
<< _phi2K892m << "\n";
output << "set " << fullName() << ":KmPipPi0RhoMagnitude "
<< _a2rho << "\n";
output << "set " << fullName() << ":KmPipPi0RhoPhase "
<< _phi2rho << "\n";
output << "set " << fullName() << ":K0PipPimNonResonantMagnitude "
<< _a3NR << "\n";
output << "set " << fullName() << ":K0PipPimNonResonantPhase "
<< _phi3NR << "\n";
output << "set " << fullName() << ":K0PipPimK892Magnitude "
<< _a3K892 << "\n";
output << "set " << fullName() << ":K0PipPimK892Phase "
<< _phi3K892 << "\n";
output << "set " << fullName() << ":K0PipPimRhoMagnitude "
<< _a3rho << "\n";
output << "set " << fullName() << ":K0PipPimRhoPhase "
<< _phi3rho << "\n";
output << "set " << fullName() << ":LocalParameters " << _localparameters << "\n";
output << "set " << fullName() << ":K8920Mass " << _mK8920/GeV << "\n";
output << "set " << fullName() << ":K8920Width " << _wK8920/GeV << "\n";
output << "set " << fullName() << ":K892MinusMass " << _mK892m/GeV << "\n";
output << "set " << fullName() << ":K892MinusWidth " << _wK892m/GeV << "\n";
output << "set " << fullName() << ":K1680Mass " << _mK1680/GeV << "\n";
output << "set " << fullName() << ":K1680Width " << _wK1680/GeV << "\n";
output << "set " << fullName() << ":K1430Mass " << _mK1430/GeV << "\n";
output << "set " << fullName() << ":K1430Width " << _wK1430/GeV << "\n";
output << "set " << fullName() << ":Rho0Mass " << _mrho0 /GeV << "\n";
output << "set " << fullName() << ":Rho0Width " << _wrho0 /GeV << "\n";
output << "set " << fullName() << ":RhoPlusMass " << _mrhop /GeV << "\n";
output << "set " << fullName() << ":RhoPlusWidth " << _wrhop /GeV << "\n";
for(unsigned int ix=0;ix<_maxwgt.size();++ix) {
output << "insert " << fullName() << ":MaximumWeights "
<< ix << " " << _maxwgt[ix] << "\n";
}
for(unsigned int ix=0;ix<_weights.size();++ix) {
output << "insert " << fullName() << ":Weights "
<< ix << " " << _weights[ix] << "\n";
}
if(header) {
output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl;
}
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Tue, Nov 19, 7:48 PM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3805917
Default Alt Text
(28 KB)
Attached To
rHERWIGHG herwighg
Event Timeline
Log In to Comment