BOSS
7.1.3
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDalitzResPdf.cc
Go to the documentation of this file.
1
#include "
EvtGenBase/EvtPatches.hh
"
2
/*******************************************************************************
3
* Project: BaBar detector at the SLAC PEP-II B-factory
4
* Package: EvtGenBase
5
* File: $Id: EvtDalitzResPdf.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 <stdio.h>
12
#include <math.h>
13
#include "
EvtGenBase/EvtPatches.hh
"
14
#include "
EvtGenBase/EvtConst.hh
"
15
#include "
EvtGenBase/EvtDalitzResPdf.hh
"
16
#include "
EvtGenBase/EvtDalitzCoord.hh
"
17
#include "
EvtGenBase/EvtRandom.hh
"
18
using namespace
EvtCyclic3
;
19
20
EvtDalitzResPdf::EvtDalitzResPdf
(
const
EvtDalitzPlot
& dp,
21
double
_m0,
double
_g0,
EvtCyclic3::Pair
pair)
22
:
EvtPdf
<
EvtDalitzPoint
>(),
23
_dp(dp), _m0(_m0), _g0(_g0), _pair(pair)
24
{}
25
26
27
EvtDalitzResPdf::EvtDalitzResPdf
(
const
EvtDalitzResPdf
&
other
)
28
:
EvtPdf
<
EvtDalitzPoint
>(
other
),
29
_dp(
other
._dp),_m0(
other
._m0), _g0(
other
._g0), _pair(
other
._pair)
30
{}
31
32
33
EvtDalitzResPdf::~EvtDalitzResPdf
()
34
{}
35
36
EvtValError
EvtDalitzResPdf::compute_integral
(
int
N)
const
37
{
38
assert(N != 0);
39
40
EvtCyclic3::Pair
i = _pair;
41
EvtCyclic3::Pair
j =
EvtCyclic3::next
(i);
42
43
// Trapezoidal integral
44
45
double
dh = (_dp.qAbsMax(j) - _dp.qAbsMin(j))/((double) N);
46
double
sum = 0;
47
48
int
ii;
49
for
(ii=1;ii<N;ii++) {
50
51
double
x = _dp.qAbsMin(j) + ii*dh;
52
double
min
= (_dp.qMin(i,j,x) - _m0*_m0)/_m0/_g0;
53
double
max
= (_dp.qMax(i,j,x) - _m0*_m0)/_m0/_g0;
54
double
itg = 1/
EvtConst::pi
*(atan(
max
) - atan(
min
));
55
sum += itg;
56
}
57
EvtValError
ret(sum*dh,0.);
58
59
return
ret;
60
}
61
62
63
EvtDalitzPoint
EvtDalitzResPdf::randomPoint
()
64
{
65
// Random point generation must be done in a box encompassing the
66
// Dalitz plot
67
68
69
EvtCyclic3::Pair
i = _pair;
70
EvtCyclic3::Pair
j =
EvtCyclic3::next
(i);
71
double
min
= 1/
EvtConst::pi
*atan((_dp.qAbsMin(i) - _m0*_m0)/_m0/_g0);
72
double
max
= 1/
EvtConst::pi
*atan((_dp.qAbsMax(i) - _m0*_m0)/_m0/_g0);
73
74
int
n
= 0;
75
while
(
n
++ < 1000) {
76
77
double
qj =
EvtRandom::Flat
(_dp.qAbsMin(j),_dp.qAbsMax(j));
78
double
r =
EvtRandom::Flat
(
min
,
max
);
79
double
qi =
tan
(
EvtConst::pi
*r)*_g0*_m0 + _m0*_m0;
80
EvtDalitzCoord
x(i,qi,j,qj);
81
EvtDalitzPoint
ret(_dp,x);
82
if
(ret.
isValid
())
return
ret;
83
}
84
85
// All generated points turned out to be outside of the Dalitz plot
86
// (in the outer box)
87
88
printf(
"No point generated for dalitz plot after 1000 tries\n"
);
89
assert(0);
90
}
91
92
93
double
EvtDalitzResPdf::pdf
(
const
EvtDalitzPoint
& x)
const
94
{
95
EvtCyclic3::Pair
i = _pair;
96
double
dq = x.q(i) - _m0*_m0;
97
return
1/
EvtConst::pi
*_g0*_m0/(dq*dq + _g0*_g0*_m0*_m0);
98
}
99
100
101
double
EvtDalitzResPdf::pdfMaxValue
()
const
102
{
103
return
1/(
EvtConst::pi
*_g0*_m0);
104
}
105
tan
double tan(const BesAngle a)
Definition
BesAngle.h:216
n
const Int_t n
Definition
DataBase/tau_mode.c:65
min
#define min(a, b)
Definition
Eepipi/Eepipi-00-01-00/src/ee2eepp/basesv5.1/f2c.h:153
max
#define max(a, b)
Definition
Eepipi/Eepipi-00-01-00/src/ee2eepp/basesv5.1/f2c.h:154
EvtConst.hh
EvtDalitzCoord.hh
EvtDalitzResPdf.hh
EvtPatches.hh
EvtRandom.hh
EvtConst::pi
static const double pi
Definition
EvtConst.hh:28
EvtDalitzCoord
Definition
EvtDalitzCoord.hh:19
EvtDalitzPlot
Definition
EvtDalitzPlot.hh:25
EvtDalitzPoint
Definition
EvtDalitzPoint.hh:27
EvtDalitzPoint::isValid
bool isValid() const
Definition
EvtDalitzPoint.cc:156
EvtDalitzResPdf::EvtDalitzResPdf
EvtDalitzResPdf(const EvtDalitzPlot &dp, double m0, double g0, EvtCyclic3::Pair pairRes)
Definition
EvtDalitzResPdf.cc:20
EvtDalitzResPdf::pdfMaxValue
double pdfMaxValue() const
Definition
EvtDalitzResPdf.cc:101
EvtDalitzResPdf::pdf
virtual double pdf(const EvtDalitzPoint &) const
Definition
EvtDalitzResPdf.cc:93
EvtDalitzResPdf::~EvtDalitzResPdf
virtual ~EvtDalitzResPdf()
Definition
EvtDalitzResPdf.cc:33
EvtDalitzResPdf::randomPoint
virtual EvtDalitzPoint randomPoint()
Definition
EvtDalitzResPdf.cc:63
EvtPdf< EvtDalitzPoint >::compute_integral
virtual EvtValError compute_integral() const
Definition
EvtPdf.hh:92
EvtPdf< EvtDalitzPoint >::EvtPdf
EvtPdf()
Definition
EvtPdf.hh:60
EvtRandom::Flat
static double Flat()
Definition
EvtRandom.cc:74
EvtValError
Definition
EvtValError.hh:20
EvtCyclic3
Definition
EvtCyclic3.hh:17
EvtCyclic3::next
Index next(Index i)
Definition
EvtCyclic3.cc:107
EvtCyclic3::Pair
Pair
Definition
EvtCyclic3.hh:21
EvtCyclic3::other
Index other(Index i, Index j)
Definition
EvtCyclic3.cc:118
7.1.3
Generator
BesEvtGen
BesEvtGen-00-04-30
src
EvtGen
EvtGenBase
EvtDalitzResPdf.cc
Generated by
1.13.2