BOSS 6.6.4.p03
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtBlattWeisskopf.cc
Go to the documentation of this file.
2/*******************************************************************************
3 * Project: BaBar detector at the SLAC PEP-II B-factory
4 * Package: EvtGenBase
5 * File: $Id: EvtBlattWeisskopf.cc,v 1.1.1.2 2007/10/26 05:03:14 pingrg Exp $
6 * Author: Alexei Dvoretskii, [email protected], 2001-2002
7 *
8 * Copyright (C) 2002 Caltech
9 *******************************************************************************/
10
11#include <iostream>
12#include <assert.h>
13#include <math.h>
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
40 : _LL(other._LL), _radial(other._radial), _p0(other._p0), _F0(other._F0)
41{}
42
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{
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
Double_t x[10]
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ INFO
Definition: EvtReport.hh:52
double operator()(double p) const
EvtBlattWeisskopf(int LL, double R, double p0)