]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenBase/EvtBlattWeisskopf.cpp
Updates EvtGen Code
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenBase / EvtBlattWeisskopf.cpp
CommitLineData
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"
16using std::endl;
17
18EvtBlattWeisskopf::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
39EvtBlattWeisskopf::EvtBlattWeisskopf(const EvtBlattWeisskopf& other)
40 : _LL(other._LL), _radial(other._radial), _p0(other._p0), _F0(other._F0)
41{}
42
43EvtBlattWeisskopf::~EvtBlattWeisskopf()
44{}
45
46double 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
65double 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}