1 #ifndef Analysis_Tools_mssm_xs_tools_h 2 #define Analysis_Tools_mssm_xs_tools_h 77 mssm_xs_tools(
const char* filename=
"",
bool kINTERPLOTATION=
false,
unsigned verbosity=0);
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); }
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); }
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); }
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); }
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); }
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); }
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); }
340 void setup(
const char* filename);
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 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 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 395 return hist(name) ?
hist(name)->Interpolate(mA,tanb) : -1.;
398 return hist(name) ?
hist(name)->GetBinContent(
hist(name)->FindBin(mA,tanb)) : -1.;
402 return hist(name) ?
hist(name)->GetBinContent(
hist(name)->FindBin(mA,tanb)) : -1.;
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);
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);
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);
448 double t=log(mA/4.92)-2.;
451 return 1./(1+t)*(unc4F+(t*unc5F));
456 double t=log(this->
mH(mA, tanb)/4.92)-2.;
459 return 1./(1+t)*(unc4F+(t*unc5F));
464 double t=log(this->
mh(mA, tanb)/4.92)-2.;
467 return 1./(1+t)*(unc4F+(t*unc5F));
494 return new mssm_xs_tools(filename, kINTERPLOTATION, verbosity);
503 return obj->
mass(boson, mA, tanb);
507 return obj->
width(boson, mA, tanb);
511 return obj->
br(decay, mA, tanb);
515 return obj->
xsec(mode, mA, tanb);
519 #endif // MSSM_XS_TOOLS_H