Daughters are initialized and have been added to the parent.
22{
23 static EvtId EM = EvtPDL::getId("e-");
24 static EvtId MUM = EvtPDL::getId("mu-");
25 static EvtId TAUM = EvtPDL::getId("tau-");
26 static EvtId EP = EvtPDL::getId("e+");
27 static EvtId MUP = EvtPDL::getId("mu+");
28 static EvtId TAUP = EvtPDL::getId("tau+");
29
30 static EvtId D0 = EvtPDL::getId("D0");
31 static EvtId D0B = EvtPDL::getId("anti-D0");
32 static EvtId DP = EvtPDL::getId("D+");
33 static EvtId DM = EvtPDL::getId("D-");
34 static EvtId DSM = EvtPDL::getId("D_s-");
35 static EvtId DSP = EvtPDL::getId("D_s+");
36
37
38
39 EvtVector4R q = parent->getDaug(1)->getP4() + parent->getDaug(2)->getP4();
40 double q2 = (q.mass2());
41
42 double a1f, a2f, vf, a0f, a3f;
43 double m_meson = parent->getDaug(0)->mass();
44
45 FormFactors->getvectorff(parent->getId(), parent->getDaug(0)->getId(),
46 q2, m_meson, &a1f, &a2f, &vf, &a0f);
47
48 double costhl_flag = 1.0;
49
50 if (parent->getId() == D0 || parent->getId() == D0B ||
51 parent->getId() == DP || parent->getId() == DM) {
52 costhl_flag = -1.0;
53 }
54 if (parent->getId() == DSP || parent->getId() == DSM) {
55 costhl_flag = -1.0;
56 }
57 vf = vf * costhl_flag;
58
59 EvtVector4R p4b;
60 p4b.set(parent->mass(), 0.0, 0.0, 0.0);
61
62 EvtVector4R p4meson = parent->getDaug(0)->getP4();
63
64 EvtVector4C l11, l12, l21, l22;
65
66 EvtId l_num = parent->getDaug(1)->getId();
67 double m_b = parent->mass();
68
69 a3f = ((m_b + m_meson) / (2.0 * m_meson)) * a1f -
70 ((m_b - m_meson) / (2.0 * m_meson)) * a2f;
71
72 EvtTensor4C tds;
73 if (l_num == EM || l_num == MUM || l_num == TAUM) {
74 tds = a1f * (m_b + m_meson) * EvtTensor4C::g();
75 tds.addDirProd((-a2f / (m_b + m_meson)) * p4b, p4b + p4meson);
76 tds += EvtComplex(0.0, vf / (m_b + m_meson)) *
77 dual(EvtGenFunctions::directProd(p4meson + p4b, p4b - p4meson));
78 tds.addDirProd((a0f - a3f) * 2.0 * (m_meson / q2) * p4b,
79 p4b - p4meson);
80
81 l11 = EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
82 parent->getDaug(2)->spParent(0));
83 l12 = EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
84 parent->getDaug(2)->spParent(1));
85 l21 = EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
86 parent->getDaug(2)->spParent(0));
87 l22 = EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
88 parent->getDaug(2)->spParent(1));
89 } else {
90 if (l_num == EP || l_num == MUP || l_num == TAUP) {
91 tds = a1f * (m_b + m_meson) * EvtTensor4C::g();
92 tds.addDirProd((-a2f / (m_b + m_meson)) * p4b, p4b + p4meson);
93 tds -= EvtComplex(0.0, vf / (m_b + m_meson)) *
94 dual(EvtGenFunctions::directProd(p4meson + p4b,
95 p4b - p4meson));
96 tds.addDirProd((a0f - a3f) * 2.0 * (m_meson / q2) * p4b,
97 p4b - p4meson);
98
99 l11 = EvtLeptonVACurrent(parent->getDaug(2)->spParent(0),
100 parent->getDaug(1)->spParent(0));
101 l12 = EvtLeptonVACurrent(parent->getDaug(2)->spParent(0),
102 parent->getDaug(1)->spParent(1));
103 l21 = EvtLeptonVACurrent(parent->getDaug(2)->spParent(1),
104 parent->getDaug(1)->spParent(0));
105 l22 = EvtLeptonVACurrent(parent->getDaug(2)->spParent(1),
106 parent->getDaug(1)->spParent(1));
107 } else {
108 EvtGenReport(EVTGEN_ERROR, "EvtGen")
109 << "Wrong lepton number\n";
110 }
111 }
112
113 EvtVector4C et0 = tds.cont1(parent->getDaug(0)->epsParent(0).conj());
114 EvtVector4C et1 = tds.cont1(parent->getDaug(0)->epsParent(1).conj());
115 EvtVector4C et2 = tds.cont1(parent->getDaug(0)->epsParent(2).conj());
116
117 amp.vertex(0, 0, 0, l11.cont(et0));
118 amp.vertex(0, 0, 1, l12.cont(et0));
119 amp.vertex(0, 1, 0, l21.cont(et0));
120 amp.vertex(0, 1, 1, l22.cont(et0));
121
122 amp.vertex(1, 0, 0, l11.cont(et1));
123 amp.vertex(1, 0, 1, l12.cont(et1));
124 amp.vertex(1, 1, 0, l21.cont(et1));
125 amp.vertex(1, 1, 1, l22.cont(et1));
126
127 amp.vertex(2, 0, 0, l11.cont(et2));
128 amp.vertex(2, 0, 1, l12.cont(et2));
129 amp.vertex(2, 1, 0, l21.cont(et2));
130 amp.vertex(2, 1, 1, l22.cont(et2));
131
132 return;
133}