#include "PHASIC++/Selectors/Cut_Data.H" #include "ATOOLS/Org/Run_Parameter.H" #include "ATOOLS/Org/MyStrStream.H" #include "ATOOLS/Math/Poincare.H" #include "ATOOLS/Org/Message.H" #include "ATOOLS/Org/Scoped_Settings.H" using namespace PHASIC; using namespace ATOOLS; using namespace std; std::ostream & PHASIC::operator<<(std::ostream & s , Cut_Data & cd) { s<<" Cut Data : "<() }; for (int i=0;igen.Ecms()); } } } void Cut_Data::Complete() { for (int i=0;i=2) str|=(1<etmm) etmm = etmin[i]; local_smin += etmin[i]; e1 += energymin[i]; } smin = Max(smin,sqr(local_smin)); smin = Max(smin,sqr(e1)-sqr(e2)); smin = Max(smin,sqr(2.*etmm)); smin = Max(smin,Getscut(str)); msg_Tracking()<<"Cut_Data::Complete(): s_{min} = "< pl,std::vector pr,int n,int k,int li) { if (n==k) { size_t idl=0, idr=0; for (size_t i(0);i(pl[i],pr[i]); sc=Max(sc,Getscut(pl,pr,n,k+1,i)); std::swap(pl[i],pr[i]); } return sc; } double Cut_Data::GetscutAmegic(std::string str) { size_t id(0); int length = str.length(); for (int i=0;i::iterator it = m_smin_map.find(str); if (it!=m_smin_map.end()) if (it->second>=0.) return it->second; std::vector pr(ID(str)); double sc = 0.; if (pr.size()==1) { m_smin_map[str] = sc = sqr(fl[pr.front()].SelMass()); return sc; } if (pr.size()==2) { m_smin_map[str] = sc = scut[pr[0]][pr[1]]; return sc; } for (int i=0;i pl(pr.size(),0); for (int i(1);i<=pr.size()/2;++i) sc=Max(sc,Getscut(pl,pr,i,0,-1)); m_smin_map[str] = sc; return sc; } void Cut_Data::Setscut(size_t str,double d) { m_smin_map[str]=d; }