double AMEGIC::Single_Process_External::DSigma(const ATOOLS::Vec4D_Vector &_moms,bool lookup) { m_lastxs = 0.; if (p_partner == this) { m_lastxs = m_Norm * operator()((ATOOLS::Vec4D*)&_moms.front()); } else { if (lookup && p_partner->m_lookup) m_lastxs = p_partner->LastXS()*m_sfactor; else m_lastxs = m_Norm * p_partner->operator()((ATOOLS::Vec4D*)&_moms.front())*m_sfactor; } return m_lastxs; }
double Decay_Channel::Differential(ATOOLS::Vec4D_Vector& momenta, bool anti, METOOLS::Spin_Density* sigma, const std::vector<ATOOLS::Particle*>& p) { Poincare labboost(momenta[0]); labboost.Boost(momenta[0]); Channels()->GeneratePoint(&momenta.front(),NULL); Channels()->GenerateWeight(&momenta.front(),NULL); labboost.Invert(); for (size_t i(0); i<momenta.size(); ++i) labboost.Boost(momenta[i]); double dsigma_lab=ME2(momenta, anti, sigma, p); return dsigma_lab*Channels()->Weight(); }
double AMEGIC::Single_Process_MHV::DSigma(const ATOOLS::Vec4D_Vector &_moms,bool lookup) { m_lastxs = 0.; if (m_nin==2) { for (size_t i=0;i<m_nin+m_nout;i++) { if (_moms[i][0]<m_flavs[i].Mass()) return 0.0; } } if (m_nin==1) { for (size_t i=m_nin;i<m_nin+m_nout;i++) { if (_moms[i][0]<m_flavs[i].Mass()) return 0.0; } } if (p_partner == this) { m_lastxs = m_Norm * operator()((ATOOLS::Vec4D*)&_moms.front()); } else { if (lookup && p_partner->m_lookup) m_lastxs = p_partner->LastXS()*m_sfactor; else m_lastxs = m_Norm * p_partner->operator()((ATOOLS::Vec4D*)&_moms.front())*m_sfactor; } return m_lastxs; }