BOSS 7.0.1
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//
33#include <stdlib.h>
34#include <iostream>
35#include <string>
37#include "EvtGenBase/EvtPDL.hh"
44
46
47void EvtKstarnunu::getName(std::string& model_name){
48
49 model_name="KSTARNUNU";
50
51}
52
53
55
56 return new EvtKstarnunu;
57
58}
59
61
62 // check that there are 0 arguments
63 checkNArg(0);
64 checkNDaug(3);
65
66 //We expect the parent to be a scalar
67 //and the daughters to be K neutrino netrino
68
70
74
75}
76
77
79
80 static EvtId NUE=EvtPDL::getId("nu_e");
81 static EvtId NUM=EvtPDL::getId("nu_mu");
82 static EvtId NUT=EvtPDL::getId("nu_tau");
83 static EvtId NUEB=EvtPDL::getId("anti-nu_e");
84 static EvtId NUMB=EvtPDL::getId("anti-nu_mu");
85 static EvtId NUTB=EvtPDL::getId("anti-nu_tau");
86
88
89 double m_b = p->mass();
90
91 EvtParticle *meson, *neutrino1, *neutrino2;
92 meson = p->getDaug(0);
93 neutrino1 = p->getDaug(1);
94 neutrino2 = p->getDaug(2);
95 EvtVector4R momnu1 = neutrino1->getP4();
96 EvtVector4R momnu2 = neutrino2->getP4();
97 EvtVector4R momkstar = meson->getP4();
98
99 double v0_0, a0_0, a1_0, a2_0;
100 double m2v0, m2a0, a1_b, a2_b;
101 v0_0 = 0.47;
102 a0_0 = 0.30;
103 a1_0 = 0.37;
104 a2_0 = 0.40;
105 m2v0 = 5.*5.;
106 m2a0 = 4.8*4.8;
107 a1_b = -0.023;
108 a2_b = 0.034;
109
110 EvtVector4R q = momnu1+momnu2;
111 double q2 = q.mass2();
112
113 double v0, a1, a2;
114 v0 = v0_0/(1-q2/m2v0);
115 a1 = a1_0*(1+a1_b*q2);
116 a2 = a2_0*(1+a2_b*q2);
117
118 EvtVector4R p4b; p4b.set(m_b,0.,0.,0.); // Do calcs in mother rest frame
119
120 double m_k = meson->mass();
121
122 EvtTensor4C tds=(-2*v0/(m_b+m_k))*dual(directProd(p4b,momkstar))
123 - EvtComplex(0.0,1.0)*
124 ( (m_b+m_k)*a1*EvtTensor4C::g()
125 - (a2/(m_b+m_k))*directProd(p4b-momkstar,p4b+momkstar));
126
127 EvtVector4C l;
128
129 if (getDaug(1)==NUE||getDaug(1)==NUM||getDaug(1)==NUT) {
131 neutrino2->spParentNeutrino());
132 }
133 if (getDaug(1)==NUEB||getDaug(1)==NUMB||getDaug(1)==NUTB) {
135 neutrino1->spParentNeutrino());
136 }
137
138 EvtVector4C et0,et1,et2;
139 et0 = tds.cont1( meson->epsParent(0).conj() );
140 et1 = tds.cont1( meson->epsParent(1).conj() );
141 et2 = tds.cont1( meson->epsParent(2).conj() );
142
143 vertex(0,l*et0);
144 vertex(1,l*et1);
145 vertex(2,l*et2);
146
147 return;
148}
149
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtTensor4C dual(const EvtTensor4C &t2)
Definition: EvtTensor4C.cc:379
*********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)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
Definition: EvtDecayBase.hh:66
Definition: EvtId.hh:27
void getName(std::string &name)
Definition: EvtKstarnunu.cc:47
virtual ~EvtKstarnunu()
Definition: EvtKstarnunu.cc:45
EvtDecayBase * clone()
Definition: EvtKstarnunu.cc:54
void decay(EvtParticle *p)
Definition: EvtKstarnunu.cc:78
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
virtual EvtVector4C epsParent(int i) const
Definition: EvtParticle.cc:565
virtual EvtDiracSpinor spParentNeutrino() const
Definition: EvtParticle.cc:635
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double mass() const
Definition: EvtParticle.cc:127
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtVector4C cont1(const EvtVector4C &v4) const
Definition: EvtTensor4C.cc:461
static const EvtTensor4C & g()
Definition: EvtTensor4C.cc:47
EvtVector4C conj() const
Definition: EvtVector4C.hh:206
void set(int i, double d)
Definition: EvtVector4R.hh:183