本文整理汇总了C++中atools::Flavour::IsGluon方法的典型用法代码示例。如果您正苦于以下问题:C++ Flavour::IsGluon方法的具体用法?C++ Flavour::IsGluon怎么用?C++ Flavour::IsGluon使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类atools::Flavour
的用法示例。
在下文中一共展示了Flavour::IsGluon方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MinimalEnergy
double Hadron_Remnant::MinimalEnergy(const ATOOLS::Flavour &flavour)
{
if (!m_initialized) {
if (!flavour.Strong()) {
return p_beam->Beam().HadMass();
}
bool found(false);
kf_code di[3];
if (flavour.IsQuark()) {
short unsigned int j=0;
for (Flavour_Vector::const_iterator flit(m_constit.begin());
flit!=m_constit.end();++flit) {
if (found || flavour!=*flit) di[j++]=flit->Kfcode();
else found=true;
}
}
Flavour difl;
if (!found || flavour.IsGluon()) {
int single=-1;
for (size_t i=0;i<m_constit.size();++i) {
for (size_t j=i+1;j<m_constit.size();++j) {
if (m_constit[i]==m_constit[j]) {
single=j;
break;
}
}
if (single>0) break;
}
Flavour fl(m_constit[single]);
for (short unsigned int j=0, i=0;i<3;i++)
if (i!=single) di[j++]=m_constit[i].Kfcode();
if (di[0]>di[1]) difl=Flavour((kf_code)(di[0]*1000+di[1]*100+1));
else if (di[1]>di[0]) difl=Flavour((kf_code)(di[1]*1000+di[0]*100+1));
else difl=Flavour((kf_code)(di[0]*1100+3));
if (m_constit[single].IsAnti()) difl=difl.Bar();
return difl.Mass()+fl.Mass()+flavour.Bar().Mass();
}
if (di[0]>di[1]) difl=Flavour((kf_code)(di[0]*1000+di[1]*100+1));
else if (di[1]>di[0]) difl=Flavour((kf_code)(di[1]*1000+di[0]*100+1));
else difl=Flavour((kf_code)(di[0]*1100+3));
if (m_constit[0].IsAnti()) difl=difl.Bar();
return difl.Mass();
}
else {
if (flavour.IsQuark()) return flavour.Bar().Mass();
}
return 0.;
}