gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
SpecBit_SM.cpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
19 
20 #include <string>
21 #include <sstream>
22 
25 #include "gambit/Utils/stream_overloads.hpp" // Just for more convenient output to logger
31 
32 // QedQcd header from SoftSUSY (via FlexibleSUSY)
33 #include "flexiblesusy/src/lowe.h"
34 
35 // Switch for debug mode
36 //#define SpecBit_DBUG
37 
38 namespace Gambit
39 {
40 
41  namespace SpecBit
42  {
43  using namespace LogTags;
44 
46  void get_QedQcd_spectrum(const SubSpectrum* &result)
47  {
48  // Access the pipes for this function to get model and parameter information, and dependencies
49  namespace myPipe = Pipes::get_QedQcd_spectrum;
50 
51  // Get SLHA2 SMINPUTS values
52  const SMInputs& sminputs = *myPipe::Dep::SMINPUTS;
53 
54  // SoftSUSY object used to set quark and lepton masses and gauge
55  // couplings in QEDxQCD effective theory
56  // Will be initialised by default using values in lowe.h, which we will
57  // override next.
58  softsusy::QedQcd oneset;
59 
60  // Fill QedQcd object with SMInputs values
61  setup_QedQcd(oneset,sminputs);
62 
63  // Run everything to Mz
64  oneset.toMz();
65 
66  // Create a Spectrum object to wrap the qedqcd object
67  static QedQcdWrapper qedqcdspec(oneset,sminputs);
68  // TODO: This probably doesn't work, and only gets us one copy of the object once.
69  // Unfortunately we cannot copy SubSpectrum objects, so this is a little tricky to
70  // solve...
71 
72  result = &qedqcdspec;
73  }
74 
76  void get_SM_spectrum(Spectrum &result)
77  {
78  namespace myPipe = Pipes::get_SM_spectrum;
79  const SMInputs& sminputs = *myPipe::Dep::SMINPUTS;
80 
81  // SoftSUSY object used to set quark and lepton masses and gauge
82  // couplings in QEDxQCD effective theory
83  softsusy::QedQcd oneset;
84 
85  // Fill QedQcd object with SMInputs values
86  setup_QedQcd(oneset,sminputs);
87 
88  // Run everything to Mz
89  oneset.toMz();
90 
91  // Create a SubSpectrum object to wrap the qedqcd object
92  // Attach the sminputs object as well, so that SM pole masses can be passed on (these aren't easily
93  // extracted from the QedQcd object, so use the values that we put into it.)
94  QedQcdWrapper qedqcdspec(oneset,sminputs);
95 
96  // Initialise an object to carry Higgs sector information
97  SMHiggsModel higgsmodel;
98  higgsmodel.HiggsPoleMass = *myPipe::Param.at("mH");
99  higgsmodel.HiggsVEV = 1. / sqrt(sqrt(2.)*sminputs.GF);
100 
101  // Create a SubSpectrum object to wrap the EW sector information
102  SMHiggsSimpleSpec higgsspec(higgsmodel);
103 
104  // Retrieve any mass cuts
105  static const Spectrum::mc_info mass_cut = myPipe::runOptions->getValueOrDef<Spectrum::mc_info>(Spectrum::mc_info(), "mass_cut");
106  static const Spectrum::mr_info mass_ratio_cut = myPipe::runOptions->getValueOrDef<Spectrum::mr_info>(Spectrum::mr_info(), "mass_ratio_cut");
107 
108  // Create full Spectrum object from components above (SubSpectrum objects will be "cloned" into the Spectrum object)
109  result = Spectrum(qedqcdspec,higgsspec,sminputs,&myPipe::Param,mass_cut,mass_ratio_cut);
110  }
111 
114  {
115  using namespace Pipes::SM_higgs_couplings;
116  // Set the number of Higgses
117  result.set_n_neutral_higgs(1);
118  result.set_n_charged_higgs(0);
119  // Set the CP of the Higgs.
120  result.CP[0] = 1;
121  // Set the decays
122  result.set_neutral_decays_SM(0, "h0_1", *Dep::Higgs_decay_rates);
123  result.set_neutral_decays(0, "h0_1", *Dep::Higgs_decay_rates);
124  // Leave all the effective couplings for all neutral higgses set to unity (done at construction).
125  }
126 
128 
129  } // end namespace SpecBit
130 } // end namespace Gambit
131 
Define overloadings of the stream operator for various containers.
This class is used to deliver both information defined in the Standard Model (or potentially just QED...
Rollcall header for module SpecBit.
General small utility macros.
Declarations of convenience (i.e.
A simple SubSpectrum wrapper for Standard Model Higgs information.
SubSpectrum wrapper class for the SM Higgs sector.
GAMBIT native higgs coupling table class.
void set_n_charged_higgs(int)
Set the number of charged Higgses.
void setup_QedQcd(softsusy::QedQcd &oneset, const SMInputs &sminputs)
Non-Gambit helper functions.
Definition: SpecBit.cpp:51
void SM_higgs_couplings(HiggsCouplingsTable &result)
Put together the SM Higgs couplings.
Definition: SpecBit_SM.cpp:113
Header file that includes all GAMBIT headers required for a module source file.
void set_n_neutral_higgs(int)
Set the number of neutral Higgses.
void get_QedQcd_spectrum(const SubSpectrum *&result)
Construct a SubSpectrum object from SMInputs using QedQcdWrapper.
Definition: SpecBit_SM.cpp:46
Virtual base class for interacting with spectrum generator output.
Definition: subspectrum.hpp:87
This class is used to wrap the QedQcd object used by SoftSUSY and FlexibleSUSY in a Gambit SubSpectru...
void set_neutral_decays(int, const str &, const DecayTable::Entry &)
Assign decay entries to neutral higgses.
std::vector< YAML::sdd > mc_info
Typedefs for making it easier to manipulate mass cut and mass ratio cut info.
Definition: spectrum.hpp:119
Simple container "model object" for the SM Higgs sector variables.
void set_neutral_decays_SM(int, const str &, const DecayTable::Entry &)
Assign decay entries to the various table components.
void get_SM_spectrum(Spectrum &result)
Get a Spectrum object wrapper for Standard-Model-only information.
Definition: SpecBit_SM.cpp:76
std::vector< double > CP
CP of neutral higgses.
Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum Spectrum SMINPUTS
std::vector< YAML::ssdd > mr_info
Definition: spectrum.hpp:120
TODO: see if we can use this one:
Definition: Analysis.hpp:33
"Standard Model" (low-energy) plus high-energy model container class
Definition: spectrum.hpp:110
Container class for Standard Model input information (defined as in SLHA2)
Definition: sminputs.hpp:29