BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDalitzPlot.hh
Go to the documentation of this file.
1//-----------------------------------------------------------------------
2// File and Version Information:
3// $Id: EvtDalitzPlot.hh,v 1.1.1.2 2007/10/26 05:03:14 pingrg Exp $
4//
5// Environment:
6// This software is part of the EvtGen package developed jointly
7// for the BaBar and CLEO collaborations. If you use all or part
8// of it, please give an appropriate acknowledgement.
9//
10// Copyright Information:
11// Copyright (C) 1998 Caltech, UCSB
12//
13// Module creator:
14// Alexei Dvoretskii, Caltech, 2001-2002.
15//-----------------------------------------------------------------------
16
17#ifndef EVT_DALITZ_PLOT_HH
18#define EVT_DALITZ_PLOT_HH
19
20#include "EvtCyclic3.hh"
21#include "EvtDecayMode.hh"
22#include "EvtTwoBodyVertex.hh"
23#include <assert.h>
24
26public:
28 EvtDalitzPlot( double mA, double mB, double mC, double bigM, double ldel = 0.,
29 double rdel = 0. );
30 EvtDalitzPlot( const EvtDecayMode& mode, double ldel = 0., double rdel = 0. );
31 EvtDalitzPlot( const EvtDalitzPlot& other );
33 bool operator==( const EvtDalitzPlot& other ) const;
34 const EvtDalitzPlot* clone() const;
35
36 // Absolute limits for masses squared in the Dalitz plot
37 // e.g. qAbsMin(0) is the lowest possible value
38 // for m2 of particles {12}
39
40 double qAbsMin( EvtCyclic3::Pair i ) const;
41 double qAbsMax( EvtCyclic3::Pair i ) const;
42 double mAbsMin( EvtCyclic3::Pair i ) const;
43 double mAbsMax( EvtCyclic3::Pair i ) const;
44
45 // Absolute limits for Zemach coordinate qres and qhel (approximate)
46 // qHelAbsMin(BC,CA) means absolute minimum for (qCA-qAB)/2.
47
48 double qResAbsMin( EvtCyclic3::Pair i ) const;
49 double qResAbsMax( EvtCyclic3::Pair i ) const;
50 double qHelAbsMin( EvtCyclic3::Pair i ) const;
51 double qHelAbsMax( EvtCyclic3::Pair i ) const;
52 inline double qSumMin() const { return sum() + _ldel; }
53 inline double qSumMax() const { return sum() + _rdel; }
54 inline bool fuzzy() const { return ( _rdel - _ldel != 0. ); }
55
56 // Find the area of the Dalitz plot by numeric integration. (N bins for variable q(i) are
57 // used). Very large numbers of N can result in a very long calculation. It should not matter
58 // which two pairs f variables are used. The integral should eventually converge to the same
59 // number
60
61 double getArea( int N = 1000, EvtCyclic3::Pair i = EvtCyclic3::AB,
63
64 // Limits for masses squared when one mass squared is known
65
66 double qMin( EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q ) const;
67 double qMax( EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q ) const;
68
69 // Coordinate transformations
70
71 double cosTh( EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2 ) const;
72 double e( EvtCyclic3::Index i, EvtCyclic3::Pair j, double q ) const;
73 double p( EvtCyclic3::Index i, EvtCyclic3::Pair j, double q ) const;
74
75 double q( EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2, double q2 ) const;
76
77 // |J| of transformation of qi to cosTh in the rest-frame of j
78
79 double jacobian( EvtCyclic3::Pair i, double q ) const;
80
81 // Given resonance index and mass returns decay
82 // and birth vertices
83
84 EvtTwoBodyVertex vD( EvtCyclic3::Pair iRes, double m0, int L ) const;
85 EvtTwoBodyVertex vB( EvtCyclic3::Pair iRes, double m0, int L ) const;
86
87 // Accessors
88
89 double sum() const;
90 inline double bigM() const { return _bigM; }
91 inline double mA() const { return _mA; }
92 inline double mB() const { return _mB; }
93 inline double mC() const { return _mC; }
94 double m( EvtCyclic3::Index i ) const;
95
96 void print() const;
97
98 void sanityCheck() const;
99
100protected:
101 // Defines two dimensional dalitz plot
102
103 double _mA;
104 double _mB;
105 double _mC;
106 double _bigM;
107
108 // Defines third dimension, or fuzziness. M^2 + ldel < M^2 < M^2 + rdel
109
110 double _ldel;
111 double _rdel;
112};
113
114#endif
****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
void sanityCheck() const
double qHelAbsMax(EvtCyclic3::Pair i) const
double getArea(int N=1000, EvtCyclic3::Pair i=EvtCyclic3::AB, EvtCyclic3::Pair j=EvtCyclic3::BC) const
double qAbsMin(EvtCyclic3::Pair i) const
double qSumMin() const
double jacobian(EvtCyclic3::Pair i, double q) const
void print() const
double sum() const
double mB() const
double qSumMax() const
EvtTwoBodyVertex vD(EvtCyclic3::Pair iRes, double m0, int L) const
const EvtDalitzPlot * clone() const
double bigM() const
EvtTwoBodyVertex vB(EvtCyclic3::Pair iRes, double m0, int L) const
double m(EvtCyclic3::Index i) const
double qHelAbsMin(EvtCyclic3::Pair i) const
double mAbsMax(EvtCyclic3::Pair i) const
double mAbsMin(EvtCyclic3::Pair i) 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 mA() const
double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const
bool operator==(const EvtDalitzPlot &other) const
bool fuzzy() 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 mC() const
double qResAbsMin(EvtCyclic3::Pair i) const
double qResAbsMax(EvtCyclic3::Pair i) const