Пример #1
0
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;
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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]);
    }


}
Пример #5
0
//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();
	}
	
}
Пример #6
0
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();
}
Пример #7
0
// 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();
}
Пример #8
0
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]={};


}