11 #include "EvtGenBase/EvtParticle.hh"
12 #include "EvtGenBase/EvtPDL.hh"
14 #include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
15 #include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
16 #include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
18 #include "generators/evtgen/EvtGenModelRegister.h"
19 #include "generators/evtgen/models/EvtLLSW.h"
20 #include "generators/evtgen/models/EvtLLSWFF.h"
57 p->initializePhaseSpace(getNDaug(), getDaugs());
73 static EvtId EM = EvtPDL::getId(
"e-");
74 static EvtId EP = EvtPDL::getId(
"e+");
75 static EvtId MUM = EvtPDL::getId(
"mu-");
76 static EvtId MUP = EvtPDL::getId(
"mu+");
77 static EvtId TAUM = EvtPDL::getId(
"tau-");
78 static EvtId TAUP = EvtPDL::getId(
"tau+");
81 if (lnum == EP || lnum == EM || lnum == MUP || lnum == MUM) {
85 if (lnum == TAUP || lnum == TAUM) {
96 if (getNArg() < 2) checkNArg(2);
99 static EvtId D1P1P = EvtPDL::getId(
"D_1+");
100 static EvtId D1P1N = EvtPDL::getId(
"D_1-");
101 static EvtId D1P10 = EvtPDL::getId(
"D_10");
102 static EvtId D1P1B = EvtPDL::getId(
"anti-D_10");
103 static EvtId D3P2P = EvtPDL::getId(
"D_2*+");
104 static EvtId D3P2N = EvtPDL::getId(
"D_2*-");
105 static EvtId D3P20 = EvtPDL::getId(
"D_2*0");
106 static EvtId D3P2B = EvtPDL::getId(
"anti-D_2*0");
108 static EvtId DS1P = EvtPDL::getId(
"D_s1+");
109 static EvtId DS1M = EvtPDL::getId(
"D_s1-");
110 static EvtId DS2STP = EvtPDL::getId(
"D_s2*+");
111 static EvtId DS2STM = EvtPDL::getId(
"D_s2*-");
113 EvtId daughter = getDaug(0);
115 bool isNarrow =
false;
117 if (daughter == D1P1P || daughter == D1P1N || daughter == D1P10 || daughter == D1P1B ||
118 daughter == D3P2P || daughter == D3P2N || daughter == D3P20 || daughter == D3P2B ||
119 daughter == DS1P || daughter == DS1M || daughter == DS2STP || daughter == DS2STM)
125 checkSpinParent(EvtSpinType::SCALAR);
126 checkSpinDaughter(1, EvtSpinType::DIRAC);
127 checkSpinDaughter(2, EvtSpinType::NEUTRINO);
129 EvtSpinType::spintype mesontype = EvtPDL::getSpinType(getDaug(0));
132 llswffmodel =
new EvtLLSWFF(getArg(0), getArg(1), getNArg() > 2 ? getArg(2) : 0., getNArg() > 3 ? getArg(3) : 0.);
136 if (mesontype == EvtSpinType::SCALAR) {
137 calcamp =
new EvtSemiLeptonicScalarAmp;
139 if (mesontype == EvtSpinType::VECTOR) {
140 calcamp =
new EvtSemiLeptonicVectorAmp;
142 if (mesontype == EvtSpinType::TENSOR) {
143 calcamp =
new EvtSemiLeptonicTensorAmp;