00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef EVTFLATTE_HH
00022 #define EVTFLATTE_HH
00023
00024 #include "EvtGenBase/EvtVector4R.hh"
00025 #include <vector>
00026
00027 using std::vector;
00028
00029 class EvtComplex;
00030
00031
00032
00033 class EvtFlatteParam {
00034 public:
00035 EvtFlatteParam(double m1, double m2, double g):
00036 _m1(m1), _m2(m2), _g(g) {}
00037
00038 inline double m1() const { return _m1; }
00039 inline double m2() const { return _m2; }
00040 inline double g() const { return _g; }
00041
00042 private:
00043 double _m1, _m2, _g;
00044 };
00045
00046
00047
00048 class EvtFlatte {
00049 public:
00050
00051
00052 EvtFlatte& operator = (const EvtFlatte &);
00053
00054
00055 EvtFlatte(const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
00056 const EvtVector4R& p4_d2,
00057 double ampl, double theta,
00058 double mass,
00059 vector<EvtFlatteParam>& params
00060
00061
00062 );
00063
00064
00065 virtual ~EvtFlatte();
00066
00067
00068
00069 inline const EvtVector4R& p4_p() { return _p4_p; }
00070 inline const EvtVector4R& p4_d1() { return _p4_d1; }
00071 inline const EvtVector4R& p4_d2() { return _p4_d2; }
00072
00073
00074
00075 inline double amplitude() { return _ampl; }
00076
00077
00078 inline double theta() { return _theta; }
00079
00080
00081 inline double mass() { return _mass; }
00082
00083
00084
00085
00086 EvtComplex resAmpl();
00087
00088 private:
00089
00090 inline EvtComplex sqrtCplx(double in) { return (in > 0) ? EvtComplex(sqrt(in), 0) : EvtComplex
00091 (0, sqrt(-in)); }
00092
00093 EvtVector4R _p4_p, _p4_d1, _p4_d2;
00094 double _ampl, _theta, _mass;
00095 vector<EvtFlatteParam> _params;
00096
00097
00098 };
00099
00100 #endif
00101