BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtbTosllScalarAmp.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: EvtbTosllScalarAmp.cc
12//
13// Description: Routine to implement bTosll decays to pseudo-scalar
14// mesons.
15//
16// Modification history:
17//
18// Ryd January 5,2000 Module created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtbTosllScalarAmp.hh"
35#include "EvtbTosllAmp.hh"
36#include "EvtbTosllFF.hh"
37
39 EvtbTosllFF* formFactors ) {
40
41 // Add the lepton and neutrino 4 momenta to find q2
42
43 EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
44 double q2 = ( q.mass2() );
45
46 double fp, f0, ft;
47 double mesonmass = parent->getDaug( 0 )->mass();
48 double parentmass = parent->mass();
49
50 formFactors->getScalarFF( parent->getId(), parent->getDaug( 0 )->getId(), q2, mesonmass, fp,
51 f0, ft );
52
53 EvtId daught = parent->getDaug( 0 )->getId();
54 bool btod = false;
55 bool nnlo = true;
56 if ( daught == EvtPDL::getId( std::string( "pi+" ) ) ||
57 daught == EvtPDL::getId( std::string( "pi-" ) ) ||
58 daught == EvtPDL::getId( std::string( "pi0" ) ) ||
59 daught == EvtPDL::getId( std::string( "eta" ) ) ||
60 daught == EvtPDL::getId( std::string( "eta'" ) ) )
61 btod = true;
62
63 EvtVector4R p4b;
64 p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
65
66 EvtVector4C l11, l12;
67 EvtVector4C l21, l22;
68
69 EvtVector4C a11, a12;
70 EvtVector4C a21, a22;
71
72 EvtId l_num = parent->getDaug( 1 )->getId();
73
74 EvtVector4C T1, T2;
75
76 EvtVector4R phat = p4b / parentmass;
77 EvtVector4R qhat = q / parentmass;
78
79 EvtComplex c7eff = EvtbTosllAmp::GetC7Eff( q2, nnlo );
80 EvtComplex c9eff = EvtbTosllAmp::GetC9Eff( q2, nnlo, btod );
81 EvtComplex c10eff = EvtbTosllAmp::GetC10Eff( q2, nnlo );
82
83 // double mbhat=1;
84 double mbhat = 4.4 / ( parentmass );
85 // double mkhat = 0.15;
86 double mkhat = mesonmass / ( parentmass );
87 double shat = q2 / ( parentmass * parentmass );
88
89 double fm = ( f0 - fp ) * ( 1 - mkhat * mkhat ) / shat;
90
91 EvtComplex aprime;
92 aprime = c9eff * fp + 2.0 * mbhat * c7eff * ft / ( 1 + mkhat );
93 EvtComplex bprime;
94 bprime = c9eff * fm - 2 * mbhat * c7eff * ft * ( 1 - mkhat ) / shat;
95
96 EvtComplex cprime;
97 cprime = c10eff * fp;
98 EvtComplex dprime;
99 dprime = c10eff * fm;
100
101 static EvtIdSet leptons( "e-", "mu-", "tau-" );
102 static EvtIdSet antileptons( "e+", "mu+", "tau+" );
103
104 if ( leptons.contains( l_num ) )
105 {
106
107 T1 = aprime * phat + bprime * qhat;
108 T2 = cprime * phat + dprime * qhat;
109
110 l11 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 0 ),
111 parent->getDaug( 2 )->spParent( 0 ) );
112 l21 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 1 ),
113 parent->getDaug( 2 )->spParent( 0 ) );
114 l12 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 0 ),
115 parent->getDaug( 2 )->spParent( 1 ) );
116 l22 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 1 ),
117 parent->getDaug( 2 )->spParent( 1 ) );
118 a11 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 0 ),
119 parent->getDaug( 2 )->spParent( 0 ) );
120 a21 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 1 ),
121 parent->getDaug( 2 )->spParent( 0 ) );
122 a12 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 0 ),
123 parent->getDaug( 2 )->spParent( 1 ) );
124 a22 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 1 ),
125 parent->getDaug( 2 )->spParent( 1 ) );
126 }
127 else
128 {
129 if ( antileptons.contains( l_num ) )
130 {
131
132 T1 = aprime * phat + bprime * qhat;
133 T2 = cprime * phat + dprime * qhat;
134
135 l11 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 1 ),
136 parent->getDaug( 2 )->spParent( 1 ) );
137 l21 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 0 ),
138 parent->getDaug( 2 )->spParent( 1 ) );
139 l12 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 1 ),
140 parent->getDaug( 2 )->spParent( 0 ) );
141 l22 = EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( 0 ),
142 parent->getDaug( 2 )->spParent( 0 ) );
143
144 a11 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 1 ),
145 parent->getDaug( 2 )->spParent( 1 ) );
146 a21 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 0 ),
147 parent->getDaug( 2 )->spParent( 1 ) );
148 a12 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 1 ),
149 parent->getDaug( 2 )->spParent( 0 ) );
150 a22 = EvtLeptonACurrent( parent->getDaug( 1 )->spParent( 0 ),
151 parent->getDaug( 2 )->spParent( 0 ) );
152 }
153 else { report( ERROR, "EvtGen" ) << "Wrong lepton number\n"; }
154 }
155
156 amp.vertex( 0, 0, l11 * T1 + a11 * T2 );
157 amp.vertex( 0, 1, l12 * T1 + a12 * T2 );
158 amp.vertex( 1, 0, l21 * T1 + a21 * T2 );
159 amp.vertex( 1, 1, l22 * T1 + a22 * T2 );
160}
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
****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
int contains(const EvtId id)
Definition EvtIdSet.cc:382
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtId getId() const
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() 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 getScalarFF(EvtId parent, EvtId daught, double t, double mass, double &fp, double &f0, double &ft)
void CalcAmp(EvtParticle *parent, EvtAmp &amp, EvtbTosllFF *formFactors)