#include "CSSHOWER++/Showers/Splitting_Function_Group.H" #include "ATOOLS/Org/Exception.H" #include "ATOOLS/Math/Random.H" using namespace CSSHOWER; using namespace ATOOLS; using namespace std; ostream& CSSHOWER::operator<<(std::ostream& str, Splitting_Function_Group &group) { str<<"Splitting_Function_Group : "<::iterator splitter=group.m_splittings.begin(); splitter!=group.m_splittings.end();splitter++) { str<<(**splitter); } str<<"-------------------------------------------------------------"<GetType() && flavA==m_splittings[i]->GetFlavourA() && flavB==m_splittings[i]->GetFlavourB()) { p_selected = m_splittings[i]; return true; } } return false; } void Splitting_Function_Group::SelectOne() { double disc(ran->Get()*m_lastint); size_t l(0), r(m_splittings.size()-1), c((l+r)/2); double a(m_partint[c]); while (r-l>1) { if (disc=m_splittings.size()) THROW(fatal_error,"Internal error"); m_splitter = m_splittings.begin(); for (size_t i(0);iOverIntegrated(zmin,zmax,scale,xbj); return m_lastint; } double Splitting_Function_Group::operator() (const double z,const double y, const double eta,const double scale, const double Q2) { return (*p_selected)(z,y,eta,scale,Q2); } double Splitting_Function_Group::Overestimated(const double z,const double y) { return p_selected->Overestimated(z,y); } double Splitting_Function_Group::RejectionWeight(const double z,const double y, const double eta,const double scale,const double Q2) { return p_selected->RejectionWeight(z,y,eta,scale,Q2); } double Splitting_Function_Group::Z() { return p_selected->Z(); } void Splitting_Function_Group::ClearSpecs() { m_specs.clear(); for (m_splitter=m_splittings.begin();m_splitter!=m_splittings.end();m_splitter++) (*m_splitter)->ClearSpecs(); } void Splitting_Function_Group::ResetLastInt() { m_lastint=0.0; for (m_splitter=m_splittings.begin();m_splitter!=m_splittings.end();m_splitter++) (*m_splitter)->ResetLastInt(); } void Splitting_Function_Group::SetMS(const ATOOLS::Mass_Selector *const ms) { for (m_splitter=m_splittings.begin();m_splitter!=m_splittings.end();m_splitter++) (*m_splitter)->SetMS(ms); }