BOSS 8.0.0
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//
22#include "EvtbTosllVectorAmp.hh"
34#include "EvtbTosllAmp.hh"
35#include "EvtbTosllFF.hh"
36
38 EvtbTosllFF* formFactors ) {
39
40 // Add the lepton and neutrino 4 momenta to find q2
41
42 EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
43 double q2 = ( q.mass2() );
44
45 double a1, a2, a0, v, t1, t2, t3;
46 double mesonmass = parent->getDaug( 0 )->mass();
47 double parentmass = parent->mass();
48
49 formFactors->getVectorFF( parent->getId(), parent->getDaug( 0 )->getId(), q2, mesonmass, a1,
50 a2, a0, v, t1, t2, t3 );
51
52 EvtId daught = parent->getDaug( 0 )->getId();
53 bool btod = false;
54 bool nnlo = true;
55 if ( daught == EvtPDL::getId( std::string( "rho+" ) ) ||
56 daught == EvtPDL::getId( std::string( "rho-" ) ) ||
57 daught == EvtPDL::getId( std::string( "rho0" ) ) ||
58 daught == EvtPDL::getId( std::string( "omega" ) ) )
59 btod = true;
60
61 EvtVector4R p4b;
62 p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
63 EvtVector4R p4meson = parent->getDaug( 0 )->getP4();
64
65 EvtVector4C l11, l12;
66 EvtVector4C l21, l22;
67
68 EvtVector4C a11, a12;
69 EvtVector4C a21, a22;
70
71 EvtId parentID = parent->getId();
72
73 // EvtId l_num = parent->getDaug(1)->getId();
74
75 EvtVector4R pbhat = p4b / parentmass;
76 EvtVector4R qhat = q / parentmass;
77 EvtVector4R pkstarhat = p4meson / parentmass;
78 EvtVector4R phat = pbhat + pkstarhat;
79
80 EvtComplex c7eff = EvtbTosllAmp::GetC7Eff( q2, nnlo );
81 EvtComplex c9eff = EvtbTosllAmp::GetC9Eff( q2, nnlo, btod );
82 EvtComplex c10eff = EvtbTosllAmp::GetC10Eff( q2, nnlo );
83 EvtComplex uniti( 0.0, 1.0 );
84
85 double mhatb = 4.4 / ( parentmass );
86 double mhatkstar = mesonmass / ( parentmass );
87 double shat = q2 / ( parentmass * parentmass );
88
89 EvtComplex a;
90 a = c9eff * v * 2 / ( 1 + mhatkstar ) + 4 * mhatb * c7eff * t1 / shat;
91 EvtComplex b;
92 b = ( 1 + mhatkstar ) * ( c9eff * a1 + 2 * mhatb * ( 1 - mhatkstar ) * c7eff * t2 / shat );
93 EvtComplex c;
94 c = ( ( 1 - mhatkstar ) * c9eff * a2 +
95 2 * mhatb * c7eff * ( t3 + ( 1 - mhatkstar * mhatkstar ) * t2 / shat ) ) /
96 ( 1 - mhatkstar * mhatkstar );
97 EvtComplex d;
98 d = ( c9eff * ( ( 1 + mhatkstar ) * a1 - ( 1 - mhatkstar ) * a2 - 2 * mhatkstar * a0 ) -
99 2 * mhatb * c7eff * t3 ) /
100 shat;
101 EvtComplex e;
102 e = 2 * c10eff * v / ( 1 + mhatkstar );
104 f = ( 1 + mhatkstar ) * c10eff * a1;
105 EvtComplex g;
106 g = c10eff * a2 / ( 1 + mhatkstar );
107 EvtComplex h;
108 h = c10eff * ( ( 1 + mhatkstar ) * a1 - ( 1 - mhatkstar ) * a2 - 2 * mhatkstar * a0 ) / shat;
109
110 EvtTensor4C T1, T2;
111
112 static EvtIdSet bmesons( "B-", "anti-B0" );
113 static EvtIdSet bbarmesons( "B+", "B0" );
114
115 EvtParticle* lepPlus( 0 );
116 EvtParticle* lepMinus( 0 );
117
118 int charge1 = EvtPDL::chg3( parent->getDaug( 1 )->getId() );
119 int charge2 = EvtPDL::chg3( parent->getDaug( 2 )->getId() );
120
121 lepPlus = ( charge1 > charge2 ) ? parent->getDaug( 1 ) : parent->getDaug( 2 );
122 lepMinus = ( charge1 < charge2 ) ? parent->getDaug( 1 ) : parent->getDaug( 2 );
123
124 // static EvtIdSet leptons("e-","mu-","tau-");
125 // static EvtIdSet antileptons("e+","mu+","tau+");
126
127 // if (leptons.contains(l_num)){
128 if ( bmesons.contains( parentID ) )
129 {
130
131 T1 = a * dual( directProd( pbhat, pkstarhat ) ) - b * uniti * EvtTensor4C::g() +
132 c * uniti * directProd( pbhat, phat ) + d * uniti * directProd( pbhat, qhat );
133
134 T2 = e * dual( directProd( pbhat, pkstarhat ) ) - f * uniti * EvtTensor4C::g() +
135 g * uniti * directProd( pbhat, phat ) + h * uniti * directProd( pbhat, qhat );
136
137 l11 = EvtLeptonVCurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 0 ) );
138 l21 = EvtLeptonVCurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 0 ) );
139 l12 = EvtLeptonVCurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 1 ) );
140 l22 = EvtLeptonVCurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 1 ) );
141
142 a11 = EvtLeptonACurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 0 ) );
143 a21 = EvtLeptonACurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 0 ) );
144 a12 = EvtLeptonACurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 1 ) );
145 a22 = EvtLeptonACurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 1 ) );
146 }
147 else
148 {
149
150 if ( bbarmesons.contains( parentID ) )
151 {
152
153 T1 = -a * dual( directProd( pbhat, pkstarhat ) ) - b * uniti * EvtTensor4C::g() +
154 c * uniti * directProd( pbhat, phat ) + d * uniti * directProd( pbhat, qhat );
155
156 T2 = -e * dual( directProd( pbhat, pkstarhat ) ) - f * uniti * EvtTensor4C::g() +
157 g * uniti * directProd( pbhat, phat ) + h * uniti * directProd( pbhat, qhat );
158
159 l11 = EvtLeptonVCurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 1 ) );
160 l21 = EvtLeptonVCurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 1 ) );
161 l12 = EvtLeptonVCurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 0 ) );
162 l22 = EvtLeptonVCurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 0 ) );
163
164 a11 = EvtLeptonACurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 1 ) );
165 a21 = EvtLeptonACurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 1 ) );
166 a12 = EvtLeptonACurrent( lepPlus->spParent( 1 ), lepMinus->spParent( 0 ) );
167 a22 = EvtLeptonACurrent( lepPlus->spParent( 0 ), lepMinus->spParent( 0 ) );
168 }
169 else { report( ERROR, "EvtGen" ) << "Wrong lepton number\n"; }
170 }
171
172 int i;
173
174 for ( i = 0; i < 3; i++ )
175 {
176 EvtVector4C eps = parent->getDaug( 0 )->epsParent( i ).conj();
177
178 EvtVector4C E1 = T1.cont1( eps );
179 EvtVector4C E2 = T2.cont1( eps );
180
181 amp.vertex( i, 0, 0, l11 * E1 + a11 * E2 );
182 amp.vertex( i, 0, 1, l12 * E1 + a12 * E2 );
183 amp.vertex( i, 1, 0, l21 * E1 + a21 * E2 );
184 amp.vertex( i, 1, 1, l22 * E1 + a22 * E2 );
185 }
186}
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
character *LEPTONflag integer iresonances real zeta5 real a0
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:34
@ ERROR
Definition EvtReport.hh:49
EvtTensor3C eps(const EvtVector3R &v)
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
**********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
void vertex(const EvtComplex &amp)
Definition EvtAmp.cc:441
int contains(const EvtId id)
Definition EvtIdSet.cc:382
Definition EvtId.hh:27
static int chg3(EvtId i)
Definition EvtPDL.hh:65
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
virtual EvtVector4C epsParent(int i) const
EvtId getId() const
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
static const EvtTensor4C & g()
EvtVector4C conj() const
void set(int i, double d)
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)
void CalcAmp(EvtParticle *parent, EvtAmp &amp, EvtbTosllFF *formFactors)