]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenModels/EvtKstarnunu.cpp
fine tuning of TOF tail (developing task)
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtKstarnunu.cpp
CommitLineData
da0e9ce3 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 "EvtGenBase/EvtPatches.hh"
33#include <stdlib.h>
34#include <iostream>
35#include <string>
36#include "EvtGenBase/EvtParticle.hh"
37#include "EvtGenBase/EvtPDL.hh"
38#include "EvtGenBase/EvtGenKine.hh"
39#include "EvtGenBase/EvtDiracSpinor.hh"
40#include "EvtGenBase/EvtTensor4C.hh"
41#include "EvtGenModels/EvtKstarnunu.hh"
42#include "EvtGenBase/EvtReport.hh"
43#include "EvtGenBase/EvtVector4C.hh"
44
45EvtKstarnunu::~EvtKstarnunu() {}
46
47std::string EvtKstarnunu::getName(){
48
49 return "KSTARNUNU";
50
51}
52
53
54EvtDecayBase* EvtKstarnunu::clone(){
55
56 return new EvtKstarnunu;
57
58}
59
60void EvtKstarnunu::init(){
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
69 checkSpinParent(EvtSpinType::SCALAR);
70
71 checkSpinDaughter(0,EvtSpinType::VECTOR);
72 checkSpinDaughter(1,EvtSpinType::NEUTRINO);
73 checkSpinDaughter(2,EvtSpinType::NEUTRINO);
74
75}
76
77
78void EvtKstarnunu::decay(EvtParticle *p){
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
87 p->initializePhaseSpace(getNDaug(),getDaugs());
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
0ca57c2f 99 double v0_0, a1_0, a2_0;
100 double m2v0, a1_b, a2_b;
da0e9ce3 101 v0_0 = 0.47;
da0e9ce3 102 a1_0 = 0.37;
103 a2_0 = 0.40;
104 m2v0 = 5.*5.;
da0e9ce3 105 a1_b = -0.023;
106 a2_b = 0.034;
107
108 EvtVector4R q = momnu1+momnu2;
109 double q2 = q.mass2();
110
111 double v0, a1, a2;
112 v0 = v0_0/(1-q2/m2v0);
113 a1 = a1_0*(1+a1_b*q2);
114 a2 = a2_0*(1+a2_b*q2);
115
116 EvtVector4R p4b; p4b.set(m_b,0.,0.,0.); // Do calcs in mother rest frame
117
118 double m_k = meson->mass();
119
0ca57c2f 120 EvtTensor4C tds=(-2*v0/(m_b+m_k))*dual(EvtGenFunctions::directProd(p4b,momkstar))
da0e9ce3 121 - EvtComplex(0.0,1.0)*
122 ( (m_b+m_k)*a1*EvtTensor4C::g()
0ca57c2f 123 - (a2/(m_b+m_k))*EvtGenFunctions::directProd(p4b-momkstar,p4b+momkstar));
da0e9ce3 124
125 EvtVector4C l;
126
127 if (getDaug(1)==NUE||getDaug(1)==NUM||getDaug(1)==NUT) {
128 l=EvtLeptonVACurrent(neutrino1->spParentNeutrino(),
129 neutrino2->spParentNeutrino());
130 }
131 if (getDaug(1)==NUEB||getDaug(1)==NUMB||getDaug(1)==NUTB) {
132 l=EvtLeptonVACurrent(neutrino2->spParentNeutrino(),
133 neutrino1->spParentNeutrino());
134 }
135
136 EvtVector4C et0,et1,et2;
137 et0 = tds.cont1( meson->epsParent(0).conj() );
138 et1 = tds.cont1( meson->epsParent(1).conj() );
139 et2 = tds.cont1( meson->epsParent(2).conj() );
140
141 vertex(0,l*et0);
142 vertex(1,l*et1);
143 vertex(2,l*et2);
144
145 return;
146}
147