file models/MSSM_translation_helpers.cpp
[No description available]
Namespaces
Name |
---|
Gambit TODO: see if we can use this one: |
Source code
//
/// GAMBIT: Global and Modular BSM Inference Tool
/// *********************************************
///
/// Function implementations for MSSM translation
/// helpers.
///
/// *********************************************
///
/// Authors
/// =======
///
/// (add name and date if you modify)
///
/// \author Ben Farmer
/// (benjamin.farmer@fysik.su.se)
/// \date 2015 Aug, 2017 Oct
///
/// \author Pat Scott
/// (p.scott@imperial.ac.uk)
/// \date 2018 Oct
///
/// *********************************************
#include <string>
#include <vector>
#include "gambit/Models/models/MSSM_translation_helpers.hpp"
#include "gambit/Elements/spectrum.hpp"
namespace Gambit
{
void MSSMatX_to_MSSMatQ(const ModelParameters &myP, ModelParameters &targetP, const SubSpectrum& HE)
{
// Copy all the parameters of MSSM63atMGUT into MSSM63atQ
targetP.setValues(myP);
// Now only the "Qin" parameter is left unset. Need to extract this from the Spectrum object dependency.
// Make sure the high-scale value was correctly added to the spectrum wrapper object
if( HE.has(Par::mass1,"high_scale") )
{
targetP.setValue("Qin", HE.get(Par::mass1,"high_scale") );
}
else
{
model_error().raise(LOCAL_INFO,"Parameter with name 'high_scale' (type Par::mass1) not found in Spectrum object! Translation from MSSM63at<X> to MSSM63atQ is not possible without this value. Please use a Spectrum wrapper which provides it.");
}
// Done!
}
void MSSM_mA_to_MSSM_mhud(const ModelParameters &myP, ModelParameters &targetP, const SubSpectrum& HE)
{
// Copy all the common parameters of MSSM63at<X>_mA into MSSM63at<X>
targetP.setValues(myP,false); // Set "missing_is_error" flag to false since e.g. mA parameter from MSSM63atQ_mA does not exist in MSSM63atQ. Similar for variants at other scales.
// Set the sign of mu
targetP.setValue("SignMu", Gambit::sgn(myP["mu"]));
// Now only the "mHu2" and "mHd2" parameters are left unset. Extract these from the Spectrum object dependency.
// Make sure the high-scale value was correctly added to the spectrum wrapper object
if (HE.has(Par::mass2,"mHu2") and HE.has(Par::mass2,"mHd2"))
{
targetP.setValue("mHu2", HE.get(Par::mass2,"mHu2"));
targetP.setValue("mHd2", HE.get(Par::mass2,"mHd2"));
}
else
{
model_error().raise(LOCAL_INFO,"Parameter with name 'mHu2' or 'mHd2' (type Par::mass2) not found in Spectrum object! "
"Translation from MSSM<X>_mA to MSSM<X> is not possible without this value. "
"Please use a Spectrum wrapper that provides it.");
}
}
void MSSM20atX_to_MSSM25atX(const ModelParameters &myP, ModelParameters &targetP)
{
// Send all parameter values upstream to matching parameters in parent.
// Ignore that some parameters don't exist in the parent, these are set below.
targetP.setValues(myP,false);
// RH squark soft masses, gen 1 and 2
targetP.setValue("mq2_1", myP["mq2_12"] ); // mq2_11 in MSSM63
targetP.setValue("mq2_2", myP["mq2_12"] ); // mq2_22 " "
// RH slepton soft masses, gen 1 and 2
targetP.setValue("ml2_1", myP["ml2_12"] ); // ml2_11 in MSSM63
targetP.setValue("ml2_2", myP["ml2_12"] ); // ml2_22 " "
// LH down-type squark soft masses
targetP.setValue("md2_1", myP["md2_12"] ); // ml2_11 in MSSM63
targetP.setValue("md2_2", myP["md2_12"] ); // ml2_22 " "
// LH up-type squark soft masses
targetP.setValue("mu2_1", myP["mu2_12"] ); // mu2_11 in MSSM63
targetP.setValue("mu2_2", myP["mu2_12"] ); // mu2_22 " "
// LH charged slepton soft masses
targetP.setValue("me2_1", myP["me2_12"] ); // me2_11 in MSSM63
targetP.setValue("me2_2", myP["me2_12"] ); // me2_22 " "
// Done
}
void MSSM25atX_to_MSSM30atX(const ModelParameters &myP, ModelParameters &targetP)
{
// Copy all the common parameters of MSSM25atX into MSSM30atX
targetP.setValues(myP,false);
// Manually set the parameters which differ
// slepton trilinear couplings
// Off-diagonal elements set to zero by parent model
// First and second generation elements set equal
targetP.setValue("Ae_1", myP["Ae_12"] ); // Ae2_11 in MSSM63
targetP.setValue("Ae_2", myP["Ae_12"] ); // Ae2_22 " "
//targetP.setValue("Ae_3", myP["Ae_3"] ); // Ae2_33 // Taken care of by common parameter copy
// down-type trilinear couplings
// Off-diagonal elements set to zero by parent model
// First and second generation to zero
targetP.setValue("Ad_1", 0. ); // Ad2_11 in MSSM63
targetP.setValue("Ad_2", 0. ); // Ad2_22 " "
//targetP.setValue("Ad_3", myP["Ad_3"] ); // Ad2_33 // Taken care of by common parameter copy
// up-type trilinear couplings
// Off-diagonal elements set to zero by parent model
// First and second generation set to zero
targetP.setValue("Au_1", 0. ); // Au2_11 in MSSM63
targetP.setValue("Au_2", 0. ); // Au2_22 " "
// targetP.setValue("Au_3", myP["Au_3"] ); // Au2_33 // Taken care of by common parameter copy
// Done
}
void MSSM30atX_to_MSSM63atX(const ModelParameters &myP, ModelParameters &targetP)
{
// Copy all common parameters of MSSM30atX into MSSM63atX
targetP.setValues(myP,false);
// Manually set parameters that differ
// RH squark soft masses
// Off-diagonal elements set to zero
// Only upper diagonal needed (symmetric)
targetP.setValue("mq2_11", myP["mq2_1"] );
targetP.setValue("mq2_12", 0. );
targetP.setValue("mq2_13", 0. );
//targetP.setValue("mq2_21", 0. );
targetP.setValue("mq2_22", myP["mq2_2"] );
targetP.setValue("mq2_23", 0. );
//targetP.setValue("mq2_31", 0. );
//targetP.setValue("mq2_32", 0. );
targetP.setValue("mq2_33", myP["mq2_3"] );
// RH slepton soft masses
// Off-diagonal elements set to zero
// Only upper diagonal needed (symmetric)
targetP.setValue("ml2_11", myP["ml2_1"] );
targetP.setValue("ml2_12", 0. );
targetP.setValue("ml2_13", 0. );
//targetP.setValue("ml2_21", 0. );
targetP.setValue("ml2_22", myP["ml2_2"] );
targetP.setValue("ml2_23", 0. );
//targetP.setValue("ml2_31", 0. );
//targetP.setValue("ml2_32", 0. );
targetP.setValue("ml2_33", myP["ml2_3"] );
// LH down-type slepton soft masses
// Off-diagonal elements set to zero
// Only upper diagonal needed (symmetric)
targetP.setValue("md2_11", myP["md2_1"] );
targetP.setValue("md2_12", 0. );
targetP.setValue("md2_13", 0. );
//targetP.setValue("md2_21", 0. );
targetP.setValue("md2_22", myP["md2_2"] );
targetP.setValue("md2_23", 0. );
//targetP.setValue("md2_31", 0. );
//targetP.setValue("md2_32", 0. );
targetP.setValue("md2_33", myP["md2_3"] );
// LH up-type slepton soft masses
// Off-diagonal elements set to zero
// Only upper diagonal needed (symmetric)
targetP.setValue("mu2_11", myP["mu2_1"] );
targetP.setValue("mu2_12", 0. );
targetP.setValue("mu2_13", 0. );
//targetP.setValue("mu2_21", 0. );
targetP.setValue("mu2_22", myP["mu2_2"] );
targetP.setValue("mu2_23", 0. );
//targetP.setValue("mu2_31", 0. );
//targetP.setValue("mu2_32", 0. );
targetP.setValue("mu2_33", myP["mu2_3"] );
// LH charged slepton soft masses
// Off-diagonal elements set to zero
// Only upper diagonal needed (symmetric)
targetP.setValue("me2_11", myP["me2_1"] );
targetP.setValue("me2_12", 0. );
targetP.setValue("me2_13", 0. );
//targetP.setValue("me2_21", 0. );
targetP.setValue("me2_22", myP["me2_2"] );
targetP.setValue("me2_23", 0. );
//targetP.setValue("me2_31", 0. );
//targetP.setValue("me2_32", 0. );
targetP.setValue("me2_33", myP["me2_3"] );
// slepton trilinear couplings
// Off-diagonal elements set to zero
targetP.setValue("Ae_11", myP["Ae_1"] );
targetP.setValue("Ae_12", 0. );
targetP.setValue("Ae_13", 0. );
targetP.setValue("Ae_21", 0. );
targetP.setValue("Ae_22", myP["Ae_2"] );
targetP.setValue("Ae_23", 0. );
targetP.setValue("Ae_31", 0. );
targetP.setValue("Ae_32", 0. );
targetP.setValue("Ae_33", myP["Ae_3"] );
// down-type trilinear couplings
// Off-diagonal elements set to zero
// First and second generation to zero
targetP.setValue("Ad_11", myP["Ad_1"] );
targetP.setValue("Ad_12", 0. );
targetP.setValue("Ad_13", 0. );
targetP.setValue("Ad_21", 0. );
targetP.setValue("Ad_22", myP["Ad_2"] );
targetP.setValue("Ad_23", 0. );
targetP.setValue("Ad_31", 0. );
targetP.setValue("Ad_32", 0. );
targetP.setValue("Ad_33", myP["Ad_3"] );
// up-type trilinear couplings
// Off-diagonal elements set to zero
// First and second generation set to zero
targetP.setValue("Au_11", myP["Au_1"] );
targetP.setValue("Au_12", 0. );
targetP.setValue("Au_13", 0. );
targetP.setValue("Au_21", 0. );
targetP.setValue("Au_22", myP["Au_2"] );
targetP.setValue("Au_23", 0. );
targetP.setValue("Au_31", 0. );
targetP.setValue("Au_32", 0. );
targetP.setValue("Au_33", myP["Au_3"] );
// Done!
}
}
Updated on 2024-07-18 at 13:53:33 +0000