JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
MadMela.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <stdexcept>
3 #include "MadMela.h"
4 #include "MELAStreamHelpers.hh"
5 #include "TLorentzVector.h"
6 #include "TUtil.hh"
7 #include "TVar.hh"
8 #include "TMCFM.hh"
11 using namespace madMela;
12 std::map<std::pair<TVar::Process, TVar::Production>, MG_process_double>* madMela::updateMap;
13 
250  //Now WIPE all the couplings!!!
251  params_r_.mdl_cg = 0;
252  params_r_.mdl_cw = 0;
253  params_r_.mdl_ch = 0;
254  params_r_.mdl_chbox = 0;
255  params_r_.mdl_chdd = 0;
256  params_r_.mdl_chg = 0;
257  params_r_.mdl_chw = 0;
258  params_r_.mdl_chb = 0;
259  params_r_.mdl_chwb = 0;
260  params_r_.mdl_cehre = 0;
261  params_r_.mdl_cuhre = 0;
262  params_r_.mdl_cdhre = 0;
263  params_r_.mdl_cewre = 0;
264  params_r_.mdl_cebre = 0;
265  params_r_.mdl_cugre = 0;
266  params_r_.mdl_cuwre = 0;
267  params_r_.mdl_cubre = 0;
268  params_r_.mdl_cdgre = 0;
269  params_r_.mdl_cdwre = 0;
270  params_r_.mdl_cdbre = 0;
271  params_r_.mdl_chl1 = 0;
272  params_r_.mdl_chl3 = 0;
273  params_r_.mdl_che = 0;
274  params_r_.mdl_chq1 = 0;
275  params_r_.mdl_chq3 = 0;
276  params_r_.mdl_chu = 0;
277  params_r_.mdl_chd = 0;
278  params_r_.mdl_chudre = 0;
279  params_r_.mdl_cll = 0;
280  params_r_.mdl_cll1 = 0;
281  params_r_.mdl_cqq1 = 0;
282  params_r_.mdl_cqq11 = 0;
283  params_r_.mdl_cqq3 = 0;
284  params_r_.mdl_cqq31 = 0;
285  params_r_.mdl_clq1 = 0;
286  params_r_.mdl_clq3 = 0;
287  params_r_.mdl_cee = 0;
288  params_r_.mdl_cuu = 0;
289  params_r_.mdl_cuu1 = 0;
290  params_r_.mdl_cdd = 0;
291  params_r_.mdl_cdd1 = 0;
292  params_r_.mdl_ceu = 0;
293  params_r_.mdl_ced = 0;
294  params_r_.mdl_cud1 = 0;
295  params_r_.mdl_cud8 = 0;
296  params_r_.mdl_cle = 0;
297  params_r_.mdl_clu = 0;
298  params_r_.mdl_cld = 0;
299  params_r_.mdl_cqe = 0;
300  params_r_.mdl_cqu1 = 0;
301  params_r_.mdl_cqu8 = 0;
302  params_r_.mdl_cqd1 = 0;
303  params_r_.mdl_cqd8 = 0;
304  params_r_.mdl_cledqre = 0;
305  params_r_.mdl_cquqd1re = 0;
306  params_r_.mdl_cquqd11re = 0;
307  params_r_.mdl_cquqd8re = 0;
308  params_r_.mdl_cquqd81re = 0;
309  params_r_.mdl_clequ1re = 0;
310  params_r_.mdl_clequ3re = 0;
311 
312  params_r_.mdl_cgtil = 0;
313  params_r_.mdl_cwtil = 0;
314  params_r_.mdl_chgtil = 0;
315  params_r_.mdl_chwtil = 0;
316  params_r_.mdl_chbtil = 0;
317  params_r_.mdl_chwbtil = 0;
318  params_r_.mdl_cewim = 0;
319  params_r_.mdl_cebim = 0;
320  params_r_.mdl_cugim = 0;
321  params_r_.mdl_cuwim = 0;
322  params_r_.mdl_cubim = 0;
323  params_r_.mdl_cdgim = 0;
324  params_r_.mdl_cdwim = 0;
325  params_r_.mdl_cdbim = 0;
326  params_r_.mdl_chudim = 0;
327  params_r_.mdl_cehim = 0;
328  params_r_.mdl_cuhim = 0;
329  params_r_.mdl_cdhim = 0;
330  params_r_.mdl_cledqim = 0;
331  params_r_.mdl_cquqd1im = 0;
332  params_r_.mdl_cquqd8im = 0;
333  params_r_.mdl_cquqd11im = 0;
334  params_r_.mdl_cquqd81im = 0;
335  params_r_.mdl_clequ1im = 0;
336  params_r_.mdl_clequ3im = 0;
337 }
338 
340 
341  params_r_.mdl_ckmlambda = 2.265000e-01;
342  params_r_.mdl_ckma = 7.900000e-01;
343  params_r_.mdl_ckmrho = 1.410000e-01;
344  params_r_.mdl_ckmeta = 0;
345 
346  params_r_.mdl_lambdasmeft = 1.000000e+03;
347  params_r_.mdl_linearpropcorrections = 0;
348 
349  //Trying to set all the masses the same as the rest of MELA!
350  mad_masses_.mdl_md = TUtil::GetMass(1); //4.670000e-03;
351  mad_masses_.mdl_mu = TUtil::GetMass(2); //2.160000e-03;
352  mad_masses_.mdl_ms = TUtil::GetMass(3); //9.300000e-02;
353  mad_masses_.mdl_mc = TUtil::GetMass(4); //1.270000e+00;
354  mad_masses_.mdl_mb = TUtil::GetMass(5); //4.180000e+00;
355  mad_masses_.mdl_mt = TUtil::GetMass(6); //1.727600e+02;
356 
357  mad_masses_.mdl_me = TUtil::GetMass(11); //5.110000e-04;
358  mad_masses_.mdl_mmu = TUtil::GetMass(13); //1.056600e-01;
359  mad_masses_.mdl_mta = TUtil::GetMass(15); //1.777000e+00;
360 
361  mad_masses_.mdl_mz = TUtil::GetMass(23); //9.118760e+01;
362  mad_masses_.mdl_mw = TUtil::GetMass(24); //7.983133e+01;
363  mad_masses_.mdl_mh = TUtil::GetMass(25); //1.250900e+02;
364 
365  widths_.mdl_wt = TUtil::GetDecayWidth(6);
366  widths_.mdl_wz = TUtil::GetDecayWidth(23);
367  widths_.mdl_ww = TUtil::GetDecayWidth(24);
368  widths_.mdl_wh = TUtil::GetDecayWidth(25);
369 
370  params_r_.mdl_ymdo = TUtil::GetMass(1);
371  params_r_.mdl_ymup = TUtil::GetMass(2);
372  params_r_.mdl_yms = TUtil::GetMass(3);
373  params_r_.mdl_ymc = TUtil::GetMass(4);
374  params_r_.mdl_ymb = TUtil::GetMass(5);
375  params_r_.mdl_ymt = TUtil::GetMass(6);
376 
377  params_r_.mdl_yme = TUtil::GetMass(11);
378  params_r_.mdl_ymm = TUtil::GetMass(13);
379  params_r_.mdl_ymtau = TUtil::GetMass(15);
380 
381  params_r_.mdl_aew = 7.815553e-03;
382  params_r_.mdl_gf = 1.166379e-05;
383  params_r_.as = qcdcouple_.as; //1.179000e-01;
384 
386 
387  updateMap = new std::map<std::pair<TVar::Process, TVar::Production>, MG_process_double>;
388 
389  MG_process_double ggFSIG = {
392  };
393  (*updateMap)[std::make_pair(TVar::HSMHiggs, TVar::ZZGG)] = ggFSIG;
394 
395  MG_process_double qq4lSIG = {
398  };
399  (*updateMap)[std::make_pair(TVar::HSMHiggs, TVar::ZZQQB)] = qq4lSIG;
400 
401  MG_process_double qq4lBKG = {
404  };
405  (*updateMap)[std::make_pair(TVar::bkgZZ, TVar::ZZQQB)] = qq4lBKG;
406 
407  MG_process_double qq4lBSI = {
410  };
411  (*updateMap)[std::make_pair(TVar::bkgZZ_SMHiggs, TVar::ZZQQB)] = qq4lBSI;
412 }
413 
415  std::pair<TVar::Process, TVar::Production> key = std::make_pair(process, production);
416  if ((*updateMap).find(key) == (*updateMap).end()){
417  MELAerr << "madMela::update_all_coup: Incorrect key used!"
418  " The keys provided were process=" << TVar::ProcessName(process) <<
419  ", production=" << TVar::ProductionName(production) <<
420  std::endl;
421  return;
422  }
423  auto updateFunc = (*updateMap)[key].second;
424  updateFunc();
425 }
426 
428  const TVar::Process& process, const TVar::Production& production,
429  int pdgs[], int& procid, const int& npdg, double* p, double& alphas,
430  double& scale2, int& nhel, double& ans
431  ){
432  std::pair<TVar::Process, TVar::Production> key = std::make_pair(process, production);
433  if ((*updateMap).find(key) == (*updateMap).end()){
434  MELAerr << "madMela::smatrixhel: Incorrect key used!"
435  " The keys provided were " << process << ", " << production << std::endl;
436  ans = 0;
437  return;
438  }
439  auto computeFunc = (*updateMap)[std::make_pair(process, production)].first;
440  computeFunc(pdgs, procid, npdg, p, alphas, scale2, nhel, ans);
441 }
madMela::update_all_coup
void update_all_coup(const TVar::Process &process, const TVar::Production &production)
This is the function that redirects the SMEFTSim calculations to the correct process and production m...
Definition: MadMela.cc:414
TMCFM.hh
madMela::initialize_madMELA
void initialize_madMELA()
Initializes all of the values in Madgraph for proper usage. These include values like alpha,...
Definition: MadMela.cc:339
madMela::qq4lBSI_update_all_coup_
void qq4lBSI_update_all_coup_()
madMela
Definition: MadMela.h:23
madMela::ggFSIG_update_all_coup_
void ggFSIG_update_all_coup_()
madMela::updateMap
std::map< std::pair< TVar::Process, TVar::Production >, MG_process_double > * updateMap
Definition: MadMela.cc:12
madMela::MG_process_double
std::pair< std::function< void(int *, int &, const int &, double *, double &, double &, int &, double &)>, std::function< void()> > MG_process_double
Definition: MadMela.h:116
TVar::ProductionName
TString ProductionName(TVar::Production temp)
Definition: TVar.cc:64
TVar::Process
Process
Definition: TVar.hh:124
madMela::qq4lSIG_smatrixhel_
void qq4lSIG_smatrixhel_(int pdgs[], int &procid, const int &npdg, double *p, double &alphas, double &scale2, int &nhel, double &ans)
TVar::ZZQQB
@ ZZQQB
Definition: TVar.hh:63
madMela::qq4lBKG_smatrixhel_
void qq4lBKG_smatrixhel_(int pdgs[], int &procid, const int &npdg, double *p, double &alphas, double &scale2, int &nhel, double &ans)
TVar::ZZGG
@ ZZGG
Definition: TVar.hh:62
TVar::ProcessName
TString ProcessName(TVar::Process temp)
Definition: TVar.cc:6
madMela::widths_
struct madMela::@1 widths_
MELAStreamHelpers::MELAout
MELAOutputStreamer MELAout
madMela::setDefaultMadgraphValues
void setDefaultMadgraphValues()
Sets the Madgraph values to their defaults. This function is called after every call to a compute fun...
Definition: MadMela.cc:249
madMela::qq4lBSI_smatrixhel_
void qq4lBSI_smatrixhel_(int pdgs[], int &procid, const int &npdg, double *p, double &alphas, double &scale2, int &nhel, double &ans)
MadMela.h
This is the code that interfaces with the generated Madgraph matrix elements in fortran for specified...
madMela::qq4lSIG_update_all_coup_
void qq4lSIG_update_all_coup_()
TVar::HSMHiggs
@ HSMHiggs
Definition: TVar.hh:125
TUtil::GetDecayWidth
double GetDecayWidth(int ipart)
Definition: TUtil.cc:1619
madMela::qq4lBKG_update_all_coup_
void qq4lBKG_update_all_coup_()
TUtil.hh
TUtil::GetMass
double GetMass(int ipart)
Definition: TUtil.cc:1582
MELAStreamHelpers::MELAerr
MELAOutputStreamer MELAerr
madMela::mad_masses_
struct madMela::@0 mad_masses_
TVar::bkgZZ_SMHiggs
@ bkgZZ_SMHiggs
Definition: TVar.hh:169
madMela::smatrixhel
void smatrixhel(const TVar::Process &process, const TVar::Production &production, int pdgs[], int &procid, const int &npdg, double *p, double &alphas, double &scale2, int &nhel, double &ans)
This is the function that redirects the SMEFTsim matrix element calculation to the correct smatrix fu...
Definition: MadMela.cc:427
madMela::params_r_
struct madMela::@2 params_r_
TVar::bkgZZ
@ bkgZZ
Definition: TVar.hh:165
modparameters::alphas
real(dp), public alphas
Definition: mod_Parameters.F90:269
TVar.hh
madMela::ggFSIG_smatrixhel_
void ggFSIG_smatrixhel_(int pdgs[], int &procid, const int &npdg, double *p, double &alphas, double &scale2, int &nhel, double &ans)
MELAStreamHelpers.hh
TVar::Production
Production
Definition: TVar.hh:61
qcdcouple_
struct @28 qcdcouple_
modparameters::process
integer, public process
Definition: mod_Parameters.F90:17