gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
smlike_higgs.cpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
30 
32 
33 namespace Gambit
34 {
35 
39  {
40 
41  // Find out how many Higgses we have.
42  int numhiggses = 2;
43  if (spec.has(Par::Pole_Mass,"h0", 3)) { numhiggses = 3; }
44 
45  // Check which spelling of tanbeta is in the spectrum
46  double tb;
47  if (spec.has(Par::dimensionless, "tanbeta"))
48  tb = spec.get(Par::dimensionless, "tanbeta");
49  else if (spec.has(Par::dimensionless, "TanBeta"))
50  tb = spec.get(Par::dimensionless, "TanBeta");
51  else
52  utils_error().raise(LOCAL_INFO, "TanBeta not present in spectrum.");
53 
54  // MSSM(2HDM)-like
55  if (numhiggses == 2)
56  {
57  const double sa = - spec.get(Par::Pole_Mixing,"h0",1,1);
58  const double ca = spec.get(Par::Pole_Mixing,"h0",1,2);
59  const double sb = sin(atan(tb));
60  const double cb = cos(atan(tb));
61  //cos (beta - alpha) and sin(beta-alpha)
62  const double cbma = cb * ca + sb * sa;
63  const double sbma = sb * ca - cb * ca;
64  if(sbma > cbma) return 25;
65  return 35;
66  }
67 
68  // NMSSM-like
69  else if (numhiggses == 3)
70  {
71  // SUSY basis: Re(H_u, H_d, S)
72  // Mass basis: (h_01, h_02, h_03)
73  // Higgs basis: (h_SM, H, H')
74 
75  // Rotation matrix to Higgs mass basis. This is just the pole mixings
76  // from the spectrum object.
77  const double S11 = spec.get(Par::Pole_Mixing,"h0",1,1);
78  const double S12 = spec.get(Par::Pole_Mixing,"h0",1,2);
79  const double S21 = spec.get(Par::Pole_Mixing,"h0",2,1);
80  const double S22 = spec.get(Par::Pole_Mixing,"h0",2,2);
81  const double S31 = spec.get(Par::Pole_Mixing,"h0",3,1);
82  const double S32 = spec.get(Par::Pole_Mixing,"h0",3,2);
83 
84  // The mixing from the Higgs Basis to the SUSY basis is just a rotation by angle beta
85  const double sb = sin(atan(tb));
86  const double cb = cos(atan(tb));
87 
88  // beta_matrix << cb, -sb, 0,
89  // sb, cb, 0,
90  // 0, 0, 1.
91 
92  // Now the rotation from the Higgs basis to the mass basis is the matrix
93  // product of Higgs -> SUSY, SUSY -> Mass
94 
95  const double H11 = S11*cb + S12*sb;
96  const double H12 = S21*cb + S22*sb;
97  const double H13 = S31*cb + S32*sb;
98 
99  // The [absolute] value closest to 1 to be given 'most SM-like' status
100  if (1-abs(H11) < 1-abs(H12))
101  {
102  if (1-abs(H11) < 1-abs(H13)) return 25;
103  }
104  else if (1-abs(H12) < 1-abs(H13)) return 35;
105  return 45;
106 
107  }
108 
109  // If no routines exist for the number of Higgses in the spectrum, throw an error.
110  else utils_error().raise(LOCAL_INFO, "No routines exist for finding the most SM-like Higgs for a Higgs sector with " + std::to_string(numhiggses) + " Higgses.");
111  return -1;
112 
113  }
114 
115 }
Helper function to determine which Higgs is most SM-like.
EXPORT_SYMBOLS error & utils_error()
Utility errors.
#define LOCAL_INFO
Definition: local_info.hpp:34
int SMlike_higgs_PDG_code(const SubSpectrum &)
Determine which MSSM higgs is most SM-like.
virtual double get(const Par::Tags, const str &, const SpecOverrideOptions=use_overrides, const SafeBool check_antiparticle=SafeBool(true)) const =0
Virtual base class for interacting with spectrum generator output.
Definition: subspectrum.hpp:87
TODO: see if we can use this one:
Definition: Analysis.hpp:33
virtual bool has(const Par::Tags, const str &, const SpecOverrideOptions=use_overrides, const SafeBool check_antiparticle=SafeBool(true)) const =0
Getters/Setters etc.