File indexing completed on 2025-04-19 09:10:03
0001 #ifndef HADRONS_Current_Library_VA_0_PiPiPiPi3Charged_H
0002 #define HADRONS_Current_Library_VA_0_PiPiPiPi3Charged_H
0003
0004 #include "HADRONS++/Current_Library/Current_Base.H"
0005 #include "HADRONS++/PS_Library/ResonanceFlavour.H"
0006 #include "HADRONS++/Main/Tools.H"
0007
0008 namespace HADRONS {
0009 class VA_0_PiPiPiPi3Charged : public Current_Base {
0010
0011 class LorenzBase {
0012 public :
0013
0014
0015 const ATOOLS::Vec4D * p_p;
0016 int * p_i;
0017 ATOOLS::Vec4D m_q;
0018 double m_q2;
0019
0020 LorenzBase( ) {};
0021 virtual ~LorenzBase() {};
0022 virtual ATOOLS::Vec4C operator()() { return ATOOLS::Vec4C(); };
0023 void SetPrivates(const ATOOLS::Vec4D *, int * i);
0024 };
0025
0026 class Novo : public LorenzBase {
0027
0028 double m_mpi2;
0029 SimpleResonanceFlavour m_rho, m_sigma, m_omega;
0030 SimpleResonanceFlavour m_a1;
0031 ATOOLS::Histogram * p_G, * p_Go, * p_a1width;
0032 Complex m_z;
0033 double m_Lambda2;
0034
0035 double G( double q2 );
0036 double Go( double q2 );
0037 double F2_a1( double s );
0038 Complex Da1( double s );
0039 double hrho( double s );
0040 Complex Drho( double s );
0041 Complex Dsigma( double s );
0042 double F2_o( double s );
0043 Complex Do( double s );
0044 ATOOLS::Vec4C t1( int a, int b, int c, int d );
0045 ATOOLS::Vec4C t2( int a, int b, int c, int d );
0046 ATOOLS::Vec4C t3( int a, int b, int c, int d );
0047
0048 public:
0049
0050 Novo(GeneralModel _md );
0051 ~Novo() {
0052 delete p_G;
0053 delete p_Go;
0054 delete p_a1width;
0055 }
0056 ATOOLS::Vec4C operator()();
0057
0058 };
0059
0060
0061 class KS : public LorenzBase {
0062
0063
0064
0065
0066 ATOOLS::Vec4D m_r[4];
0067 double m_s[4];
0068
0069 static const int m_ncontrib = 4;
0070 Complex m_Alpha[m_ncontrib];
0071 Complex m_SumAlpha;
0072
0073 double m_fpi2;
0074 double m_Go3p, m_Frho, m_grop;
0075 double m_mpi2, m_mpi02;
0076 ResonanceFlavour m_Rho, m_RR, m_RRR;
0077 ResonanceFlavour m_O, m_S, m_F, m_A;
0078 double m_beta, m_gamma;
0079 double m_sigma;
0080 double m_R[4];
0081 ATOOLS::Vec4C OmegaPi(); Complex m_Beta_opi[4];
0082 ATOOLS::Vec4C AonePi(); Complex m_Beta_api[4];
0083 ATOOLS::Vec4C SigmaRho(); Complex m_Beta_srh[4];
0084 ATOOLS::Vec4C FzeroRho(); Complex m_Beta_frh[4];
0085
0086 double Dots( int, int );
0087 Complex Fk( double, Complex * );
0088 Complex Trho( double );
0089 Complex TTrho( double );
0090
0091 public :
0092
0093 KS(GeneralModel _md );
0094 ATOOLS::Vec4C operator()();
0095 };
0096
0097
0098
0099 double m_global;
0100 LorenzBase * p_lorenz;
0101
0102
0103
0104
0105 public:
0106 VA_0_PiPiPiPi3Charged(const ATOOLS::Flavour_Vector& flavs,
0107 const std::vector<int>& indices,
0108 const std::string& name) :
0109 Current_Base(flavs, indices, name) {};
0110 ~VA_0_PiPiPiPi3Charged() {
0111 if (p_lorenz!=NULL) delete p_lorenz;
0112 }
0113 void SetModelParameters( struct GeneralModel _md );
0114 void Calc(const ATOOLS::Vec4D_Vector& moms, bool m_anti);
0115 };
0116 }
0117 #endif
0118
0119