// Data void drawFits(std::string file, std::string category){ TFile *fi = TFile::Open(file.c_str()); TH1F dat("dat","dat",1,0,1); dat.SetMarkerSize(1.2); dat.SetMarkerStyle(20); dat.SetMarkerColor(1); dat.SetLineColor(1); dat.SetLineWidth(2); TH1F bkg("bkg","bkg",1,0,1); bkg.SetMarkerSize(1.2); bkg.SetMarkerStyle(kCircle); bkg.SetMarkerColor(1); bkg.SetLineColor(1); bkg.SetLineWidth(2); TH1F bkgfit("bkgfit","bkgfit",1,0,1); bkgfit.SetMarkerSize(1.2); bkgfit.SetMarkerStyle(24); bkgfit.SetMarkerColor(1); bkgfit.SetLineColor(1); bkgfit.SetLineStyle(2); bkgfit.SetLineWidth(2); TH1F datafit("datafit","datafit",1,0,1); datafit.SetMarkerSize(1.2); datafit.SetMarkerStyle(24); datafit.SetMarkerColor(1); datafit.SetLineColor(4); datafit.SetLineStyle(1); datafit.SetLineWidth(2); // MC TH1F mc("mc","mc",1,0,1); mc.SetMarkerSize(1.2); mc.SetMarkerStyle(20); mc.SetMarkerColor(1); mc.SetLineColor(1); mc.SetLineStyle(1); mc.SetLineWidth(2); TH1F mcfit("mcfit","mcfit",1,0,1); mcfit.SetMarkerSize(1.2); mcfit.SetMarkerStyle(24); mcfit.SetMarkerColor(2); mcfit.SetLineColor(2); mcfit.SetLineStyle(1); mcfit.SetLineWidth(2); std::string cats[1] = {category}; gROOT->SetBatch(1); int c = 0; //for (int c=0;c<3;c++){ TLatex *lat = new TLatex(); lat->SetNDC(); lat->SetTextSize(0.04); lat->SetTextFont(42); fi->cd(Form("category_%s",cats[c].c_str())); TLegend *ld = new TLegend(0.5,0.65,0.89,0.89);ld->SetFillColor(0); ld->AddEntry(&dat,"Data","PE1"); ld->AddEntry(&bkg,"Backgrounds","PE1"); ld->AddEntry(&datafit,"Data Fit","L"); ld->AddEntry(&bkgfit,"Backgrounds Fit","L"); singlemuon_datafit->Draw(); singlemuon_datafit->SetTitle(Form("%s category",cats[c].c_str())); lat->DrawLatex(0.7,0.92,Form("%s category",cats[c].c_str())); lat->DrawLatex(0.1,0.92,"#bf{CMS} #it{Preliminary}"); ld->Draw(); singlemuon_datafit->SaveAs(Form("data_singlemuon_%s.pdf",cats[c].c_str())); singlemuon_datafit->SaveAs(Form("data_singlemuon_%s.png",cats[c].c_str())); dimuon_datafit->Draw(); dimuon_datafit->SetTitle(Form("%s category",cats[c].c_str())); lat->DrawLatex(0.7,0.92,Form("%s category",cats[c].c_str())); lat->DrawLatex(0.1,0.92,"#bf{CMS} #it{Preliminary}"); ld->Draw(); dimuon_datafit->SaveAs(Form("data_dimuon_%s.pdf",cats[c].c_str())); dimuon_datafit->SaveAs(Form("data_dimuon_%s.png",cats[c].c_str())); TLegend *lmw = new TLegend(0.5,0.75,0.89,0.89);lmw->SetFillColor(0); lmw->AddEntry(&mc,"W(#mu#nu) + jets MC ","PE1"); lmw->AddEntry(&mcfit,"MC Fit","L"); singlemuon_mcfit->Draw(); singlemuon_mcfit->SetTitle(Form("%s category",cats[c].c_str())); lat->DrawLatex(0.7,0.92,Form("%s category",cats[c].c_str())); lat->DrawLatex(0.1,0.92,"#bf{CMS} #it{Preliminary}"); lmw->Draw(); singlemuon_mcfit->SaveAs(Form("mc_singlemuon_%s.pdf",cats[c].c_str())); singlemuon_mcfit->SaveAs(Form("mc_singlemuon_%s.png",cats[c].c_str())); TLegend *lmz = new TLegend(0.5,0.75,0.89,0.89); lmz->SetFillColor(0); lmz->AddEntry(&mc,"Z(#mu#mu) + jets MC","PE"); lmz->AddEntry(&mcfit,"MC Fit","L"); dimuon_mcfit->Draw(); dimuon_mcfit->SetTitle(Form("%s category",cats[c].c_str())); lat->DrawLatex(0.7,0.92,Form("%s category",cats[c].c_str())); lat->DrawLatex(0.1,0.92,"#bf{CMS} #it{Preliminary}"); //lat->DrawLatex(0.1,0.92,Form("%s category",cats[c].c_str())); lmz->Draw(); dimuon_mcfit->SaveAs(Form("mc_dimuon_%s.pdf",cats[c].c_str())); dimuon_mcfit->SaveAs(Form("mc_dimuon_%s.png",cats[c].c_str())); singlemuon_ratio->SetTitle(Form("%s category",cats[c].c_str())); singlemuon_ratio->SaveAs(Form("ratio_singlemuon_%s.pdf",cats[c].c_str())); singlemuon_ratio->SaveAs(Form("ratio_singlemuon_%s.png",cats[c].c_str())); dimuon_ratio->SetTitle(Form("%s category",cats[c].c_str())); dimuon_ratio->SaveAs(Form("ratio_dimuon_%s.pdf",cats[c].c_str())); dimuon_ratio->SaveAs(Form("ratio_dimuon_%s.png",cats[c].c_str())); // dimuon_mcfit->Clear(); // dimuon_datafit->Clear(); // singlemuon_mcfit->Clear(); // singlemuon_datafit->Clear(); //} }
int main( int argc, char *argv[] ) { if ( (argc == 2) && ( (GF2::console::find_switch(argc,argv,"--help")) || (GF2::console::find_switch(argc,argv,"-h" )) ) ) { std::cout << "[Usage]:\n" << "\t--generate\n" << "\t--generate3D\n" << "\t--formulate\n" << "\t--formulate3D\n" << "\t--solver mosek|bonmin|gurobi\n" << "\t--solver3D mosek|bonmin|gurobi\n" << "\t--merge\n" << "\t--merge3D\n" << "\t--datafit\n" << "\t--corresp\n" //<< "\t--show\n" << std::endl; return EXIT_SUCCESS; } else if ( GF2::console::find_switch(argc,argv,"--segment") || GF2::console::find_switch(argc,argv,"--segment3D") ) { return segment( argc, argv ); } else if ( GF2::console::find_switch(argc,argv,"--generate") || GF2::console::find_switch(argc,argv,"--generate3D") ) { return generate(argc,argv); } else if ( GF2::console::find_switch(argc,argv,"--formulate") || GF2::console::find_switch(argc,argv,"--formulate3D")) { return formulate( argc, argv ); //return GF2::ProblemSetup::formulateCli<GF2::Solver::PrimitiveContainerT, GF2::Solver::PointContainerT>( argc, argv ); } else if ( GF2::console::find_switch(argc,argv,"--solver") || GF2::console::find_switch(argc,argv,"--solver3D") ) // Note: "solver", not "solve" :-S { return solve( argc, argv ); //return GF2::Solver::solve( argc, argv ); } else if ( GF2::console::find_switch(argc,argv,"--datafit") || GF2::console::find_switch(argc,argv,"--datafit3D") ) { return datafit( argc, argv ); //return GF2::Solver::datafit( argc, argv ); } else if ( GF2::console::find_switch(argc,argv,"--merge") || GF2::console::find_switch(argc,argv,"--merge3D") ) { return merge(argc, argv); } else if ( GF2::console::find_switch(argc,argv,"--show") ) { std::cerr << "[" << __func__ << "]: " << "the show option has been moved to a separate executable, please use thatt one" << std::endl; return 1; //return GF2::Solver::show( argc, argv ); } else if ( GF2::console::find_switch(argc,argv,"--subsample") ) { return subsample( argc, argv ); } // else if ( GF2::console::find_switch(argc,argv,"--corresp") || GF2::console::find_switch(argc,argv,"--corresp3D") ) // { // return corresp( argc, argv ); // } std::cerr << "[" << __func__ << "]: " << "unrecognized option" << std::endl; return 1; // --show --dir . --cloud cloud.ply --scale 0.05f --assoc points_primitives.txt --use-tags --no-clusters --prims primitives.bonmin.txt // std::string img_path( "input2.png" ); // pcl::console::parse_argument( argc, argv, "--img", img_path ); // float scale = 0.1f; // pcl::console::parse_argument( argc, argv, "--scale", scale ); // return GF2::Solver::run( img_path, scale, {0, M_PI_2, M_PI}, argc, argv ); }