double dTr(double x,double a) { double left_fac, right_fac; double norm, xi,res; xi = (x-a) / scaleH(a); // norm = planet.eps * a*M_PI*(planet.mp*params.mth)*(planet.mp*params.mth); norm = planet.eps * (planet.mp*params.mth)*(planet.mp*params.mth)/2.; if (planet.symmetric_torque) { right_fac = norm*pow(a/fmax(scaleH(x),fabs(x-a)),4); } else { right_fac = norm*pow(x/fmax(scaleH(x),fabs(x-a)),4); } left_fac = -norm*pow(x/fmax(scaleH(x),fabs(x-a)),4); left_fac *= (1-smoothing(xi, -planet.c, planet.delta)); right_fac *= smoothing(xi,-planet.c, planet.delta)*smoothing(xi,planet.c,planet.delta); res = left_fac*(1-planet.onesided) + right_fac; return res; }
float Perlin::generateInterpolateNoise(float x, float y) { int xint = x * 64.0f; int yint = y * 64.0f; float v1 = smoothing(xint, yint); float v2 = smoothing(xint + 1, yint); float v3 = smoothing(xint, yint + 1); float v4 = smoothing(xint + 1, yint + 1); float i1 = interpolate(v1, v2, x); float i2 = interpolate(v3, v4, x); return interpolate(i1, i2, y); }
CGMainWindow::CGMainWindow (QWidget* parent, Qt::WindowFlags flags) : QMainWindow (parent, flags) { resize (604, 614); // Create a nice frame to put around the OpenGL widget QFrame* f = new QFrame (this); f->setFrameStyle(QFrame::Sunken | QFrame::Panel); f->setLineWidth(2); // Create our OpenGL widget ogl = new MyTorus (this,f); // Create a menu QMenu *file = new QMenu("&Draw Methode",this); file->addAction ("&Wireframe", this->ogl, SLOT(drawWireFrame()), Qt::CTRL+Qt::Key_W); file->addAction ("&Flat-Shading",this->ogl,SLOT(flating()),Qt::CTRL+Qt::Key_F ), file->addAction ("&exact Smooth-Shading", this->ogl, SLOT(exactSmoothing()), Qt::CTRL+Qt::Key_S+Qt::Key_E); file->addAction ("&Smooth-Shading", this->ogl, SLOT(smoothing()), Qt::CTRL+Qt::Key_S); file->addAction ("Quit", qApp, SLOT(quit()), Qt::CTRL+Qt::Key_Q); QMenu *colMenu = new QMenu("&Color",this); colMenu->addAction ("&Kupfer", this->ogl, SLOT(setKupfer()), Qt::CTRL+Qt::Key_K); colMenu->addAction ("&Rubin",this->ogl,SLOT(setRubin()),Qt::CTRL+Qt::Key_R ), colMenu->addAction ("&Smaragd", this->ogl, SLOT(setSmaragd()), Qt::CTRL+Qt::Key_M); colMenu->addAction ("&Silber", this->ogl, SLOT(setSilber()), Qt::CTRL+Qt::Key_I); menuBar()->addMenu(file); menuBar()->addMenu(colMenu); // Put the GL widget inside the frame QHBoxLayout* layout = new QHBoxLayout(); layout->addWidget(ogl); layout->setMargin(0); f->setLayout(layout); setCentralWidget(f); statusBar()->showMessage("Ready",1000); }
void EdgeDetector::canny(Mat src,vector<Mat> &dst,vector<double> lower,vector<double> higher,int aperture) { Mat fmag,fori,disp; s=Size(src.cols,src.rows); smoothing(src,src,aperture); if(src.channels()>1) colorGradient(src,fmag,fori,aperture); else { Mat dx,dy; //computing gradients along x and y direction cv::Sobel(src,dx,CV_32F,1,0,aperture,1, 0, cv::BORDER_REPLICATE); cv::Sobel(src,dy,CV_32F,0,1,aperture,1, 0, cv::BORDER_REPLICATE); //compute magnitude and orientation of gradient cv::cartToPolar(dx,dy,fmag,fori,true); } //perform non maxima suppression nonMaxima(fmag,fori); Mat hout; dst.resize(lower.size()); for(int i=0;i<lower.size();i++) { //apply lower and higher gradient thresholds cv::threshold(fmag,hout,lower[i],255,CV_THRESH_BINARY); cv::threshold(fmag,lout,higher[i],255,CV_THRESH_BINARY); connectedComponent(hout); _lable.copyTo(dst[i]); } }
//Use circle algorithm for genertaion void HM::make_circle(int round){ //Choose a random point from grid to be the circle center for(int i = round;i>0;i-=1){ Point3D center = height_map[make_rand(map_size)][ make_rand(map_size)]; //Random radius double radius =make_rand(map_size/3)+1; double disp = get_displacement(i); for(int x =0;x< map_size ;x+=1){ for(int y = 0;y< map_size ;y+=1){ double dis = (height_map[x][y] - center).length(); double pd = dis*2/radius; if(fabs(pd)<= 1.0){ height_map[x][y][2] += disp/2+cos(pd* M_PI)*disp/2; } } } smoothing(); } }
void Mesh::optimize(bool topological, int nSmooth) { int i; if (topological) { calcNeigTria(); calcNeigbor(); for (int i = 0; i < 5; i++) smoothing(); deleteVertex(); for(i=0;i<5;i++) smoothing(); mergeVertex(); mergeVertex(); mergeVertex(); for(i=0;i<5;i++) smoothing(); splitVertex(); splitVertex(); splitVertex(); swapEdge(); for(i=0;i<5;i++) smoothing(); swapEdge(); for(i=0;i<5;i++) smoothing(); swapEdge(); for(i=0;i<5;i++) smoothing(); swapEdge(); } for(i=0;i<nSmooth;i++) smoothing(); }
// splits points with more than 7 neibs void Mesh::splitVertex() { for (int i = 0; i < (int)pts.size(); i++){ Vertex &p = pts[i]; int n1 = p.neib.size(); if( n1 <= 7 ) continue; int n2 = n1/2; n1 = n1 - n2; sortNeigbor(i); const Vertex &p2 = pts[p.neib[0]]; // double size = sizeFace(p.x, p.y); double size = Metric::distance(p.x, p.y, p2.x, p2.y); addVertex(p.x+0.1*size, p.y); Vertex &pv = pts.back(); int vert = lastpoint(); pv.neib.push_back(-1); for (const int nei : p.neib) { Vertex &pn = pts[nei]; if (!pn.skip_neib) { pn.neib.clear(); pn.neib.push_back(-1); } } int lab = -1; for(int j = 0; j < n1 - 1; j++) { Triangle &tr = tri[p.neibTria[j]]; if (lab == -1) lab = tr.label; if (lab != tr.label) throw std::logic_error("aniAFT: different materials inside region"); changeTria(p.neibTria[j], p.neib[j+1], p.neib[j], i); } for(int j = n1; j < n1 + n2 - 1; j++) { Triangle &tr = tri[p.neibTria[j]]; if (lab != tr.label) throw std::logic_error("aniAFT: different materials inside region"); changeTria(p.neibTria[j], p.neib[j+1], p.neib[j], vert); } { int it = p.neibTria[n1 - 1]; Triangle &tr = tri[it]; if (lab != tr.label) throw std::logic_error("aniAFT: different materials inside region"); changeTria(it, p.neib[n1-1], i, vert); } { int it = p.neibTria[n1 + n2 - 1]; Triangle &tr = tri[it]; if (lab != tr.label) throw std::logic_error("aniAFT: different materials inside region"); changeTria(it, p.neib[n1], p.neib[n1-1], vert); } addTria(p.neib[n1+n2-1], vert, i, lab); addTria(p.neib[n1+n2-1], i, p.neib[0],lab); } calcNeigTria(); calcNeigbor(); for(int i=0; i<5; i++) smoothing(); }
void make_golfcourse(){ //gROOT->ProcessLine(".L ~/tdrstyle.C"); //setTDRStyle(); double massp[nMass]={200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,288,290,295,300,305,310,315,320,325,330,335,340,345,350,360,370,380,390,400,420,440,460,480,500,540,560,580,600}; //double massp[nMass]={200,250,300,350,400,440,500,540,600}; string mass_str[nMass]; for(int imass=0; imass<nMass; imass++){ stringstream convert; convert << massp[imass]; //cout << convert.str() << endl; mass_str[imass]=convert.str(); //convert.str(); } //string random[nMass]={"25157","26136","8823","8881","15362","23832","14244","15129","22436","20088","27798","16776","27126","8291","23268","9753","15850","9839","28411","10577","31112","5316","14385","20300","24795","16757","27531","19670","3893","8634","22185","2948","29377","14249","32368","21939","20230","15468","30185","30653","22952","18780","13836","23073","29410","26421","25489","16110","11899","10381","7328","20757","29404","8079","18119","6973","32735","19608","23125","14984","11149","4816","31860","11406","26909","5720","28535","4274","683","25647","26663"}; string filename; double limitTemp; double obs_lim_mcmc[nMass]; for(int im=0; im<nMass; im++){ filename = mass_str[im]+"/combine_2l2q_MarkovChainMC_comb_hzz2l2q/higgsCombine2l2q.obs.MarkovChainMC.mH"+mass_str[im]+".TOTAL.root"; cout<<filename.c_str()<<endl; TFile* fTemp = new TFile(filename.c_str()); cout<<"prova1"<<endl; TTree* tTemp = (TTree*) fTemp->Get("limit"); tTemp->SetBranchAddress("limit",&limitTemp); // cout<<"prova2"<<endl; double avg_obs=0.0, nobs=0.0; for(int i=0;i<tTemp->GetEntries();i++){ tTemp->GetEntry(i); nobs++; avg_obs+=limitTemp; } obs_lim_mcmc[im]=avg_obs/nobs; cout << "Observed Limit at " << massp[im] << " is " << obs_lim_mcmc[im] << endl; } for(int im=0;im<nMass;im++){ cout << mass_str[im] << endl; //filename=mass_str[im]+"/combine_2l2q_MarkovChainMC_CMS_hzz2l2q_"+mass_str[im]+"_6channels"+ // "/higgsCombine2l2q.MarkovChainMC.mH"+mass_str[im]+".TOTAL.root"; filename = mass_str[im]+"/combine_2l2q_MarkovChainMC_comb_hzz2l2q/higgsCombine2l2q.exp.MarkovChainMC.mH"+mass_str[im]+".TOTAL.root"; // cout<<"expected for mass "<<mass_str[im].c_str()<<endl; cout<<filename.c_str()<<endl; getSigmaBands(filename); // cout<<"prova3"<<endl; } double medianD[nMass]; double up68err[nMass],down68err[nMass],up95err[nMass],down95err[nMass]; for(int im=0;im<nMass;im++){ medianD[im]=median.at(im); up68err[im]=up68.at(im)-median.at(im); down68err[im]=median.at(im)-down68.at(im); up95err[im]=up95.at(im)-median.at(im); down95err[im]=median.at(im)-down95.at(im); cout<<"----- MASS #"<<im<<" = "<<massp[im] <<"---------"<<endl; cout<<"median "<<obs_lim_mcmc[im]<<endl; cout<<"median "<<medianD[im]<<endl; cout<<"up68 "<<up68err[im]<<endl; cout<<"down68 "<<down68err[im]<<endl; cout<<"up95 "<<up95err[im]<<endl; cout<<"down95 "<<down95err[im]<<endl; } smoothing(medianD,up95err,nMass,true); smoothing(medianD,down95err,nMass,false); smoothing(medianD,up68err,nMass,true); smoothing(medianD,down68err,nMass,false); // cout<<"check smoothened: "<<massp[21]<<" "<<medianD[21]<< " " <<up95err[21]<<endl; const int nMassSel=11; double massSel[nMassSel]={200,220,250,300,350,370,400,440,500,540,600}; double medianDSel[nMassSel]; double up68errSel[nMassSel],down68errSel[nMassSel],up95errSel[nMassSel],down95errSel[nMassSel]; int mInd=0; for(int im=0;im<nMass;im++){ if(massp[im]==massSel[mInd]){ medianDSel[mInd]=medianD[im]; up68errSel[mInd]=up68err[im]; down68errSel[mInd]=down68err[im]; up95errSel[mInd]=up95err[im]; down95errSel[mInd]=down95err[im]; mInd++; } } TGraph *grobslim_pl=new TGraphAsymmErrors(nMass,massp,obs_lim_mcmc); grobslim_pl->SetName("LimitObserved"); TGraph *grmedian_pl=new TGraphAsymmErrors(nMassSel,massSel,medianDSel); grmedian_pl->SetName("LimitMCMCmedian"); TGraphAsymmErrors *gr68_pl=new TGraphAsymmErrors(nMassSel,massSel,medianDSel,0,0,down68errSel,up68errSel); gr68_pl->SetName("LimitMCMC68"); TGraphAsymmErrors *gr95_pl=new TGraphAsymmErrors(nMassSel,massSel,medianDSel,0,0,down95errSel,up95errSel); gr95_pl->SetName("LimitMCMC95"); TGraphAsymmErrors *grthSM=new TGraphAsymmErrors(nMass,massp,medianDSel,0,0,0,0);//ggxs_downerr,ggxs_uperr); grthSM->SetName("SMXSection"); /* TGraph *grmedian_pl=new TGraphAsymmErrors(nMass,massp,medianD); grmedian_pl->SetName("LimitMCMCmedian"); TGraphAsymmErrors *gr68_pl=new TGraphAsymmErrors(nMass,massp,medianD,0,0,down68err,up68err); gr68_pl->SetName("LimitMCMC68"); TGraphAsymmErrors *gr95_pl=new TGraphAsymmErrors(nMass,massp,medianD,0,0,down95err,up95err); gr95_pl->SetName("LimitMCMC95"); */ TCanvas *cMCMC=new TCanvas("c_lim_MCMC","canvas with limits for MCMC",800,800); cMCMC->cd(); cMCMC->SetGridx(1); cMCMC->SetGridy(1); // draw a frame to define the range TH1F *hr = cMCMC->DrawFrame(190.0,0.0,610.0,9.0,"frame1"); hr->SetXTitle("M_{H} [GeV]"); hr->SetYTitle("#sigma_{95%}/#sigma_{SM}"); // cMCMC->GetFrame()->SetFillColor(21); //cMCMC->GetFrame()->SetBorderSize(12); gr95_pl->SetFillColor(kYellow); gr95_pl->SetFillStyle(1001);//solid gr95_pl->GetXaxis()->SetTitle("M_{H} [GeV]"); gr95_pl->GetYaxis()->SetTitle("#sigma_{95%}/#sigma_{SM}"); gr95_pl->GetXaxis()->SetRangeUser(200.0,600.0); // gr95_pl->GetYaxis()->SetRangeUser(0.0,20.); gr95_pl->Draw("3"); gr68_pl->SetFillColor(kGreen); gr68_pl->SetFillStyle(1001);//solid gr68_pl->Draw("3same"); grmedian_pl->GetXaxis()->SetTitle("M_{H} [GeV]"); grmedian_pl->GetYaxis()->SetTitle("#sigma_{95%}/#sigma_{SM}"); grmedian_pl->SetMarkerStyle(24); grmedian_pl->SetMarkerColor(kBlack); grmedian_pl->SetMinimum(0.0); grmedian_pl->SetMaximum(8.0); grmedian_pl->SetLineStyle(2); grmedian_pl->SetLineWidth(2); grobslim_pl->SetMarkerColor(kBlack); grobslim_pl->SetMarkerStyle(21); grobslim_pl->SetLineStyle(1); grobslim_pl->SetLineWidth(1); grthSM->SetLineColor(kRed); grthSM->SetLineWidth(2); grthSM->SetFillColor(kRed); grthSM->SetFillStyle(3344); // grthSM->Draw("L3same"); grmedian_pl->Draw("L"); grobslim_pl->Draw("LP"); TLine *l1=new TLine(); l1->SetLineStyle(1); l1->SetLineWidth(2.0); l1->SetLineColor(kRed); l1->DrawLine(200.0,1.0,600.0,1.0); cMCMC->Update(); // cMCMC->RedrawAxis(""); gPad->RedrawAxis(""); // hr->GetYaxis()->DrawClone(); cMCMC->Update(); TLegend *leg = new TLegend(.35,.71,.90,.90); leg->SetFillColor(0); leg->SetShadowColor(0); leg->SetTextFont(42); leg->SetTextSize(0.03); // leg->SetBorderMode(0); leg->AddEntry(grobslim_pl, "CL_{S} Observed", "LP"); leg->AddEntry(grmedian_pl, "CL_{S} Expected", "L"); leg->AddEntry(gr68_pl, "CL_{S} Expected #pm 1#sigma", "LF"); leg->AddEntry(gr95_pl, "CL_{S} Expected #pm 2#sigma", "LF"); leg->AddEntry(grthSM, "SM", "L");// #rightarrow 2l2q leg->Draw(); TLatex * latex = new TLatex(); latex->SetNDC(); latex->SetTextSize(0.04); latex->SetTextAlign(31); latex->SetTextAlign(11); // align left latex->DrawLatex(0.18, 0.96, "CMS preliminary 2011"); latex->DrawLatex(0.60,0.96,Form("%.1f fb^{-1} at #sqrt{s} = 7 TeV",intLumi)); cMCMC->Update(); // cMCMC->RedrawAxis(""); gPad->RedrawAxis(""); // hr->GetYaxis()->DrawClone(); cMCMC->Update(); // double clsmedian[4]={}; }