]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtbTosllScalarAmp.cpp
Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtbTosllScalarAmp.cpp
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) 2000      Caltech, UCSB
10 //
11 // Module: EvtbTosllScalarAmp.cc
12 //
13 // Description: Routine to implement bTosll decays to pseudo-scalar
14 //              mesons. 
15 //
16 // Modification history:
17 //
18 //    Ryd       January 5,2000       Module created
19 //
20 //------------------------------------------------------------------------
21 //
22 #include "EvtGenBase/EvtPatches.hh"
23 #include "EvtGenBase/EvtConst.hh"
24 #include "EvtGenBase/EvtPatches.hh"
25 #include "EvtGenBase/EvtParticle.hh"
26 #include "EvtGenBase/EvtGenKine.hh"
27 #include "EvtGenBase/EvtPDL.hh"
28 #include "EvtGenBase/EvtReport.hh"
29 #include "EvtGenBase/EvtVector4C.hh"
30 #include "EvtGenBase/EvtTensor4C.hh"
31 #include "EvtGenBase/EvtDiracSpinor.hh"
32 #include "EvtGenModels/EvtbTosllScalarAmp.hh"
33 #include "EvtGenBase/EvtId.hh"
34 #include "EvtGenBase/EvtIdSet.hh"
35 #include "EvtGenBase/EvtAmp.hh"
36 #include "EvtGenModels/EvtbTosllAmp.hh"
37 #include "EvtGenModels/EvtbTosllFF.hh"
38
39 void EvtbTosllScalarAmp::CalcAmp( EvtParticle *parent,
40                                   EvtAmp& amp,
41                                   EvtbTosllFF *formFactors ) {
42
43   //Add the lepton and neutrino 4 momenta to find q2
44
45   EvtVector4R q = parent->getDaug(1)->getP4() 
46                     + parent->getDaug(2)->getP4();
47   double q2 = (q.mass2());
48
49   double fp(0.),f0(0.),ft(0.);
50   double mesonmass = parent->getDaug(0)->mass();
51   double parentmass = parent->mass();
52
53   formFactors->getScalarFF(parent->getId(),
54                            parent->getDaug(0)->getId(),
55                            q2,
56                            mesonmass,
57                            fp,f0,ft);
58
59   EvtId daught = parent->getDaug(0)->getId();
60   bool btod = false;
61   bool nnlo = true;
62   if (daught == EvtPDL::getId(std::string("pi+")) ||
63           daught == EvtPDL::getId(std::string("pi-")) ||
64           daught == EvtPDL::getId(std::string("pi0")) ||
65           daught == EvtPDL::getId(std::string("eta")) ||
66           daught == EvtPDL::getId(std::string("eta'"))
67          )  btod = true;
68
69
70   EvtVector4R p4b;
71   p4b.set(parent->mass(),0.0,0.0,0.0);
72  
73   EvtVector4C l11,l12;
74   EvtVector4C l21,l22;
75
76   EvtVector4C a11,a12;
77   EvtVector4C a21,a22;
78
79   EvtId l_num = parent->getDaug(1)->getId();
80
81   EvtVector4C T1,T2;
82
83   EvtVector4R phat=p4b/parentmass;
84   EvtVector4R qhat=q/parentmass;
85
86   EvtComplex c7eff = EvtbTosllAmp::GetC7Eff(q2,nnlo);
87   EvtComplex c9eff = EvtbTosllAmp::GetC9Eff(q2,nnlo,btod);
88   EvtComplex c10eff = EvtbTosllAmp::GetC10Eff(q2,nnlo);
89
90   //double mbhat=1;
91   double mbhat=4.4/(parentmass);      
92   //double mkhat = 0.15;
93   double mkhat=mesonmass/(parentmass);
94   double shat=q2/(parentmass*parentmass);
95
96   double fm=(f0-fp)*(1-mkhat*mkhat)/shat;
97
98   EvtComplex aprime;
99   aprime = c9eff*fp+2.0*mbhat*c7eff*ft/(1+mkhat);
100   EvtComplex bprime;
101   bprime = c9eff*fm-2*mbhat*c7eff*ft*(1-mkhat)/shat;
102
103   EvtComplex cprime;
104   cprime = c10eff*fp;
105   EvtComplex dprime; 
106   dprime = c10eff*fm;
107
108   static EvtIdSet leptons("e-","mu-","tau-");
109   static EvtIdSet antileptons("e+","mu+","tau+");
110
111   if (leptons.contains(l_num)){
112
113     T1=aprime*phat+bprime*qhat;
114     T2=cprime*phat+dprime*qhat;
115
116     l11=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
117                           parent->getDaug(2)->spParent(0));
118     l21=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
119                           parent->getDaug(2)->spParent(0));
120     l12=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
121                           parent->getDaug(2)->spParent(1));
122     l22=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
123                           parent->getDaug(2)->spParent(1));
124     a11=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
125                           parent->getDaug(2)->spParent(0));
126     a21=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
127                           parent->getDaug(2)->spParent(0));
128     a12=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
129                           parent->getDaug(2)->spParent(1));
130     a22=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
131                           parent->getDaug(2)->spParent(1));
132   }
133   else{
134     if (antileptons.contains(l_num)){
135
136     T1=aprime*phat+bprime*qhat;
137     T2=cprime*phat+dprime*qhat;
138
139     l11=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
140                           parent->getDaug(2)->spParent(1));
141     l21=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
142                           parent->getDaug(2)->spParent(1));
143     l12=EvtLeptonVCurrent(parent->getDaug(1)->spParent(1),
144                           parent->getDaug(2)->spParent(0));
145     l22=EvtLeptonVCurrent(parent->getDaug(1)->spParent(0),
146                           parent->getDaug(2)->spParent(0));
147
148     a11=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
149                           parent->getDaug(2)->spParent(1));
150     a21=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
151                           parent->getDaug(2)->spParent(1));
152     a12=EvtLeptonACurrent(parent->getDaug(1)->spParent(1),
153                           parent->getDaug(2)->spParent(0));
154     a22=EvtLeptonACurrent(parent->getDaug(1)->spParent(0),
155                           parent->getDaug(2)->spParent(0));
156
157     }
158     else{
159       report(ERROR,"EvtGen") << "Wrong lepton number\n";
160     }
161   }
162
163   amp.vertex(0,0,l11*T1+a11*T2);
164   amp.vertex(0,1,l12*T1+a12*T2);
165   amp.vertex(1,0,l21*T1+a21*T2);
166   amp.vertex(1,1,l22*T1+a22*T2);
167
168 }
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183