BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSemiLeptonicVectorAmp.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: EvtSemiLeptonicVectorAmp.cc
12//
13// Description: Routine to implement semileptonic decays to vector
14// mesons.
15//
16// Modification history:
17//
18// DJL April 17,1998 Module created
19//
20//------------------------------------------------------------------------
21//
26#include "EvtGenBase/EvtPDL.hh"
32#include "EvtGenBase/EvtId.hh"
33#include "EvtGenBase/EvtAmp.hh"
35using std::endl;
36
38 EvtAmp& amp,
39 EvtSemiLeptonicFF *FormFactors ) {
40
41 static EvtId EM=EvtPDL::getId("e-");
42 static EvtId MUM=EvtPDL::getId("mu-");
43 static EvtId TAUM=EvtPDL::getId("tau-");
44 static EvtId EP=EvtPDL::getId("e+");
45 static EvtId MUP=EvtPDL::getId("mu+");
46 static EvtId TAUP=EvtPDL::getId("tau+");
47
48 static EvtId D0=EvtPDL::getId("D0");
49 static EvtId D0B=EvtPDL::getId("anti-D0");
50 static EvtId DP=EvtPDL::getId("D+");
51 static EvtId DM=EvtPDL::getId("D-");
52 static EvtId DSM=EvtPDL::getId("D_s-");
53 static EvtId DSP=EvtPDL::getId("D_s+");
54
55 //Add the lepton and neutrino 4 momenta to find q2
56
57 EvtVector4R q = parent->getDaug(1)->getP4()
58 + parent->getDaug(2)->getP4();
59 double q2 = (q.mass2());
60
61 double a1f,a2f,vf,a0f,a3f;
62 double m_meson = parent->getDaug(0)->mass();
63
64 FormFactors->getvectorff(parent->getId(),
65 parent->getDaug(0)->getId(),
66 q2,
67 m_meson,
68 &a1f,
69 &a2f,
70 &vf,
71 &a0f);
72
73 double costhl_flag = 1.0;
74
75 if(parent->getId()==D0||parent->getId()==D0B||
76 parent->getId()==DP||parent->getId()==DM) {
77 costhl_flag = -1.0;
78 }
79 if(parent->getId()==DSP||parent->getId()==DSM) {
80 costhl_flag = -1.0;
81 }
82 vf = vf * costhl_flag;
83
84 EvtVector4R p4b;
85 p4b.set(parent->mass(),0.0,0.0,0.0);
86
87 EvtVector4R p4meson = parent->getDaug(0)->getP4();
88
89 EvtVector4C l1,l2;
90
91 EvtId l_num = parent->getDaug(1)->getId();
92 double m_b = parent->mass();
93
94 a3f = ((m_b+m_meson)/(2.0*m_meson))*a1f -
95 ((m_b-m_meson)/(2.0*m_meson))*a2f;
96
97 EvtTensor4C tds;
98 if (l_num==EM||l_num==MUM||l_num==TAUM){
99
100 tds = a1f*(m_b+m_meson)*EvtTensor4C::g();
101 //tds-=directProd((a2f/(m_b+m_meson))*p4b,p4b+p4meson);
102 tds.addDirProd((-a2f/(m_b+m_meson))*p4b,p4b+p4meson);
103 tds+=EvtComplex(0.0,vf/(m_b+m_meson))
104 *dual(directProd(p4meson+p4b,p4b-p4meson));
105 //tds-=directProd((a3f-a0f)*2.0*(m_meson/q2)*p4b,p4b-p4meson);
106 tds.addDirProd((a0f-a3f)*2.0*(m_meson/q2)*p4b,p4b-p4meson);
107
108 l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
109 parent->getDaug(2)->spParentNeutrino());
110 l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
111 parent->getDaug(2)->spParentNeutrino());
112 }
113 else{
114 if (l_num==EP||l_num==MUP||l_num==TAUP){
115 tds = a1f*(m_b+m_meson)*EvtTensor4C::g();
116 //tds-=directProd((a2f/(m_b+m_meson))*p4b,p4b+p4meson);
117 tds.addDirProd((-a2f/(m_b+m_meson))*p4b,p4b+p4meson);
118 tds-=EvtComplex(0.0,vf/(m_b+m_meson))
119 *dual(directProd(p4meson+p4b,p4b-p4meson));
120 //tds-=directProd((a3f-a0f)*2.0*(m_meson/q2)*p4b,p4b-p4meson);
121 tds.addDirProd((a0f-a3f)*2.0*(m_meson/q2)*p4b,p4b-p4meson);
122
124 parent->getDaug(1)->spParent(0));
126 parent->getDaug(1)->spParent(1));
127 }
128 else{
129 report(ERROR,"EvtGen") << "Wrong lepton number"<<endl;
130 }
131 }
132
133 EvtVector4C et0=tds.cont1( parent->getDaug(0)->epsParent(0).conj() );
134 EvtVector4C et1=tds.cont1( parent->getDaug(0)->epsParent(1).conj() );
135 EvtVector4C et2=tds.cont1( parent->getDaug(0)->epsParent(2).conj() );
136
137
138 amp.vertex(0,0,l1.cont(et0));
139 amp.vertex(0,1,l2.cont(et0));
140
141 amp.vertex(1,0,l1.cont(et1));
142 amp.vertex(1,1,l2.cont(et1));
143
144 amp.vertex(2,0,l1.cont(et2));
145 amp.vertex(2,1,l2.cont(et2));
146
147 return;
148}
149
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:36
@ ERROR
Definition: EvtReport.hh:49
EvtTensor4C dual(const EvtTensor4C &t2)
Definition: EvtTensor4C.cc:379
*********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
Definition: EvtAmp.hh:30
void vertex(const EvtComplex &amp)
Definition: EvtAmp.cc:477
Definition: EvtId.hh:27
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
virtual EvtVector4C epsParent(int i) const
Definition: EvtParticle.cc:565
EvtId getId() const
Definition: EvtParticle.cc:113
virtual EvtDiracSpinor spParentNeutrino() const
Definition: EvtParticle.cc:635
virtual EvtDiracSpinor spParent(int) const
Definition: EvtParticle.cc:609
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double mass() const
Definition: EvtParticle.cc:127
virtual void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
void CalcAmp(EvtParticle *parent, EvtAmp &amp, EvtSemiLeptonicFF *FormFactors)
EvtVector4C cont1(const EvtVector4C &v4) const
Definition: EvtTensor4C.cc:461
static const EvtTensor4C & g()
Definition: EvtTensor4C.cc:47
EvtTensor4C & addDirProd(const EvtVector4R &p1, const EvtVector4R &p2)
Definition: EvtTensor4C.cc:366
EvtVector4C conj() const
Definition: EvtVector4C.hh:206
EvtComplex cont(const EvtVector4C &v4) const
Definition: EvtVector4C.hh:146
void set(int i, double d)
Definition: EvtVector4R.hh:183