Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:04

0001 #ifndef HADRONS_Current_Library_VA_0_PPP_H
0002 #define HADRONS_Current_Library_VA_0_PPP_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_PPP : public Current_Base {
0010      
0011     class FF_Base {
0012       double        m_ms[3];            // masses of particles^2
0013        
0014       protected :
0015       // resonances
0016         ResonanceFlavour m_A, m_AA, m_V[2], m_VV[2];
0017         double m_alpha, m_Beta[2];            // relative strength of resonances
0018 
0019       // parameters
0020         double m_fpi2;                        // pion decay constant
0021         int    m_mode, m_kaon_mode;                // internal mode representation
0022         bool   m_deltas;              // Delta S 
0023        
0024       public :
0025         FF_Base(int mode, int kaon_mode, GeneralModel _md, double * ms );
0026         virtual ~FF_Base();
0027         virtual Complex FormFactor( int, double, double, double ) = 0;
0028         inline double Mass2(int i)    { return m_ms[i]; }
0029     };
0030       
0031 
0032     class RChT : public FF_Base {       // Dumm, Pich, Portoles, hep-ph/0312183 
0033        
0034       private: 
0035       double  MassWidthVector( double s ); 
0036       double  MassWidthVector( int a, double s ); 
0037       double  MassWidthAxial( double Q2 ); 
0038        
0039       double  FFunc( double, double, double );
0040        
0041       // resonances
0042       double m_MO, m_MO2, m_GO;
0043       double m_gammaR;                  // global constant for GV
0044        
0045       // parameters
0046       double m_l0, m_exp_alpha;         // fitting parameter
0047       double m_m, m_m2, m_mK2;          // masses of pion and kaon
0048       double m_GV, m_FV, m_FV2;         // couplings
0049       double m_FA, m_FA2;
0050       double m_lsum;                    // fit parameters
0051       double m_l1, m_l2;
0052        
0053       public:
0054         RChT(int mode, int kaon_mode, GeneralModel _md, double * _ms);
0055         ~RChT() {}
0056         Complex FormFactor( int, double, double, double ); 
0057     }; 
0058 
0059     class KS : public FF_Base {     // Decker, Finkemeier, Mirkes, hep-ph/9310270
0060       // order of Pseudos: see table 1 of the paper
0061          
0062       private: 
0063       bool   m_G123;                // false if there is only one amplitude
0064       double m_X123, m_ms123;       // constants for this particular parameterisation
0065 
0066       // resonances for vector FF (anomaly)
0067       ResonanceFlavour m_AnoV, m_AnoVV, m_AnoVVV;
0068       double m_BetaV[2];                    // relative strength for V, V', V''
0069       double m_AlphaV;                      // relative strength for K* as V_ij (anomalous)
0070          
0071       // methods for axial and scalar FF
0072       Complex BW_A( double s );                     // resonance A
0073       Complex BW_V( int a, double s );              // resonance V_ij
0074       Complex BW_VV( int a, double s );             // resonance V_ij'
0075       Complex Tvector1( int a, int b, double x );
0076       Complex Tvector2( int a, int b, double x );
0077       Complex TSvector( int a, int b, int c, double Q2, double s, double t );
0078       Complex Tgen( int a, int b, int c, double s, double t);
0079       // methods for vector FF
0080       Complex BW_Vano( int a, double q2 );
0081       Complex T_V( double q2 );
0082       Complex T_V13V23( double s, double t );
0083 
0084       public:
0085         KS(int mode, int kaon_mode, GeneralModel _md, double * _ms);
0086         ~KS() {}
0087         Complex FormFactor( int, double, double, double );
0088     }; 
0089 
0090     class KS95 : public FF_Base {     // Finkemeier, Mirkes, hep-ph/9503474
0091 
0092       private: 
0093       // resonances in the scalar, vector FF
0094       ResonanceFlavour  m_V_VectorFF, m_VV_VectorFF, m_VVV_VectorFF;
0095       ResonanceFlavour  m_Omega_VectorFF, m_Phi_VectorFF;
0096       double            m_beta_VectorFF, m_gamma_VectorFF, m_eps_VectorFF;
0097        
0098       // methods for the FF
0099       Complex Axial(double q2);
0100       Complex TVector(int i, double s);
0101       Complex TOmega(double s);
0102       Complex Vector(int i, double s, double u);
0103       Complex G3(double q2, double s, double t, double u );
0104 
0105       public:
0106         KS95(int mode, int kaon_mode, GeneralModel _md, double * _ms);
0107         ~KS95() {}
0108         Complex FormFactor( int, double, double, double );
0109     }; 
0110 
0111     int    m_pseudo_3, m_pseudo_1, m_pseudo_2;
0112     double m_Vud, m_Vus;        // CKM ME
0113     double m_ms[3];             // masses^2
0114     int    m_mode, m_kaon_mode; // code for decay mode
0115     double m_global, m_B123;    // global constant
0116     FF_Base * p_ff;
0117     
0118   public:
0119     VA_0_PPP(const ATOOLS::Flavour_Vector& flavs,
0120              const std::vector<int>& indices, const std::string& name);
0121     ~VA_0_PPP() {
0122       if (p_ff!=NULL) delete p_ff;
0123     }
0124     Complex FormFactor( int j, double Q2, double s, double t ); 
0125     void SetModelParameters( struct GeneralModel _md );
0126     void Calc(const ATOOLS::Vec4D_Vector& moms, bool m_anti);
0127   };
0128 }
0129 #endif