StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EvtDalitzPlot.hh
1 //-----------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: EvtDalitzPlot.hh,v 1.1 2016/09/23 18:37:30 jwebb 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 
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  inline double qSumMin() const { return sum() + _ldel; }
54  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  inline double bigM() const { return _bigM; }
93  inline double mA() const { return _mA; }
94  inline double mB() const { return _mB; }
95  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