void PhrasePenalty::EvaluateInIsolation(const Phrase &source , const TargetPhrase &targetPhrase , ScoreComponentCollection &scoreBreakdown , ScoreComponentCollection &estimatedFutureScore) const { if (m_perPhraseTable) { const PhraseDictionary *pt = targetPhrase.GetContainer(); if (pt) { size_t ptId = pt->GetId(); UTIL_THROW_IF2(ptId >= m_numScoreComponents, "Wrong number of scores"); vector<float> scores(m_numScoreComponents, 0); scores[ptId] = 1.0f; scoreBreakdown.Assign(this, scores); } } else { scoreBreakdown.Assign(this, 1.0f); } }