|
GAMBIT
v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
|
Go to the documentation of this file. 24 #ifndef __SpecBit_tests_hpp__ 25 #define __SpecBit_tests_hpp__ 31 #include "flexiblesusy/src/ew_input.hpp" 32 #include "flexiblesusy/src/numerics2.hpp" 33 #include "flexiblesusy/src/wrappers.hpp" 37 #define OUTPUT logger() 38 #define TAGerr LogTags::err 39 #define TAGfatal LogTags::fatal 42 #define OUTPUT std::cerr 57 double sting_get_out, double data_member, 58 int i = -1, int j = -1) 60 OUTPUT << " returning fail on test for: " << std::endl; 61 if (i > -1) OUTPUT << "with first index = " << i << std::endl; 62 if (j > -1) OUTPUT << "with second index = " << j << std::endl; 63 OUTPUT << get_type << " with " << data << " string arg." <<std::endl; 64 OUTPUT << "string getter gives = " 65 <<sting_get_out << std::endl; 66 OUTPUT << "data member is = " 67 << data_member << std::endl; 74 double sting_get_out, double data_member, 75 int i = -1, int j = -1) 77 OUTPUT << " returning fail on test for: " << std::endl; 78 if (i > -1) OUTPUT << "with first index = " << i << std::endl; 79 if (j > -1) OUTPUT << "with second index = " << j << std::endl; 80 OUTPUT << get_type << " with " << name << " string arg." 82 OUTPUT << "string getter gives = " <<sting_get_out << std::endl; 83 OUTPUT << "data member is = " 84 << data_member << std::endl; 89 std::string name, double getter_output, 90 double data_member, int i = -1, int j = -1) 92 bool pass = flexiblesusy::is_equal(getter_output,data_member); 95 print_error(get_type, name, getter_output, data_member,i,j); 105 bool immediate_exit = true) 117 std::set<std::pair<std::string,double>> name_value; 118 name_value.insert(std::make_pair( "BMu" , FSmssm.get_BMu() )); 119 name_value.insert(std::make_pair( "mHd2", FSmssm.get_mHd2() )); 120 name_value.insert(std::make_pair( "mHu2", FSmssm.get_mHu2() )); 122 std::set<std::pair<std::string, double>>::iterator iter; 123 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 127 get_mass2_parameter(iter->first), 129 if(immediate_exit == true && pass == false) return pass; 138 bool immediate_exit = true) 142 std::set<std::pair<std::string,double>> name_value; 143 name_value.insert(std::make_pair( "BMu" , FSmssm.get_BMu() )); 144 name_value.insert(std::make_pair( "mHd2", FSmssm.get_mHd2() )); 145 name_value.insert(std::make_pair( "mHu2", FSmssm.get_mHu2() )); 147 std::set<std::pair<std::string, double>>::iterator iter; 148 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 152 get_mass2_parameter(iter->first), 154 if(immediate_exit == true && pass == false) return pass; 165 bool immediate_exit= true) 169 for( int i=1; i<=3; i++){ 170 for( int j=1; j<=3; j++){ 173 std::set<std::pair<std::string,double>> name_value; 174 name_value.insert(std::make_pair( "mq2", FSmssm.get_mq2(i-1,j-1) )); 175 name_value.insert(std::make_pair( "mu2", FSmssm.get_mu2(i-1,j-1) )); 176 name_value.insert(std::make_pair( "md2", FSmssm.get_md2(i-1,j-1) )); 177 name_value.insert(std::make_pair( "ml2", FSmssm.get_ml2(i-1,j-1) )); 178 name_value.insert(std::make_pair( "me2", FSmssm.get_me2(i-1,j-1) )); 180 std::set<std::pair<std::string, double>>::iterator iter; 181 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 185 get_mass2_parameter(iter->first,i,j), 187 if(immediate_exit == true && pass == false) return pass; 197 bool immediate_exit= true) 201 for( int i=1; i<=3; i++){ 202 for( int j=1; j<=3; j++){ 205 std::set<std::pair<std::string,double>> name_value; 206 name_value.insert(std::make_pair( "mq2", FSmssm.get_mq2(i-1,j-1) )); 207 name_value.insert(std::make_pair( "mu2", FSmssm.get_mu2(i-1,j-1) )); 208 name_value.insert(std::make_pair( "md2", FSmssm.get_md2(i-1,j-1) )); 209 name_value.insert(std::make_pair( "ml2", FSmssm.get_ml2(i-1,j-1) )); 210 name_value.insert(std::make_pair( "me2", FSmssm.get_me2(i-1,j-1) )); 212 std::set<std::pair<std::string, double>>::iterator iter; 213 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 217 get_mass2_parameter(iter->first,i,j), 219 if(immediate_exit == true && pass == false) return pass; 229 bool immediate_exit= true) 233 std::set<std::pair<std::string,double>> name_value; 234 name_value.insert(std::make_pair( "M1", FSmssm.get_MassB() )); 235 name_value.insert(std::make_pair( "M2", FSmssm.get_MassWB() )); 236 name_value.insert(std::make_pair( "M3", FSmssm.get_MassG() )); 237 name_value.insert(std::make_pair( "vu", FSmssm.get_vu() )); 238 name_value.insert(std::make_pair( "vd", FSmssm.get_vd() )); 240 std::set<std::pair<std::string, double>>::iterator iter; 241 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 245 get_mass_parameter(iter->first), 247 if(immediate_exit == true && pass == false) return pass; 255 bool immediate_exit= true) 259 std::set<std::pair<std::string,double>> name_value; 260 name_value.insert(std::make_pair( "M1", FSmssm.get_MassB() )); 261 name_value.insert(std::make_pair( "M2", FSmssm.get_MassWB() )); 262 name_value.insert(std::make_pair( "M3", FSmssm.get_MassG() )); 263 name_value.insert(std::make_pair( "vu", FSmssm.get_vu() )); 264 name_value.insert(std::make_pair( "vd", FSmssm.get_vd() )); 266 std::set<std::pair<std::string, double>>::iterator iter; 267 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 271 get_mass_parameter(iter->first), 273 if(immediate_exit == true && pass == false) return pass; 283 bool immediate_exit = true) 286 for( int i=1; i<=3; i++){ 287 for( int j=1; j<=3; j++){ 288 std::set<std::pair<std::string,double>> name_value; 289 name_value.insert(std::make_pair( "TYd", FSmssm.get_TYd(i-1,j-1) )); 290 name_value.insert(std::make_pair( "TYu", FSmssm.get_TYu(i-1,j-1) )); 291 name_value.insert(std::make_pair( "TYe", FSmssm.get_TYe(i-1,j-1) )); 293 std::set<std::pair<std::string, double>>::iterator iter; 294 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 298 get_mass_parameter(iter->first,i,j), 300 if(immediate_exit == true && pass == false) return pass; 310 bool immediate_exit = true) 313 for( int i=1; i<=3; i++){ 314 for( int j=1; j<=3; j++){ 315 std::set<std::pair<std::string,double>> name_value; 316 name_value.insert(std::make_pair( "TYd", FSmssm.get_TYd(i-1,j-1) )); 317 name_value.insert(std::make_pair( "TYu", FSmssm.get_TYu(i-1,j-1) )); 318 name_value.insert(std::make_pair( "TYe", FSmssm.get_TYe(i-1,j-1) )); 320 std::set<std::pair<std::string, double>>::iterator iter; 321 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 325 get_mass_parameter(iter->first,i,j), 327 if(immediate_exit == true && pass == false) return pass; 336 bool immediate_exit = true ) 339 std::set<std::pair<std::string,double>> name_value; 340 name_value.insert(std::make_pair( "g1", FSmssm.get_g1() )); 341 name_value.insert(std::make_pair( "g2", FSmssm.get_g2() )); 342 name_value.insert(std::make_pair( "g3", FSmssm.get_g3() )); 344 std::set<std::pair<std::string, double>>::iterator iter; 345 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 347 pass = test_getters( "get_dimensionless_parameter", iter->first, 349 get_dimensionless_parameter(iter->first), 351 if(immediate_exit == true && pass == false) return pass; 360 bool immediate_exit = true ) 363 std::set<std::pair<std::string,double>> name_value; 364 name_value.insert(std::make_pair( "g1", FSmssm.get_g1() )); 365 name_value.insert(std::make_pair( "g2", FSmssm.get_g2() )); 366 name_value.insert(std::make_pair( "g3", FSmssm.get_g3() )); 368 std::set<std::pair<std::string, double>>::iterator iter; 369 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 371 pass = test_getters( "get_dimensionless_parameter", iter->first, 373 get_dimensionless_parameter(iter->first), 375 if(immediate_exit == true && pass == false) return pass; 383 bool immediate_exit = true) 386 for( int i=1; i<=3; i++){ 387 for( int j=1; j<=3; j++){ 389 std::set<std::pair<std::string,double>> name_value; 390 name_value.insert(std::make_pair( "Yd", FSmssm.get_Yd(i-1,j-1) )); 391 name_value.insert(std::make_pair( "Yu", FSmssm.get_Yu(i-1,j-1) )); 392 name_value.insert(std::make_pair( "Ye", FSmssm.get_Ye(i-1,j-1) )); 394 std::set<std::pair<std::string, double>>::iterator iter; 395 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 400 get_dimensionless_parameter(iter->first, 403 if(immediate_exit == true && pass == false) return pass; 413 bool immediate_exit = true) 416 for( int i=1; i<=3; i++){ 417 for( int j=1; j<=3; j++){ 419 std::set<std::pair<std::string,double>> name_value; 420 name_value.insert(std::make_pair( "Yd", FSmssm.get_Yd(i-1,j-1) )); 421 name_value.insert(std::make_pair( "Yu", FSmssm.get_Yu(i-1,j-1) )); 422 name_value.insert(std::make_pair( "Ye", FSmssm.get_Ye(i-1,j-1) )); 424 std::set<std::pair<std::string, double>>::iterator iter; 425 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 430 get_dimensionless_parameter(iter->first, 433 if(immediate_exit == true && pass == false) return pass; 442 bool immediate_exit = true) 446 std::set<std::pair<std::string,double>> name_value; 447 name_value.insert(std::make_pair( "MZ", FSmssm.get_physical().MVZ )); 448 name_value.insert(std::make_pair( "MW", FSmssm.get_physical().MVWm )); 449 name_value.insert(std::make_pair( "MGluino", FSmssm.get_physical().MGlu )); 450 name_value.insert(std::make_pair( "MGluon", FSmssm.get_physical().MVG )); 451 name_value.insert(std::make_pair( "MPhoton", FSmssm.get_physical().MVP )); 453 std::set<std::pair<std::string, double>>::iterator iter; 454 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 457 spec->get_Pole_Mass(iter->first), 459 if(immediate_exit == true && pass == false) return pass; 467 bool immediate_exit = true) 471 std::set<std::pair<std::string,double>> name_value; 472 name_value.insert(std::make_pair( "MZ", FSmssm.get_physical().MVZ )); 473 name_value.insert(std::make_pair( "MW", FSmssm.get_physical().MVWm )); 474 name_value.insert(std::make_pair( "MGluino", FSmssm.get_physical().MGlu )); 475 name_value.insert(std::make_pair( "MGluon", FSmssm.get_physical().MVG )); 476 name_value.insert(std::make_pair( "MPhoton", FSmssm.get_physical().MVP )); 478 std::set<std::pair<std::string, double>>::iterator iter; 479 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 482 mssm.get_Pole_Mass(iter->first), 484 if(immediate_exit == true && pass == false) return pass; 492 bool immediate_exit = true) 496 for( int i=1; i<=6; i++){ 497 std::set<std::pair<std::string,double>> name_value; 498 name_value.insert(std::make_pair( "MSd", FSmssm.get_physical().MSd(i-1) )); 499 name_value.insert(std::make_pair( "MSu", FSmssm.get_physical().MSu(i-1) )); 500 name_value.insert(std::make_pair( "MSe", FSmssm.get_physical().MSe(i-1) )); 503 std::set<std::pair<std::string, double>>::iterator iter; 504 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 507 spec->get_Pole_Mass(iter->first,i), 509 if(immediate_exit == true && pass == false) return pass; 513 for( int i=1; i<=3; i++){ 515 std::set<std::pair<std::string,double>> name_value; 516 name_value.insert(std::make_pair( "MSv", FSmssm.get_physical().MSv(i-1) )); 517 name_value.insert(std::make_pair( "MFd", FSmssm.get_physical().MFd(i-1) )); 518 name_value.insert(std::make_pair( "MFu", FSmssm.get_physical().MFu(i-1) )); 519 name_value.insert(std::make_pair( "MFe", FSmssm.get_physical().MFe(i-1) )); 521 std::set<std::pair<std::string, double>>::iterator iter; 522 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 525 spec->get_Pole_Mass(iter->first,i), 527 if(immediate_exit == true && pass == false) return pass; 531 for( int i=1; i<=2; i++){ 532 std::string name = "Mh0"; 534 spec->get_Pole_Mass(name,i), 535 FSmssm.get_physical().Mhh(i-1), i); 536 if(immediate_exit == true && pass == false) return pass; 539 spec->get_Pole_Mass(name,i), 540 FSmssm.get_physical_slha().MCha(i-1), i); 541 if(immediate_exit == true && pass == false) return pass; 547 for( int i=1; i<=4; i++){ 548 std::string name = "MChi"; 550 spec->get_Pole_Mass(name,i), 551 FSmssm.get_physical_slha().MChi(i-1), i); 552 if(immediate_exit == true && pass == false) return pass; 560 bool immediate_exit = true) 564 for( int i=1; i<=6; i++){ 565 std::set<std::pair<std::string,double>> name_value; 566 name_value.insert(std::make_pair( "MSd", FSmssm.get_physical().MSd(i-1) )); 567 name_value.insert(std::make_pair( "MSu", FSmssm.get_physical().MSu(i-1) )); 568 name_value.insert(std::make_pair( "MSe", FSmssm.get_physical().MSe(i-1) )); 570 std::set<std::pair<std::string, double>>::iterator iter; 571 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 574 mssm.get_Pole_Mass(iter->first,i), 576 if(immediate_exit == true && pass == false) return pass; 580 for( int i=1; i<=3; i++){ 582 std::set<std::pair<std::string,double>> name_value; 583 name_value.insert(std::make_pair( "MSv", FSmssm.get_physical().MSv(i-1) )); 584 name_value.insert(std::make_pair( "MFd", FSmssm.get_physical().MFd(i-1) )); 585 name_value.insert(std::make_pair( "MFu", FSmssm.get_physical().MFu(i-1) )); 586 name_value.insert(std::make_pair( "MFe", FSmssm.get_physical().MFe(i-1) )); 588 std::set<std::pair<std::string, double>>::iterator iter; 589 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 592 mssm.get_Pole_Mass(iter->first,i), 594 if(immediate_exit == true && pass == false) return pass; 598 for( int i=1; i<=2; i++){ 599 std::string name = "Mh0"; 601 mssm.get_Pole_Mass(name,i), 602 FSmssm.get_physical().Mhh(i-1), i); 603 if(immediate_exit == true && pass == false) return pass; 606 mssm.get_Pole_Mass(name,i), 607 FSmssm.get_physical_slha().MCha(i-1), i); 608 if(immediate_exit == true && pass == false) return pass; 614 for( int i=1; i<=4; i++){ 615 std::string name = "MChi"; 617 mssm.get_Pole_Mass(name,i), 618 FSmssm.get_physical_slha().MChi(i-1), i); 619 if(immediate_exit == true && pass == false) return pass; 627 bool immediate_exit = true) 630 for( int i=1; i<=6; i++){ 631 for( int j=1; j<=6; j++){ 632 std::set<std::pair<std::string,double>> name_value; 633 name_value.insert(std::make_pair( "~d", FSmssm.get_physical_slha().ZD(i-1,j-1) )); 634 name_value.insert(std::make_pair( "~u", FSmssm.get_physical_slha().ZU(i-1,j-1) )); 635 name_value.insert(std::make_pair( "~e-", FSmssm.get_physical_slha().ZE(i-1,j-1) )); 637 std::set<std::pair<std::string, double>>::iterator iter; 638 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 642 get_Pole_Mixing(iter->first,i,j), 644 if(immediate_exit == true && pass == false) return pass; 650 for( int i=1; i<=3; i++){ 651 for( int j=1; j<=3; j++){ 654 spec->get_Pole_Mixing(name,i,j), 655 FSmssm.get_physical_slha().ZV(i-1, j-1), i,j); 656 if(immediate_exit == true && pass == false) return pass; 662 for( int i=1; i<=2; i++){ 663 for( int j=1; j<=2; j++){ 664 std::set<std::pair<std::string,double>> name_value; 665 name_value.insert(std::make_pair( "h0", FSmssm.get_physical_slha().ZH(i-1,j-1) )); 666 name_value.insert(std::make_pair( "A0", FSmssm.get_physical_slha().ZA(i-1,j-1) )); 667 name_value.insert(std::make_pair( "H+", FSmssm.get_physical_slha().ZP(i-1,j-1) )); 668 name_value.insert(std::make_pair( "~chi-", flexiblesusy::Re(FSmssm.get_physical_slha() 670 name_value.insert(std::make_pair( "~chi+", flexiblesusy::Re(FSmssm.get_physical_slha() 674 std::set<std::pair<std::string, double>>::iterator iter; 675 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 679 get_Pole_Mixing(iter->first,i,j), 681 if(immediate_exit == true && pass == false) return pass; 692 bool immediate_exit = true) 695 for( int i=1; i<=6; i++){ 696 for( int j=1; j<=6; j++){ 697 std::set<std::pair<std::string,double>> name_value; 698 name_value.insert(std::make_pair( "~d", FSmssm.get_physical_slha().ZD(i-1,j-1) )); 699 name_value.insert(std::make_pair( "~u", FSmssm.get_physical_slha().ZU(i-1,j-1) )); 700 name_value.insert(std::make_pair( "~e-", FSmssm.get_physical_slha().ZE(i-1,j-1) )); 702 std::set<std::pair<std::string, double>>::iterator iter; 703 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 707 get_Pole_Mixing(iter->first,i,j), 709 if(immediate_exit == true && pass == false) return pass; 715 for( int i=1; i<=3; i++){ 716 for( int j=1; j<=3; j++){ 719 mssm.get_Pole_Mixing(name,i,j), 720 FSmssm.get_physical_slha().ZV(i-1, j-1), i,j); 721 if(immediate_exit == true && pass == false) return pass; 727 for( int i=1; i<=2; i++){ 728 for( int j=1; j<=2; j++){ 729 std::set<std::pair<std::string,double>> name_value; 730 name_value.insert(std::make_pair( "h0", FSmssm.get_physical_slha().ZH(i-1,j-1) )); 731 name_value.insert(std::make_pair( "A0", FSmssm.get_physical_slha().ZA(i-1,j-1) )); 732 name_value.insert(std::make_pair( "H+", FSmssm.get_physical_slha().ZP(i-1,j-1) )); 733 name_value.insert(std::make_pair( "~chi-", flexiblesusy::Re(FSmssm.get_physical_slha() 735 name_value.insert(std::make_pair( "~chi+", flexiblesusy::Re(FSmssm.get_physical_slha() 738 std::set<std::pair<std::string, double>>::iterator iter; 739 for(iter=name_value.begin(); iter != name_value.end(); ++iter) 743 get_Pole_Mixing(iter->first,i,j), 745 if(immediate_exit == true && pass == false) return pass; 759 if(pass == false) return pass; 761 if(pass == false) return pass; 763 if(pass == false) return pass; 772 if(pass == false) return pass; 774 if(pass == false) return pass; 776 if(pass == false) return pass; 785 if(pass == false) return pass; 787 if(pass == false) return pass; 789 if(pass == false) return pass; 791 if(pass == false) return pass; 793 if(pass == false) return pass; 795 if(pass == false) return pass; 806 if(pass == false) return pass; 808 if(pass == false) return pass; 810 if(pass == false) return pass; 812 if(pass == false) return pass; 814 if(pass == false) return pass; 816 if(pass == false) return pass; 822 template < class Model> 825 Eigen::Matrix<double,3,3> Yu; 826 Eigen::Matrix<double,3,3> Yd; 827 Eigen::Matrix<double,3,3> Ye; 834 Eigen::Matrix<double,3,3> TYu; 835 Eigen::Matrix<double,3,3> TYd; 836 Eigen::Matrix<double,3,3> TYe; 838 Eigen::Matrix<double,3,3> mq2; 839 Eigen::Matrix<double,3,3> ml2; 842 Eigen::Matrix<double,3,3> md2; 843 Eigen::Matrix<double,3,3> mu2; 844 Eigen::Matrix<double,3,3> me2; 850 Yu << 1.26136e-05, 0, 0, 854 Yd << 0.000242026, 0, 0, 858 Ye << 2.84161e-05, 0, 0, 870 TYu << -0.0144387, 0, 0, 874 TYd << -0.336207, 0, 0, 878 TYe << -0.00825134, 0, 0, 884 mq2 << 1.03883e+06, 0, 0, 903 me2 << 49215.8, 0, 0, 912 mssm.set_scale(flexiblesusy::Electroweak_constants::MZ); 933 mssm.set_MassB(MassB); 934 mssm.set_MassWB(MassWB); 935 mssm.set_MassG(MassG); 945 OUTPUT << "TestMssmParGets failing." <<std::endl; 951 OUTPUT << "TestMssmParGets failing." <<std::endl; 965 OUTPUT << "TestMssmParGets failing." <<std::endl; 971 OUTPUT << "TestMssmParGets failing." <<std::endl; 983 double highscale = 1e+16; 985 double lowscale2 = FS_model_slha.get_scale(); 986 bool pass = flexiblesusy::is_equal(lowscale,lowscale2); 989 << "objects not at same scale at start of runtest." 995 FS_model_slha.run_to(highscale); 999 << "objects not the same after running to MGUT." 1004 FS_model_slha.run_to(lowscale); 1008 << "objects not the same after running to lowscale." 1017 template < class Model> 1021 double highscale = 1e+16; 1022 double lowscale = spec-> GetScale(); 1023 double lowscale2 = FS_model_slha.get_scale(); 1024 bool pass = flexiblesusy::is_equal(lowscale,lowscale2); 1027 << "objects not at same scale at start of runtest." 1033 FS_model_slha.run_to(highscale); 1037 << "objects not the same after running to MGUT." 1042 FS_model_slha.run_to(lowscale); 1046 << "objects not the same after running to lowscale." 1058 bool pass = std::abs(a - b) <= std::abs(a*tol); 1059 OUTPUT << "TESTING: " << label << std::endl; 1062 OUTPUT << " ******FAIL******" << std::endl 1063 << " Inputs do not match within requested relative tolerance (" << tol << ")" 1065 << " a = " << a << std::endl 1066 << " b = " << b << std::endl 1067 << " |(a - b)/a| = " << std::abs((a-b)/a) << " (greater than tol = " << tol << ")" 1072 OUTPUT << " Pass: (a="<<a<< ", b="<<b<< ")" << std::endl 1073 << " |(a - b)/a| = " << std::abs((a-b)/a) << " (less than tol = " << tol << ")" 1086 std::unique_ptr<SubSpectrum> SM = matched_spectra-> clone_LE(); 1131 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; 1132 OUTPUT << "Z pole mass : " << SM->get_Pole_Mass( "Z") << std::endl; 1133 if(not SLHAonly) test_within_tol( sminputs. alphainv, 1./ SM->get_dimensionless_parameter( "alpha"), tol, "1/alpha(mZ)" ); 1134 if(not SLHAonly) test_within_tol( sminputs. alphaS, SM->get_dimensionless_parameter( "alphaS"), tol, "alphaS(mZ)" ); 1137 if(not SLHAonly) SM->RunToScale(2); 1138 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; 1145 SM->RunToScale(sminputs. mCmC); 1146 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; 1147 OUTPUT << "mC (MSbar) : " << SM->get_mass_parameter( "c") << std::endl; 1149 SM->RunToScale(sminputs. mBmB); 1150 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; 1151 OUTPUT << "mB (MSbar) : " << SM->get_mass_parameter( "b") << std::endl; 1157 if(not SLHAonly) SM->RunToScale(sminputs. mZ); 1159 OUTPUT << "Checking match between SM SubSpectrum* retrieved in different ways..." << std::endl; 1161 smin->get_Pole_Mass( "Z"), tol, "Z pole" ); 1163 smin->get_Pole_Mass( "W"), tol, "W pole" ); 1165 smin->get_Pole_Mass( "t"), tol, "top pole" ); 1167 smin->get_Pole_Mass( "tau"), tol, "tau pole" ); 1169 smin->get_Pole_Mass( "mu"), tol, "mu pole" ); 1171 smin->get_Pole_Mass( "e"), tol, "e pole" ); 1172 if(not SLHAonly) test_within_tol(SM->get_dimensionless_parameter( "alpha"), 1173 smin->get_dimensionless_parameter( "alpha"), tol, "1/alpha(mZ)" ); 1174 if(not SLHAonly) test_within_tol(SM->get_dimensionless_parameter( "alphaS"), 1175 smin->get_dimensionless_parameter( "alphaS"),tol, "alphaS(mZ)" ); 1177 smin->get_mass_parameter( "u"), tolm, "mu(2)" ); 1179 smin->get_mass_parameter( "d"), tolm, "md(2)" ); 1181 smin->get_mass_parameter( "s"), tolm, "ms(2)" ); 1183 smin->get_mass_parameter( "c"), tolm, "mc(mc)" ); 1185 smin->get_mass_parameter( "b"), tolm, "mb(mb)" ); 1189 OUTPUT << "Checking light quark mass ratios:" << std::endl; 1191 std::vector<double> scales; 1192 scales.push_back(10); 1193 if(not SLHAonly) scales.push_back(2); 1194 if(not SLHAonly) scales.push_back(1); 1195 if(not SLHAonly) scales.push_back(0.5); 1196 if(not SLHAonly) scales.push_back(0.1); 1198 for(std::vector<double>::iterator it = scales.begin(); it != scales.end(); ++it) 1200 if(not SLHAonly) SM->RunToScale(*it); 1201 double Q = SM->GetScale(); 1202 double mu = SM->get_mass_parameter( "u"); 1203 double md = SM->get_mass_parameter( "d"); 1204 double ms = SM->get_mass_parameter( "s"); 1206 OUTPUT << "---------------------------------" << std::endl; 1207 OUTPUT << "Current scale: " << Q << std::endl; 1208 OUTPUT << "mu("<<Q<< ") = " << mu << std::endl; 1209 OUTPUT << "md("<<Q<< ") = " << md << std::endl; 1210 OUTPUT << "ms("<<Q<< ") = " << ms << std::endl; 1211 OUTPUT << "mu/md = " << mu/md << std::endl; 1212 OUTPUT << "ms/md = " << ms/md << std::endl; 1220 1.00000000e-02, 1.25892541e-02, 1.58489319e-02, 1221 1.99526231e-02, 2.51188643e-02, 3.16227766e-02, 1222 3.98107171e-02, 5.01187234e-02, 6.30957344e-02, 1223 7.94328235e-02, 1.00000000e-01, 1.25892541e-01, 1224 1.58489319e-01, 1.99526231e-01, 2.51188643e-01, 1225 3.16227766e-01, 3.98107171e-01, 5.01187234e-01, 1226 6.30957344e-01, 7.94328235e-01, 1.00000000e+00, 1227 1.25892541e+00, 1.58489319e+00, 1.99526231e+00, 1228 2.51188643e+00, 3.16227766e+00, 3.98107171e+00, 1229 5.01187234e+00, 6.30957344e+00, 7.94328235e+00, 1230 1.00000000e+01, 1.25892541e+01, 1.58489319e+01, 1231 1.99526231e+01, 2.51188643e+01, 3.16227766e+01, 1232 3.98107171e+01, 5.01187234e+01, 6.30957344e+01, 1233 7.94328235e+01, 1.00000000e+02, 1.25892541e+02, 1234 1.58489319e+02, 1.99526231e+02, 2.51188643e+02, 1235 3.16227766e+02, 3.98107171e+02, 5.01187234e+02, 1236 6.30957344e+02, 7.94328235e+02, 1.00000000e+03, 1237 1.25892541e+03, 1.58489319e+03, 1.99526231e+03, 1238 2.51188643e+03, 3.16227766e+03, 3.98107171e+03, 1239 5.01187234e+03, 6.30957344e+03, 7.94328235e+03, 1240 1.00000000e+04, 1.25892541e+04, 1.58489319e+04, 1241 1.99526231e+04, 2.51188643e+04, 3.16227766e+04, 1242 3.98107171e+04, 5.01187234e+04, 6.30957344e+04, 1249 Qout.open( "SpecBit/light_quark_txt"); 1251 for(std::vector<double>::iterator it = Qvec.begin(); it != Qvec.end(); ++it) 1254 std::unique_ptr<SubSpectrum> SMloop = matched_spectra-> clone_LE(); 1256 SMloop->RunToScale(*it); 1257 double Q = SMloop->GetScale(); 1258 double mu = SMloop->get_mass_parameter( "u"); 1259 double md = SMloop->get_mass_parameter( "d"); 1260 double ms = SMloop->get_mass_parameter( "s"); 1263 Qout << Q << ", " << md << ", " << mu << ", " << ms << std::endl; 1273 Spectrum nonconst_spectra(*matched_spectra); 1277 OUTPUT << "Testing non-const access to Spectrum object:" << std::endl; 1279 OUTPUT << "Current SM SubSpectrum* scale: " << nonconst_spectra. get_LE()-> GetScale() << std::endl; 1280 OUTPUT << "Current UV SubSpectrum* scale: " << nonconst_spectra.get_UV()->GetScale() << std::endl; 1283 OUTPUT << "Old UV SubSpectrum* scale: " << matched_spectra->get_UV()->GetScale() << std::endl; 1285 OUTPUT << "Current SM SubSpectrum* mu :" << nonconst_spectra. get_LE()->get_mass_parameter( "u") << std::endl; 1286 OUTPUT << "Current SM Spectrum* md :" << nonconst_spectra. get_LE()->get_mass_parameter( "d") << std::endl; 1287 OUTPUT << "Current SM Spectrum* ms :" << nonconst_spectra. get_LE()->get_mass_parameter( "s") << std::endl; 1288 OUTPUT << "Old SM Spectrum* mu :" << matched_spectra-> get_LE()->get_mass_parameter( "u") << std::endl; 1289 OUTPUT << "Old SM Spectrum* md :" << matched_spectra-> get_LE()->get_mass_parameter( "d") << std::endl; 1290 OUTPUT << "Old SM Spectrum* ms :" << matched_spectra-> get_LE()->get_mass_parameter( "s") << std::endl; 1300 OUTPUT << "Testing QedQcdWrapper running limits:" << std::endl; 1303 OUTPUT << "behave=0" << std::endl; 1304 SM->RunToScale(sminputs. mT); 1305 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; 1306 SM->RunToScale(1.5*sminputs. mT); 1307 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; 1314 OUTPUT << "behave=2" << std::endl; 1315 SM->RunToScale(sminputs. mT,2); 1316 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; 1322 OUTPUT << "behave=1" << std::endl; 1323 SM->RunToScale(sminputs. mT,1); 1324 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; 1325 SM->RunToScale(1.5*sminputs. mT,1); 1326 OUTPUT << "Current scale: " << SM->GetScale() << std::endl; bool print_error(bool pass, std::string get_type, std::string data, double sting_get_out, double data_member, int i=-1, int j=-1)
void RunToScale(double scale, const int behave=0) Run spectrum to a new scale This function is a wrapper for RunToScaleOverride which automatically che...
MSSM derived version of SubSpectrum class.
bool test_within_tol(double a, double b, double tol, std::string label)
bool TestMssmParGets(SubSpectrum *spec, M FSmssm)
bool TestMssmParMass1_0(SubSpectrum *spec, M FSmssm, bool immediate_exit=true)
virtual double GetScale() const Returns the renormalisation scale of parameters.
std::unique_ptr< SubSpectrum > clone_LE() const Clone getters Note: If you want to clone the whole Spectrum object, just use copy constructor...
bool TestMssmPoleGets(SubSpectrum *spec, M FSmssm)
virtual double GetScale() const Returns the renormalisation scale of parameters.
bool running_test(MSSMSpec< MI > &mssm, typename MI::Model &FS_model_slha, double tol)
Flexiblesusy model header includes for SpecBit.
bool TestMssmPoleGets0(SubSpectrum *spec, M FSmssm, bool immediate_exit=true)
bool TestMssmParMass1_2(SubSpectrum *spec, M FSmssm, bool immediate_exit=true)
bool test_exact(MSSMSpec< MI > &mssm, typename MI::Model &FS_model_slha)
std::chrono::milliseconds ms
bool TestMssmParMass0_0(SubSpectrum *spec, M FSmssm, bool immediate_exit=true)
bool TestMssmParMass2_0(SubSpectrum *spec, M FSmssm, bool immediate_exit=true) Module convenience functions.
bool TestMssmPoleGets1(SubSpectrum *spec, M FSmssm, bool immediate_exit=true)
const Logging::endofmessage EOM Explicit const instance of the end of message struct in Gambit namespace.
SubSpectrum & get_LE() Standard getters Return references to internal data members.
Virtual base class for interacting with spectrum generator output.
bool test_getters(std::string get_type, std::string name, double getter_output, double data_member, int i=-1, int j=-1)
bool TestMssmParMass2_2(SubSpectrum *spec, M FSmssm, bool immediate_exit=true)
bool TestMssmPoleMixingGets2(SubSpectrum *spec, M FSmssm, bool immediate_exit=true)
void Spectrum_test(Spectrum matched_spectra, const SubSpectrum *smin, bool SLHAonly=0)
TODO: see if we can use this one:
"Standard Model" (low-energy) plus high-energy model container class
bool TestMssmParMass0_2(SubSpectrum *spec, M FSmssm, bool immediate_exit=true)
SMInputs & get_SMInputs()
void RunBothToScale(double scale) Linked running Only possible with non-const object.
|