//===== Interpolate Creates piecewise linear curves ===// void VspCurve::InterpolateLinear( vector< vec3d > & input_pnt_vec, const vector<double> ¶m, bool closed_flag ) { // do some checking of vector lengths if ( closed_flag ) { if ( param.size() != ( input_pnt_vec.size() + 1 ) ) { std::cerr << "Invalid number of points and parameters in curve interpolation " << __LINE__ << std::endl; assert( false ); return; } } else { if ( param.size() != input_pnt_vec.size() ) { std::cerr << "Invalid number of points and parameters in curve interpolation " << __LINE__ << std::endl; assert( false ); return; } } // copy points over to new type vector<curve_point_type> pts( input_pnt_vec.size() ); for ( size_t i = 0; i < pts.size(); ++i ) { pts[i] << input_pnt_vec[i].x(), input_pnt_vec[i].y(), input_pnt_vec[i].z(); } if ( closed_flag ) { pts.push_back( pts[0] ); } int nseg( pts.size() - 1 ); piecewise_linear_creator_type plc( nseg ); // set the delta t for each curve segment plc.set_t0( param[0] ); for ( curve_index_type i = 0; i < plc.get_number_segments(); ++i ) { plc.set_segment_dt( param[i + 1] - param[i], i ); } // set the polygon corners for ( curve_index_type i = 0; i < static_cast<curve_index_type>( pts.size() ); ++i ) { plc.set_corner( pts[i], i ); } if ( !plc.create( m_Curve ) ) { std::cerr << "Failed to create linear curve. " << __LINE__ << std::endl; } }
void PolygonClipTask::clipLine(std::size_t k, std::size_t size) { std::size_t _crossCount = 0; //相交数 std::size_t _crossPointCount = 0; //相交交点数 std::size_t _noCrossCount = 0; //无交点数 std::size_t _insideCount = 0; //界内数 std::size_t _outsiedCount = 0; //界外数 ClipLineResult lineResult; auto end = k + size; for (std::size_t i = k; i < end; ++i) { Point sp = lines[i].startpoint; Point ep = lines[i].endpoint; PolygonLineClip plc(&boundary, &lines[i]); plc.GetClipResult(lineResult); _crossPointCount += lineResult.intersection.size(); if (lineResult.relation == Inside)//线在内部 { Drawer::DrawLine3(memoryBitmap_, std::uint32_t(lines[i].startpoint.x), std::uint32_t(lines[i].startpoint.y), std::uint32_t(lines[i].endpoint.x), std::uint32_t(lines[i].endpoint.y), MemoryBitmap::kGreenColor); _noCrossCount++; _insideCount++; } else if (lineResult.relation == Intersect)//x相交 { _crossCount++; for (std::size_t j = 0; j < lineResult.linesClipped.size(); j++) { Drawer::DrawLine3(memoryBitmap_, std::uint32_t(lineResult.linesClipped[j].startPoint.x), std::uint32_t(lineResult.linesClipped[j].startPoint.y), std::uint32_t(lineResult.linesClipped[j].endPoint.x), std::uint32_t(lineResult.linesClipped[j].endPoint.y), MemoryBitmap::kGreenColor); } } else//线在外部 { _noCrossCount++; _outsiedCount++; } } std::lock_guard<std::mutex> lock(drawMutex_); crossCount += _crossCount; crossPointCount += _crossPointCount; noCrossCount += _noCrossCount; insideCount += _insideCount; outsiedCount += _outsiedCount; }
void gfx_player_begin_incantation(t_ctrl *c, t_player *p) { t_jm_list *l; int *ids; if ((ids = calloc(get_nb_players(c, p->x, p->y, p->lvl) + 1, sizeof(*ids)))) { _fill_ids(c, p, ids); l = c->l; while (l) { if (l->fd != -1 && l->data && ((t_handler *)l->data)->t == GFX) plc(l, p, ids); l = l->next; } free(ids); } }
double RunHypoTest(char *smwwFileName, char *ttbarFileName, char *wp3jetsFileName, char *wp4jetsFileName, char *opsFileName, char *outputFileName, double lambda) { TFile *smwwFile = new TFile(smwwFileName); TFile *ttbarFile = new TFile(ttbarFileName); TFile *wp3jetsFile = new TFile(wp3jetsFileName); TFile *wp4jetsFile = new TFile(wp4jetsFileName); TFile *opsFile = new TFile(opsFileName); TFile *outputFile = new TFile(outputFileName, "UPDATE"); TH1F *smww = (TH1F*)smwwFile->Get(WW_MASS_HISTOGRAM_NAME); TH1F *ttbar = (TH1F*)ttbarFile->Get(WW_MASS_HISTOGRAM_NAME); TH1F *wp3jets = (TH1F*)wp3jetsFile->Get(WW_MASS_HISTOGRAM_NAME); TH1F *wp4jets = (TH1F*)wp4jetsFile->Get(WW_MASS_HISTOGRAM_NAME); //Histogram of ww-scattering with effective operator contributions TH1F *ops = (TH1F*)opsFile->Get(WW_MASS_HISTOGRAM_NAME); RooRealVar *mww = new RooRealVar("mww", "M_{WW}", 600, 2500, "GeV"); RooDataHist smData("smData", "smData", RooArgList(*mww), smww); RooDataHist opsData("opsData", "opsData", RooArgList(*mww), ops); RooDataHist ttbarData("ttbarData", "ttbarData", RooArgList(*mww), ttbar); RooDataHist wp3jetsData("wp3jetsData", "wp3jetsData", RooArgList(*mww), wp3jets); RooDataHist wp4jetsData("wp4jetsData", "wp4jetsData", RooArgList(*mww), wp4jets); /* RooAbsPdf *opsModel; if (lambda == 400) { opsModel = SpecialCaseModel(&opsData, mww, (char*)"ops"); } else { opsModel = MakeModel(&opsData, mww, (char*)"ops"); }*/ RooAbsPdf *opsModel = MakeModel(&opsData, mww, (char*)"ops"); //RooPlot *xframe = mww->frame(); //opsData.plotOn(xframe); //opsModel->plotOn(xframe); //printf("Chi-squared for lambda = %f: = %f\n", lambda, xframe->chiSquare("opsModel", "opsData", 3)); RooAbsPdf *smModel = MakeModelNoSignal(&smData, mww, (char*)"sm"); RooAbsPdf *ttbarModel = MakeModelNoSignal(&ttbarData, mww, (char*)"ttbar"); RooAbsPdf *wp3jetsModel = MakeModelNoSignal(&wp3jetsData, mww, (char*)"wp3jets"); RooAbsPdf *wp4jetsModel = MakeModelNoSignal(&wp4jetsData, mww, (char*)"wp4jets"); TCanvas *canvas = new TCanvas(opsFileName); RooPlot *frame = mww->frame(); frame->SetTitle(""); //smData.plotOn(frame, RooFit::LineColor(kBlack), RooFit::Name("smData")); //smModel->plotOn(frame, RooFit::LineColor(kBlue), RooFit::Name("smModel")); //ttbarModel->plotOn(frame, RooFit::LineColor(kRed), RooFit::Name("ttbarModel")); //wp3jetsModel->plotOn(frame, RooFit::LineColor(kYellow), RooFit::Name("wpjetsModel")); opsData.plotOn(frame); opsModel->plotOn(frame, RooFit::LineColor(kBlue), RooFit::Name("opsModel")); //leg->AddEntry(frame->findObject("smModel"), "SM Model", "lep"); //leg->AddEntry(frame->findObject("ttbarModel"), "TTBar Model", "lep"); //leg->AddEntry(frame->findObject("wp3jetsModel"), "WP3Jets Model", "lep"); //leg->AddEntry(frame->findObject("opsModel"), "Effective Operator Model", "lep"); frame->Draw(); canvas->Write(); Double_t ww_x = WW_CROSS_SECTION * smww->GetEntries(); Double_t ttbar_x = TTBAR_CROSS_SECTION * ttbar->GetEntries(); Double_t wp3jets_x = WP3JETS_CROSS_SECTION * wp3jets->GetEntries(); Double_t wp4jets_x = WP4JETS_CROSS_SECTION * wp4jets->GetEntries(); Double_t ttbar_weight = ttbar_x/(ttbar_x + wp3jets_x + wp4jets_x + ww_x); Double_t wp3jets_weight = wp3jets_x/(wp3jets_x + ttbar_x + ww_x); Double_t wp4jets_weight = wp4jets_x/(wp4jets_x + ttbar_x + ww_x); RooRealVar *ttbarWeight = new RooRealVar("ttbarWeight", "ttbarWeight", 0.0, 1.0, ttbar_weight); RooRealVar *wp3jetsWeight = new RooRealVar("wp3jetsWeight", "wp3jetsWeight", 0.0, 1.0, wp3jets_weight); RooRealVar *wp4jetsWeight = new RooRealVar("wp4jetsWeight", "wp4jetsWeight", 0.0, 1.0, wp4jets_weight); ttbarWeight->setConstant(); wp3jetsWeight->setConstant(); wp4jetsWeight->setConstant(); RooRealVar *mu = new RooRealVar("mu", "mu", 0.0, 1.0, ""); RooAddPdf *wwModel = new RooAddPdf("wwModel", "u*effective_ww + (1-u)*SM_WW", RooArgList(*opsModel, *smModel), RooArgList(*mu), kTRUE); RooAddPdf *model = new RooAddPdf("model", "Full model", RooArgList(*ttbarModel, *wp3jetsModel, *wp4jetsModel, *wwModel), RooArgList(*ttbarWeight, *wp3jetsWeight, *wp4jetsWeight), kTRUE); //Generate data under the alternate hypothesis mu->setVal(1.0); int nTestSetEvents = WW_CROSS_SECTION * TOTAL_INTEGRATED_LUMINOSITY; RooAbsData *generatedData = model->generate(*mww, nTestSetEvents); TCanvas *canvas2 = new TCanvas("CombinedModels"); RooPlot *frame2 = mww->frame(); //wwModel->plotOn(frame2, RooFit::LineColor(kRed), RooFit::Name("wwModel")); //generatedData->plotOn(frame2); mu->setVal(0.0); model->plotOn(frame2, RooFit::LineColor(kBlue), RooFit::Name("nullModel")); mu->setVal(1.0); model->plotOn(frame2, RooFit::LineColor(kRed), RooFit::Name("altModel")); TLegend *leg2 = new TLegend(0.65,0.73,0.86,0.87); //leg->AddEntry(frame2->findObject("wwModel"), "SM WW Scattering model with background", // "lep"); leg2->AddEntry(frame2->findObject("nullModel"), "SM + Background", "lep"); leg2->AddEntry(frame2->findObject("altModel"), "Effective Operator + Background", "lep"); frame2->SetTitle(""); frame2->GetXaxis()->SetTitle("M_{WW} (GeV)"); frame2->GetYaxis()->SetTitle(""); frame2->Draw(); leg2->Draw(); canvas2->Write(); outputFile->Close(); RooArgSet poi(*mu); RooArgSet *nullParams = (RooArgSet*) poi.snapshot(); nullParams->setRealValue("mu", 0.0); RooStats::ProfileLikelihoodCalculator plc(*generatedData, *model, poi, 0.05, nullParams); RooStats::HypoTestResult* htr = plc.GetHypoTest(); std::cerr << "P Value = " << htr->NullPValue() << "\n"; return htr->Significance(); }