VA_P_P.H 1.31 KB
Newer Older
1 2
#ifndef HADRONS_Current_Library_VA_P_P_H
#define HADRONS_Current_Library_VA_P_P_H
3

4
#include "HADRONS++/Current_Library/Current_Base.H"
5 6 7 8 9 10 11 12

namespace HADRONS
{

namespace VA_P_P_FFs
{
class FormFactor_Base {
protected:
13 14
  const ATOOLS::Flavour_Vector& m_flavs;
  const std::vector<int>& p_i;
15 16 17 18 19
  double m_m0, m_m1;
  double m_fplus, m_f0;
  bool   m_calced;
public:
  FormFactor_Base(struct GeneralModel model, double* masses, 
20 21 22
                  const ATOOLS::Flavour_Vector& flavs,
                  const std::vector<int>& indices) :
    m_flavs(flavs), p_i(indices){
23 24 25 26 27
    m_m0=masses[0];
    m_m1=masses[1];
    m_fplus=0.0; m_f0=0.0;
    m_calced=false;
  }
28
  virtual ~FormFactor_Base();
29 30 31 32 33 34 35 36 37 38 39 40
  virtual void CalcFFs( ATOOLS::Vec4D p0, ATOOLS::Vec4D p1 ) = 0;
  double fplus()  { if(!m_calced) abort(); return m_fplus; }
  double f0()     { if(!m_calced) abort(); return m_f0; }
};
}

class VA_P_P : public Current_Base {
  // 0=Scalar, 1=Pseudoscalar

  double m_Vxx;
  VA_P_P_FFs::FormFactor_Base* p_ff;
public:
41 42 43
  VA_P_P(const ATOOLS::Flavour_Vector& flavs,const std::vector<int>& indices,
         const std::string& name) :
    Current_Base(flavs, indices, name) {};
44 45 46 47
  ~VA_P_P() {
    if (p_ff!=NULL) delete p_ff;
  }
  void SetModelParameters( struct GeneralModel _md );
48
  void Calc(const ATOOLS::Vec4D_Vector& moms, bool m_anti);
49 50 51 52
};

}
#endif