mssm_slhahelp.cpp
Go to the documentation of this file.
39 const std::map<p_int_string, std::vector<str> > type_family_to_gauge_states = init_type_family_to_gauge_states(); 40 const std::map<str,std::vector<str> > family_state_to_gauge_state = init_family_state_to_gauge_state(); 41 const std::map<str,std::vector<str> > gauge_es_to_family_states = init_gauge_es_to_family_states() ; 88 std::vector<double> matmix = slhahelp::family_state_mix_matrix(type, 3, s1, s2, spec, tol, LOCAL_INFO, pterror); 97 s1 = slhahelp::mass_es_closest_to_family(family_to_3gen.at(type)+"_1", spec, tol, LOCAL_INFO, pterror); 98 s2 = slhahelp::mass_es_closest_to_family(family_to_3gen.at(type)+"_2", spec, tol, LOCAL_INFO, pterror); 380 catch (std::out_of_range&) { utils_error().raise(LOCAL_INFO, "Sfermion type or generation index not recognised; use type=~u,~d,~e-, gen=1,2,3."); } 408 catch (std::out_of_range&) { utils_error().raise(LOCAL_INFO, "Unrecognised family state. ('"+familystate+"' was requested)"); } 468 catch (std::out_of_range&) { utils_error().raise(LOCAL_INFO, "Unrecognised family state. ('"+familystate+"' was requested)"); } 601 catch (std::out_of_range&) { utils_error().raise(LOCAL_INFO, "Sfermion type or generation index not recognised; use type=~u,~d,~e-, gen=1,2,3."); } 772 void add_MSSM_spectrum_to_SLHAea(const SubSpectrum& mssmspec, SLHAstruct& slha, int slha_version) 776 // Make sure to overwrite all entries if they exist already (from say a "hurriedly" copied SM subspectrum + unknown extra MSSM junk) 783 SLHAea_add_from_subspec(slha,LOCAL_INFO,mssmspec,Par::dimensionless,"tanbeta(mZ)","MINPAR",3,"# tanbeta(mZ)^DRbar"); 785 int sgnmu = sgn(mssmspec.get(Par::mass1,"Mu")); // Mu isn't at the input scale anymore, but sign(mu) doesn't change with running. 792 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::dimensionless,"tanbeta","HMIX",2,"tan(beta) = vu/vd DRbar"); 793 if (not mssmspec.has(Par::mass1,"vu")) utils_error().raise(LOCAL_INFO, "MSSM subspectrum does not contain vu!"); 794 if (not mssmspec.has(Par::mass1,"vd")) utils_error().raise(LOCAL_INFO, "MSSM subspectrum does not contain vd!"); 805 // Scale gY is in SU(5)/GUT normalisation internally; convert it to SM normalisation for SLHA output by multiplying by sqrt(3/5). 806 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::dimensionless,"g1","GAUGE",1,"g' = g1 = gY DRbar", true, sqrt(3./5.)); 807 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::dimensionless,"g2","GAUGE",2,"g = g2 DRbar"); 808 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::dimensionless,"g3","GAUGE",3,"g_s = g3 DRbar"); 810 const int pdg_codes[33] = {24,25,35,37,36,1000021,1000024,1000037,1000022,1000023,1000025,1000035,1000006,2000006,1000005,2000005,1000015,2000015,1000012,1000014,1000016,1000001,1000003, 823 slhahelp::attempt_to_add_SLHA1_mixing("STOPMIX", slha, "~u", mssmspec, 1.0, slha2_sfermions[0], slha2_sfermions[1], true); 824 slhahelp::attempt_to_add_SLHA1_mixing("SBOTMIX", slha, "~d", mssmspec, 1.0, slha2_sfermions[2], slha2_sfermions[3], true); 825 slhahelp::attempt_to_add_SLHA1_mixing("STAUMIX", slha, "~e-", mssmspec, 1.0, slha2_sfermions[4], slha2_sfermions[5], true); 831 SLHAea_add_from_subspec(slha, LOCAL_INFO, mssmspec, Par::Pole_Mass, std::pair<int, int>(pdg_codes[i],0), "MASS", comment); 837 double max_mixing; // Don't actually care about this; we're going to SLHA1 whether it is a good approximation or not. 840 SLHAea_add(slha, "MASS", pdg_codes[i+12], mssmspec.get(Par::Pole_Mass, slha2_sfermions[i]), slha1_sfermions[i], true); 849 SLHAea_add_from_subspec(slha, LOCAL_INFO, mssmspec, Par::Pole_Mass, std::pair<int, int>(pdg_codes[i],0), "MASS", comment); 861 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec, Par::Pole_Mixing, S[k].second, i, j, S[k].first, i, j, comment.str()); 872 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec, Par::Pole_Mixing, V.second, i, j, V.first, i, j, comment.str()); 878 utils_error().raise(LOCAL_INFO, "Unrecognised version of SLHA standard; only SLHA1 and SLHA2 are permitted."); 886 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::mass1,"M1","MSOFT",1,"bino mass parameter M1"); 887 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::mass1,"M2","MSOFT",2,"wino mass parameter M2"); 888 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::mass1,"M3","MSOFT",3,"gluino mass parameter M3"); 889 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::mass2,"mHd2","MSOFT",21,"d-type Higgs mass parameter mHd2"); 890 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec,Par::mass2,"mHu2","MSOFT",22,"u-type Higgs mass parameter mHu2"); 891 sspair M[5] = {sspair("MSL2","ml2"), sspair("MSE2","me2"), sspair("MSQ2","mq2"), sspair("MSU2","mu2"), sspair("MSD2","md2")}; 899 if (slha_version == 2) SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec, Par::mass2, M[k].second, i, j, M[k].first, i, j, comment.str()); 903 SLHAea_add(slha,"MSOFT",30+3*k+i+(k>1?4:0),sgn(entry)*sqrt(std::abs(entry)),"sqrt("+comment.str()+")", true); 908 // Yukawa and trilinear blocks. YU, YD and YE, plus [YU, YD and YE; SLHA1 only], or [TU, TD and TE; SLHA2 only]. 924 // SLHA2 says to output only diagonal of Yukawa matrices, since we should be in a basis in which they are diagonal. 925 // SLHA1 says to give only the 3,3 element, but we'll give the whole diagonal anyway, codes will ignore them if not 928 SLHAea_add_from_subspec(slha,LOCAL_INFO,mssmspec,Par::dimensionless,Y[k].second, i, i, Y[k].first, i, i, comment.str()); 934 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec, Par::mass1, T[k].second, i, i, A[k].first, i, i, comment.str(), true, invTii); // last argument is a rescaling factor 941 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec, Par::mass1, T[k].second, i, j, T[k].first, i, j, comment.str()); 947 msg << "Tried to ouput SLHA data, but SLHA version requested was invalid (should be 1 or 2, but received "<<slha_version<<")"; 956 if(it!=slha.end()) slha.erase(it); // TODO: format of this call is confusing, perhaps write a wrapper for it. 959 slha["ALPHA"][""] << asin(mssmspec.get(Par::Pole_Mixing, "h0", 2, 2)) << "# sin^-1(SCALARMIX(2,2))"; 961 // UMIX and VMIX blocks, plus some FlexibleSUSY-only extensions: PSEUDOSCALARMIX, SCALARMIX and CHARGEMIX. 962 sspair U[5] = {sspair("UMIX","~chi-"), sspair("VMIX","~chi+"), sspair("PSEUDOSCALARMIX","A0"), sspair("SCALARMIX","h0"), sspair("CHARGEMIX","H+")}; 970 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec, Par::Pole_Mixing, U[k].second, i, j, U[k].first, i, j, comment.str()); 981 SLHAea_add_from_subspec(slha, LOCAL_INFO,mssmspec, Par::Pole_Mixing, N.second, i, j, N.first, i, j, comment.str()); 1035 void mass_es_pseudonyms::fill_mass_es_psn_gauge(str& is, str& isbar, str gauge_es, const SubSpectrum& mssm, 1046 gauge_family_eigenstates[isbar] = gauge_es.substr(0,gauge_es.length()-2)+"bar"+gauge_es.substr(gauge_es.length()-2); 1053 ss << "MSSM mass(-squared) eigenstate " << mass_es << " is only " << max_mix*max_mix*100 << "% gauge eigenstate " << gauge_es << "." << endl 1054 << "The requested tolerance is " << tol*100 << " => too much sfermion mixing to assume that this is a pure gauge eigenstate."; 1069 void mass_es_pseudonyms::fill_mass_es_psn_family(str& is, str& isbar, str family_state, const SubSpectrum& mssm, 1090 gauge_family_eigenstates[isbar] = family_state.substr(0,family_state.length()-2)+"bar"+family_state.substr(family_state.length()-2); 1097 ss << "MSSM mass(-squared) eigenstate " << mass_es << " is only " << mix_mag_sq*100 << "% the same family as " 1219 void mass_es_pseudonyms::debug_print_gauge(const SubSpectrum& mssm, str& gauge_es, str& mass_es, double& max_mix) 1242 void mass_es_pseudonyms::debug_print_family(const SubSpectrum& mssm, str& family_state, str& mass_es, double& mix_mag_sq, double& tol) 1276 std::vector<double> f_mix_matrix = slhahelp::family_state_mix_matrix(type,gen, mass_es1, mass_es2, mssm); std::pair< int, str > p_int_string Typedefs for pairs that we will use in maps. Definition: ini_functions.hpp:116 std::vector< double > family_state_mix_matrix(str type, int generation, str &mass_es1, str &mass_es2, const SubSpectrum &mssm, double tol, str context, bool pterror) Get the family mixing matrix and corresponding mass eigenstates, then check for interfamily mixing... Definition: mssm_slhahelp.cpp:555 std::map< str, std::vector< str > > init_family_state_to_gauge_state() maps directly from family string to left_right gauge_pairs helps us reuse other routines that take st... Definition: ini_functions.cpp:440 std::vector< double > get_gauge_comp_for_mass(str mass_es, const SubSpectrum &mssm) returns vector representing composition of requested mass eigenstate in terms of the slha2 gauge eige... Definition: mssm_slhahelp.cpp:147 Definition: spectrum_helpers.hpp:55 Definition: spectrum_helpers.hpp:54 void add_MODSEL_disclaimer(SLHAstruct &slha, const str &object) Add a disclaimer about the absence of a MODSEL block in a generated SLHAea object. Definition: mssm_slhahelp.cpp:75 void attempt_to_add_SLHA1_mixing(const str &block, SLHAstruct &slha, const str &type, const SubSpectrum &spec, double tol, str &s1, str &s2, bool pterror) Simple helper function for for adding missing SLHA1 2x2 family mixing matrices to an SLHAea object... Definition: mssm_slhahelp.cpp:83 const std::map< str, pair_string_ints > familystate_label Definition: mssm_slhahelp.cpp:38 void SLHAea_add_block(SLHAstruct &, const str &name, const double scale=-1) Add a new block to an SLHAea object, with our without a scale. Definition: slhaea_helpers.cpp:86 str family_state_closest_to_mass_es(str mass_es, double &sum_sq_mix, std::vector< double > &mass_comp, const SubSpectrum &mssm) returns family state that best matches the given mass_es fills a double with the sum of the square mi... Definition: mssm_slhahelp.cpp:670 std::pair< str, pair_ints > pair_string_ints Definition: ini_functions.hpp:118 virtual double GetScale() const Returns the renormalisation scale of parameters. Definition: subspectrum.hpp:133 std::vector< double > get_mass_comp_for_gauge(str gauge_es, const SubSpectrum &mssm) returns vector representing composition of requested gauge state in terms of the slha2 mass eigenstat... Definition: mssm_slhahelp.cpp:105 void SLHAea_add(SLHAstruct &slha, const str &block, const int index, const double value, const str &comment="", const bool overwrite=false) Add an entry to an SLHAea object (if overwrite=false, only if it doesn't already exist) ... Definition: slhaea_helpers.cpp:236 std::vector< double > get_Pole_Mixing_row(str type, int mass_index, const SubSpectrum &mssm) Definition: mssm_slhahelp.cpp:61 Routines to help translate between SLHA2 sfermions and SLHA1 (or similar) sfermions. std::vector< double > get_Pole_Mixing_col(str type, int gauge_index, const SubSpectrum &mssm) Definition: mssm_slhahelp.cpp:47 double get_mixing_element(str gauge_es, str mass_es, const SubSpectrum &mssm) routine to return mass state admixure for given gauge state in the end this is a trival routine but m... Definition: mssm_slhahelp.cpp:121 General small utility functions. sspair identify_mass_ess_for_family(str type, int family, const SubSpectrum &mssm) identify the two mass eigenstate corresponding to the approximate family states, e.g. Definition: mssm_slhahelp.cpp:371 std::map< p_int_string, std::vector< str > > init_type_family_to_gauge_states() map to obtain left_right gauge_pairs from state info helps us reuse other routiones with string argum... Definition: ini_functions.cpp:420 Definition: spectrum_helpers.hpp:50 Functions for triggering initialisation code. Definition: log_tags.hpp:35 const std::map< p_int_string, std::vector< str > > type_family_to_gauge_states Definition: mssm_slhahelp.cpp:39 std::map< str, p_int_string > init_mass_label_to_index_type() map from mass eigenstate strings to string, index pairs Definition: ini_functions.cpp:318 const std::map< str, p_int_string > gauge_label_to_index_type Known maps filled at initialisation. Definition: mssm_slhahelp.cpp:36 str get_antiparticle(str) const Get the matching anti-particle long name for a particle in the database, using the long name... Definition: partmap.cpp:231 void add_MSSM_spectrum_to_SLHAea(const SubSpectrum &mssmspec, SLHAstruct &slha, int slha_version) Add an entire MSSM spectrum to an SLHAea object. Definition: mssm_slhahelp.cpp:772 SLHAea::Coll SLHAstruct Less confusing name for SLHAea container class. Definition: slhaea_helpers.hpp:37 double get_gauge_admix_for_family_state(str familystate, str gauge_es, str &mass_es, const SubSpectrum &mssm) returns admix of gauge eigenstate in the mass eigenstate closest to the given family state and stores... Definition: mssm_slhahelp.cpp:639 virtual void raise(const std::string &) Raise the exception, i.e. throw it. Definition: exceptions.cpp:422 virtual double get(const Par::Tags, const str &, const SpecOverrideOptions=use_overrides, const SafeBool check_antiparticle=SafeBool(true)) const =0 bool SLHAea_block_exists(SLHAstruct &slha, const str &block) Check if a block exists in an SLHAea object. Definition: slhaea_helpers.cpp:98 const std::map< str, p_int_string > mass_label_to_index_type Definition: mssm_slhahelp.cpp:37 const std::map< str, std::vector< str > > type_to_vec_of_mass_es Definition: mssm_slhahelp.cpp:42 std::map< str, std::vector< str > > init_type_to_vec_of_mass_es() map from string representing type (ie up-squarks, down-squarks or charged sleptons) to appropriate se... Definition: ini_functions.cpp:499 const std::map< str, std::vector< str > > gauge_es_to_family_states Definition: mssm_slhahelp.cpp:41 const std::map< str, std::vector< str > > type_to_vec_of_gauge_es Definition: mssm_slhahelp.cpp:43 std::map< str, std::vector< str > > init_type_to_vec_of_gauge_es() map from string representing type (ie up-squarks, down-squarks or charged sleptons) to appropriate se... Definition: ini_functions.cpp:513 const std::map< str, std::vector< str > > family_state_to_gauge_state Definition: mssm_slhahelp.cpp:40 Virtual base class for interacting with spectrum generator output. Definition: subspectrum.hpp:87 void SLHAea_delete_block(SLHAstruct &slha, const std::string &block) Delete an entire block from an SLHAea object, if it exists (actually just the first block matching th... Definition: slhaea_helpers.cpp:216 str mass_es_closest_to_family(str familystate, const SubSpectrum &mssm) identify the mass eigenstate corresponding to family state takes string and returns only requested st... Definition: mssm_slhahelp.cpp:403 std::map< str, pair_string_ints > init_familystate_label() map to extract info from family state Definition: ini_functions.cpp:350 invalid_point_exception & invalid_point() Invalid point exceptions. Definition: standalone_error_handlers.cpp:83 void SLHAea_add_matrix(SLHAstruct &slha, const str &block, const std::vector< T > &matrix, const int rows, const int cols, const str &comment="", const bool overwrite=false) Add a whole matrix to an SLHAea object if it doesn't already exist. Definition: slhaea_helpers.hpp:83 str gauge_es_from_mass_es(str mass_es, double &max_mixing, std::vector< double > &mass_composition, const SubSpectrum &mssm) identifies gauge_es with largest mass_es content also fills largest max_mixing and full mass_composit... Definition: mssm_slhahelp.cpp:262 std::map< str, p_int_string > init_gauge_label_to_index_type() map from gauge eigenstate strings to string, index pairs Definition: ini_functions.cpp:285 str mass_es_from_gauge_es(str gauge_es, double &max_mixing, std::vector< double > &gauge_composition, const SubSpectrum &mssm) indentifies the state with largest gauge_es content also fills largest max_mixing and full gauge_comp... Definition: mssm_slhahelp.cpp:162 void SLHAea_add_from_subspec(SLHAstruct &slha, const str local_info, const SubSpectrum &subspec, const Par::Tags partype, const std::pair< int, int > &pdg_pair, const str &block, const str &comment, const bool error_if_missing=true, const double rescale=1.0) Add an entry from a subspectrum getter to an SLHAea object; SLHA index given by pdg code... Definition: slhaea_helpers.cpp:270 std::vector< double > get_gauge_comp_for_family_state(str familystate, str &mass_es, const SubSpectrum &mssm) returns vector with composition of closest the mass eigenstate to give family state in terms of gauge... Definition: mssm_slhahelp.cpp:437 virtual bool has(const Par::Tags, const str &, const SpecOverrideOptions=use_overrides, const SafeBool check_antiparticle=SafeBool(true)) const =0 Getters/Setters etc. bool SLHAea_check_block(SLHAstruct &slha, const str &block) Check if a block exists in an SLHAea object, add it if not. Definition: slhaea_helpers.cpp:106 std::map< str, std::vector< str > > init_gauge_es_to_family_states() maps directly from gauge_es string to familystates helps us reuse other routines that take string arg... Definition: ini_functions.cpp:470 |