#include "PwaDynamics/PhaseSpace4Pi.hh"
#include "qft++/relativistic-quantum-mechanics/Utils.hh"

PhaseSpace4Pi::PhaseSpace4Pi():
  AbsPhaseSpace()
  , _piMass(0.13957)
{
}

PhaseSpace4Pi::~PhaseSpace4Pi(){

}

complex<double> PhaseSpace4Pi::factor(const double mass){
  double mass_sqr=mass*mass;
  complex<double> result(0.,0.);
  if( mass_sqr <= 1 )
    {
      double real   = 1.2274 + .00370909 / ( mass_sqr * mass_sqr ) - .111203 / mass_sqr - 6.39017 * mass_sqr + 16.8358*mass_sqr*mass_sqr - 21.8845*mass_sqr*mass_sqr*mass_sqr + 11.3153*mass_sqr*mass_sqr*mass_sqr*mass_sqr;
      double cont32 = sqrt(1.0-(16.0*_piMass*_piMass));
      result = complex<double>( cont32 * real, 0 );
    }
  else result = complex<double>( sqrt( 1. - 16. * _piMass * _piMass / mass_sqr ), 0. );
  return result;
}

complex<double> PhaseSpace4Pi::breakUpMom(const double mass){
  return factor(mass)*mass/2.;
}