BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtKstarnunu.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: EvtKstarnunu.cc
12//
13// Description: B ==> K* nu nubar
14//
15// Modification history:
16//
17// RYD September 29, 1997 Module created
18//
19//------------------------------------------------------------------------
20//
21// Package: EVT
22// Module: EvtKstarnunu
23//
24//
25// Implementation:
26//
27//
28// Author: RYD
29// Created: Sept. 29 1997
30//
31//
32#include "EvtKstarnunu.hh"
41#include <iostream>
42#include <stdlib.h>
43#include <string>
44
46
47void EvtKstarnunu::getName( std::string& model_name ) { model_name = "KSTARNUNU"; }
48
50
52
53 // check that there are 0 arguments
54 checkNArg( 0 );
55 checkNDaug( 3 );
56
57 // We expect the parent to be a scalar
58 // and the daughters to be K neutrino netrino
59
61
65}
66
68
69 static EvtId NUE = EvtPDL::getId( "nu_e" );
70 static EvtId NUM = EvtPDL::getId( "nu_mu" );
71 static EvtId NUT = EvtPDL::getId( "nu_tau" );
72 static EvtId NUEB = EvtPDL::getId( "anti-nu_e" );
73 static EvtId NUMB = EvtPDL::getId( "anti-nu_mu" );
74 static EvtId NUTB = EvtPDL::getId( "anti-nu_tau" );
75
77
78 double m_b = p->mass();
79
80 EvtParticle *meson, *neutrino1, *neutrino2;
81 meson = p->getDaug( 0 );
82 neutrino1 = p->getDaug( 1 );
83 neutrino2 = p->getDaug( 2 );
84 EvtVector4R momnu1 = neutrino1->getP4();
85 EvtVector4R momnu2 = neutrino2->getP4();
86 EvtVector4R momkstar = meson->getP4();
87
88 double v0_0, a0_0, a1_0, a2_0;
89 double m2v0, m2a0, a1_b, a2_b;
90 v0_0 = 0.47;
91 a0_0 = 0.30;
92 a1_0 = 0.37;
93 a2_0 = 0.40;
94 m2v0 = 5. * 5.;
95 m2a0 = 4.8 * 4.8;
96 a1_b = -0.023;
97 a2_b = 0.034;
98
99 EvtVector4R q = momnu1 + momnu2;
100 double q2 = q.mass2();
101
102 double v0, a1, a2;
103 v0 = v0_0 / ( 1 - q2 / m2v0 );
104 a1 = a1_0 * ( 1 + a1_b * q2 );
105 a2 = a2_0 * ( 1 + a2_b * q2 );
106
107 EvtVector4R p4b;
108 p4b.set( m_b, 0., 0., 0. ); // Do calcs in mother rest frame
109
110 double m_k = meson->mass();
111
112 EvtTensor4C tds =
113 ( -2 * v0 / ( m_b + m_k ) ) * dual( directProd( p4b, momkstar ) ) -
114 EvtComplex( 0.0, 1.0 ) *
115 ( ( m_b + m_k ) * a1 * EvtTensor4C::g() -
116 ( a2 / ( m_b + m_k ) ) * directProd( p4b - momkstar, p4b + momkstar ) );
117
118 EvtVector4C l;
119
120 if ( getDaug( 1 ) == NUE || getDaug( 1 ) == NUM || getDaug( 1 ) == NUT )
121 { l = EvtLeptonVACurrent( neutrino1->spParentNeutrino(), neutrino2->spParentNeutrino() ); }
122 if ( getDaug( 1 ) == NUEB || getDaug( 1 ) == NUMB || getDaug( 1 ) == NUTB )
123 { l = EvtLeptonVACurrent( neutrino2->spParentNeutrino(), neutrino1->spParentNeutrino() ); }
124
125 EvtVector4C et0, et1, et2;
126 et0 = tds.cont1( meson->epsParent( 0 ).conj() );
127 et1 = tds.cont1( meson->epsParent( 1 ).conj() );
128 et2 = tds.cont1( meson->epsParent( 2 ).conj() );
129
130 vertex( 0, l * et0 );
131 vertex( 1, l * et1 );
132 vertex( 2, l * et2 );
133
134 return;
135}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtTensor4C dual(const EvtTensor4C &t2)
*********DOUBLE PRECISION m_pi INTEGER m_lenwt !max no of aux weights INTEGER m_phmax !maximum photon multiplicity ISR FSR *DOUBLE COMPLEX m_Pauli4 DOUBLE COMPLEX m_AmpBorn DOUBLE COMPLEX m_AmpBoxy DOUBLE COMPLEX m_AmpBorn1 DOUBLE COMPLEX m_AmpBorn2 DOUBLE COMPLEX m_AmpExpo2p DOUBLE COMPLEX m_Rmat DOUBLE COMPLEX m_BoxGZut !DOUBLE COMPLEX m_F1finPair2 !DOUBLE PRECISION m_Vcut DOUBLE PRECISION m_Alfinv DOUBLE PRECISION m_Lorin1 DOUBLE PRECISION m_Lorin2 DOUBLE PRECISION m_b
Definition GPS.h:30
****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)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
Definition EvtId.hh:27
void getName(std::string &name)
virtual ~EvtKstarnunu()
EvtDecayBase * clone()
void decay(EvtParticle *p)
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
virtual EvtVector4C epsParent(int i) const
virtual EvtDiracSpinor spParentNeutrino() const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtVector4C cont1(const EvtVector4C &v4) const
static const EvtTensor4C & g()
EvtVector4C conj() const
void set(int i, double d)