]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenBase/EvtBlattWeisskopf.cxx
o updates to fix the 11a pass4 problem of T0 (Alla)
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtBlattWeisskopf.cxx
1 #include "EvtGenBase/EvtPatches.hh"
2 /*******************************************************************************
3  * Project: BaBar detector at the SLAC PEP-II B-factory
4  * Package: EvtGenBase
5  *    File: $Id: EvtBlattWeisskopf.cc,v 1.6 2004/12/21 19:58:41 ryd Exp $
6  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
7  *
8  * Copyright (C) 2002 Caltech
9  *******************************************************************************/
10
11 #include <iostream>
12 #include <assert.h>
13 #include <math.h>
14 #include "EvtGenBase/EvtBlattWeisskopf.hh"
15 #include "EvtGenBase/EvtReport.hh"
16 using std::endl;
17
18 EvtBlattWeisskopf::EvtBlattWeisskopf(int LL, double R, double p0)
19   : _LL(LL), _radial(R), _p0(p0)
20 {
21   if(R < 0) {
22
23     report(INFO,"EvtGen") << "Radius " << R << " negative" << endl;
24     assert(0);
25   }
26
27   _radial = R;
28
29   // compute formula for nominal momentum
30
31   _F0 = compute(_p0);
32   if(_F0 <= 0) {
33     
34     report(INFO,"EvtGen") << "Invalid nominal form factor computed " << _F0 << endl;
35     assert(0);
36   } 
37 }
38
39 EvtBlattWeisskopf::EvtBlattWeisskopf(const EvtBlattWeisskopf& other)
40   : _LL(other._LL), _radial(other._radial), _p0(other._p0), _F0(other._F0)
41 {}
42
43 EvtBlattWeisskopf::~EvtBlattWeisskopf()
44 {}
45
46 double EvtBlattWeisskopf::operator()(double p) const
47 {
48   double ret = compute(p)/_F0;
49   //  report(INFO,"EvtGen") << p << " " << _p0 << " " << _F0 << " " << _LL << " " << _radial << " " << ret << endl;
50   return ret;
51 }
52
53 // Blatt-Weisskopf form factors
54 // see e.g. hep-ex/0011065
55 // Dalitz Analysis of the Decay D0->K-pi+pi0 (CLEO)
56 //
57 // p   - momentum of either daugher in the meson rest frame,
58 //       the mass of the meson is used
59 // pAB - momentum of either daughter in the candidate rest frame
60 //       the mass of the candidate is used
61 // R - meson radial parameter
62 // 
63 // In the CLEO paper R=5 GeV-1 for D0, R=1.5 for intermediate resonances
64
65 double EvtBlattWeisskopf::compute(double p) const
66 {
67   if(p < 0) {
68     
69     report(INFO,"EvtGen") << "Momentum " << p << " negative in form factor calculation" << endl;
70     assert(0);
71   }
72   else {
73     
74     double x = p*p*_radial*_radial;
75     
76     if(0 == _LL) return 1.;
77     else
78       if(1 == _LL) return sqrt(1.0/(1.0+x));
79       else
80         if(2 == _LL) return sqrt(1.0/(1.0+x/3.0+x*x/9.0));
81         else {
82           report(INFO,"EvtGen") << "Angular momentum " << _LL << " not implemented" << endl;
83           assert(0);
84         }
85   }
86 }
87