CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtbTosllVectorAmp.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) 2000 Caltech, UCSB
10//
11// Module: EvtbTosllVectorAmp.cc
12//
13// Description: Routine to implement bTosll decays to vector
14// mesons.
15//
16// Modification history:
17//
18// Ryd January 5,2000 Module created
19//
20//------------------------------------------------------------------------
21//
26#include "EvtGenBase/EvtPDL.hh"
32#include "EvtGenBase/EvtId.hh"
34#include "EvtGenBase/EvtAmp.hh"
37
39 EvtAmp& amp,
40 EvtbTosllFF *formFactors ) {
41
42 //Add the lepton and neutrino 4 momenta to find q2
43
44 EvtVector4R q = parent->getDaug(1)->getP4()
45 + parent->getDaug(2)->getP4();
46 double q2 = (q.mass2());
47
48
49 double a1,a2,a0,v,t1,t2,t3;
50 double mesonmass = parent->getDaug(0)->mass();
51 double parentmass = parent->mass();
52
53 formFactors->getVectorFF(parent->getId(),
54 parent->getDaug(0)->getId(),
55 q2,
56 mesonmass,
57 a1,a2,a0,v,t1,t2,t3);
58
59
60 EvtId daught = parent->getDaug(0)->getId();
61 bool btod = false;
62 bool nnlo = true;
63 if
64 (
65 daught == EvtPDL::getId(std::string("rho+")) ||
66 daught == EvtPDL::getId(std::string("rho-")) ||
67 daught == EvtPDL::getId(std::string("rho0")) ||
68 daught == EvtPDL::getId(std::string("omega"))
69 )
70 btod = true;
71
72 EvtVector4R p4b;
73 p4b.set(parent->mass(),0.0,0.0,0.0);
74 EvtVector4R p4meson = parent->getDaug(0)->getP4();
75
76 EvtVector4C l11,l12;
77 EvtVector4C l21,l22;
78
79 EvtVector4C a11,a12;
80 EvtVector4C a21,a22;
81
82 EvtId parentID = parent->getId();
83
84 //EvtId l_num = parent->getDaug(1)->getId();
85
86 EvtVector4R pbhat=p4b/parentmass;
87 EvtVector4R qhat=q/parentmass;
88 EvtVector4R pkstarhat=p4meson/parentmass;
89 EvtVector4R phat=pbhat+pkstarhat;
90
91 EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(q2,nnlo);
92 EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(q2,nnlo,btod);
93 EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(q2,nnlo);
94 EvtComplex uniti(0.0,1.0);
95
96 double mhatb=4.4/(parentmass);
97 double mhatkstar=mesonmass/(parentmass);
98 double shat=q2/(parentmass*parentmass);
99
100
101 EvtComplex a;
102 a=c9eff*v*2/(1+mhatkstar)+4*mhatb*c7eff*t1/shat;
103 EvtComplex b;
104 b=(1+mhatkstar)*(c9eff*a1+2*mhatb*(1-mhatkstar)*c7eff*t2/shat);
105 EvtComplex c;
106 c=((1-mhatkstar)*c9eff*a2+
107 2*mhatb*c7eff*(t3+(1-mhatkstar*mhatkstar)*t2/shat))/
108 (1-mhatkstar*mhatkstar);
109 EvtComplex d;
110 d=(c9eff*((1+mhatkstar)*a1-(1-mhatkstar)*a2-2*mhatkstar*a0)
111 -2*mhatb*c7eff*t3)/shat;
112 EvtComplex e;
113 e=2*c10eff*v/(1+mhatkstar);
114 EvtComplex f;
115 f=(1+mhatkstar)*c10eff*a1;
116 EvtComplex g;
117 g=c10eff*a2/(1+mhatkstar);
118 EvtComplex h;
119 h=c10eff*((1+mhatkstar)*a1-(1-mhatkstar)*a2-2*mhatkstar*a0)/shat;
120
121 EvtTensor4C T1,T2;
122
123 static EvtIdSet bmesons("B-","anti-B0");
124 static EvtIdSet bbarmesons("B+","B0");
125
126 EvtParticle* lepPlus(0);
127 EvtParticle* lepMinus(0);
128
129 int charge1 = EvtPDL::chg3(parent->getDaug(1)->getId());
130 int charge2 = EvtPDL::chg3(parent->getDaug(2)->getId());
131
132 lepPlus = (charge1 > charge2) ? parent->getDaug(1) : parent->getDaug(2);
133 lepMinus = (charge1 < charge2) ? parent->getDaug(1) : parent->getDaug(2);
134
135// static EvtIdSet leptons("e-","mu-","tau-");
136// static EvtIdSet antileptons("e+","mu+","tau+");
137
138// if (leptons.contains(l_num)){
139 if (bmesons.contains(parentID)) {
140
141 T1=a*dual(directProd(pbhat,pkstarhat))
142 -b*uniti*EvtTensor4C::g()
143 +c*uniti*directProd(pbhat,phat)
144 +d*uniti*directProd(pbhat,qhat);
145
146 T2=e*dual(directProd(pbhat,pkstarhat))
147 -f*uniti*EvtTensor4C::g()
148 +g*uniti*directProd(pbhat,phat)
149 +h*uniti*directProd(pbhat,qhat);
150
151 l11=EvtLeptonVCurrent(lepPlus->spParent(0),
152 lepMinus->spParent(0));
153 l21=EvtLeptonVCurrent(lepPlus->spParent(1),
154 lepMinus->spParent(0));
155 l12=EvtLeptonVCurrent(lepPlus->spParent(0),
156 lepMinus->spParent(1));
157 l22=EvtLeptonVCurrent(lepPlus->spParent(1),
158 lepMinus->spParent(1));
159
160 a11=EvtLeptonACurrent(lepPlus->spParent(0),
161 lepMinus->spParent(0));
162 a21=EvtLeptonACurrent(lepPlus->spParent(1),
163 lepMinus->spParent(0));
164 a12=EvtLeptonACurrent(lepPlus->spParent(0),
165 lepMinus->spParent(1));
166 a22=EvtLeptonACurrent(lepPlus->spParent(1),
167 lepMinus->spParent(1));
168
169 } else {
170
171 if (bbarmesons.contains(parentID)) {
172
173 T1=-a*dual(directProd(pbhat,pkstarhat))
174 -b*uniti*EvtTensor4C::g()
175 +c*uniti*directProd(pbhat,phat)
176 +d*uniti*directProd(pbhat,qhat);
177
178 T2=-e*dual(directProd(pbhat,pkstarhat))
179 -f*uniti*EvtTensor4C::g()
180 +g*uniti*directProd(pbhat,phat)
181 +h*uniti*directProd(pbhat,qhat);
182
183 l11=EvtLeptonVCurrent(lepPlus->spParent(1),
184 lepMinus->spParent(1));
185 l21=EvtLeptonVCurrent(lepPlus->spParent(0),
186 lepMinus->spParent(1));
187 l12=EvtLeptonVCurrent(lepPlus->spParent(1),
188 lepMinus->spParent(0));
189 l22=EvtLeptonVCurrent(lepPlus->spParent(0),
190 lepMinus->spParent(0));
191
192 a11=EvtLeptonACurrent(lepPlus->spParent(1),
193 lepMinus->spParent(1));
194 a21=EvtLeptonACurrent(lepPlus->spParent(0),
195 lepMinus->spParent(1));
196 a12=EvtLeptonACurrent(lepPlus->spParent(1),
197 lepMinus->spParent(0));
198 a22=EvtLeptonACurrent(lepPlus->spParent(0),
199 lepMinus->spParent(0));
200
201 }
202 else{
203 report(ERROR,"EvtGen") << "Wrong lepton number\n";
204 }
205 }
206
207
208 int i;
209
210 for(i=0;i<3;i++){
211 EvtVector4C eps=parent->getDaug(0)->epsParent(i).conj();
212
213 EvtVector4C E1=T1.cont1(eps);
214 EvtVector4C E2=T2.cont1(eps);
215
216 amp.vertex(i,0,0,l11*E1+a11*E2);
217 amp.vertex(i,0,1,l12*E1+a12*E2);
218 amp.vertex(i,1,0,l21*E1+a21*E2);
219 amp.vertex(i,1,1,l22*E1+a22*E2);
220 }
221}
222
223
224
225
226
227
228
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ ERROR
Definition: EvtReport.hh:49
EvtTensor3C eps(const EvtVector3R &v)
Definition: EvtTensor3C.cc:307
EvtTensor4C dual(const EvtTensor4C &t2)
Definition: EvtTensor4C.cc:379
****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
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
Definition: KarLud.h:35
Definition: EvtAmp.hh:30
void vertex(const EvtComplex &amp)
Definition: EvtAmp.cc:477
int contains(const EvtId id)
Definition: EvtIdSet.cc:507
Definition: EvtId.hh:27
static int chg3(EvtId i)
Definition: EvtPDL.hh:60
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
virtual EvtVector4C epsParent(int i) const
Definition: EvtParticle.cc:563
EvtId getId() const
Definition: EvtParticle.cc:113
virtual EvtDiracSpinor spParent(int) const
Definition: EvtParticle.cc:607
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double mass() const
Definition: EvtParticle.cc:127
static const EvtTensor4C & g()
Definition: EvtTensor4C.cc:47
EvtVector4C conj() const
Definition: EvtVector4C.hh:206
void set(int i, double d)
Definition: EvtVector4R.hh:183
EvtComplex GetC7Eff(double q2, bool nnlo=true)
EvtComplex GetC10Eff(double q2, bool nnlo=true)
EvtComplex GetC9Eff(double q2, bool nnlo=true, bool btod=false)
virtual void getVectorFF(EvtId parent, EvtId daught, double t, double mass, double &a1, double &a2, double &a0, double &v, double &t1, double &t2, double &t3)
Definition: EvtbTosllFF.hh:33
void CalcAmp(EvtParticle *parent, EvtAmp &amp, EvtbTosllFF *formFactors)