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

#include <EvtSemiLeptonicVectorAmp.hh>

Inheritance diagram for EvtSemiLeptonicVectorAmp:

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 EvtSemiLeptonicVectorAmp.hh.

Member Function Documentation

◆ CalcAmp()

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

Reimplemented from EvtSemiLeptonicAmp.

Definition at line 36 of file EvtSemiLeptonicVectorAmp.cc.

37 {
38
39 static EvtId EM = EvtPDL::getId( "e-" );
40 static EvtId MUM = EvtPDL::getId( "mu-" );
41 static EvtId TAUM = EvtPDL::getId( "tau-" );
42 static EvtId EP = EvtPDL::getId( "e+" );
43 static EvtId MUP = EvtPDL::getId( "mu+" );
44 static EvtId TAUP = EvtPDL::getId( "tau+" );
45
46 static EvtId D0 = EvtPDL::getId( "D0" );
47 static EvtId D0B = EvtPDL::getId( "anti-D0" );
48 static EvtId DP = EvtPDL::getId( "D+" );
49 static EvtId DM = EvtPDL::getId( "D-" );
50 static EvtId DSM = EvtPDL::getId( "D_s-" );
51 static EvtId DSP = EvtPDL::getId( "D_s+" );
52
53 // Add the lepton and neutrino 4 momenta to find q2
54
55 EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
56 double q2 = ( q.mass2() );
57
58 double a1f, a2f, vf, a0f, a3f;
59 double m_meson = parent->getDaug( 0 )->mass();
60
61 FormFactors->getvectorff( parent->getId(), parent->getDaug( 0 )->getId(), q2, m_meson, &a1f,
62 &a2f, &vf, &a0f );
63
64 double costhl_flag = 1.0;
65
66 if ( parent->getId() == D0 || parent->getId() == D0B || parent->getId() == DP ||
67 parent->getId() == DM )
68 { costhl_flag = -1.0; }
69 if ( parent->getId() == DSP || parent->getId() == DSM ) { costhl_flag = -1.0; }
70 vf = vf * costhl_flag;
71
72 EvtVector4R p4b;
73 p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
74
75 EvtVector4R p4meson = parent->getDaug( 0 )->getP4();
76
77 EvtVector4C l1, l2;
78
79 EvtId l_num = parent->getDaug( 1 )->getId();
80 double m_b = parent->mass();
81
82 a3f = ( ( m_b + m_meson ) / ( 2.0 * m_meson ) ) * a1f -
83 ( ( m_b - m_meson ) / ( 2.0 * m_meson ) ) * a2f;
84
85 EvtTensor4C tds;
86 if ( l_num == EM || l_num == MUM || l_num == TAUM )
87 {
88
89 tds = a1f * ( m_b + m_meson ) * EvtTensor4C::g();
90 // tds-=directProd((a2f/(m_b+m_meson))*p4b,p4b+p4meson);
91 tds.addDirProd( ( -a2f / ( m_b + m_meson ) ) * p4b, p4b + p4meson );
92 tds += EvtComplex( 0.0, vf / ( m_b + m_meson ) ) *
93 dual( directProd( p4meson + p4b, p4b - p4meson ) );
94 // tds-=directProd((a3f-a0f)*2.0*(m_meson/q2)*p4b,p4b-p4meson);
95 tds.addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / q2 ) * p4b, p4b - p4meson );
96
97 l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
98 parent->getDaug( 2 )->spParentNeutrino() );
99 l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
100 parent->getDaug( 2 )->spParentNeutrino() );
101 }
102 else
103 {
104 if ( l_num == EP || l_num == MUP || l_num == TAUP )
105 {
106 tds = a1f * ( m_b + m_meson ) * EvtTensor4C::g();
107 // tds-=directProd((a2f/(m_b+m_meson))*p4b,p4b+p4meson);
108 tds.addDirProd( ( -a2f / ( m_b + m_meson ) ) * p4b, p4b + p4meson );
109 tds -= EvtComplex( 0.0, vf / ( m_b + m_meson ) ) *
110 dual( directProd( p4meson + p4b, p4b - p4meson ) );
111 // tds-=directProd((a3f-a0f)*2.0*(m_meson/q2)*p4b,p4b-p4meson);
112 tds.addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / q2 ) * p4b, p4b - p4meson );
113
114 l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
115 parent->getDaug( 1 )->spParent( 0 ) );
116 l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
117 parent->getDaug( 1 )->spParent( 1 ) );
118 }
119 else { report( ERROR, "EvtGen" ) << "Wrong lepton number" << endl; }
120 }
121
122 EvtVector4C et0 = tds.cont1( parent->getDaug( 0 )->epsParent( 0 ).conj() );
123 EvtVector4C et1 = tds.cont1( parent->getDaug( 0 )->epsParent( 1 ).conj() );
124 EvtVector4C et2 = tds.cont1( parent->getDaug( 0 )->epsParent( 2 ).conj() );
125
126 amp.vertex( 0, 0, l1.cont( et0 ) );
127 amp.vertex( 0, 1, l2.cont( et0 ) );
128
129 amp.vertex( 1, 0, l1.cont( et1 ) );
130 amp.vertex( 1, 1, l2.cont( et1 ) );
131
132 amp.vertex( 2, 0, l1.cont( et2 ) );
133 amp.vertex( 2, 1, l2.cont( et2 ) );
134
135 return;
136}
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)
*********DOUBLE PRECISION m_pi INTEGER m_lenwt !max no of aux weights INTEGER m_phmax !maximum photon multiplicity ISR FSR *DOUBLE COMPLEX m_Pauli4 DOUBLE COMPLEX m_AmpBorn DOUBLE COMPLEX m_AmpBoxy DOUBLE COMPLEX m_AmpBorn1 DOUBLE COMPLEX m_AmpBorn2 DOUBLE COMPLEX m_AmpExpo2p DOUBLE COMPLEX m_Rmat DOUBLE COMPLEX m_BoxGZut !DOUBLE COMPLEX m_F1finPair2 !DOUBLE PRECISION m_Vcut DOUBLE PRECISION m_Alfinv DOUBLE PRECISION m_Lorin1 DOUBLE PRECISION m_Lorin2 DOUBLE PRECISION m_b
Definition GPS.h:30
****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
virtual EvtVector4C epsParent(int i) const
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 getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
EvtVector4C cont1(const EvtVector4C &v4) const
static const EvtTensor4C & g()
EvtTensor4C & addDirProd(const EvtVector4R &p1, const EvtVector4R &p2)
EvtVector4C conj() const
EvtComplex cont(const EvtVector4C &v4) const
void set(int i, double d)

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