#include "HADRONS++/PS_Library/HD_PS_Base.H" #include "HADRONS++/PS_Library/Two_Body_PSs.H" #include "HADRONS++/PS_Library/Three_Body_PSs.H" #include "HADRONS++/PS_Library/Four_Body_PSs.H" #include "PHASIC++/Channels/Rambo.H" #include "ATOOLS/Org/Message.H" #include "ATOOLS/Org/MyStrStream.H" #include "ATOOLS/Org/Data_Reader.H" #include "HADRONS++/PS_Library/ResonanceFlavour.H" using namespace HADRONS; using namespace PHASIC; using namespace ATOOLS; using namespace std; bool HD_Channel_Selector::DecomposeChannel(string name, ChannelInformation & ci) { ci.name = "noname"; ci.a=0; ci.b=0; ci.c=0; ci.d=0; ci.res1 = "no res"; ci.res2 = "no res"; ci.res3 = "no res"; Data_Reader reader("_",";","#"); vector exploded; reader.SetString(name); reader.VectorFromString(exploded); if(exploded.size() < 1) return false; if(exploded[0]=="Isotropic" || exploded[0]=="Iso2") { ci.name = exploded[0]; ci.nRes = 0; } else if(exploded[0]=="Dalitz" && exploded.size()==3) { ci.name = exploded[0]; ci.res1 = exploded[1]; int ab = ToType(exploded[2]); ci.b=ab%10; ci.a=ab/10; // int/int ! ci.nRes = 1; } else if(exploded[0]=="TwoResonances" && exploded.size()==5) { ci.name = exploded[0]; ci.res1 = exploded[1]; ci.a = ToType(exploded[2]); ci.res2 = exploded[3]; int bc = ToType(exploded[4]); ci.c=bc%10; ci.b=bc/10; // int/int ! ci.nRes = 2; } else if(exploded[0]=="IsotropicSpectator" && exploded.size()==2) { ci.name = exploded[0]; ci.a = ToType(exploded[1]); // spectator index } if( ci.name==string("noname") ) return false; return true; } Single_Channel * HD_Channel_Selector::GetChannel( int nin, int nout, const Flavour * flavs, string name, GeneralModel const & md, const ATOOLS::Mass_Selector* ms) { if ( nin>1 || nout<1 ) { msg_Error()< "< "<