]>
Commit | Line | Data |
---|---|---|
da0e9ce3 | 1 | #include "EvtGenBase/EvtPatches.hh" |
2 | /******************************************************************************* | |
3 | * Project: BaBar detector at the SLAC PEP-II B-factory | |
4 | * Package: EvtGenBase | |
0ca57c2f | 5 | * File: $Id: EvtBlattWeisskopf.cpp,v 1.3 2009-03-16 15:56:37 robbep Exp $ |
da0e9ce3 | 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 | { | |
0ca57c2f | 67 | |
68 | double value(1.0); | |
69 | ||
70 | double z = p*_radial; | |
71 | double zSq = z*z; | |
72 | ||
73 | if (_LL == 0) { | |
74 | value = 1.0; | |
75 | } else if (_LL == 1) { | |
76 | value = sqrt(1.0/(1.0 + zSq)); | |
77 | } else if (_LL == 2) { | |
78 | value = sqrt(1.0/(zSq*(zSq + 3.0) + 9.0)); | |
79 | } else if (_LL == 3) { | |
80 | double denom = zSq*(zSq*(zSq + 6.0) + 45.0) + 225.0; | |
81 | value = sqrt(1.0/denom); | |
82 | } else if (_LL == 4) { | |
83 | double denom = zSq*(zSq*(zSq*(zSq + 10.0) + 135.0) + 1575.0) + 11025.0; | |
84 | value = sqrt(1.0/denom); | |
85 | } else if (_LL == 5) { | |
86 | double denom = zSq*(zSq*(zSq*(zSq*(zSq + 15.0) + 315.0) + 6300.0) + 99225.0) + 893025.0; | |
87 | value = sqrt(1.0/denom); | |
da0e9ce3 | 88 | } |
da0e9ce3 | 89 | |
0ca57c2f | 90 | return value; |
91 | ||
92 | } |