File indexing completed on 2025-04-19 09:10:04
0001 #ifndef HADRONS_Current_Library_VA_P_V_H
0002 #define HADRONS_Current_Library_VA_P_V_H
0003
0004 #include "HADRONS++/Current_Library/Current_Base.H"
0005
0006 namespace HADRONS
0007 {
0008
0009 namespace VA_P_V_FFs
0010 {
0011 class FormFactor_Base {
0012 protected:
0013 const ATOOLS::Flavour_Vector& m_flavs;
0014 const std::vector<int>& p_i;
0015 double m_m0, m_m1;
0016 double m_A0, m_A1, m_A2, m_A3, m_V;
0017 bool m_calced;
0018 public:
0019 FormFactor_Base(GeneralModel model, double* masses,
0020 const ATOOLS::Flavour_Vector& flavs,
0021 const std::vector<int>& indices) :
0022 m_flavs(flavs), p_i(indices) {
0023 m_m0=masses[0];
0024 m_m1=masses[1];
0025 m_A0=m_A1=m_A2=m_A3=m_V=0.0;
0026 m_calced=false;
0027 }
0028 virtual ~FormFactor_Base();
0029 virtual void CalcFFs( ATOOLS::Vec4D p0, ATOOLS::Vec4D p1 ) = 0;
0030 double A0() { if(!m_calced) abort(); return m_A0; }
0031 double A1() { if(!m_calced) abort(); return m_A1; }
0032 double A2() { if(!m_calced) abort(); return m_A2; }
0033 double A3() { if(!m_calced) abort(); return m_A3; }
0034 double V() { if(!m_calced) abort(); return m_V; }
0035 };
0036 }
0037
0038 class VA_P_V : public Current_Base {
0039 double m_Vxx, m_cV;
0040 VA_P_V_FFs::FormFactor_Base* p_ff;
0041 public:
0042 VA_P_V(const ATOOLS::Flavour_Vector& flavs,const std::vector<int>& indices,
0043 const std::string& name) :
0044 Current_Base(flavs, indices, name) {};
0045 ~VA_P_V() {
0046 if (p_ff!=NULL) delete p_ff;
0047 }
0048 void SetModelParameters( struct GeneralModel _md );
0049 void Calc(const ATOOLS::Vec4D_Vector& moms, bool m_anti);
0050 };
0051
0052 }
0053 #endif