#include "PHASIC++/Channels/RamboKK.H" #include "PHASIC++/Channels/Channel_Generator.H" #include "PHASIC++/Channels/Multi_Channel.H" #include "PHASIC++/Process/Process_Base.H" #include "ATOOLS/Org/Message.H" #include "ATOOLS/Math/Random.H" #include "ATOOLS/Org/Run_Parameter.H" #include "ATOOLS/Org/My_MPI.H" #include "MODEL/Main/Model_Base.H" using namespace PHASIC; using namespace ATOOLS; using namespace std; RamboKK::RamboKK(int _nin,int _nout,const Flavour * fl)// : nin(_nin), nout(_nout) { nin=_nin;nout=_nout; xm2 = new double[nin+nout]; p2 = new double[nin+nout]; E = new double[nin+nout]; ms = new double[nin+nout]; rans= 0; rannum=0; massflag = 0; for (short int i=0;iScalarNumber(std::string("KK_mode")); for (int i=nin;iScalarNumber(std::string("ED")); r2 = sqr(MODEL::s_model->ScalarConstant(std::string("Radius"))); gn = MODEL::s_model->ScalarConstant(std::string("G_Newton")); //Calculation of Gamma(ed/2) if(ed%2==0) gam=1.; else gam=sqrt(M_PI); for(int k=2-ed%2;kgen.Ecms(); prevET = mm; for(int j=nin;jGet()*maxn; ms2+=sqr(nv[i]); } ms2*=4*sqr(M_PI)/r2; } while (ms2>maxm2); ms[kkp]=ms2; delete[] nv; } void RamboKK::GenerateWeight(Vec4D * p,Cut_Data * cuts) { Vec4D sump(0.,0.,0.,0.); for (short int i=0;i-1) { double mm = prevET = ET; for(int j=nin;jGet()-1; S = sqrt(1-C*C); F = 2*M_PI*ran->Get(); Q = -log(ran->Get()*ran->Get()); p[i] = Vec4D(Q, Q*S*::sin(F), Q*S*cos(F), Q*C); R += p[i]; } RMAS = sqrt(R.Abs2()); B = (-1)*Vec3D(R)/RMAS; G = R[0]/RMAS; A = 1.0/(1.0+G); X = ET/RMAS; for(i=nin;iitmax) break; x -= f0/(x*g0); } double wt2 = 1.; double wt3 = 0.; double v; // Calculate Momenta + Weight for (short int i=nin;iitmax) break; x -= f0/(x*g0); } // Construct Momenta for (short int i=nin;iAdd(new RamboKK(p_proc->NIn(),p_proc->NOut(), &p_proc->Flavours().front())); return 0; } };// end of class RamboKK_Channel_Generator }// end of namespace PHASIC DECLARE_GETTER(RamboKK_Channel_Generator,"RamboKK", Channel_Generator,Channel_Generator_Key); Channel_Generator *ATOOLS::Getter :: operator()(const Channel_Generator_Key &args) const { return new RamboKK_Channel_Generator(args); } void ATOOLS::Getter:: PrintInfo(std::ostream &str,const size_t width) const { str<<"Rambo integrator for KK states"; }