00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef EVT_DALITZ_PLOT_HH
00018 #define EVT_DALITZ_PLOT_HH
00019
00020 #include <assert.h>
00021 #include "EvtGenBase/EvtCyclic3.hh"
00022 #include "EvtGenBase/EvtTwoBodyVertex.hh"
00023 #include "EvtGenBase/EvtDecayMode.hh"
00024
00025 class EvtDalitzPlot {
00026 public:
00027
00028 EvtDalitzPlot();
00029 EvtDalitzPlot(double mA, double mB, double mC, double bigM, double ldel = 0., double rdel = 0.);
00030 EvtDalitzPlot(const EvtDecayMode& mode, double ldel = 0., double rdel = 0.);
00031 EvtDalitzPlot(const EvtDalitzPlot& other);
00032 ~EvtDalitzPlot();
00033 bool operator==(const EvtDalitzPlot& other) const;
00034 const EvtDalitzPlot* clone() const;
00035
00036
00037
00038
00039
00040
00041 double qAbsMin(EvtCyclic3::Pair i) const;
00042 double qAbsMax(EvtCyclic3::Pair i) const;
00043 double mAbsMin(EvtCyclic3::Pair i) const;
00044 double mAbsMax(EvtCyclic3::Pair i) const;
00045
00046
00047
00048
00049 double qResAbsMin(EvtCyclic3::Pair i) const;
00050 double qResAbsMax(EvtCyclic3::Pair i) const;
00051 double qHelAbsMin(EvtCyclic3::Pair i) const;
00052 double qHelAbsMax(EvtCyclic3::Pair i) const;
00053 inline double qSumMin() const { return sum() + _ldel; }
00054 inline double qSumMax() const { return sum() + _rdel; }
00055 inline bool fuzzy() const { return (_rdel - _ldel != 0.); }
00056
00057
00058
00059
00060
00061
00062 double getArea(int N = 1000, EvtCyclic3::Pair i = EvtCyclic3::AB, EvtCyclic3::Pair j = EvtCyclic3::BC) const;
00063
00064
00065
00066 double qMin(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const;
00067 double qMax(EvtCyclic3::Pair i, EvtCyclic3::Pair j, double q) const;
00068
00069
00070
00071
00072 double cosTh(EvtCyclic3::Pair i1, double q1, EvtCyclic3::Pair i2, double q2) const;
00073 double e(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
00074 double p(EvtCyclic3::Index i, EvtCyclic3::Pair j, double q) const;
00075
00076 double q(EvtCyclic3::Pair i1, double cosTh, EvtCyclic3::Pair i2, double q2) const;
00077
00078
00079
00080 double jacobian(EvtCyclic3::Pair i, double q) const;
00081
00082
00083
00084
00085
00086 EvtTwoBodyVertex vD(EvtCyclic3::Pair iRes, double m0, int L) const;
00087 EvtTwoBodyVertex vB(EvtCyclic3::Pair iRes, double m0, int L) const;
00088
00089
00090
00091 double sum() const;
00092 inline double bigM() const { return _bigM; }
00093 inline double mA() const { return _mA; }
00094 inline double mB() const { return _mB; }
00095 inline double mC() const { return _mC; }
00096 double m(EvtCyclic3::Index i) const;
00097
00098
00099 void print() const;
00100
00101 void sanityCheck() const;
00102
00103 protected:
00104
00105
00106
00107 double _mA;
00108 double _mB;
00109 double _mC;
00110 double _bigM;
00111
00112
00113
00114 double _ldel;
00115 double _rdel;
00116
00117 };
00118
00119 #endif
00120
00121