diff --git a/test/lines.C b/test/lines.C index dbc9546..5a952c2 100644 --- a/test/lines.C +++ b/test/lines.C @@ -1,745 +1,746 @@ #include "dyres_interface.h" #include "mcfm_interface.h" #include "propagator.h" #include "mesq.h" #include "vjint.h" #include "vjloint.h" //y line plot void yline() { double costh = 0.; - double m = 91.1958;//opts.rmass; - double qt = 0.01;//0.850673; //0.01; + double m = opts.rmass; + double qt = (phasespace::qtmin + phasespace::qtmax)/2.; //0.01;//0.850673; //0.01; double y = 0.; int mode = 1; double f[opts.totpdf]; double y1 = phasespace::ymin; double y2 = phasespace::ymax; int ny = 100; ofstream yf("yline.C"); yf << std::setprecision(15); yf << "{" << endl; yf << "TGraph *gy = new TGraph();" << endl; yf << "TGraph *gy1 = new TGraph();" << endl; yf << "TGraph *gy2 = new TGraph();" << endl; double hy=(y2-y1)/ny; for(int i=0;i<=ny;i++) { double y = i*hy+y1; double ym = -y; phasespace::set_mqtyphi(m, qt, y);//set global variables to costh, m, qt, y phasespace::set_cth(costh);//set global variables to costh, m, qt, y phasespace::calcexpy(); phasespace::calcmt(); omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 //yf << "gy->SetPoint(gy->GetN(), " << i*hy+y1 << ", " << resumm_(costh,m,qt,y,mode) << ");" << endl; // yf << "gy->SetPoint(gy->GetN(), " << i*hy+y1 << ", " << resint::rint(costh,m,qt,y,mode) << ");" << endl; // if (vjfo_(m,qt,y) != 0) //yf << "gy->SetPoint(gy->GetN(), " << i*hy+y1 << ", " << (-ctint_(costh,m,qt,y,mode,f)*2*qt)/vjfo_(m,qt,y) << ");" << endl; // yf << "gy1->SetPoint(gy1->GetN(), " << i*hy+y1 << ", " << -ctint_(costh,m,qt,y,mode,f)*2*qt << ");" << endl; // yf << "gy2->SetPoint(gy2->GetN(), " << i*hy+y1 << ", " << vjfo_(m,qt,y) << ");" << endl; // check of y asymmetry // yf << "gy1->SetPoint(gy1->GetN(), " << i*hy+y1 << ", " << -ctint_(costh,m,qt,y,mode,f)*2*qt+ctint_(costh,m,qt,ym,mode,f)*2*qt << ");" << endl; // yf << "gy2->SetPoint(gy2->GetN(), " << i*hy+y1 << ", " << vjfo_(m,qt,y)-vjfo_(m,qt,ym) << ");" << endl; - double vj = vjint::vint(m,qt,y); + // double vj = vjint::vint(m,qt,y); dofill_.doFill_ = 1; - qtint::calc(m,qt,0,1); - omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 + //qtint::calc(m,qt,0,1); + //omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 + mode = 2; + qtint::calc(m,max(opts.qtcut,opts.xqtcut*phasespace::m),1e10,mode); ctint::calc(costh,m,qt,y,mode,f); - cout << vj << " " << f[0] << endl; + // cout << vj << " " << f[0] << endl; - yf << "gy->SetPoint(gy->GetN(), " << i*hy+y1 << ", " << (-f[0]*2*qt)/vj << ");" << endl; - //yf << "gy1->SetPoint(gy1->GetN(), " << i*hy+y1 << ", " << -ff[0]*2*qt << ");" << endl; + //yf << "gy->SetPoint(gy->GetN(), " << i*hy+y1 << ", " << (-f[0]*2*qt)/vj << ");" << endl; + yf << "gy1->SetPoint(gy1->GetN(), " << i*hy+y1 << ", " << f[0]*2*qt << ");" << endl; //yf << "gy->SetPoint(gy->GetN(), " << i*hy+y1 << ", " << vjint::vint(m,qt,y) << ");" << endl; } - yf << "gy->Draw();" << endl; - yf << "//gy1->Draw();" << endl; + yf << "//gy->Draw();" << endl; + yf << "gy1->Draw();" << endl; yf << "//gy2->Draw(\"same\");" << endl; yf << "}" << endl; } //m line plot void mline() { double costh = 0.; double m = opts.rmass; double qt = (phasespace::qtmin + phasespace::qtmax)/2.; double y = (phasespace::ymin + phasespace::ymax)/2.; int mode = 3; double f[opts.totpdf]; double m1 = phasespace::mmin; double m2 = phasespace::mmax; - int nm = 500; + int nm = 150; ofstream mf("mline.C"); mf << std::setprecision(15); mf << "{" << endl; mf << "TGraph *gm = new TGraph();" << endl; mf << "TGraph *gm1 = new TGraph();" << endl; mf << "TGraph *gm2 = new TGraph();" << endl; double hm=(m2-m1)/nm; for(int i=0;i<=nm;i++) { double m = i*hm+m1; phasespace::set_mqtyphi(m, qt, y);//set global variables to costh, m, qt, y phasespace::set_cth(costh);//set global variables to costh, m, qt, y phasespace::calcexpy(); phasespace::calcmt(); omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 // double vj = vjint::vint(m,qt,y); // mf << "gm->SetPoint(gm->GetN(), " << i*hm+m1 << ", " << resumm_(costh,m,qt,y,mode) << ");" << endl; // rapint::cache(phasespace::ymin, phasespace::ymax); // rapint::allocate(); // rapint::integrate(phasespace::ymin,phasespace::ymax,(phasespace::mmin+phasespace::mmax)/2.); // mf << "gm->SetPoint(gm->GetN(), " << i*hm+m1 << ", " << resint::rint(costh,m,qt,y,mode) << ");" << endl; // mf << "gm->SetPoint(gm->GetN(), " << i*hm+m1 << ", " << resint::rint(costh,m,qt,y,mode) << ");" << endl; //mf << "gm->SetPoint(gm->GetN(), " << i*hm+m1 << ", " << -ctint_(costh,m,qt,y,mode,f)*2*qt/vjint::vint(m,qt,y) << ");" << endl; //mf << "gm1->SetPoint(gm1->GetN(), " << i*hm+m1 << ", " << -ctint_(costh,m,qt,y,mode,f)*2*qt << ");" << endl; //mf << "gm2->SetPoint(gm2->GetN(), " << i*hm+m1 << ", " << vjint::vint(m,qt,y) << ");" << endl; dofill_.doFill_ = 1; mode = 2; qtint::calc(m,max(opts.qtcut,opts.xqtcut*phasespace::m),1e10,mode); omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 ctint::calc(costh,m,qt,y,mode,f); mf << "gm->SetPoint(gm->GetN(), " << i*hm+m1 << ", " << f[0]*2*qt << ");" << endl; // cout << vj << " " << f[0]*2*qt << endl; // mf << "gm->SetPoint(gm->GetN(), " << i*hm+m1 << ", " << (-f[0]*2*qt)/vj << ");" << endl; } mf << "gm->Draw();" << endl; mf << "//gm1->Draw();" << endl; mf << "//gm2->Draw(\"same\");" << endl; mf << "}" << endl; } void mlinebw() { //mline after bret wigner unweighting int nocuts = (int)true; double m1 = 0; double m2 = 1; int nm = 100; phasespace::setbounds(phasespace::mmin, phasespace::mmax, 0, 2, phasespace::ymin, phasespace::ymax); ofstream mf("mlinebw.C"); mf << "{" << endl; mf << "TGraph *gm = new TGraph();" << endl; double hm=(m2-m1)/nm; for(int i=0;i<=nm;i++) { double m = i*hm+m1; double ymin = 0.; double ymax = 1.; // rapintegrals_(ymin,ymax,m,nocuts); double x[4]; double f[1]; const int ncomp = 1; const int ndim = 4; //3; //2; x[0] = 0.5; x[1] = 0.1; x[2] = m; x[3] = 0.5; //resintegrand2d(ndim, x, ncomp, f); // resintegrand3d(ndim, x, ncomp, f); ctintegrand3d(ndim, x, ncomp, f); //void* userdata; int nvec; int core; double weight; int iter; resintegrand4d(ndim, x, ncomp, f, userdata, nvec, core, weight, iter); mf << "gm->SetPoint(gm->GetN(), " << i*hm+m1 << ", " << f[0] << ");" << endl; } mf << "gm->Draw();" << endl; mf << "}" << endl; } void xline() { //xline after unweighting int nocuts = (int)true; double x1 = 0.; double x2 = 1.; - int nx = 1000; + int nx = 100; phasespace::setbounds(phasespace::mmin, phasespace::mmax, phasespace::qtmin, phasespace::qtmax, phasespace::ymin, phasespace::ymax); ofstream xf("xline.C"); xf << "{" << endl; xf << "TGraph *gx = new TGraph();" << endl; double hx=(x2-x1)/nx; for(int i=0;i<=nx;i++) { double xx = i*hx+x1; double ymin = 0.; double ymax = 1.; // rapintegrals_(ymin,ymax,m,nocuts); const int ncomp = 1; - //const int ndim = 4; //3; //2; - const int ndim = 10; + const int ndim = 2; //4; //3; //10; double x[ndim]; double f[ncomp],g[ncomp]; - x[0] = xx; - x[1] = 0.5; - x[2] = 0.5; - x[3] = 0.5; - x[4] = 0.5; - x[5] = 0.5; - x[6] = 0.5; - x[7] = 0.5; - x[8] = 0.5; - x[9] = 0.5; + x[0] = 0.5; + x[1] = xx; + //x[2] = 0.5; + //x[3] = 0.5; + //x[4] = 0.5; + //x[5] = 0.5; + //x[6] = 0.5; + //x[7] = 0.5; + //x[8] = 0.5; + //x[9] = 0.5; void* userdata = 0; const int nvec = 1; const int core = 0; double weight; const int iter = 0; - rapint::cache(phasespace::ymin, phasespace::ymax); - rapint::allocate(); - rapint::integrate(phasespace::ymin,phasespace::ymax,(phasespace::mmin+phasespace::mmax)/2.); + //rapint::cache(phasespace::ymin, phasespace::ymax); + //rapint::allocate(); + //rapint::integrate(phasespace::ymin,phasespace::ymax,(phasespace::mmin+phasespace::mmax)/2.); - resintegrand1d(ndim, x, ncomp, f); + //resintegrand1d(ndim, x, ncomp, f); //resintegrand2d(ndim, x, ncomp, f); //vjlointegrand(ndim, x, ncomp, f); //resintegrand3d(ndim, x, ncomp, f); //ctintegrand3d(ndim, x, ncomp, f); - //ctintegrand2d(ndim, x, ncomp, f); + ctintegrand2d(ndim, x, ncomp, f); // x[0] = 0.5; // x[1] = 0.5; // x[2] = xx; //vjintegrand(ndim, x, ncomp, g); //lointegrand2d(ndim, x, ncomp, f); //lointegrandMC(ndim, x, ncomp, f, userdata, nvec, core, weight, iter); //resintegrandMC(ndim, x, ncomp, f, userdata, nvec, core, weight, iter); //ctintegrandMC(ndim, x, ncomp, f, userdata, nvec, core, weight, iter); //vjlointegrandMC(ndim, x, ncomp, f, userdata, nvec, core, weight, iter); //void* userdata; int nvec; int core; double weight; int iter; resintegrand4d(ndim, x, ncomp, f, userdata, nvec, core, weight, iter); - realintegrand(ndim, x, ncomp, f, userdata, nvec, core, weight, iter); + //realintegrand(ndim, x, ncomp, f, userdata, nvec, core, weight, iter); //xf << "gx->SetPoint(gx->GetN(), " << i*hx+x1 << ", " << f[0]/g[0] << ");" << endl; //xf << "gx->SetPoint(gx->GetN(), " << i*hx+x1 << ", " << f[0]+g[0] << ");" << endl; //xf << "gx->SetPoint(gx->GetN(), " << i*hx+x1 << ", " << g[0] << ");" << endl; xf << "gx->SetPoint(gx->GetN(), " << i*hx+x1 << ", " << f[0] << ");" << endl; } xf << "gx->Draw();" << endl; xf << "}" << endl; } /* //costh line plot void costhline() { double costh = 0.; double m = 91; double qt = 5; double y = 0.0; double costh_CS; double c1 = -1; double c2 = +1; int nc = 2000; ofstream cf("cline.C"); cf << "{" << endl; cf << "TGraph *gc = new TGraph();" << endl; double hc=0; hc=(c2-c1)/nc; for(int i=0;i<=nc;i++) { double costh_CS = i*hc+c1; if (cuts(costh, m, qt, y, 0., 0., costh_CS)) cf << "gc->SetPoint(gc->GetN(), " << i*hc+c1 << ", " << resumm_(costh_CS,m,qt,y) << ");" << endl; else cf << "gc->SetPoint(gc->GetN(), " << i*hc+c1 << ", " << 0 << ");" << endl; } cf << "gc->Draw();" << endl; cf << "}" << endl; } */ //pt line plot void ptline() { double costh = 0.; //double m = (phasespace::mmin + phasespace::mmax)/2.; double m = opts.rmass; double qt = 5.; double y = 0.0; int mode = 1; double f[opts.totpdf]; /* phasespace::setbounds(phasespace::mmin, phasespace::mmax, 0, 100, phasespace::ymin, phasespace::ymax); cacheyrapint_(phasespace::ymin, phasespace::ymax); if (mode >= 2) if (opts.resumcpp) { rapint::cache(phasespace::ymin, phasespace::ymax); rapint::allocate(); rapint::integrate(phasespace::ymin,phasespace::ymax,m); } */ double p1 = 1; double p2 = 100; int np = 99; ofstream pf("ptline.C"); pf << std::setprecision(15); pf << "{" << endl; pf << "TGraph *gp = new TGraph();" << endl; pf << "TGraph *gp1 = new TGraph();" << endl; pf << "TGraph *gp2 = new TGraph();" << endl; double hp=(p2-p1)/np; for(int i=0;i<=np;i++) { double qt = i*hp+p1; phasespace::set_mqtyphi(m, qt, y);//set global variables to costh, m, qt, y phasespace::set_cth(costh);//set global variables to costh, m, qt, y phasespace::calcexpy(); phasespace::calcmt(); omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 // double vj = vjint::vint(m,qt,y); //pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << resumm_(costh,m,qt,y,mode) << ");" << endl; //phasespace::setbounds(phasespace::mmin, phasespace::mmax, 0, qt, phasespace::ymin, phasespace::ymax); pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << resint::rint(costh,m,qt,y,mode) << ");" << endl; //pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << vjint::vint(m,qt,y) << ");" << endl; /* pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << vjfo_(m,qt,y)+ctint_(costh,m,qt,y,mode,f)*2*qt << ");" << endl; pf << "gp1->SetPoint(gp1->GetN(), " << i*hp+p1 << ", " << -ctint_(costh,m,qt,y,mode,f)*2*qt << ");" << endl; pf << "gp2->SetPoint(gp2->GetN(), " << i*hp+p1 << ", " << vjfo_(m,qt,y) << ");" << endl;*/ // dofill_.doFill_ = 1; // qtint::calc(m,qt,0,1); // omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 // mode = 1; // ctint::calc(costh,m,qt,y,mode,f); // cout << qt << " " << vj << " " << f[0]*2*qt << endl; //pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << (f[0]*2*qt)+vj << ");" << endl; // pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << (f[0]*2*qt)/vj << ");" << endl; } pf << "gp->Draw();" << endl; pf << "//gp1->Draw();" << endl; pf << "//gp2->Draw(\"same\");" << endl; pf << "}" << endl; } void ptomline() { double costh = 0.; //double m = (phasespace::mmin + phasespace::mmax)/2.; double m = opts.rmass; double qt = 5.; double y = 0.0; int mode = 2; double f[opts.totpdf]; double p1 = 0.01; double p2 = 0.5; int np = 49; ofstream pf("ptomline.C"); pf << std::setprecision(15); pf << "{" << endl; pf << "TGraph *gp = new TGraph();" << endl; pf << "TGraph *gp1 = new TGraph();" << endl; pf << "TGraph *gp2 = new TGraph();" << endl; double hp=(p2-p1)/np; for(int i=0;i<=np;i++) { double qt; //phasespace::setbounds(phasespace::mmin, phasespace::mmax, 0, qt, phasespace::ymin, phasespace::ymax); opts.nproc = 3; dyres::init(); mcfm::init(); iniflavreduce_(); //need to call this after nproc_.nproc_ is set prop::init(); //Initialise mass and width used in the propagator mesq::init(); //EW couplings for born amplitudes vjint::init(); vjloint::init(); m = opts.rmass; qt = (i*hp+p1)*m; phasespace::set_mqtyphi(m, qt, y);//set global variables to costh, m, qt, y phasespace::set_cth(costh);//set global variables to costh, m, qt, y phasespace::calcexpy(); phasespace::calcmt(); omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 phasespace::setbounds(phasespace::mmin, phasespace::mmax, 0, 100, phasespace::ymin, phasespace::ymax); cacheyrapint_(phasespace::ymin, phasespace::ymax); if (mode >= 2) if (opts.resumcpp) { rapint::cache(phasespace::ymin, phasespace::ymax); rapint::allocate(); rapint::integrate(phasespace::ymin,phasespace::ymax,m); } double z = resint::rint(costh,m,qt,y,mode); //double z = vjint::vint(m,qt,y); opts.nproc = 1; dyres::init(); mcfm::init(); iniflavreduce_(); //need to call this after nproc_.nproc_ is set prop::init(); //Initialise mass and width used in the propagator mesq::init(); //EW couplings for born amplitudes vjint::init(); vjloint::init(); m = opts.rmass; qt = (i*hp+p1)*m; phasespace::set_mqtyphi(m, qt, y);//set global variables to costh, m, qt, y phasespace::set_cth(costh);//set global variables to costh, m, qt, y phasespace::calcexpy(); phasespace::calcmt(); omegaintegr::genV4p();//generate boson 4-momentum, with m, qt, y and phi=0 phasespace::setbounds(phasespace::mmin, phasespace::mmax, 0, 100, phasespace::ymin, phasespace::ymax); cacheyrapint_(phasespace::ymin, phasespace::ymax); if (mode >= 2) if (opts.resumcpp) { rapint::cache(phasespace::ymin, phasespace::ymax); rapint::allocate(); rapint::integrate(phasespace::ymin,phasespace::ymax,m); } double wp = resint::rint(costh,m,qt,y,mode); //double wp = vjint::vint(m,qt,y); cout << i*hp+p1 << " " << wp << " " << z << endl; pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << wp/z << ");" << endl; } pf << "gp->Draw();" << endl; pf << "//gp1->Draw();" << endl; pf << "//gp2->Draw(\"same\");" << endl; pf << "}" << endl; } //lines for finite order part //lines /* //mass line costh = 0.; m = 91; qt = 5; y = 0.0; zcth = 0.5; mjj = 0.1; costhjj = 0.1; phijj = 0.1; double mm1 = 20; double mm2 = 200; int nm = 2000; ofstream mf("mline.C"); mf << "{" << endl; mf << "TGraph *gm = new TGraph();" << endl; double hm=(mm2-mm1)/nm; for(int i=0;i<=nm;i++) { double m = i*hm+mm1; mf << "gm->SetPoint(gm->GetN(), " << i*hm+mm1 << ", " << dyreal(m, y, qt, 0., 0., costh, zcth, mjj, costhjj, phijj) << ");" << endl; } mf << "gm->Draw();" << endl; mf << "}" << endl; //pt line costh = 0.; m = 91; qt = 5; y = 0.0; zcth = 0.; mjj = 0.1; costhjj = 0.1; phijj = 0.1; double p1 = 0.0; double p2 = 100; int np = 2000; ofstream pf("ptline.C"); pf << "{" << endl; pf << "TGraph *gp = new TGraph();" << endl; double hp=(p2-p1)/np; for(int i=0;i<=np;i++) { double qt = i*hp+p1; pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << dyreal(m, y, qt, 0., 0., costh, zcth, mjj, costhjj, phijj) << ");" << endl; } pf << "gp->Draw();" << endl; pf << "}" << endl; //mjj line costh = 0.; m = 91; qt = 5; y = 0.0; zcth = 0.; mjj = 0.1; costhjj = 0.; phijj = 0.; double mj1 = 0.0; double mj2 = 7000; int nmj = 2000; ofstream mjf("mjjline.C"); mjf << "{" << endl; mjf << "TGraph *gmj = new TGraph();" << endl; double hmj=(mj2-mj1)/nmj; for(int i=0;i<=nmj;i++) { double mjj = i*hmj+mj1; mjf << "gmj->SetPoint(gmj->GetN(), " << i*hmj+mj1 << ", " << dyreal(m, y, qt, 0., 0., costh, zcth, mjj, costhjj, phijj) << ");" << endl; } mjf << "gmj->Draw();" << endl; mjf << "}" << endl; //cjj line costh = 0.; m = 91; qt = 5; y = 0.0; zcth = 0.; mjj = 0.1; costhjj = 0.; phijj = 0.; double cj1 = 0.0; double cj2 = 1.0; int ncj = 2000; ofstream cjf("costhjjline.C"); cjf << "{" << endl; cjf << "TGraph *gcj = new TGraph();" << endl; double hcj=(cj2-cj1)/ncj; for(int i=0;i<=ncj;i++) { double costhjj = i*hcj+cj1; cjf << "gcj->SetPoint(gcj->GetN(), " << i*hcj+cj1 << ", " << dyreal(m, y, qt, 0., 0., costh, zcth, mjj, costhjj, phijj) << ");" << endl; } cjf << "gcj->Draw();" << endl; cjf << "}" << endl; //mass line costh = 0.; m = 91; qt = 5; y = 0.0; beta = 0.1; //2 dimensions for the counterterm alpha = 0.1; double mm1 = 20; double mm2 = 200; int nm = 2000; ofstream mf("mline.C"); mf << "{" << endl; mf << "TGraph *gm = new TGraph();" << endl; double hm=(mm2-mm1)/nm; for(int i=0;i<=nm;i++) { double m = i*hm+mm1; mf << "gm->SetPoint(gm->GetN(), " << i*hm+mm1 << ", " << dyct(m, y, qt, 0., 0., costh, alpha, beta) << ");" << endl; } mf << "gm->Draw();" << endl; mf << "}" << endl; //pt line costh = 0.; m = 91; qt = 5; y = 0.0; beta = 0.5; //2 dimensions for the counterterm alpha = 0.5; double p1 = 0.0; double p2 = 100; int np = 1998; ofstream pf("ptline.C"); pf << "{" << endl; pf << "TGraph *gp = new TGraph();" << endl; double hp=(p2-p1)/np; for(int i=0;i<=np;i++) { double qt = i*hp+p1; pf << "gp->SetPoint(gp->GetN(), " << i*hp+p1 << ", " << dyct(m, y, qt, 0., 0., costh, alpha, beta) << ");" << endl; } pf << "gp->Draw();" << endl; pf << "}" << endl; //y line costh = 0.; m = 91; qt = 5.0; y = 0.0; beta = 0.5; //2 dimensions for the counterterm alpha = 0.5; double y1 = 0.0; double y2 = 5.; int ny = 2000; ofstream yf("yline.C"); yf << "{" << endl; yf << "TGraph *gy = new TGraph();" << endl; double hy=(y2-y1)/ny; for(int i=0;i<=ny;i++) { double y = i*hy+y1; yf << "gy->SetPoint(gy->GetN(), " << i*hy+y1 << ", " << dyct(m, y, qt, 0., 0., costh, alpha, beta) << ");" << endl; } yf << "gy->Draw();" << endl; yf << "}" << endl; //costh line costh = 0.; m = 91; qt = 5.0; y = 0.0; beta = 0.5; //2 dimensions for the counterterm alpha = 0.5; double c1 = -1.0; double c2 = 1.; int nc = 2000; ofstream cf("cline.C"); cf << "{" << endl; cf << "TGraph *gc = new TGraph();" << endl; double hc=(c2-c1)/nc; for(int i=0;i<=nc;i++) { double costh = i*hc+c1; cf << "gc->SetPoint(gc->GetN(), " << i*hc+c1 << ", " << dyct(m, y, qt, 0., 0., costh, alpha, beta) << ");" << endl; } cf << "gc->Draw();" << endl; cf << "}" << endl; //alpha line costh = 0.; m = 91; qt = 5; y = 0.0; beta = 0.; //2 dimensions for the counterterm alpha = 0.; double a1 = 0.0; double a2 = 1.0; int na = 2000; ofstream af("aline.C"); af << "{" << endl; af << "TGraph *ga = new TGraph();" << endl; double ha=(a2-a1)/na; for(int i=0;i<=na;i++) { double alpha = i*ha+a1; af << "ga->SetPoint(ga->GetN(), " << i*ha+a1 << ", " << dyct(m, y, qt, 0., 0., costh, alpha, beta) << ");" << endl; } af << "ga->Draw();" << endl; af << "}" << endl; //beta line costh = 0.; m = 91; qt = 5; y = 0.0; beta = 0.; //2 dimensions for the counterterm alpha = 0.; double b1 = 0.0; double b2 = 1.0; int nb = 2000; ofstream bf("bline.C"); bf << "{" << endl; bf << "TGraph *gb = new TGraph();" << endl; double hb=(b2-b1)/nb; for(int i=0;i<=nb;i++) { double beta = i*hb+b1; bf << "gb->SetPoint(gb->GetN(), " << i*hb+b1 << ", " << dyct(m, y, qt, 0., 0., costh, alpha, beta) << ");" << endl; } bf << "gb->Draw();" << endl; bf << "}" << endl; */ /* //DEquadrature FunctResm fm; int evaluations; double errorEstimate; std::cout << std::setprecision(15); std::cout << "Start integration" << std::endl; result = DEIntegrator<FunctResm>::Integrate(fm, a, b, 10, evaluations, err); std::cout << integral << ", " << errorEstimate << ", " << evaluations << "\n"; */ /* //GSL size_t limit = 1000; gsl_integration_workspace * gslw = gsl_integration_workspace_alloc (limit); gsl_function gslfm; gslfm.function = &resm; gsl_integration_qag(&gslfm, a, b, 0, 1E-5, limit, 1, gslw, &result, &err); //size_t neval; //gsl_integration_qng (&gslfm, a, b, 0, 0.1, &result, &err, &neval); */ /* //trapezoidal rule int n = 30; double h,r=0; h=(b-a)/n; for(int i=1;i<n;i++) r=(2*resm(i*h+a, NULL))+r; result=(h/2)*(resm(a, NULL)+resm(b, NULL)+r); */ /* begin_time = clock(); //Integrate qt = 5; setcthmqty(costh,m,qt,y); double a = 66; double b = 116; double result = 0; double err = 0; double pta = 0; double ptb = 30; int n = 120; double h,r=0; h=(ptb-pta)/n; for(int i=1;i<=n;i++) { setqt(i*h+pta); //cos theta integral //GSL a = -1; b = +1; size_t limit = 1000; gsl_integration_workspace * gslw = gsl_integration_workspace_alloc (limit); gsl_function gslfth; gslfth.function = &resth; begin_time = clock(); gsl_integration_qag(&gslfth, a, b, 0, 1E-2, limit, 1, gslw, &result, &err); //size_t neval; //gsl_integration_qng (&gslfth, a, b, 0, 1E-3, &result, &err, &neval); end_time = clock(); cout << "pt " << i*h+pta << " " << result << " " << err << endl; cout << "time " << float( end_time - begin_time ) / CLOCKS_PER_SEC << endl; } */ //rapidity integral /* //GSL a = 0; b = 5; size_t limit = 1000; gsl_integration_workspace * gslw = gsl_integration_workspace_alloc (limit); gsl_function gslfy; gslfy.function = &resy; gsl_integration_qag(&gslfy, a, b, 0, 1E-1, limit, 1, gslw, &result, &err); end_time = clock(); cout << result << " " << err << endl; cout << "time " << float( end_time - begin_time ) / CLOCKS_PER_SEC << endl; */ diff --git a/test/points.C b/test/points.C index 5786e19..bccdc2b 100644 --- a/test/points.C +++ b/test/points.C @@ -1,182 +1,182 @@ #include "config.h" #include "src/dyturbo.h" #include "src/omegaintegr.h" #include "src/settings.h" #include "src/interface.h" #include "phasespace.h" #include "resintegr.h" #include "ctintegr.h" #include "finintegr.h" #include "bornintegr.h" #include "finitemapping.h" #include "resint.h" #include "rapint.h" #include "ctint.h" #include "qtint.h" #include "vjint.h" #include <iostream> #include <iomanip> using namespace std; #include "lines.C" void test_resum_speed(double costh,double m,double qt,double y,int mode); void test_ct_speed(double costh,double m,double qt,double y,int mode); int main( int argc , char * argv[]) { double begin_time, end_time; /***********************************/ //Initialization try { DYTurbo::Init(argc,argv); } catch (QuitProgram &e) { // print help and die printf("%s \n",e.what()); return 0; } /***********************************/ /***********************************/ //Initialization ///@todo: print out EW parameters and other settings // just a check opts.dumpAll(); DYTurbo::PrintTable::Settings(); /***********************************/ double costh, m, qt, y; // std::cout << std::setprecision(15); int mode = 0; /*****************************************/ //If using the DYRES approximation for PDFs, make sure that the PDF fit is initialised in the same way //Need to throw a random point according to a breit wigner, which is used to determine xtauf in the PDF fit if (opts_.approxpdf_ == 1) { srand(opts.rseed); double wsqmin = pow(phasespace::mmin,2); double wsqmax = pow(phasespace::mmax,2); double x1=((double)rand()/(double)RAND_MAX); double m2,wt; breitw_(x1,wsqmin,wsqmax,opts.rmass,opts.rwidth,m2,wt); cout << "Initialise PDF fit with mass = " << sqrt(m2) << " xtauf = " << m2 / opts.sroot << endl; costh = 0.; m = sqrt(m2); qt = 1; y = 0; test_resum_speed(costh,m,qt,y,mode); } /****************************************/ /**************************************/ //Checks for resummed cross section cout << "To match the numbers between fortran and C++ set:" << endl; cout << "mellinrule = 64 #number of nodes" << endl; cout << "zmax = 27. #upper" << endl; cout << "cpoint = 1 " << endl; cout << "mellin1d = false " << endl; cout << "bintaccuracy = 1.0e-2 #accuracy" << endl; cout << endl; // std::cout << std::setprecision(15); costh = 0.; m = opts.rmass; qt = 1; y = 0; test_resum_speed(costh,m,qt,y,mode); costh = 0.1; m = 91; qt = 5; y = 0.2; test_resum_speed(costh,m,qt,y,mode); costh = 0.5; m = 70; qt = 10; y = 1.5; test_resum_speed(costh,m,qt,y,mode); costh = -1.0; m = 110; qt = 20; y = -2.5; test_resum_speed(costh,m,qt,y,mode); costh = 0.1; m = 91; qt = 5; y = 3.5; test_resum_speed(costh,m,qt,y,mode); costh = 0.1; m = 91; qt = 5; y = 4.0; test_resum_speed(costh,m,qt,y,mode); costh = 0.1; m = 91; qt = 5; y = 0.2; test_resum_speed(costh,m,qt,y,mode); costh = 0.1; m = 91; qt = 5; y = 0.2; test_ct_speed(costh,m,qt,y,mode); //costhline(); //ptline(); //ptomline(); //yline(); - mline(); + //mline(); //mlinebw(); - //xline(); + xline(); //ptavar(); //ptgvar(); /**************************************/ //Checks for finite order cross section //born level variables (6 dimensions) //double m, qt, y, costh; double phicm, phiZ; costh = 0.0; m = 91.1876; qt = 5.; y = 0.5; phicm = 0.0; phiZ = 0.; //variables to be integrated (4 dimensions in total) //1 collinear PDF dimension, common to real, virtual and lowint double zcth; zcth = 0.5; //polar angle of Z in the CM frame //3 dimensions of real radiation double mjj, phijj, costhjj; mjj = 10.; //invariant mass of the dijet (set to 0 to have the correct virtual phase space mapping) phijj = 0.3; //phi of the dijet in dijet rest frame costhjj = 0.1;//costh of the dijet in dijet rest frame //1 dimension of virtual double vz; vz = sqrt(0.95); //2 dimensions for the counterterm double alpha,beta; beta = 0.1; alpha = 0.1; return 0; //call function wrappers, which map the variables into the unity hypercube of the vegas integration cout << " check phase space mapping " << endl; dyreal(m, y, qt, phicm, phiZ, costh, zcth, mjj, costhjj, phijj); dyvirt(m, y, qt, phicm, phiZ, costh, zcth, vz); dyct(m, y, qt, phicm, phiZ, costh, alpha, beta); /**************************************/ return 0; } void test_resum_speed(double costh,double m,double qt,double y,int mode){ double begin_time, end_time; double value; begin_time = clock_real(); double mcosth=-costh; value = resumm_(mcosth,m,qt,y,mode); end_time = clock_real(); cout << setw(10) << "Result" << setw(10) << "(fortran)" << setw(15) << value << setw(10) << "time " << setw(15) << float(end_time - begin_time) << "s" << endl; begin_time = clock_real(); value = resint::rint(costh,m,qt,y,mode); end_time = clock_real(); cout << setw(10) << "Result" << setw(10) << "(C++)" << setw(15) << value << setw(10) << "time " << setw(15) << float(end_time - begin_time) << "s" << endl; return; } void test_ct_speed(double costh,double m,double qt,double y,int mode){ double begin_time, end_time; double value; begin_time = clock_real(); double f[opts.totpdf]; double weight=1.; value = ctint_(costh,m,qt,y,mode,f); end_time = clock_real(); cout << setw(10) << "Result" << setw(15) << value << setw(10) << "time " << setw(15) << float(end_time - begin_time) << "s" << endl; return; }