DESY Hbb Analysis Framework
mssm_xs_tools.h
Go to the documentation of this file.
1 #ifndef Analysis_Tools_mssm_xs_tools_h
2 #define Analysis_Tools_mssm_xs_tools_h
3 
4 #include <map>
5 #include <cmath>
6 #include <string>
7 #include <iostream>
8 
9 #include "TH2F.h"
10 #include "TFile.h"
11 
12 /* ________________________________________________________________________________________________
13  * Class: mssm_xs_tools
14  *
15  * This is a class to provide a facilitated interface to mass relations, decay widths, branching
16  * fractions and production cross sections for all Higgs bosons (A/H/h/H+) of various benchmark
17  * models of the MSSM. This information is usually provided in form of 2d (TH2F) histograms in root
18  * input files linked to the LHCXSWG-3 TWiki page (*). It is usually parametrized as a function of
19  * the pseudoscalar neutral Higgs boson mass, mA, and the ratio between the vacuum expectation
20  * values, tanb=v1/v2, of the two Higgs doublets in the MSSM, in the case of neutral Higgs boson
21  * cross sections and in as a function of the charged Higgs boson mass mH+ and tanb in the case of
22  * charged Higgs boson cross sections.
23  *
24  * The access functions provided in this class are supposed to facilitate the process of finding
25  * the proper histogram (following LHCXSWG-3 internal naming conventions) and the proper bin in the
26  * 2d histogram corresponding to mA (resp. mH+) and tanb, of which the latter is a root technicali-
27  * ty (cf. mssm_xs_tools::read for more details).
28  *
29  * The names of the 2d histograms are build from building block separated by "_", to identify the
30  * contained information. The following building blocks exist:
31  *
32  * [MASS] : indicating mass ("m");
33  * [WIDTH] : indicating width ("width");
34  * [BOSON] : indicating the boson type, used for cross section and decay info ("A", "H", "h");
35  * [PROD] : indicating the production type, separated by gluon-gluon fusion and production in
36  * association with b-quarks (in various flavour schemes, "gg", "bb4F", "bb5f", bbSantander);
37  * [UNCERT] : indicating the kind of variation corresponding to a given uncertainty ("scaleUp",
38  * "scaleDown", pdfasUp", "pdfasDown");
39  * [DECAY] : indicating the decay type (e.g. "tautau", "mumu", "bb", ...).
40  *
41  * The exact conventions of these building blocks are not always defined in a unique way and might
42  * change with time. The user should not worry about such changes. For this reasons the access
43  * functions provided by this class make use of a set of internal translation rules from a more
44  * intuitive naming scheme to the histogram names. For the sake of simplicity this naming scheme
45  * partially makes use use of the naming conventions as used for the individual building blocks of
46  * the histogram names. For more information check the documentation for each individual transla-
47  * tion rule in the class implementation. In the naming scheem used throughtout this class the
48  * following rules apply:
49  *
50  * Production: separate building block for [PROD] from building block for [BOSON] by "->" (e.g.
51  * "gg->A"). This will provide you with the corresponding central value for the cross
52  * section. There is a way to obtain the cross sections after uncertainty shifts by
53  * appending a tag for the [UNCERT] type to the production string, separated by "::" (
54  * "gg->A::scaleUp").
55  * Decay : separate building block for [BOSON] from building block for [DECAY] by "->" (e.g.
56  * "A->tautau"). This will provide you with the branching fraction for the correspon-
57  * ding decay.
58  * Mass/Width: just give the building block for the [BOSON] type as function argument (e.g. "A",
59  * "H", "h", "Hp").
60  *
61  * In case that called histograms so not exist in the root input file a WARNING is issued and a
62  * NULL pointer for TH2F is returned. Make sure you catch these WARNINGS in further use of this
63  * class. To hide away also this simple logic from the user a full set of fully documented pre-de-
64  * fined access functions for all available information is also provided. These function can also
65  * be used as reference for fuerther examples of the access logic described above (e.g. concerning
66  * further conventions used for numerous building blocks of type [DECAY]).
67  *
68  * PHYSICS CONTENT:
69  *
70  * (*)
71  * https://twiki.cern.ch/twiki/bin/view/LHCPhysics/LHCHXSWG3
72  */
74 
75  public:
77  mssm_xs_tools(const char* filename="", bool kINTERPLOTATION=false, unsigned verbosity=0);
80 
82  TH2F* hist(std::string name);
84  double mass(const char* boson, double mA, double tanb){ return read(boson, mA, tanb, &mssm_xs_tools::mass_rule); }
86  double width(const char* boson, double mA, double tanb){ return read(boson, mA, tanb, &mssm_xs_tools::width_rule); }
88  double br(const char* decay, double mA, double tanb){ return read(decay, mA, tanb, &mssm_xs_tools::br_rule); }
90  double xsec(const char* mode, double mA, double tanb){ return read(mode, mA, tanb, &mssm_xs_tools::xsec_rule); }
91 
92  /*
93  * pre-defined access function for the masses for A/H/h/H+
94  */
96  double mH(double mA, double tanb){ return mass("H", mA, tanb); }
98  double mh(double mA, double tanb){ return mass("h", mA, tanb); }
100  double mHp(double mA, double tanb){ return mass("Hp", mA, tanb); }
104  double mu2mA(double mu, double tanb){ return mass("A", mu, tanb); }
105 
106  /*
107  * pre-defined access functions for total decay widths for A/H/h/H+
108  */
109  // get total decay width for A (in GeV)
110  double width_A(double mA, double tanb){ return width("A", mA, tanb); }
111  // get total decay width for H (in GeV)
112  double width_H(double mA, double tanb){ return width("H", mA, tanb); }
113  // get total decay width for h (in GeV)
114  double width_h(double mA, double tanb){ return width("h", mA, tanb); }
115  // get total decay width for H+ (in GeV)
116  double width_Hp(double mA, double tanb){ return width("Hp", mA, tanb); }
117  // get total decay width for t->H+b (in GeV)
118  double width_tHpb(double mA, double tanb){ return width("t_Hpb", mA, tanb); }
119 
120  /*
121  * pre-defined access functions for A/H/h/H+ decays into quarks
122  */
124  double br_Att(double mA, double tanb){ return br("A->tt", mA, tanb); }
126  double br_Htt(double mA, double tanb){ return br("H->tt", mA, tanb); }
128  double br_htt(double mA, double tanb){ return br("h->tt", mA, tanb); }
130  double br_Abb(double mA, double tanb){ return br("A->bb", mA, tanb); }
132  double br_Hbb(double mA, double tanb){ return br("H->bb", mA, tanb); }
134  double br_hbb(double mA, double tanb){ return br("h->bb", mA, tanb); }
136  double br_Acc(double mA, double tanb){ return br("A->cc", mA, tanb); }
138  double br_Hcc(double mA, double tanb){ return br("H->cc", mA, tanb); }
140  double br_hcc(double mA, double tanb){ return br("h->cc", mA, tanb); }
142  double br_Ass(double mA, double tanb){ return br("A->ss", mA, tanb); }
144  double br_Hss(double mA, double tanb){ return br("H->ss", mA, tanb); }
146  double br_hss(double mA, double tanb){ return br("h->ss", mA, tanb); }
148  double br_Auu(double mA, double tanb){ return br("A->uu", mA, tanb); }
150  double br_Huu(double mA, double tanb){ return br("H->uu", mA, tanb); }
152  double br_huu(double mA, double tanb){ return br("h->uu", mA, tanb); }
154  double br_Add(double mA, double tanb){ return br("A->dd", mA, tanb); }
156  double br_Hdd(double mA, double tanb){ return br("H->dd", mA, tanb); }
158  double br_hdd(double mA, double tanb){ return br("h->dd", mA, tanb); }
160  double br_tHpb(double mA, double tanb){ return br("t->Hpb", mA, tanb); }
162  double br_Hptbb(double mA, double tanb){ return br("Hp->tbb", mA, tanb); }
164  double br_Hptsb(double mA, double tanb){ return br("Hp->tsb", mA, tanb); }
166  double br_Hptdb(double mA, double tanb){ return br("Hp->tdb", mA, tanb); }
168  double br_Hpcbb(double mA, double tanb){ return br("Hp->cbb", mA, tanb); }
170  double br_Hpcsb(double mA, double tanb){ return br("Hp->csb", mA, tanb); }
172  double br_Hpcdb(double mA, double tanb){ return br("Hp->cdb", mA, tanb); }
174  double br_Hpubb(double mA, double tanb){ return br("Hp->ubb", mA, tanb); }
176  double br_Hpusb(double mA, double tanb){ return br("Hp->usb", mA, tanb); }
178  double br_Hpudb(double mA, double tanb){ return br("Hp->udb", mA, tanb); }
179 
180  /*
181  * pre-defined access functions for A/H/h/H+ decays into leptons
182  */
184  double br_Atautau(double mA, double tanb){ return br("A->tautau", mA, tanb); }
186  double br_Htautau(double mA, double tanb){ return br("H->tautau", mA, tanb); }
188  double br_htautau(double mA, double tanb){ return br("h->tautau", mA, tanb); }
190  double br_Amumu(double mA, double tanb){ return br("A->mumu", mA, tanb); }
192  double br_Hmumu(double mA, double tanb){ return br("H->mumu", mA, tanb); }
194  double br_hmumu(double mA, double tanb){ return br("h->mumu", mA, tanb); }
196  double br_Aee(double mA, double tanb){ return br("A->ee", mA, tanb); }
198  double br_Hee(double mA, double tanb){ return br("H->ee", mA, tanb); }
200  double br_hee(double mA, double tanb){ return br("h->ee", mA, tanb); }
202  double br_Hptaunu(double mA, double tanb){ return br("Hp->taunu", mA, tanb); }
204  double br_Hpmunu(double mA, double tanb){ return br("Hp->munu", mA, tanb); }
206  double br_Hpenu(double mA, double tanb){ return br("Hp->enu", mA, tanb); }
207 
208  /*
209  * pre-defined access functions for A/H/h decays into gauge bosons
210  */
212  double br_AWW(double mA, double tanb){ return br("A->WW", mA, tanb); }
214  double br_HWW(double mA, double tanb){ return br("H->WW", mA, tanb); }
216  double br_hWW(double mA, double tanb){ return br("h->WW", mA, tanb); }
218  double br_AZZ(double mA, double tanb){ return br("A->ZZ", mA, tanb); }
220  double br_HZZ(double mA, double tanb){ return br("H->ZZ", mA, tanb); }
222  double br_hZZ(double mA, double tanb){ return br("h->ZZ", mA, tanb); }
224  double br_Agg(double mA, double tanb){ return br("A->gluglu", mA, tanb); }
226  double br_Hgg(double mA, double tanb){ return br("H->gluglu", mA, tanb); }
228  double br_hgg(double mA, double tanb){ return br("h->gluglu", mA, tanb); }
230  double br_AZgamma(double mA, double tanb){ return br("A->Zgam", mA, tanb); }
232  double br_HZgamma(double mA, double tanb){ return br("H->Zgam", mA, tanb); }
234  double br_hZgamma(double mA, double tanb){ return br("h->Zgamm", mA, tanb); }
236  double br_Agammagamma(double mA, double tanb){ return br("A->gamgam", mA, tanb); }
238  double br_Hgammagamma(double mA, double tanb){ return br("H->gamgam", mA, tanb); }
240  double br_hgammagamma(double mA, double tanb){ return br("h->gamgam", mA, tanb); }
241 
242  /*
243  * pre-defined access functions for Higgs to Higgs/SUSY decays
244  */
246  double br_Hhh(double mA, double tanb){ return br("H->hh", mA, tanb); }
248  double br_AZh(double mA, double tanb){ return br("A->Zh", mA, tanb); }
250  double br_HpWh(double mA, double tanb){ return br("Hp->hW", mA, tanb); }
252  double br_HpWA(double mA, double tanb){ return br("Hp->AW", mA, tanb); }
254  double br_HpHHW(double mA, double tanb){ return br("Hp->HHW", mA, tanb); }
256  double br_ASUSY(double mA, double tanb){ return br("A->SUSY", mA, tanb); }
258  double br_HSUSY(double mA, double tanb){ return br("H->SUSY", mA, tanb); }
260  double br_hSUSY(double mA, double tanb){ return br("h->SUSY", mA, tanb); }
262  double br_HpSUSY(double mA, double tanb){ return br("Hp->SUSY", mA, tanb); }
263 
264  /*
265  * pre-defined access functions for A/H/h/H+ production
266  */
268  double ggH_A(double mA, double tanb){ return xsec("gg->A", mA, tanb); }
270  double ggH_H(double mA, double tanb){ return xsec("gg->H", mA, tanb); }
272  double ggH_h(double mA, double tanb){ return xsec("gg->h", mA, tanb); }
274  double bbH5F_A(double mA, double tanb){ return xsec("bb5F->A", mA, tanb); }
276  double bbH5F_H(double mA, double tanb){ return xsec("bb5F->H", mA, tanb); }
278  double bbH5F_h(double mA, double tanb){ return xsec("bb5F->h", mA, tanb); }
280  double bbH4F_A(double mA, double tanb){ return xsec("bb4F->A", mA, tanb); }
282  double bbH4F_H(double mA, double tanb){ return xsec("bb4F->H", mA, tanb); }
284  double bbH4F_h(double mA, double tanb){ return xsec("bb4F->h", mA, tanb); }
286  double bbHSantander_A(double mA, double tanb);
288  double bbHSantander_H(double mA, double tanb);
290  double bbHSantander_h(double mA, double tanb);
291 
292  /*
293  * pre-defined access functions for A/H/h/H+ production uncertainties in several flavours
294  */
296  double ggH_A_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "gg->A::scaleUp" : "gg->A::scaleDown", mA, tanb); }
298  double ggH_H_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "gg->H::scaleUp" : "gg->H::scaleDown", mA, tanb); }
300  double ggH_h_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "gg->h::scaleUp" : "gg->h::scaleDown", mA, tanb); }
302  double ggH_A_pdfas(double mA, double tanb, const bool kUP){ return xsec((kUP ? "gg->A::pdfasUp" : "gg->A::pdfasDown"), mA, tanb); }
304  double ggH_H_pdfas(double mA, double tanb, const bool kUP){ return xsec((kUP ? "gg->H::pdfasUp" : "gg->H::pdfasDown"), mA, tanb); }
306  double ggH_h_pdfas(double mA, double tanb, const bool kUP){ return xsec((kUP ? "gg->h::pdfasUp" : "gg->h::pdfasDown"), mA, tanb); }
308  double bbH5F_A_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "bb5F->A::scaleUp" : "bb5F->A::scaleDown", mA, tanb); }
310  double bbH5F_H_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "bb5F->H::scaleUp" : "bb5F->H::scaleDown", mA, tanb); }
312  double bbH5F_h_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "bb5F->h::scaleUp" : "bb5F->h::scaleDown", mA, tanb); }
314  double bbH4F_A_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "bb4F->A::scaleUp" : "bb4F->A::scaleDown", mA, tanb); }
316  double bbH4F_H_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "bb4F->H::scaleUp" : "bb4F->H::scaleDown", mA, tanb); }
318  double bbH4F_h_scale(double mA, double tanb, const bool kUP){ return xsec(kUP ? "bb4F->h::scaleUp" : "bb4F->h::scaleDown", mA, tanb); }
320  double bbH5F_A_pdfas(double mA, double tanb, const bool kUP){ return xsec((kUP ? "bb5F->A::pdfasUp" : "bb5F->A::pdfasDown"), mA, tanb); }
322  double bbH5F_H_pdfas(double mA, double tanb, const bool kUP){ return xsec((kUP ? "bb5F->H::pdfasUp" : "bb5F->H::pdfasDown"), mA, tanb); }
324  double bbH5F_h_pdfas(double mA, double tanb, const bool kUP){ return xsec((kUP ? "bb5F->h::pdfasUp" : "bb5F->h::pdfasDown"), mA, tanb); }
326  double bbHSantander_A_scale(double mA, double tanb, const bool kUP);
328  double bbHSantander_H_scale(double mA, double tanb, const bool kUP);
330  double bbHSantander_h_scale(double mA, double tanb, const bool kUP);
332  double bbHSantander_A_pdfas(double mA, double tanb, const bool kUP);
334  double bbHSantander_H_pdfas(double mA, double tanb, const bool kUP);
336  double bbHSantander_h_pdfas(double mA, double tanb, const bool kUP);
337 
338  private:
340  void setup(const char* filename);
342  std::string br_rule(const char* br);
344  std::string width_rule(const char* b);
346  std::string xsec_rule(const char* xs);
348  std::string mass_rule(const char* b);
356  double read(const char* key, double mA, double tanb, std::string (mssm_xs_tools::*rule)(const char* key)){
357  std::string name = (this->*rule)(key);
358  if(name.find("Santander")!=std::string::npos){
359  if(name.find("_h")!=std::string::npos){
360  if(name.find( "scaleDown" )!=std::string::npos){return bbHSantander_h_scale(mA, tanb, false);} else
361  if(name.find( "scaleUp" )!=std::string::npos){return bbHSantander_h_scale(mA, tanb, true );} else
362  if(name.find( "pdfasDown" )!=std::string::npos){return bbHSantander_h_pdfas(mA, tanb, false);} else
363  if(name.find( "pdfasUp" )!=std::string::npos){return bbHSantander_h_pdfas(mA, tanb, true );}
364  else{
365  return bbHSantander_h(mA, tanb);
366  }
367  } else
368  if(name.find("_H")!=std::string::npos){
369  if(name.find( "scaleDown" )!=std::string::npos){return bbHSantander_H_scale(mA, tanb, false);} else
370  if(name.find( "scaleUp" )!=std::string::npos){return bbHSantander_H_scale(mA, tanb, true );} else
371  if(name.find( "pdfasDown" )!=std::string::npos){return bbHSantander_H_pdfas(mA, tanb, false);} else
372  if(name.find( "pdfasUp" )!=std::string::npos){return bbHSantander_H_pdfas(mA, tanb, true );}
373  else{
374  return bbHSantander_H(mA, tanb);
375  }
376  } else
377  if(name.find("_A")!=std::string::npos){
378  if(name.find( "scaleDown" )!=std::string::npos){return bbHSantander_A_scale(mA, tanb, false);} else
379  if(name.find( "scaleUp" )!=std::string::npos){return bbHSantander_A_scale(mA, tanb, true );} else
380  if(name.find( "pdfasDown" )!=std::string::npos){return bbHSantander_A_pdfas(mA, tanb, false);} else
381  if(name.find( "pdfasUp" )!=std::string::npos){return bbHSantander_A_pdfas(mA, tanb, true );}
382  else{
383  return bbHSantander_A(mA, tanb);
384  }
385  }
386  else{
387  return -1;
388  }
389  }
390  else {
391  if(kINTERPOL_){
392  // restrict interplolation to boundaries of histogram, at the boundaries fall back to plain bin
393  // content
394  if(hist(name)->GetXaxis()->FindBin(mA )<nbinsX_-1 && hist(name)->GetYaxis()->FindBin(tanb)<nbinsY_-1){
395  return hist(name) ? hist(name)->Interpolate(mA,tanb) : -1.;
396  }
397  else{
398  return hist(name) ? hist(name)->GetBinContent(hist(name)->FindBin(mA,tanb)) : -1.;
399  }
400  }
401  else{
402  return hist(name) ? hist(name)->GetBinContent(hist(name)->FindBin(mA,tanb)) : -1.;
403  }
404  }
405  }
407  unsigned verbosity_;
411  TFile* input_;
413  std::map<std::string, TH2F*> hists_;
416  int nbinsX_;
419  int nbinsY_;
420 };
421 
422 inline double
423 mssm_xs_tools::bbHSantander_A(double mA, double tanb){
424  double t=log(mA/4.92)-2.;
425  double fourflav=this->bbH4F_A(mA,tanb);
426  double fiveflav=this->bbH5F_A(mA,tanb);
427  return (1./(1.+t))*(fourflav+t*fiveflav);
428 }
429 
430 inline double
431 mssm_xs_tools::bbHSantander_H(double mA, double tanb){
432  double t=log(this->mH(mA,tanb)/4.92)-2.;
433  double fourflav=this->bbH4F_H(mA,tanb);
434  double fiveflav=this->bbH5F_H(mA,tanb);
435  return (1./(1.+t))*(fourflav+t*fiveflav);
436 }
437 
438 inline double
439 mssm_xs_tools::bbHSantander_h(double mA, double tanb){
440  double t=log(this->mh(mA,tanb)/4.92)-2.;
441  double fourflav=this->bbH4F_h(mA,tanb);
442  double fiveflav=this->bbH5F_h(mA,tanb);
443  return (1./(1.+t))*(fourflav+t*fiveflav);
444 }
445 
446 double
447 mssm_xs_tools::bbHSantander_A_scale(double mA, double tanb, const bool kUP){
448  double t=log(mA/4.92)-2.;
449  double unc4F=this->bbH4F_A_scale(mA, tanb, kUP);
450  double unc5F=this->bbH5F_A_scale(mA, tanb, kUP);
451  return 1./(1+t)*(unc4F+(t*unc5F));
452 }
453 
454 double
455 mssm_xs_tools::bbHSantander_H_scale(double mA, double tanb, const bool kUP){
456  double t=log(this->mH(mA, tanb)/4.92)-2.;
457  double unc4F=this->bbH4F_H_scale(mA, tanb, kUP);
458  double unc5F=this->bbH5F_H_scale(mA, tanb, kUP);
459  return 1./(1+t)*(unc4F+(t*unc5F));
460 }
461 
462 double
463 mssm_xs_tools::bbHSantander_h_scale(double mA, double tanb, const bool kUP){
464  double t=log(this->mh(mA, tanb)/4.92)-2.;
465  double unc4F=this->bbH4F_h_scale(mA, tanb, kUP);
466  double unc5F=this->bbH5F_h_scale(mA, tanb, kUP);
467  return 1./(1+t)*(unc4F+(t*unc5F));
468 }
469 
470 double
471 mssm_xs_tools::bbHSantander_A_pdfas(double mA, double tanb, const bool kUP){
472  return bbH5F_A_pdfas(mA, tanb, kUP)/bbH5F_A(mA, tanb) * bbHSantander_A(mA, tanb);
473 }
474 
475 double
476 mssm_xs_tools::bbHSantander_H_pdfas(double mA, double tanb, const bool kUP){
477  return bbH5F_H_pdfas(mA, tanb, kUP)/bbH5F_H(mA, tanb) * bbHSantander_H(mA, tanb);
478 }
479 
480 double
481 mssm_xs_tools::bbHSantander_h_pdfas(double mA, double tanb, const bool kUP){
482  return bbH5F_h_pdfas(mA, tanb, kUP)/bbH5F_h(mA, tanb) * bbHSantander_h(mA, tanb);
483 }
484 
485 /* ________________________________________________________________________________________________
486  * Class: mssm_xs_tools
487  *
488  * External C wrapper to make core functionality available in python, too.
489  */
490 
491 extern "C" {
493  mssm_xs_tools* mssm_xs_tools_new(const char* filename="", bool kINTERPLOTATION=false, unsigned verbosity=0){
494  return new mssm_xs_tools(filename, kINTERPLOTATION, verbosity);
495  };
498  delete obj;
499  };
501  double mssm_xs_tools_mass(mssm_xs_tools* obj, const char* boson, double mA, double tanb){
502  //std::cout << obj->read(boson, mA, tanb, &mssm_xs_tools::mass_rule) << std::endl;
503  return obj->mass(boson, mA, tanb);
504  }
506  double mssm_xs_tools_width(mssm_xs_tools* obj, const char* boson, double mA, double tanb){
507  return obj->width(boson, mA, tanb);
508  }
510  double mssm_xs_tools_br(mssm_xs_tools* obj, const char* decay, double mA, double tanb){
511  return obj->br(decay, mA, tanb);
512  }
514  double mssm_xs_tools_xsec(mssm_xs_tools* obj, const char* mode, double mA, double tanb){
515  return obj->xsec(mode, mA, tanb);
516  }
517 }
518 
519 #endif // MSSM_XS_TOOLS_H
double br_AWW(double mA, double tanb)
get BR(A->WW) for given value of mA and tanb
double br_Hgammagamma(double mA, double tanb)
get BR(H->gammagamma) for given value of mA and tanb
double ggH_h(double mA, double tanb)
get cross section for production of h in gluon-gluon fusion (in pb)
double br_Att(double mA, double tanb)
get BR(A->tt) for given value of mA and tanb
double ggH_H_scale(double mA, double tanb, const bool kUP)
get uncertainties for gluon-gluon fusion production of H from mu scale variations (in pb) ...
mssm_xs_tools * mssm_xs_tools_new(const char *filename="", bool kINTERPLOTATION=false, unsigned verbosity=0)
constructor
double br_Abb(double mA, double tanb)
get BR(A->bb) for given value of mA and tanb
double mssm_xs_tools_br(mssm_xs_tools *obj, const char *decay, double mA, double tanb)
get branching fraction for a given decay of a given Higgs boson for given values of mA and tanb ...
double width_tHpb(double mA, double tanb)
double width_H(double mA, double tanb)
double bbH5F_h_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for h production in association with b quarks from variations of pdfs and alphas (s...
void mssm_xs_tools_delete(mssm_xs_tools *obj)
destructor
double br_hss(double mA, double tanb)
get BR(h->ss) for given value of mA and tanb
double br_Hpcsb(double mA, double tanb)
get BR(H+->csb) for given value of mA and tanb
double bbHSantander_H(double mA, double tanb)
get cross section for production of H in association with b quarks (using Santander matching scheme) ...
double bbHSantander_h(double mA, double tanb)
get cross section for production of h in association with b quarks (using Santander matching scheme) ...
double bbHSantander_H_scale(double mA, double tanb, const bool kUP)
get uncertainties for H production in association with b quarks from mu variations (Santander matchin...
double br_Acc(double mA, double tanb)
get BR(A->cc) for given value of mA and tanb
double br_Hpenu(double mA, double tanb)
get BR(H+->enu) for given value of mA and tanb
double bbH4F_h_scale(double mA, double tanb, const bool kUP)
get uncertainties for h production in association with b quarks from mu scale variations (4FS...
double width_A(double mA, double tanb)
double br_hZgamma(double mA, double tanb)
get BR(h->Zgamma) for given value of mA and tanb
double br_Hee(double mA, double tanb)
get BR(H->ee) for given value of mA and tanb
double bbHSantander_A(double mA, double tanb)
get cross section for production of A in association with b quarks (using Santander matching scheme) ...
double br_hWW(double mA, double tanb)
get BR(h->WW) for given value of mA and tanb
double bbHSantander_H_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for H production in association with b quarks from pdf+alphas variations (Santander...
double br_Ass(double mA, double tanb)
get BR(A->ss) for given value of mA and tanb
double br_AZZ(double mA, double tanb)
get BR(A->ZZ) for given value of mA and tanb
double br_Htautau(double mA, double tanb)
get BR(H->tautau) for given value of mA and tanb
double br_huu(double mA, double tanb)
get BR(h->uu) for given value of mA and tanb
double mHp(double mA, double tanb)
get mH+ for given value of mA and tanb (in GeV)
double bbHSantander_A_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for A production in association with b quarks from pdf+alphas variations (Santander...
double br_Hptbb(double mA, double tanb)
get BR(H+->tbb) for given value of mA and tanb
double ggH_H_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for gluon-gluon fusion production of H from variations of pdfs and alphas (in pb) ...
double ggH_A_scale(double mA, double tanb, const bool kUP)
get uncertainties for gluon-gluon fusion production of A from mu scale variations (in pb) ...
double br_AZgamma(double mA, double tanb)
get BR(A->Zgamma) for given value of mA and tanb
double br_HpHHW(double mA, double tanb)
get BR(H+->HHA) for given value of mA and tanb
double br_hmumu(double mA, double tanb)
get BR(h->mumu) for given value of mA and tanb
double width(const char *boson, double mA, double tanb)
get totla decay width of a given Higgs boson for given values of mA and tanb (in GeV) ...
Definition: mssm_xs_tools.h:86
std::string br_rule(const char *br)
rule to determine histogram names related to branching fractions in the input file ...
double br_htautau(double mA, double tanb)
get BR(h->tautau) for given value of mA and tanb
std::map< std::string, TH2F * > hists_
histogram container (filled in constructor)
double mass(const char *boson, double mA, double tanb)
get mass of a given Higgs boson for given values of mA and tanb (in GeV)
Definition: mssm_xs_tools.h:84
void setup(const char *filename)
open input file to access histograms (only needed if input file was not specified in the constructor)...
TFile * input_
root input file (opened in constructor)
double br_Agg(double mA, double tanb)
get BR(A->gg) for given value of mA and tanb
double br_HpWh(double mA, double tanb)
get BR(H+->Wh) for given value of mA and tanb
double br_HSUSY(double mA, double tanb)
get BR(H->SUSY) for given value of mA and tanb
double br_Hdd(double mA, double tanb)
get BR(H->dd) for given value of mA and tanb
double br_hbb(double mA, double tanb)
get BR(h->bb) for given value of mA and tanb
double mu2mA(double mu, double tanb)
TH2F * hist(std::string name)
a save way to access a histogram from the stack; returns NULL if histogram does not exist on stack ...
double br_Hhh(double mA, double tanb)
get BR(H->hh) for given value of mA and tanb
double xsec(const char *mode, double mA, double tanb)
get production cross section for a given production model of a given Higgs boson for given values of ...
Definition: mssm_xs_tools.h:90
std::string mass_rule(const char *b)
rule to determine histogram names related to masses in the input file
double bbHSantander_A_scale(double mA, double tanb, const bool kUP)
get uncertainties for A production in association with b quarks from mu variations (Santander matchin...
double ggH_A(double mA, double tanb)
get cross section for production of A in gluon-gluon fusion (in pb)
double bbH5F_A_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for A production in association with b quarks from variations of pdfs and alphas (s...
double bbH4F_H_scale(double mA, double tanb, const bool kUP)
get uncertainties for H production in association with b quarks from mu scale variations (4FS...
double br_htt(double mA, double tanb)
get BR(h->tt) for given value of mA and tanb
double br_Hpcdb(double mA, double tanb)
get BR(H+->cdb) for given value of mA and tanb
std::string xsec_rule(const char *xs)
rule to determine histogram names related to cross sections in the input file
unsigned verbosity_
verbosity level
double width_Hp(double mA, double tanb)
double br_Auu(double mA, double tanb)
get BR(A->uu) for given value of mA and tanb
double br_Huu(double mA, double tanb)
get BR(H->uu) for given value of mA and tanb
double br_hZZ(double mA, double tanb)
get BR(h->ZZ) for given value of mA and tanb
double br_Hmumu(double mA, double tanb)
get BR(H->tautau) for given value of mA and tanb
double mh(double mA, double tanb)
get mh for given value of mA and tanb (in GeV)
Definition: mssm_xs_tools.h:98
double ggH_A_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for gluon-gluon fusion production of A from variations of pdfs and alphas (in pb) ...
double br_Amumu(double mA, double tanb)
get BR(A->mumu) for given value of mA and tanb
double ggH_h_scale(double mA, double tanb, const bool kUP)
get uncertainties for gluon-gluon fusion production of h from mu scale variations (in pb) ...
double br_Hpubb(double mA, double tanb)
get BR(H+->ubb) for given value of mA and tanb
double br_hdd(double mA, double tanb)
get BR(h->dd) for given value of mA and tanb
double ggH_h_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for gluon-gluon fusion production of h from variations of pdfs and alphas (in pb) ...
double bbH4F_A_scale(double mA, double tanb, const bool kUP)
get uncertainties for A production in association with b quarks from mu scale variations (4FS...
double br_HWW(double mA, double tanb)
get BR(H->WW) for given value of mA and tanb
double br_hSUSY(double mA, double tanb)
get BR(h->SUSY) for given value of mA and tanb
double br_Hbb(double mA, double tanb)
get BR(H->bb) for given value of mA and tanb
double bbHSantander_h_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for h production in association with b quarks from pdf+alphas variations (Santander...
~mssm_xs_tools()
destructor
Definition: mssm_xs_tools.h:79
double br_Hpusb(double mA, double tanb)
get BR(H+->usb) for given value of mA and tanb
double br_Agammagamma(double mA, double tanb)
get BR(A->gammagamma) for given value of mA and tanb
double bbH5F_H_pdfas(double mA, double tanb, const bool kUP)
get uncertainties for H production in association with b quarks from variations of pdfs and alphas (s...
double bbH5F_h(double mA, double tanb)
get cross section for production of h in association with b quarks (5FS) (in pb)
mssm_xs_tools(const char *filename="", bool kINTERPLOTATION=false, unsigned verbosity=0)
constructor
Definition: mssm_xs_tools.cc:5
double bbH5F_A(double mA, double tanb)
get cross section for production of A in association with b quarks (5FS) (in pb)
double br_Add(double mA, double tanb)
get BR(A->dd) for given value of mA and tanb
double br_Hptdb(double mA, double tanb)
get BR(H+->tdb) for given value of mA and tanb
double br_Hpmunu(double mA, double tanb)
get BR(H+->munu) for given value of mA and tanb
double bbH5F_H_scale(double mA, double tanb, const bool kUP)
get uncertainties for H production in association with b quarks from mu scale variations (5FS...
double br_Aee(double mA, double tanb)
get BR(A->ee) for given value of mA and tanb
double bbH5F_H(double mA, double tanb)
get cross section for production of H in association with b quarks (5FS) (in pb)
double br_HZZ(double mA, double tanb)
get BR(H->ZZ) for given value of mA and tanb
double bbH5F_A_scale(double mA, double tanb, const bool kUP)
get uncertainties for A production in association with b quarks from mu scale variations (5FS...
double br_HpWA(double mA, double tanb)
get BR(H+->WA) for given value of mA and tanb
double br_ASUSY(double mA, double tanb)
get BR(A->SUSY) for given value of mA and tanb
double br_Hcc(double mA, double tanb)
get BR(H->cc) for given value of mA and tanb
double mssm_xs_tools_width(mssm_xs_tools *obj, const char *boson, double mA, double tanb)
get total decay width of a given Higgs boson for given values of mA and tanb (in GeV) ...
double mssm_xs_tools_xsec(mssm_xs_tools *obj, const char *mode, double mA, double tanb)
get production cross section for a given production model of a given Higgs boson for given values of ...
double br_tHpb(double mA, double tanb)
get BR(t->H+b) for given value of mA and tanb
double br_Hpcbb(double mA, double tanb)
get BR(H+->cbb) for given value of mA and tanb
double bbH4F_H(double mA, double tanb)
get cross section for production of H in association with b quarks (4FS) (in pb)
double bbH5F_h_scale(double mA, double tanb, const bool kUP)
get uncertainties for h production in association with b quarks from mu scale variations (5FS...
double br_hgg(double mA, double tanb)
get BR(h->gg) for given value of mA and tanb
double br_Hptsb(double mA, double tanb)
get BR(H+->tsb) for given value of mA and tanb
std::string width_rule(const char *b)
rule to determine histogram names related to full decay widths in the input file
double br_AZh(double mA, double tanb)
get BR(A->Zh) for given value of mA and tanb
double bbHSantander_h_scale(double mA, double tanb, const bool kUP)
get uncertainties for h production in association with b quarks from mu variations (Santander matchin...
double br_hee(double mA, double tanb)
get BR(h->ee) for given value of mA and tanb
double mH(double mA, double tanb)
get mH for given value of mA and tanb (in GeV)
Definition: mssm_xs_tools.h:96
double br_Hpudb(double mA, double tanb)
get BR(H+->udb) for given value of mA and tanb
double bbH4F_h(double mA, double tanb)
get cross section for production of h in association with b quarks (4FS) (in pb)
double br(const char *decay, double mA, double tanb)
get branching fraction for a given decay of a given Higgs boson for given values of mA and tanb ...
Definition: mssm_xs_tools.h:88
double br_Hptaunu(double mA, double tanb)
get BR(H+->taunu) for given value of mA and tanb
double br_HZgamma(double mA, double tanb)
get BR(H->gammagamma) for given value of mA and tanb
double br_Hgg(double mA, double tanb)
get BR(H->gg) for given value of mA and tanb
bool kINTERPOL_
apply bilinear interpolation (built-in to TH2F) or get bin content, plain as it is ...
double br_Htt(double mA, double tanb)
get BR(H->tt) for given value of mA and tanb
double width_h(double mA, double tanb)
double mssm_xs_tools_mass(mssm_xs_tools *obj, const char *boson, double mA, double tanb)
get mass of a given Higgs boson for given values of mA and tanb (in GeV)
double br_Atautau(double mA, double tanb)
get BR(A->tautau) for given value of mA and tanb
double ggH_H(double mA, double tanb)
get cross section for production of H in gluon-gluon fusion (in pb)
double br_HpSUSY(double mA, double tanb)
get BR(H+->SUSY) for given value of mA and tanb
double br_hgammagamma(double mA, double tanb)
get BR(h->gammagamma) for given value of mA and tanb
double br_hcc(double mA, double tanb)
get BR(h->cc) for given value of mA and tanb
double br_Hss(double mA, double tanb)
get BR(H->ss) for given value of mA and tanb
double read(const char *key, double mA, double tanb, std::string(mssm_xs_tools::*rule)(const char *key))
double bbH4F_A(double mA, double tanb)
get cross section for production of A in association with b quarks (4FS) (in pb)