File indexing completed on 2025-04-19 09:10:05
0001 #ifndef HADRONS_PS_Library_ResonanceFlavour_H
0002 #define HADRONS_PS_Library_ResonanceFlavour_H
0003
0004 #include "ATOOLS/Math/MathTools.H"
0005 #include "ATOOLS/Math/Histogram.H"
0006
0007 namespace HADRONS {
0008
0009
0010
0011 class SimpleResonanceFlavour {
0012
0013 protected:
0014 std::string m_name;
0015 double m_mass, m_width, m_mass2;
0016
0017 public:
0018 SimpleResonanceFlavour() {}
0019 SimpleResonanceFlavour( std::string name, double _mass, double _width );
0020 ~SimpleResonanceFlavour() {}
0021
0022 double Mass() { return m_mass; }
0023 double Mass2() { return m_mass2; }
0024 double Width() { return m_width; }
0025 double MassWidth() { return m_mass*m_width; }
0026 std::string Name() { return m_name; }
0027 };
0028
0029 class ResonanceFlavour : public SimpleResonanceFlavour {
0030
0031 protected:
0032 kf_code m_kfc;
0033 int m_running;
0034 ATOOLS::Histogram * p_hist;
0035 double m_G_at_m2;
0036 int m_body;
0037
0038 double TwoBodyResonanceMassWidth( double s, double m1, double m2 );
0039 double TwoBodyResonanceMassWidth( double s, double m );
0040 double TwoBodyResonanceMassWidth_12( double s, double m );
0041 double ThreeBodyResonanceMassWidth( double s );
0042
0043 ATOOLS::Histogram * CreateGHistogram( ResonanceFlavour res1, ResonanceFlavour res2, double beta, kf_code out );
0044 double GetValueOfG( double s );
0045 double IntegralG( double Q2, ResonanceFlavour res1, ResonanceFlavour res2, double beta, kf_code out );
0046
0047 public:
0048 static double Lambda( double a, double b, double c );
0049 static double Sqrt_Lambda( double a, double b, double c);
0050 public:
0051 ResonanceFlavour() {}
0052 ResonanceFlavour( kf_code _kfc, double _mass, double _width, int _run );
0053 ~ResonanceFlavour() { if(p_hist) delete p_hist; }
0054
0055 void InitialiseThreeBodyResonance( ResonanceFlavour &res1, ResonanceFlavour &res2, double beta=0. );
0056 void InitialiseThreeBodyResonance( ResonanceFlavour &res1 );
0057
0058 Complex BreitWigner( double s );
0059 Complex BreitWignerAlt( double s );
0060 double OffShellMassWidth( double s );
0061 int Running() { return m_running; }
0062
0063 };
0064
0065 }
0066
0067 #endif
0068