BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDalitzPoint.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: EvtDalitzPoint.cc,v 1.2 2007/11/20 08:36:27 pingrg Exp $
6 * Author: Alexei Dvoretskii, [email protected], 2001-2002
7 *
8 * Copyright (C) 2002 Caltech
9 *******************************************************************************/
10
12#include <assert.h>
13#include <math.h>
14#include <stdio.h>
16using namespace EvtCyclic3;
17
19 : _mA(-1.), _mB(-1.), _mC(-1.), _qAB(-1.), _qBC(-1.), _qCA(-1.)
20{}
21
22EvtDalitzPoint::EvtDalitzPoint(double mA, double mB, double mC, double qAB, double qBC, double qCA)
23 : _mA(mA), _mB(mB), _mC(mC), _qAB(qAB), _qBC(qBC), _qCA(qCA)
24{}
25
26// Constructor from Zemach coordinates
27
28EvtDalitzPoint::EvtDalitzPoint(double mA, double mB, double mC,
30 double qres, double qhel, double qsum)
31 : _mA(mA), _mB(mB), _mC(mC)
32{
33 double qi = qres + qsum/3.;
34 double qj = -qres/2. + qhel + qsum/3.;
35 double qk = -qres/2. - qhel + qsum/3.;
36
37 if(i == AB) { _qAB = qi; _qBC = qj; _qCA = qk; }
38 else if(i == BC) { _qAB = qk; _qBC = qi; _qCA = qj; }
39 else if(i == CA) { _qAB = qj; _qBC = qk; _qCA = qi; }
40}
41
43 : _mA(dp.m(A)), _mB(dp.m(B)), _mC(dp.m(C))
44{
45 if(x.pair1() == AB) _qAB = x.q1();
46 else
47 if(x.pair2() == AB) _qAB = x.q2();
48 else _qAB = dp.sum() - x.q1() - x.q2();
49
50 if(x.pair1() == BC) _qBC = x.q1();
51 else
52 if(x.pair2() == BC) _qBC = x.q2();
53 else _qBC = dp.sum() - x.q1() - x.q2();
54
55 if(x.pair1() == CA) _qCA = x.q1();
56 else
57 if(x.pair2() == CA) _qCA = x.q2();
58 else _qCA = dp.sum() - x.q1() - x.q2();
59
60}
61
63 : _mA(other._mA), _mB(other._mB), _mC(other._mC),
64 _qAB(other._qAB), _qBC(other._qBC), _qCA(other._qCA)
65{}
66
68{}
69
71{
72 double ret = _qAB;
73 if(BC == i) ret = _qBC;
74 else
75 if(CA == i) ret = _qCA;
76
77 return ret;
78}
79
81{
82 double ret = _mA;
83 if(B == i) ret = _mB;
84 else
85 if(C == i) ret = _mC;
86
87 return ret;
88}
89
90// Zemach variables
91
93{
94 return (2.*q(i) - q(EvtCyclic3::prev(i)) - q(EvtCyclic3::next(i)))/3.;
95}
97{
98 Pair j = next(i);
99 Pair k = prev(i);
100 return (q(j) - q(k))/2.;
101}
103{
104 return _qAB + _qBC + _qCA;
105}
106
107
109{
111 return dp.qMin(i,j,q(j));
112}
113
115{
117 return dp.qMax(i,j,q(j));
118}
119
121{
122 if(i == j) return m(i)*m(i);
123 else return (q(combine(i,j)) - m(i)*m(i) - m(j)*m(j))/2.;
124}
125
127{
129 return dp.e(i,j,q(j));
130}
131
133{
135 return dp.p(i,j,q(j));
136}
137
139{
141 return dp.cosTh(pairAng,q(pairAng),pairRes,q(pairRes));
142}
143
144
146{
147 return EvtDalitzCoord(i,q(i),j,q(j));
148}
149
150
152{
153 return EvtDalitzPlot(_mA,_mB,_mC,bigM());
154}
155
157{
158 // Check masses
159
160 double M = bigM();
161 if(_mA < 0 || _mB < 0 || _mC < 0 || M <= 0) return false;
162 if(M < _mA + _mB + _mC) return false;
163
164 // Check that first coordinate is within absolute limits
165
166 bool inside = false;
168
169 if(dp.qAbsMin(AB) <= _qAB && _qAB <= dp.qAbsMax(AB))
170 if(qMin(BC,AB) <= _qBC && _qBC <= qMax(BC,AB))
171 inside = true;
172
173 return inside;
174}
175
177{
178 return sqrt(_qAB+_qBC+_qCA - _mA*_mA - _mB*_mB - _mC*_mC);
179}
180
181
183{
185 printf("%f %f %f\n",_qAB,_qBC,_qCA);
186}
187
188
Double_t x[10]
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
Definition: KKsem.h:33
double qAbsMin(EvtCyclic3::Pair i) const
void print() const
double sum() const
double p(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const
double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const
double qAbsMax(EvtCyclic3::Pair i) const
double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const
double e(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const
double cosTh(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const
double p(EvtCyclic3::Index i, EvtCyclic3::Pair j) const
double bigM() const
double e(EvtCyclic3::Index i, EvtCyclic3::Pair j) const
double m(EvtCyclic3::Index) const
void print() const
double q(EvtCyclic3::Pair) const
double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j) const
bool isValid() const
double qsum() const
EvtDalitzCoord getDalitzPoint(EvtCyclic3::Pair i, EvtCyclic3::Pair j) const
double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j) const
double pp(EvtCyclic3::Index i, EvtCyclic3::Index j) const
double cosTh(EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes) const
EvtDalitzPlot getDalitzPlot() const
double qhel(EvtCyclic3::Pair i) const
double qres(EvtCyclic3::Pair i) const
Index next(Index i)
Definition: EvtCyclic3.cc:107
Pair combine(Index i, Index j)
Definition: EvtCyclic3.cc:158
Index prev(Index i)
Definition: EvtCyclic3.cc:96
Index other(Index i, Index j)
Definition: EvtCyclic3.cc:118