]>
Commit | Line | Data |
---|---|---|
da0e9ce3 | 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 |