double Kinematics_FF::GetKT2(const double &Q2,const double &y,const double &z, const double &mi2,const double &mj2,const double &mk2, const ATOOLS::Flavour &fla,const ATOOLS::Flavour &flc) const { double pipj=(Q2-mi2-mj2-mk2)*y; if (m_evolscheme==0) { return pipj*z*(1.0-z)-sqr(1.0-z)*mi2-sqr(z)*mj2; } double kt2=pipj*z*(1.0-z); if (fla.IsFermion()) kt2=pipj*(flc.IsVector()?(1.0-z):z); else if (flc.IsFermion()) kt2=pipj; return kt2; }
Pol_Info::Pol_Info(const ATOOLS::Flavour& fl) { int dof = 1; pol_type='s'; if(fl.IsFermion()) { dof = 2;pol_type='h';}; if(fl.IsVector() && ATOOLS::IsZero(fl.Mass())) { dof = 2;pol_type='c';} if(fl.IsVector() && !ATOOLS::IsZero(fl.Mass())) { #ifdef Explicit_Pols dof=3; #else dof=1; #endif pol_type='c'; } if(fl.IsTensor()) dof=5; Init(dof); if(!fl.IsTensor()) { int tf[3] = {mt::p_m, mt::p_p, mt::p_l }; for(int j=0;j<dof;j++){ type[j] = tf[j]; factor[j] = 1.; } } else { type[0]=mt::p_t1;factor[0]=1.; type[1]=mt::p_t2;factor[1]=1.; type[2]=mt::p_t3;factor[2]=1.; type[3]=mt::p_t4;factor[3]=1.; type[4]=mt::p_t5;factor[4]=1.; } }
double Kinematics_FF::GetY(const double &Q2,const double &kt2,const double &z, const double &mi2,const double &mj2,const double &mk2, const ATOOLS::Flavour &fla,const ATOOLS::Flavour &flc, const bool force) const { if (!force && (z<=0.0 || z>=1.0 || Q2<=mi2+mj2+mk2)) return -1.0; if (m_evolscheme==0) { return (kt2/(z*(1.0-z))+(1.0-z)/z*mi2+z/(1.0-z)*mj2)/(Q2-mi2-mj2-mk2); } if (fla.IsFermion()) { if (flc.IsFermion()) return kt2/z/(Q2-mi2-mj2-mk2); return kt2/(1.0-z)/(Q2-mi2-mj2-mk2); } if (flc.IsFermion()) return kt2/(Q2-mi2-mj2-mk2); return kt2/(z*(1.0-z))/(Q2-mi2-mj2-mk2); }
double Kinematics_FI::GetY(const double &Q2,const double &kt2,const double &z, const double &mi2,const double &mj2,const double &ma2, const ATOOLS::Flavour &fla,const ATOOLS::Flavour &flc, const bool force) const { if (!force && (z<=0.0 || z>=1.0 || Q2>=mi2+mj2+ma2)) return -1.0; if (m_evolscheme==0) { return 1.0/(1.0-(kt2/(z*(1.0-z))+mi2*(1.0-z)/z+mj2*z/(1.0-z))/(Q2-ma2-mi2-mj2)); } if (fla.IsFermion()) { if (flc.IsFermion()) return 1.0/(1.0-kt2/z/(Q2-ma2-mi2-mj2)); return 1.0/(1.0-kt2/(1.0-z)/(Q2-ma2-mi2-mj2)); } if (flc.IsFermion()) return 1.0/(1.0-kt2/(Q2-ma2-mi2-mj2)); return 1.0/(1.0-kt2/(z*(1.0-z))/(Q2-ma2-mi2-mj2)); }
double Kinematics_II::GetY(const double &Q2,const double &kt2,const double &z, const double &ma2,const double &mi2,const double &mb2, const ATOOLS::Flavour &flb,const ATOOLS::Flavour &flc, const bool force) const { if (!force && (z<=0.0 || z>=1.0 || Q2<=ma2+mi2+mb2)) return -1.0; if (m_evolscheme==0) { return z/(Q2-ma2-mb2-mi2)*((kt2+mi2)/(1.0-z)+(1.0-z)*ma2); } if (flc.IsFermion()) return z/(Q2-ma2-mb2-mi2)*kt2; return z/(Q2-ma2-mb2-mi2)*kt2/(1.0-z); }
double Kinematics_II::GetKT2(const double &Q2,const double &y,const double &z, const double &ma2,const double &mi2,const double &mb2, const ATOOLS::Flavour &flb,const ATOOLS::Flavour &flc) const { double pipj=(Q2-ma2-mi2-mb2)*y/z; if (m_evolscheme==0) { return pipj*(1.0-z)-mi2-sqr(1.0-z)*ma2; } double kt2=pipj*(1.0-z); if (flc.IsFermion()) kt2=pipj; return kt2; }