BOSS 7.0.2
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDalitzPlot Class Reference

#include <EvtDalitzPlot.hh>

Public Member Functions

 EvtDalitzPlot ()
 
 EvtDalitzPlot (double mA, double mB, double mC, double bigM, double ldel=0., double rdel=0.)
 
 EvtDalitzPlot (const EvtDecayMode &mode, double ldel=0., double rdel=0.)
 
 EvtDalitzPlot (const EvtDalitzPlot &other)
 
 ~EvtDalitzPlot ()
 
bool operator== (const EvtDalitzPlot &other) const
 
const EvtDalitzPlotclone () const
 
double qAbsMin (EvtCyclic3::Pair i) const
 
double qAbsMax (EvtCyclic3::Pair i) const
 
double mAbsMin (EvtCyclic3::Pair i) const
 
double mAbsMax (EvtCyclic3::Pair i) const
 
double qResAbsMin (EvtCyclic3::Pair i) const
 
double qResAbsMax (EvtCyclic3::Pair i) const
 
double qHelAbsMin (EvtCyclic3::Pair i) const
 
double qHelAbsMax (EvtCyclic3::Pair i) const
 
double qSumMin () const
 
double qSumMax () const
 
bool fuzzy () const
 
double getArea (int N=1000, EvtCyclic3::Pair i=EvtCyclic3::AB, EvtCyclic3::Pair j=EvtCyclic3::BC) const
 
double qMin (EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const
 
double qMax (EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const
 
double cosTh (EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const
 
double e (EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const
 
double p (EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const
 
double q (EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2, double q2) const
 
double jacobian (EvtCyclic3::Pair i, double q) const
 
EvtTwoBodyVertex vD (EvtCyclic3::Pair iRes, double m0, int L) const
 
EvtTwoBodyVertex vB (EvtCyclic3::Pair iRes, double m0, int L) const
 
double sum () const
 
double bigM () const
 
double mA () const
 
double mB () const
 
double mC () const
 
double m (EvtCyclic3::Index i) const
 
void print () const
 
void sanityCheck () const
 

Protected Attributes

double _mA
 
double _mB
 
double _mC
 
double _bigM
 
double _ldel
 
double _rdel
 

Detailed Description

Definition at line 25 of file EvtDalitzPlot.hh.

Constructor & Destructor Documentation

◆ EvtDalitzPlot() [1/4]

EvtDalitzPlot::EvtDalitzPlot ( )

Definition at line 33 of file EvtDalitzPlot.cc.

34 : _mA(0.), _mB(0.), _mC(0.), _bigM(0.),
35 _ldel(0.), _rdel(0.)
36{}

Referenced by clone().

◆ EvtDalitzPlot() [2/4]

EvtDalitzPlot::EvtDalitzPlot ( double  mA,
double  mB,
double  mC,
double  bigM,
double  ldel = 0.,
double  rdel = 0. 
)

Definition at line 39 of file EvtDalitzPlot.cc.

41 : _mA(mA), _mB(mB), _mC(mC), _bigM(bigM),
42 _ldel(ldel), _rdel(rdel)
43{
45}
void sanityCheck() const
double mB() const
double bigM() const
double mA() const
double mC() const

◆ EvtDalitzPlot() [3/4]

EvtDalitzPlot::EvtDalitzPlot ( const EvtDecayMode mode,
double  ldel = 0.,
double  rdel = 0. 
)

Definition at line 47 of file EvtDalitzPlot.cc.

48{
53
54 _ldel = ldel;
55 _rdel = rdel;
56
58}
const char * mother() const
const char * dau(int i) const
static double getMeanMass(EvtId i)
Definition: EvtPDL.hh:45
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287

◆ EvtDalitzPlot() [4/4]

EvtDalitzPlot::EvtDalitzPlot ( const EvtDalitzPlot other)

Definition at line 61 of file EvtDalitzPlot.cc.

62 : _mA(other._mA), _mB(other._mB), _mC(other._mC), _bigM(other._bigM),
63 _ldel(other._ldel), _rdel(other._rdel)
64{}
Index other(Index i, Index j)
Definition: EvtCyclic3.cc:118

◆ ~EvtDalitzPlot()

EvtDalitzPlot::~EvtDalitzPlot ( )

Definition at line 67 of file EvtDalitzPlot.cc.

68{}

Member Function Documentation

◆ bigM()

double EvtDalitzPlot::bigM ( ) const
inline

Definition at line 92 of file EvtDalitzPlot.hh.

92{ return _bigM; }

Referenced by e(), EvtDalitzReso::evaluate(), print(), qMax(), qMin(), and vB().

◆ clone()

const EvtDalitzPlot * EvtDalitzPlot::clone ( ) const

Definition at line 83 of file EvtDalitzPlot.cc.

84{
85 return new EvtDalitzPlot(*this);
86}

◆ cosTh()

double EvtDalitzPlot::cosTh ( EvtCyclic3::Pair  i1,
double  q1,
EvtCyclic3::Pair  i2,
double  q2 
) const

Definition at line 260 of file EvtDalitzPlot.cc.

261{
262 if(i1 == i2) return 1.;
263
264 double qmax = qMax(i1,i2,q2);
265 double qmin = qMin(i1,i2,q2);
266
267 double cos = (qmax + qmin - 2*q1)/(qmax - qmin);
268
269 return cos;
270}
double cos(const BesAngle a)
double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const
double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const

Referenced by EvtDalitzPoint::cosTh(), and q().

◆ e()

double EvtDalitzPlot::e ( EvtCyclic3::Index  i,
EvtCyclic3::Pair  j,
double  q 
) const

Definition at line 273 of file EvtDalitzPlot.cc.

274{
275 if(i == other(j)) {
276
277 // i does not belong to pair j
278
279 return (bigM()*bigM()-q-m(i)*m(i))/2/sqrt(q);
280 }
281 else {
282
283 // i and k make pair j
284
285 Index k;
286 if(first(j) == i) k = second(j);
287 else k = first(j);
288
289 double e = (q + m(i)*m(i) - m(k)*m(k))/2/sqrt(q);
290 return e;
291 }
292}
****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 m(EvtCyclic3::Index i) const
double e(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const
Index second(Pair i)
Definition: EvtCyclic3.cc:206
Index first(Pair i)
Definition: EvtCyclic3.cc:195

Referenced by EvtDalitzPoint::e(), e(), p(), and q().

◆ fuzzy()

bool EvtDalitzPlot::fuzzy ( ) const
inline

Definition at line 55 of file EvtDalitzPlot.hh.

55{ return (_rdel - _ldel != 0.); }

◆ getArea()

double EvtDalitzPlot::getArea ( int  N = 1000,
EvtCyclic3::Pair  i = EvtCyclic3::AB,
EvtCyclic3::Pair  j = EvtCyclic3::BC 
) const

Definition at line 240 of file EvtDalitzPlot.cc.

241{
242 // Trapezoidal integral over qi. qj can be calculated.
243 // The first and the last point are zero, so they are not counted
244
245 double dh = (qAbsMax(i) - qAbsMin(i))/((double) N);
246 double sum = 0;
247
248 int ii;
249 for(ii=1;ii<N;ii++) {
250
251 double x = qAbsMin(i) + ii*dh;
252 double dy = qMax(j,i,x) - qMin(j,i,x);
253 sum += dy;
254 }
255
256 return sum * dh;
257}
Double_t x[10]
double qAbsMin(EvtCyclic3::Pair i) const
double sum() const
double qAbsMax(EvtCyclic3::Pair i) const

Referenced by EvtDalitzFlatPdf::compute_integral().

◆ jacobian()

double EvtDalitzPlot::jacobian ( EvtCyclic3::Pair  i,
double  q 
) const

Definition at line 319 of file EvtDalitzPlot.cc.

320{
321 return 2*p(first(i),i,q)*p(other(i),i,q); // J(BC) = 2pA*pB = 2pA*pC
322}
double p(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const

◆ m()

double EvtDalitzPlot::m ( EvtCyclic3::Index  i) const

Definition at line 101 of file EvtDalitzPlot.cc.

101 {
102
103 double m = _mA;
104 if(i == B) m = _mB;
105 else
106 if(i == C) m = _mC;
107
108 return m;
109}

Referenced by e(), EvtDalitzReso::evaluate(), m(), p(), q(), qAbsMax(), qAbsMin(), qMax(), qMin(), vB(), and vD().

◆ mA()

double EvtDalitzPlot::mA ( ) const
inline

Definition at line 93 of file EvtDalitzPlot.hh.

93{ return _mA; }

◆ mAbsMax()

double EvtDalitzPlot::mAbsMax ( EvtCyclic3::Pair  i) const

Definition at line 165 of file EvtDalitzPlot.cc.

166{
167 return sqrt(qAbsMax(i));
168}

◆ mAbsMin()

double EvtDalitzPlot::mAbsMin ( EvtCyclic3::Pair  i) const

Definition at line 159 of file EvtDalitzPlot.cc.

160{
161 return sqrt(qAbsMin(i));
162}

◆ mB()

double EvtDalitzPlot::mB ( ) const
inline

Definition at line 94 of file EvtDalitzPlot.hh.

94{ return _mB; }

◆ mC()

double EvtDalitzPlot::mC ( ) const
inline

Definition at line 95 of file EvtDalitzPlot.hh.

95{ return _mC; }

◆ operator==()

bool EvtDalitzPlot::operator== ( const EvtDalitzPlot other) const

Definition at line 71 of file EvtDalitzPlot.cc.

72{
73 bool ret = false;
74 if(_mA == other._mA &&
75 _mB == other._mB &&
76 _mC == other._mC &&
77 _bigM == other._bigM) ret = true;
78
79 return ret;
80}

◆ p()

double EvtDalitzPlot::p ( EvtCyclic3::Index  i,
EvtCyclic3::Pair  j,
double  q 
) const

Definition at line 295 of file EvtDalitzPlot.cc.

296{
297 double en = e(i,j,q);
298 double p2 = en*en - m(i)*m(i);
299
300 if(p2 < 0) {
301 printf("Bad value of p2 %f %d %d %f %f\n",p2,i,j,en,m(i));
302 assert(0);
303 }
304
305 return sqrt(p2);
306}

Referenced by jacobian(), EvtDalitzPoint::p(), and q().

◆ print()

void EvtDalitzPlot::print ( ) const

Definition at line 338 of file EvtDalitzPlot.cc.

339{
340 // masses
341 printf("Mass M %f\n",bigM());
342 printf("Mass mA %f\n",_mA);
343 printf("Mass mB %f\n",_mB);
344 printf("Mass mC %f\n",_mC);
345 // limits
346 printf("Limits qAB %f : %f\n",qAbsMin(AB),qAbsMax(AB));
347 printf("Limits qBC %f : %f\n",qAbsMin(BC),qAbsMax(BC));
348 printf("Limits qCA %f : %f\n",qAbsMin(CA),qAbsMax(CA));
349 printf("Sum q %f\n",sum());
350 printf("Limit qsum %f : %f\n",qSumMin(),qSumMax());
351}
double qSumMin() const
double qSumMax() const

Referenced by EvtDalitzPoint::print().

◆ q()

double EvtDalitzPlot::q ( EvtCyclic3::Pair  i1,
double  cosTh,
EvtCyclic3::Pair  i2,
double  q2 
) const

Definition at line 309 of file EvtDalitzPlot.cc.

310{
311 if(i1 == i2) return q2;
312
313 EvtCyclic3::Index f = first(i1);
315 return m(f)*m(f) + m(s)*m(s) + 2*e(f,i2,q2)*e(s,i2,q2) - 2*p(f,i2,q2)*p(s,i2,q2)*cosTh;
316}
XmlRpcServer s
Definition: HelloServer.cpp:11
double cosTh(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const

◆ qAbsMax()

double EvtDalitzPlot::qAbsMax ( EvtCyclic3::Pair  i) const

◆ qAbsMin()

double EvtDalitzPlot::qAbsMin ( EvtCyclic3::Pair  i) const

◆ qHelAbsMax()

double EvtDalitzPlot::qHelAbsMax ( EvtCyclic3::Pair  i) const

Definition at line 151 of file EvtDalitzPlot.cc.

152{
153 Pair j = next(i);
154 Pair k = prev(i);
155 return (qAbsMax(j) - qAbsMin(k))/2.;
156}
Index next(Index i)
Definition: EvtCyclic3.cc:107
Index prev(Index i)
Definition: EvtCyclic3.cc:96

◆ qHelAbsMin()

double EvtDalitzPlot::qHelAbsMin ( EvtCyclic3::Pair  i) const

Definition at line 144 of file EvtDalitzPlot.cc.

145{
146 Pair j = next(i);
147 Pair k = prev(i);
148 return (qAbsMin(j) - qAbsMax(k))/2.;
149}

◆ qMax()

double EvtDalitzPlot::qMax ( EvtCyclic3::Pair  i,
EvtCyclic3::Pair  j,
double  q 
) const

Definition at line 208 of file EvtDalitzPlot.cc.

209{
210
211 if(i == j) return q;
212 else {
213
214 // Particle pair j defines the rest-frame
215 // 0 - particle common to r.f. and angle calculations
216 // 1 - particle belonging to r.f. but not angle
217 // 2 - particle not belonging to r.f.
218
219 Index k0 = common(i,j);
220 Index k2 = other(j);
221 Index k1 = other(k0,k2);
222
223 // Energy, momentum of particle common to rest-frame and angle
224 EvtTwoBodyKine jpair(m(k0),m(k1),sqrt(q));
225 double ek = jpair.e(EvtTwoBodyKine::A,EvtTwoBodyKine::AB);
226 double pk = jpair.p();
227
228 // Energy and momentum of the other particle
229 EvtTwoBodyKine mother(sqrt(q),m(k2),bigM());
230 double ej = mother.e(EvtTwoBodyKine::B,EvtTwoBodyKine::A);
231 double pj = mother.p(EvtTwoBodyKine::A);
232
233
234 // See PDG 34.4.3.1
235 return (ek+ej)*(ek+ej) - (pk-pj)*(pk-pj);
236 }
237}
Index common(Pair i, Pair j)
Definition: EvtCyclic3.cc:228

Referenced by EvtDalitzResPdf::compute_integral(), cosTh(), getArea(), and EvtDalitzPoint::qMax().

◆ qMin()

double EvtDalitzPlot::qMin ( EvtCyclic3::Pair  i,
EvtCyclic3::Pair  j,
double  q 
) const

Definition at line 173 of file EvtDalitzPlot.cc.

174{
175 if(i == j) return q;
176
177 else {
178
179 // Particle pair j defines the rest-frame
180 // 0 - particle common to r.f. and angle calculations
181 // 1 - particle belonging to r.f. but not angle
182 // 2 - particle not belonging to r.f.
183
184 Index k0 = common(i,j);
185 Index k2 = other(j);
186 Index k1 = other(k0,k2);
187
188 // Energy, momentum of particle common to rest-frame and angle
189 EvtTwoBodyKine jpair(m(k0),m(k1),sqrt(q));
190 double pk = jpair.p();
191 double ek = jpair.e(EvtTwoBodyKine::A,EvtTwoBodyKine::AB);
192
193
194 // Energy and momentum of the other particle
195 EvtTwoBodyKine mother(sqrt(q),m(k2),bigM());
196 double ej = mother.e(EvtTwoBodyKine::B,EvtTwoBodyKine::A);
197 double pj = mother.p(EvtTwoBodyKine::A);
198
199
200 // See PDG 34.4.3.1
201 return (ek+ej)*(ek+ej) - (pk+pj)*(pk+pj);
202 }
203}

Referenced by EvtDalitzResPdf::compute_integral(), cosTh(), getArea(), and EvtDalitzPoint::qMin().

◆ qResAbsMax()

double EvtDalitzPlot::qResAbsMax ( EvtCyclic3::Pair  i) const

Definition at line 139 of file EvtDalitzPlot.cc.

140{
141 return qAbsMax(i) - sum()/3.;
142}

◆ qResAbsMin()

double EvtDalitzPlot::qResAbsMin ( EvtCyclic3::Pair  i) const

Definition at line 134 of file EvtDalitzPlot.cc.

135{
136 return qAbsMin(i) - sum()/3.;
137}

◆ qSumMax()

double EvtDalitzPlot::qSumMax ( ) const
inline

Definition at line 54 of file EvtDalitzPlot.hh.

54{ return sum() + _rdel; }

Referenced by print().

◆ qSumMin()

double EvtDalitzPlot::qSumMin ( ) const
inline

Definition at line 53 of file EvtDalitzPlot.hh.

53{ return sum() + _ldel; }

Referenced by print().

◆ sanityCheck()

void EvtDalitzPlot::sanityCheck ( ) const

Definition at line 89 of file EvtDalitzPlot.cc.

90{
91 if(_mA < 0 || _mB < 0 || _mC < 0 || _bigM <= 0 || _bigM - _mA - _mB - _mC < 0.) {
92
93 printf("Invalid Dalitz plot %f %f %f %f\n",_mA,_mB,_mC,_bigM);
94 assert(0);
95 }
96 assert(_ldel <= 0.);
97 assert(_rdel >= 0.);
98}

Referenced by EvtDalitzPlot().

◆ sum()

double EvtDalitzPlot::sum ( ) const

Definition at line 112 of file EvtDalitzPlot.cc.

113{
114 return _mA*_mA + _mB*_mB + _mC*_mC + _bigM*_bigM;
115}

Referenced by EvtDalitzPoint::EvtDalitzPoint(), getArea(), print(), qResAbsMax(), qResAbsMin(), qSumMax(), and qSumMin().

◆ vB()

EvtTwoBodyVertex EvtDalitzPlot::vB ( EvtCyclic3::Pair  iRes,
double  m0,
int  L 
) const

Definition at line 332 of file EvtDalitzPlot.cc.

333{
334 return EvtTwoBodyVertex(m0,m(other(iRes)),bigM(),L);
335}

◆ vD()

EvtTwoBodyVertex EvtDalitzPlot::vD ( EvtCyclic3::Pair  iRes,
double  m0,
int  L 
) const

Definition at line 325 of file EvtDalitzPlot.cc.

326{
327 return EvtTwoBodyVertex(m(first(iRes)),
328 m(second(iRes)),m0,L);
329}

Member Data Documentation

◆ _bigM

double EvtDalitzPlot::_bigM
protected

Definition at line 110 of file EvtDalitzPlot.hh.

Referenced by bigM(), EvtDalitzPlot(), operator==(), qAbsMax(), sanityCheck(), and sum().

◆ _ldel

double EvtDalitzPlot::_ldel
protected

Definition at line 114 of file EvtDalitzPlot.hh.

Referenced by EvtDalitzPlot(), fuzzy(), qSumMin(), and sanityCheck().

◆ _mA

double EvtDalitzPlot::_mA
protected

Definition at line 107 of file EvtDalitzPlot.hh.

Referenced by EvtDalitzPlot(), m(), mA(), operator==(), print(), sanityCheck(), and sum().

◆ _mB

double EvtDalitzPlot::_mB
protected

Definition at line 108 of file EvtDalitzPlot.hh.

Referenced by EvtDalitzPlot(), m(), mB(), operator==(), print(), sanityCheck(), and sum().

◆ _mC

double EvtDalitzPlot::_mC
protected

Definition at line 109 of file EvtDalitzPlot.hh.

Referenced by EvtDalitzPlot(), m(), mC(), operator==(), print(), sanityCheck(), and sum().

◆ _rdel

double EvtDalitzPlot::_rdel
protected

Definition at line 115 of file EvtDalitzPlot.hh.

Referenced by EvtDalitzPlot(), fuzzy(), qSumMax(), and sanityCheck().


The documentation for this class was generated from the following files: