Produce a report

Once the file containing the posterior has been produced, the results can be visualized by running a report, which can be used for both analysing a single fit or comparing results from multiple ones. The report details have to be specified in a separate runcard, and the report is produced by running

  smefit R /path/to/report/runcard.yaml

All the plots and tables will be stored in a folder and are avialabe both in HTML and pdf.

Runcard descriprion

Here we describe the various runcard entries that can be set to produce a report. The runcard is a .yaml file where in the first section we specify the input fits we are trying to compare. All the following entries are required.

    # report folder name
    name: "report_folder_name"

    # report title
    title: "Comparison between fit 1 and fit 2"

    # fit namen
    result_IDs: [
      "fit_1",
      "fit_2",
    ]

    # fit labels displayed in the plots
    fit_labels: [
      "smefit fit 1",
      "smefit fit 2",
    ]

    # path where the report will be saved
    report_path: path/to/report/
    # path where the reults are located
    result_path: path/to/results/

The report will be saved in report_path/name and will compare the fits having result_ID=fit_1 and result_ID=fit_2, whose results are therefore saved in result_path/fit_1 and result_path/fit_2 respectively.

In the second part of the report runcard you can specify which kind of plot you want to include in your report and with which settings. All the entries without a value are optional, if not present the correspoding analysis/plot will be skipped.

# include sumary tables of ffited coefficient and datasets
summary: True

# cofficient plots options
coefficients_plots:

  # scatter plot with central values and error bands
  scatter_plot:
    figsize: [10,15] # figure size
    x_min: -400 # x min value, you can specify different ranges with {type1: min1 ...}
    x_max: 400 # x min value, you can specify different ranges with {type1: max1 ...}
    lin_thr: .01 # linear threshold, in case of x_log, you can specify different ranges wit {type1: min1 ...}
    x_log: True # use symlog scale on x axis ?

  # confidence level error band plot
  confidence_level_bar:
    confidence_level: 95 # Avalable CL are 95% or 68%
    figsize: [10,15] # figure size
    plot_cutoff: 400 # value at which show a cut-off dashed line, defult is Null
    x_min: 0.01 # x min value
    x_max: 500 # x max value
    x_log: True # use log scale on x axis ?

  # spider plot that displays the ratio of uncertainties to a baseline fit
  spider_plot:
    confidence_level: 95  # confidence level in percentage
    log_scale: True  # use radial log scale
    title: "title"
    fontsize: 17
    ncol: 2  # number of columns in the legend
    legend_loc: 'upper center'
    radial_lines: [0.5, 1, 5, 10, 20, 40, 60, 80 ]  # where to draw radial lines
    marker_styles: ['*', 'o', 'P']  # markers for the legend
    class_order: ["4H", "2L2H", "2FB", "4l", "B"]  # order of operator classes (optional)

  # bar plot of pulls (one-sigma fit residuals) per coefficient
  pull_bar:
    figsize: [10,18] # figure size
    x_min: -3 # minimum number of sigmas to display
    x_max: 3 # maximum number of sigmas to display

  # 2 dimensional contour plot
  contours_2d:
    confidence_level: 95 # Avalable CL are 95% or 68%, as a list both are plotted
    dofs_show: ["Op1", "Op2"] # list of operator to be displayed (will include all the possible pairs), default is Null

  # show the posterior histograms
  posterior_histograms: True

  # show a summary table with all the given bounds
  table:
    round_val: 3 # round values up to

  # display the smefit logo
  logo: True

  show_only: Null # list of operator to be displayed, default is all (Null)
  hide_dofs: Null # list of operator not to displayed, default is Null

  # emptry or list of operator per fit which have degenerated solution
  # (to be used only in qudtatic fits)
  double_solution:
    fit_1: ["Opdouble1", "Opdouble2"]
    fit_2: []

# correlation plot options
correlations:

  hide_dofs: Null # list of operator not to displayed, default is Null
  thr_show: 0.1 # Min value to show, if Null show the full matrix
  title: true # if True display the fit label as title

# PCA options
PCA:

  fit_list: ["fit_1"] # list of fit for which PCA is performed, by default all the fits will be included
  table: True # display a table with the list of PC decomposition
  thr_show: 1.e-2 # min value of the principal component to display

  # heatmap plot
  plot:
    figsize: [15,15] # figure size
    sv_min: 1.e-4 # min singular value to display (upper plot)
    sv_max: 1.e+5 # max singular value to display (upper plot)
    thr_show: 0.1 # min value of the principal component to display (main plot)
    title: true # if True display the fit label as title

# chi2 analysis plots and tables options
chi2_plots:

  table: True # display chi2 tables per dataset?

  # chi2 plot per dataset bar plot
  plot_experiment:
    figsize: [10,15] # figure size

  # chi2 distribution per replica histogram
  plot_distribution:
    figsize: [7,5] # figure size

# fisher information options
fisher:

  norm: "coeff" # normalize per "coeff" or "data"
  summary_only: True # if True display only the fisher information per dataset group. If False will show the fine grained dataset per dataset
  log: False # show values in log scale ?
  fit_list: ["fit_1"] # list of fit for which fisher is compued, by default all the fits will be included

  # heatmap plot
  plot:
    summary_only: True # if True display only the fisher information per dataset group. If False will show the fine grained dataset per dataset
    figsize: [11, 15] # figure size
    title: true # if True display the fit label as title

Finally the user has to specify two dictionaries where the informaions about Wilson coefficients and datasets entering the analysis are reporte are reported. Both names of the operators and the datasets are those used in the fit runcard. These informations are required.

Wilson coefficients latex names should be added, by group type following the syntax:

coeff_info:
  type1: [
    [Op1, "$c_{\\varphi}^{(1)}$"],
    [Op2, "$c_{\\varphi}^{(2)}$"],
    ...
  ]
  4H: [
    [OQQ1, "$c_{QQ}^{1}$"],
    [OQQ8, "$c_{QQ}^{8}$"],
    ...
  ]
  2L2H: [
    [O81qq, "$c_{qq}^{1,8}$"],
    [O11qq, "$c_{qq}^{1,1}$"],
    ...
  ]
  ...

Similarly the information corresponding to the experimental data should be reported as in the following:

data_info:
  group_1: [
    [dataset_1, https://lin/to/public/reference/1],
    [dataset_2, https://lin/to/public/reference/2],
    ...
  ]
  tt13: [
    [CMS_tt_13TeV_ljets_2015_Mtt, https://arxiv.org/abs/1610.04191],
    [CMS_tt_13TeV_dilep_2015_Mtt, https://arxiv.org/abs/1708.07638],
    [CMS_tt_13TeV_ljets_2016_Mtt, https://arxiv.org/abs/1803.08856],
    ...
  ]
  ...

You can see the smefit databse repo for futher examples about report runcards.