BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSemiLeptonicScalarAmp.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: EvtSemiLeptonicScalarAmp.cc
12//
13// Description: Routine to implement semileptonic decays to pseudo-scalar
14// mesons.
15//
16// Modification history:
17//
18// DJL April 17,1998 Module created
19//
20//------------------------------------------------------------------------
21//
23#include "EvtAmp.hh"
24#include "EvtDiracSpinor.hh"
25#include "EvtGenKine.hh"
26#include "EvtId.hh"
27#include "EvtPDL.hh"
28#include "EvtParticle.hh"
29#include "EvtPatches.hh"
30#include "EvtReport.hh"
31#include "EvtSemiLeptonicFF.hh"
32#include "EvtTensor4C.hh"
33#include "EvtVector4C.hh"
34
35void EvtSemiLeptonicScalarAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp,
36 EvtSemiLeptonicFF* FormFactors ) {
37
38 static EvtId EM = EvtPDL::getId( "e-" );
39 static EvtId MUM = EvtPDL::getId( "mu-" );
40 static EvtId TAUM = EvtPDL::getId( "tau-" );
41 static EvtId EP = EvtPDL::getId( "e+" );
42 static EvtId MUP = EvtPDL::getId( "mu+" );
43 static EvtId TAUP = EvtPDL::getId( "tau+" );
44
45 // Add the lepton and neutrino 4 momenta to find q2
46
47 EvtVector4R q = parent->getDaug( 1 )->getP4() + parent->getDaug( 2 )->getP4();
48 double q2 = ( q.mass2() );
49
50 double fpf, f0f;
51 double mesonmass = parent->getDaug( 0 )->mass();
52 double parentmass = parent->mass();
53
54 FormFactors->getscalarff( parent->getId(), parent->getDaug( 0 )->getId(), q2, mesonmass,
55 &fpf, &f0f );
56
57 EvtVector4R p4b;
58 p4b.set( parent->mass(), 0.0, 0.0, 0.0 );
59 EvtVector4R p4meson = parent->getDaug( 0 )->getP4();
60 double mdiffoverq2;
61 mdiffoverq2 = parentmass * parentmass - mesonmass * mesonmass;
62 mdiffoverq2 = mdiffoverq2 / q2;
63
64 EvtVector4C l1, l2;
65
66 EvtId l_num = parent->getDaug( 1 )->getId();
67 EvtVector4C tds;
68
69 if ( l_num == EM || l_num == MUM || l_num == TAUM )
70 {
71
72 tds = EvtVector4C( fpf * ( p4b + p4meson - ( mdiffoverq2 * ( p4b - p4meson ) ) ) +
73 +f0f * mdiffoverq2 * ( p4b - p4meson ) );
74
75 l1 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 0 ),
76 parent->getDaug( 2 )->spParentNeutrino() );
77 l2 = EvtLeptonVACurrent( parent->getDaug( 1 )->spParent( 1 ),
78 parent->getDaug( 2 )->spParentNeutrino() );
79 }
80 else
81 {
82 if ( l_num == EP || l_num == MUP || l_num == TAUP )
83 {
84
85 tds = EvtVector4C( fpf * ( p4b + p4meson - ( mdiffoverq2 * ( p4b - p4meson ) ) ) +
86 +f0f * mdiffoverq2 * ( p4b - p4meson ) );
87
88 l1 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
89 parent->getDaug( 1 )->spParent( 0 ) );
90 l2 = EvtLeptonVACurrent( parent->getDaug( 2 )->spParentNeutrino(),
91 parent->getDaug( 1 )->spParent( 1 ) );
92 }
93 else { report( ERROR, "EvtGen" ) << "dfnb89agngri wrong lepton number\n"; }
94 }
95
96 amp.vertex( 0, l1 * tds );
97 amp.vertex( 1, l2 * tds );
98}
EvtVector4C EvtLeptonVACurrent(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
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtId getId() const
virtual EvtDiracSpinor spParentNeutrino() const
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
virtual void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *fmf)
void set(int i, double d)