BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSemiLeptonicBaryonAmp.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtSemiLeptonicBaryonAmp.cc
12//
13// Description: Routine to implement semileptonic decays to vector
14// mesons.
15//
16// Modification history:
17//
18// Lange Oct 20, 2004 Module created.
19//
20//------------------------------------------------------------------------
21//
23#include "EvtAmp.hh"
24#include "EvtDiracSpinor.hh"
25#include "EvtGammaMatrix.hh"
26#include "EvtGenKine.hh"
27#include "EvtId.hh"
28#include "EvtPDL.hh"
29#include "EvtParticle.hh"
30#include "EvtPatches.hh"
31#include "EvtReport.hh"
32#include "EvtSemiLeptonicFF.hh"
33#include "EvtTensor4C.hh"
34#include "EvtVector4C.hh"
35using std::endl;
36
38 EvtSemiLeptonicFF* FormFactors ) {
39
40 static EvtId EM = EvtPDL::getId( "e-" );
41 static EvtId MUM = EvtPDL::getId( "mu-" );
42 static EvtId TAUM = EvtPDL::getId( "tau-" );
43 static EvtId EP = EvtPDL::getId( "e+" );
44 static EvtId MUP = EvtPDL::getId( "mu+" );
45 static EvtId TAUP = EvtPDL::getId( "tau+" );
46
47 // Add the lepton and neutrino 4 momenta to find q2
48
49 EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
50 double q2 = ( q.mass2() );
51
52 double f1v, f1a, f2v, f2a;
53 double m_meson = parent->getDaug( 0 )->mass();
54
55 FormFactors->getbaryonff( parent->getId(), parent->getDaug( 0 )->getId(), q2, m_meson, &f1v,
56 &f1a, &f2v, &f2a );
57
58 EvtVector4R p4b;
59 p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
60
61 EvtVector4C temp_00_term1;
62 EvtVector4C temp_00_term2;
63
64 EvtVector4C temp_01_term1;
65 EvtVector4C temp_01_term2;
66
67 EvtVector4C temp_10_term1;
68 EvtVector4C temp_10_term2;
69
70 EvtVector4C temp_11_term1;
71 EvtVector4C temp_11_term2;
72
73 EvtDiracSpinor p0 = parent->sp( 0 );
74 EvtDiracSpinor p1 = parent->sp( 1 );
75
76 EvtDiracSpinor d0 = parent->getDaug( 0 )->spParent( 0 );
77 EvtDiracSpinor d1 = parent->getDaug( 0 )->spParent( 1 );
78
79 temp_00_term1.set( 0, f1v * ( d0 * ( EvtGammaMatrix::g0() * p0 ) ) );
80 temp_00_term2.set( 0,
81 f1a * ( d0 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p0 ) ) );
82 temp_01_term1.set( 0, f1v * ( d0 * ( EvtGammaMatrix::g0() * p1 ) ) );
83 temp_01_term2.set( 0,
84 f1a * ( d0 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p1 ) ) );
85 temp_10_term1.set( 0, f1v * ( d1 * ( EvtGammaMatrix::g0() * p0 ) ) );
86 temp_10_term2.set( 0,
87 f1a * ( d1 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p0 ) ) );
88 temp_11_term1.set( 0, f1v * ( d1 * ( EvtGammaMatrix::g0() * p1 ) ) );
89 temp_11_term2.set( 0,
90 f1a * ( d1 * ( ( EvtGammaMatrix::g0() * EvtGammaMatrix::g5() ) * p1 ) ) );
91
92 temp_00_term1.set( 1, f1v * ( d0 * ( EvtGammaMatrix::g1() * p0 ) ) );
93 temp_00_term2.set( 1,
94 f1a * ( d0 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p0 ) ) );
95 temp_01_term1.set( 1, f1v * ( d0 * ( EvtGammaMatrix::g1() * p1 ) ) );
96 temp_01_term2.set( 1,
97 f1a * ( d0 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p1 ) ) );
98 temp_10_term1.set( 1, f1v * ( d1 * ( EvtGammaMatrix::g1() * p0 ) ) );
99 temp_10_term2.set( 1,
100 f1a * ( d1 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p0 ) ) );
101 temp_11_term1.set( 1, f1v * ( d1 * ( EvtGammaMatrix::g1() * p1 ) ) );
102 temp_11_term2.set( 1,
103 f1a * ( d1 * ( ( EvtGammaMatrix::g1() * EvtGammaMatrix::g5() ) * p1 ) ) );
104
105 temp_00_term1.set( 2, f1v * ( d0 * ( EvtGammaMatrix::g2() * p0 ) ) );
106 temp_00_term2.set( 2,
107 f1a * ( d0 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p0 ) ) );
108 temp_01_term1.set( 2, f1v * ( d0 * ( EvtGammaMatrix::g2() * p1 ) ) );
109 temp_01_term2.set( 2,
110 f1a * ( d0 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p1 ) ) );
111 temp_10_term1.set( 2, f1v * ( d1 * ( EvtGammaMatrix::g2() * p0 ) ) );
112 temp_10_term2.set( 2,
113 f1a * ( d1 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p0 ) ) );
114 temp_11_term1.set( 2, f1v * ( d1 * ( EvtGammaMatrix::g2() * p1 ) ) );
115 temp_11_term2.set( 2,
116 f1a * ( d1 * ( ( EvtGammaMatrix::g2() * EvtGammaMatrix::g5() ) * p1 ) ) );
117
118 temp_00_term1.set( 3, f1v * ( d0 * ( EvtGammaMatrix::g3() * p0 ) ) );
119 temp_00_term2.set( 3,
120 f1a * ( d0 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p0 ) ) );
121 temp_01_term1.set( 3, f1v * ( d0 * ( EvtGammaMatrix::g3() * p1 ) ) );
122 temp_01_term2.set( 3,
123 f1a * ( d0 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p1 ) ) );
124 temp_10_term1.set( 3, f1v * ( d1 * ( EvtGammaMatrix::g3() * p0 ) ) );
125 temp_10_term2.set( 3,
126 f1a * ( d1 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p0 ) ) );
127 temp_11_term1.set( 3, f1v * ( d1 * ( EvtGammaMatrix::g3() * p1 ) ) );
128 temp_11_term2.set( 3,
129 f1a * ( d1 * ( ( EvtGammaMatrix::g3() * EvtGammaMatrix::g5() ) * p1 ) ) );
130
131 EvtVector4C l1, l2;
132
133 EvtId l_num = parent->getDaug( 1 )->getId();
134 if ( l_num == EM || l_num == MUM || l_num == TAUM )
135 {
136
137 l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
138 parent->getDaug( 2 )->spParentNeutrino() );
139 l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
140 parent->getDaug( 2 )->spParentNeutrino() );
141 }
142 else
143 {
144 if ( l_num == EP || l_num == MUP || l_num == TAUP )
145 {
146 l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
147 parent->getDaug( 1 )->spParent( 0 ) );
148 l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
149 parent->getDaug( 1 )->spParent( 1 ) );
150 }
151 else { report( ERROR, "EvtGen" ) << "Wrong lepton number" << endl; }
152 }
153
154 amp.vertex( 0, 0, 0, l1.cont( temp_00_term1 + temp_00_term2 ) );
155 amp.vertex( 0, 0, 1, l2.cont( temp_00_term1 + temp_00_term2 ) );
156
157 amp.vertex( 0, 1, 0, l1.cont( temp_01_term1 + temp_01_term2 ) );
158 amp.vertex( 0, 1, 1, l2.cont( temp_01_term1 + temp_01_term2 ) );
159
160 amp.vertex( 1, 0, 0, l1.cont( temp_10_term1 + temp_10_term2 ) );
161 amp.vertex( 1, 0, 1, l2.cont( temp_10_term1 + temp_10_term2 ) );
162
163 amp.vertex( 1, 1, 0, l1.cont( temp_11_term1 + temp_11_term2 ) );
164 amp.vertex( 1, 1, 1, l2.cont( temp_11_term1 + temp_11_term2 ) );
165
166 return;
167}
double p1[4]
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
****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 const EvtGammaMatrix & g0()
static const EvtGammaMatrix & g2()
static const EvtGammaMatrix & g1()
static const EvtGammaMatrix & g3()
static const EvtGammaMatrix & g5()
Definition EvtId.hh:27
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 EvtDiracSpinor sp(int) const
void CalcAmp(EvtParticle *parent, EvtAmp &amp, EvtSemiLeptonicFF *FormFactors)
virtual void getbaryonff(EvtId parent, EvtId daught, double t, double m_meson, double *f1v, double *f1a, double *f2v, double *f2a)
void set(int, const EvtComplex &)
EvtComplex cont(const EvtVector4C &v4) const
void set(int i, double d)