BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSemiLeptonicTensorAmp Class Reference

#include <EvtSemiLeptonicTensorAmp.hh>

Inheritance diagram for EvtSemiLeptonicTensorAmp:

Public Member Functions

void CalcAmp (EvtParticle *parent, EvtAmp &amp, EvtSemiLeptonicFF *FormFactors)
Public Member Functions inherited from EvtSemiLeptonicAmp
double CalcMaxProb (EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug, EvtSemiLeptonicFF *FormFactors)

Detailed Description

Definition at line 30 of file EvtSemiLeptonicTensorAmp.hh.

Member Function Documentation

◆ CalcAmp()

void EvtSemiLeptonicTensorAmp::CalcAmp ( EvtParticle * parent,
EvtAmp & amp,
EvtSemiLeptonicFF * FormFactors )
virtual

Reimplemented from EvtSemiLeptonicAmp.

Definition at line 35 of file EvtSemiLeptonicTensorAmp.cc.

36 {
37 static EvtId EM = EvtPDL::getId( "e-" );
38 static EvtId MUM = EvtPDL::getId( "mu-" );
39 static EvtId TAUM = EvtPDL::getId( "tau-" );
40 static EvtId EP = EvtPDL::getId( "e+" );
41 static EvtId MUP = EvtPDL::getId( "mu+" );
42 static EvtId TAUP = EvtPDL::getId( "tau+" );
43
44 static EvtId D0 = EvtPDL::getId( "D0" );
45 static EvtId D0B = EvtPDL::getId( "anti-D0" );
46 static EvtId DP = EvtPDL::getId( "D+" );
47 static EvtId DM = EvtPDL::getId( "D-" );
48 static EvtId DSM = EvtPDL::getId( "D_s-" );
49 static EvtId DSP = EvtPDL::getId( "D_s+" );
50
51 // Add the lepton and neutrino 4 momenta to find q2
52
53 EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
54 double q2 = ( q.mass2() );
55
56 double hf, kf, bpf, bmf;
57
58 FormFactors->gettensorff( parent->getId(), parent->getDaug( 0 )->getId(), q2,
59 parent->getDaug( 0 )->mass(), &hf, &kf, &bpf, &bmf );
60
61 double costhl_flag = 1.0;
62
63 if ( parent->getId() == D0 || parent->getId() == D0B || parent->getId() == DP ||
64 parent->getId() == DM )
65 { costhl_flag = -1.0; }
66 if ( parent->getId() == DSP || parent->getId() == DSM ) { costhl_flag = -1.0; }
67 hf = hf * costhl_flag;
68
69 EvtVector4R p4b;
70 p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
71
72 EvtVector4R p4meson = parent->getDaug( 0 )->getP4();
73
74 EvtVector4C l1, l2;
75
76 EvtId l_num = parent->getDaug( 1 )->getId();
77
78 EvtVector4C ep_meson_b[5];
79
80 ep_meson_b[0] = ( ( parent->getDaug( 0 )->epsTensorParent( 0 ) ).cont2( p4b ) ).conj();
81 ep_meson_b[1] = ( ( parent->getDaug( 0 )->epsTensorParent( 1 ) ).cont2( p4b ) ).conj();
82 ep_meson_b[2] = ( ( parent->getDaug( 0 )->epsTensorParent( 2 ) ).cont2( p4b ) ).conj();
83 ep_meson_b[3] = ( ( parent->getDaug( 0 )->epsTensorParent( 3 ) ).cont2( p4b ) ).conj();
84 ep_meson_b[4] = ( ( parent->getDaug( 0 )->epsTensorParent( 4 ) ).cont2( p4b ) ).conj();
85
86 EvtVector4R pp, pm;
87
88 pp = p4b + p4meson;
89 pm = p4b - p4meson;
90
91 // lange - October 31,2002 - try to lessen the mass dependence of probmax
92 double q2max = p4b.mass2() + p4meson.mass2() - 2.0 * p4b.mass() * p4meson.mass();
93 double q2maxin = 1.0 / q2max;
94
95 EvtComplex ep_meson_bb[5];
96
97 ep_meson_bb[0] = ep_meson_b[0] * ( p4b );
98 ep_meson_bb[1] = ep_meson_b[1] * ( p4b );
99 ep_meson_bb[2] = ep_meson_b[2] * ( p4b );
100 ep_meson_bb[3] = ep_meson_b[3] * ( p4b );
101 ep_meson_bb[4] = ep_meson_b[4] * ( p4b );
102
103 EvtVector4C tds0, tds1, tds2, tds3, tds4;
104
105 EvtTensor4C tds;
106 if ( l_num == EM || l_num == MUM || l_num == TAUM )
107 {
108 EvtTensor4C tdual = EvtComplex( 0.0, hf ) * dual( directProd( pp, pm ) );
109 tds0 = tdual.cont2( ep_meson_b[0] ) - kf * ep_meson_b[0] - bpf * ep_meson_bb[0] * pp -
110 bmf * ep_meson_bb[0] * pm;
111 tds0 *= q2maxin;
112
113 tds1 = tdual.cont2( ep_meson_b[1] ) - kf * ep_meson_b[1] - bpf * ep_meson_bb[1] * pp -
114 bmf * ep_meson_bb[1] * pm;
115 tds1 *= q2maxin;
116
117 tds2 = tdual.cont2( ep_meson_b[2] ) - kf * ep_meson_b[2] - bpf * ep_meson_bb[2] * pp -
118 bmf * ep_meson_bb[2] * pm;
119 tds2 *= q2maxin;
120
121 tds3 = tdual.cont2( ep_meson_b[3] ) - kf * ep_meson_b[3] - bpf * ep_meson_bb[3] * pp -
122 bmf * ep_meson_bb[3] * pm;
123 tds3 *= q2maxin;
124
125 tds4 = tdual.cont2( ep_meson_b[4] ) - kf * ep_meson_b[4] - bpf * ep_meson_bb[4] * pp -
126 bmf * ep_meson_bb[4] * pm;
127 tds4 *= q2maxin;
128
129 l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
130 parent->getDaug( 2 )->spParentNeutrino() );
131 l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
132 parent->getDaug( 2 )->spParentNeutrino() );
133 }
134 else
135 {
136 if ( l_num == EP || l_num == MUP || l_num == TAUP )
137 {
138 EvtTensor4C tdual = EvtComplex( 0.0, -hf ) * dual( directProd( pp, pm ) );
139 tds0 = tdual.cont2( ep_meson_b[0] ) - kf * ep_meson_b[0] - bpf * ep_meson_bb[0] * pp -
140 bmf * ep_meson_bb[0] * pm;
141 tds0 *= q2maxin;
142
143 tds1 = tdual.cont2( ep_meson_b[1] ) - kf * ep_meson_b[1] - bpf * ep_meson_bb[1] * pp -
144 bmf * ep_meson_bb[1] * pm;
145 tds1 *= q2maxin;
146
147 tds2 = tdual.cont2( ep_meson_b[2] ) - kf * ep_meson_b[2] - bpf * ep_meson_bb[2] * pp -
148 bmf * ep_meson_bb[2] * pm;
149 tds2 *= q2maxin;
150
151 tds3 = tdual.cont2( ep_meson_b[3] ) - kf * ep_meson_b[3] - bpf * ep_meson_bb[3] * pp -
152 bmf * ep_meson_bb[3] * pm;
153 tds3 *= q2maxin;
154
155 tds4 = tdual.cont2( ep_meson_b[4] ) - kf * ep_meson_b[4] - bpf * ep_meson_bb[4] * pp -
156 bmf * ep_meson_bb[4] * pm;
157 tds4 *= q2maxin;
158
159 l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
160 parent->getDaug( 1 )->spParent( 0 ) );
161 l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
162 parent->getDaug( 1 )->spParent( 1 ) );
163 }
164 else { report( ERROR, "EvtGen" ) << "dfnb89agngri wrong lepton number\n"; }
165 }
166
167 amp.vertex( 0, 0, l1 * tds0 );
168 amp.vertex( 0, 1, l2 * tds0 );
169
170 amp.vertex( 1, 0, l1 * tds1 );
171 amp.vertex( 1, 1, l2 * tds1 );
172
173 amp.vertex( 2, 0, l1 * tds2 );
174 amp.vertex( 2, 1, l2 * tds2 );
175
176 amp.vertex( 3, 0, l1 * tds3 );
177 amp.vertex( 3, 1, l2 * tds3 );
178
179 amp.vertex( 4, 0, l1 * tds4 );
180 amp.vertex( 4, 1, l2 * tds4 );
181
182 return;
183}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
EvtTensor4C dual(const EvtTensor4C &t2)
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
Definition KKsem.h:33
void vertex(const EvtComplex &amp)
Definition EvtAmp.cc:441
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtId getId() const
virtual EvtDiracSpinor spParentNeutrino() const
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
virtual void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
EvtVector4C cont2(const EvtVector4C &v4) const
EvtVector4C conj() const
double mass() const
double mass2() const
void set(int i, double d)

The documentation for this class was generated from the following files: