Line data Source code
1 : //-----------------------------------------------------------------------
2 : // File and Version Information:
3 : // $Id: EvtDalitzPlot.hh,v 1.2 2009-03-16 16:44:53 robbep 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 <assert.h>
21 : #include "EvtGenBase/EvtCyclic3.hh"
22 : #include "EvtGenBase/EvtTwoBodyVertex.hh"
23 : #include "EvtGenBase/EvtDecayMode.hh"
24 :
25 : class EvtDalitzPlot {
26 : public:
27 :
28 : EvtDalitzPlot();
29 : EvtDalitzPlot(double mA, double mB, double mC, double bigM, double ldel = 0., double rdel = 0.);
30 : EvtDalitzPlot(const EvtDecayMode& mode, double ldel = 0., double rdel = 0.);
31 : EvtDalitzPlot(const EvtDalitzPlot& other);
32 : ~EvtDalitzPlot();
33 : bool operator==(const EvtDalitzPlot& other) const;
34 : const EvtDalitzPlot* clone() const;
35 :
36 :
37 : // Absolute limits for masses squared in the Dalitz plot
38 : // e.g. qAbsMin(0) is the lowest possible value
39 : // for m2 of particles {12}
40 :
41 : double qAbsMin(EvtCyclic3::Pair i) const;
42 : double qAbsMax(EvtCyclic3::Pair i) const;
43 : double mAbsMin(EvtCyclic3::Pair i) const;
44 : double mAbsMax(EvtCyclic3::Pair i) const;
45 :
46 : // Absolute limits for Zemach coordinate qres and qhel (approximate)
47 : // qHelAbsMin(BC,CA) means absolute minimum for (qCA-qAB)/2.
48 :
49 : double qResAbsMin(EvtCyclic3::Pair i) const;
50 : double qResAbsMax(EvtCyclic3::Pair i) const;
51 : double qHelAbsMin(EvtCyclic3::Pair i) const;
52 : double qHelAbsMax(EvtCyclic3::Pair i) const;
53 0 : inline double qSumMin() const { return sum() + _ldel; }
54 0 : inline double qSumMax() const { return sum() + _rdel; }
55 : inline bool fuzzy() const { return (_rdel - _ldel != 0.); }
56 :
57 : // Find the area of the Dalitz plot by numeric integration. (N bins for variable q(i) are used).
58 : // Very large numbers of N can result in a very long calculation. It should not
59 : // matter which two pairs f variables are used. The integral should eventually
60 : // converge to the same number
61 :
62 : double getArea(int N = 1000, EvtCyclic3::Pair i = EvtCyclic3::AB, EvtCyclic3::Pair j = EvtCyclic3::BC) const;
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 :
70 : // Coordinate transformations
71 :
72 : double cosTh(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const;
73 : double e(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
74 : double p(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
75 :
76 : double q(EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2, double q2) const;
77 :
78 : // |J| of transformation of qi to cosTh in the rest-frame of j
79 :
80 : double jacobian(EvtCyclic3::Pair i, double q) const;
81 :
82 :
83 : // Given resonance index and mass returns decay
84 : // and birth vertices
85 :
86 : EvtTwoBodyVertex vD(EvtCyclic3::Pair iRes, double m0, int L) const;
87 : EvtTwoBodyVertex vB(EvtCyclic3::Pair iRes, double m0, int L) const;
88 :
89 : // Accessors
90 :
91 : double sum() const;
92 0 : inline double bigM() const { return _bigM; }
93 0 : inline double mA() const { return _mA; }
94 0 : inline double mB() const { return _mB; }
95 0 : inline double mC() const { return _mC; }
96 : double m(EvtCyclic3::Index i) const;
97 :
98 :
99 : void print() const;
100 :
101 : void sanityCheck() const;
102 :
103 : protected:
104 :
105 : // Defines two dimensional dalitz plot
106 :
107 : double _mA;
108 : double _mB;
109 : double _mC;
110 : double _bigM;
111 :
112 : // Defines third dimension, or fuzziness. M^2 + ldel < M^2 < M^2 + rdel
113 :
114 : double _ldel;
115 : double _rdel;
116 :
117 : };
118 :
119 : #endif
120 :
121 :
|