BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtbTosllVectorAmp Class Reference

#include <EvtbTosllVectorAmp.hh>

Inheritance diagram for EvtbTosllVectorAmp:

Public Member Functions

 EvtbTosllVectorAmp (double c7, double c9, double c10)
void CalcAmp (EvtParticle *parent, EvtAmp &amp, EvtbTosllFF *formFactors)
Public Member Functions inherited from EvtbTosllAmp
double CalcMaxProb (EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug, EvtbTosllFF *formFactors, double &poleSize)
EvtComplex GetC7Eff (double q2, bool nnlo=true)
EvtComplex GetC9Eff (double q2, bool nnlo=true, bool btod=false)
EvtComplex GetC10Eff (double q2, bool nnlo=true)
double dGdsProb (double mb, double ms, double ml, double s)
double dGdsdupProb (double mb, double ms, double ml, double s, double u)

Detailed Description

Definition at line 30 of file EvtbTosllVectorAmp.hh.

Constructor & Destructor Documentation

◆ EvtbTosllVectorAmp()

EvtbTosllVectorAmp::EvtbTosllVectorAmp ( double c7,
double c9,
double c10 )
inline

Definition at line 33 of file EvtbTosllVectorAmp.hh.

33: _c7( c7 ), _c9( c9 ), _c10( c10 ) {}

Member Function Documentation

◆ CalcAmp()

void EvtbTosllVectorAmp::CalcAmp ( EvtParticle * parent,
EvtAmp & amp,
EvtbTosllFF * formFactors )
virtual

Implements EvtbTosllAmp.

Definition at line 37 of file EvtbTosllVectorAmp.cc.

38 {
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 );
103 EvtComplex f;
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
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
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)

The documentation for this class was generated from the following files: