layout | katex |
---|---|
default |
true |
The online documentation refers to the latest release of HighPT
. Example notebooks are available in the GitHub reposititory here. See also the complete documantation of the initial release v1.0.0 in [arXiv:2207.10756] which is largely unchanged.
● Getting started
● Specifying a model
● Differential cross sections
● Cross sections
● Event yields
● Python export
● Likelihoods
● Defining the CKM
● The mediator mode
After the installation, HighPT
can be loaded in any Mathematica
notebook with the command:
<< HighPT`
A list of all available experimental searches can be obtained by:
LHCSearch[]
This returns an association containing all availabale searches and their references. For example, the di-muon search [arXiv:2103.02708] by CMS is available and the corresponding label assigned to this search in
HighPT
is given by "di-muon-CMS"
. More details on this specific search can be obtained by
LHCSearch["di-muon-CMS"]
This prints general information about the search like: arXiv number, the source of the data (typically either hepdata or a digitized figure), a description, the collabloration, the underlying process and final state, the observable, the luminosity, and the cernter of mass energy. Furthermore, information on the binning applied by experiments for the observable, and by the
HighPT
(in the invariant mass and transverse momentum) for the cross section computation is given. Also the full set of experimental data (events, background, error) used by HighPT
is returned together with the default binning. By default HighPT
applies a binning for the computation of likelihoods that ensures that every resulting bin has at least 10 events.
HighPT
allows for two run modes: the "SMEFT"
mode and the "Mediators"
mode.
To perform computation in the SMEFT, on can to specify:
InitializeModel["SMEFT",
OperatorDimension -> 6,
EFTorder -> 4,
EFTscale -> 1000
]
This activates the SMEFT run mode, which is also the default mode. The options
OperatorDimension
, EFTorder
, and EFTscale
allow to change the maximum mass-dimension of EFT operators, the EFT series truncation of cross sections, and the EFT cutoff scale, respectively. In the example at hand effective operators up to mass-dimension six are included in results and cross sections are truncated at
On the other hand, the "Mediators"
run mode can be set by:
InitializeModel["Mediators",
Mediators -> {
"U1" -> {2000, 0},
"R2" -> {3000, 0}
}
]
In this example, a model with a
Notice: In current version interference terms of different BSM mediators are set to zero due to missing Monte Carlo simulations. These interference terms will be included in a future release.
All other HighPT
routines work (mostly) in the same way independently of the run mode that was defined before. However, for the following examples we consider the SMEFT mode if not stated otherwise.
Therefore, we first activate the SMEFT mode again:
InitializeModel["SMEFT",
OperatorDimension -> 6,
EFTorder -> 4,
EFTscale -> 1000
]
Now we can compute different observables.
Differential cross sections can be computed with the DifferentialCrossSection
routine. For example, we can compute the differential cross ection
xSecDif = DifferentialCrossSection[{e[2],e[2]},
PTcuts -> {0, Infinity},
Coefficients -> {WC["lq1", {2,2,1,1}]}
];
xSecNP = xSecDif /. WC["lq1", {2,2,1,1}] -> 1;
xSecSM = xSecDif /. WC["lq1", {2,2,1,1}] -> 0;
Here we do not apply any cuts on the transverse momentum, i.e.
LogPlot[
{xSecNP[mll^2], xSecSM[mll^2]},
{mll, 20, 600},
... (* omitted printing options *)
]
Here the ellipsis represent futher printing options that are omitted for brevity. The full code example can be found in the example notebook.
Integrated cross sections can be computed with the CrossSection
routine. Taking the same example as before, but now integrating the differential cross section over the range
xSec = CrossSection[{e[2],e[2]},
MLLcuts -> {800, 2000},
PTcuts -> {0, Infinity},
FF -> True,
Coefficients -> {FF[Vector,{"Photon",SM},_,_]}
];
Here we again do not apply any SubstituteFF
routine:
SubstituteFF[xSec, EFTorder -> 0, OperatorDimension -> 4] // Re
The unit of the cross section is picobarn. Notice that the result can contain a small imaginary part which is a numerical artefact and should be removed by Re
or Chop
.
Event yields can be derived with the EventYield
routine. Looking again at the di-muon example from before, we can derive the number of events expected in each bin of the experimental search due to the NP contribution by:
nEvents = EventYield["di-muon-CMS",
Coefficients -> {WC["lq1", {2,2,1,1}]}
];
This returns a list where the
nEvents[[-1]] // Chop // TraditionalForm
For convenience the results obtained by HighPT
can also be exported to a python
file using the WCxf
format, which can by further analyzed using the various python
packages. For the event yield derived above the python
output can be generated by:
PythonExport["di_muon_lq1", nEvents // Chop, "di-muon-CMS"]
This generates the file
di_muon_lq1.py
shown above, which contains the variable parameters
listing all NP parameters present in the expression. Additionally all experimental information is included in the function di_muon_CMS_data()
and the event yields for each bin can be returned with the di_muon_lq1(C)
function.
The ChiSquareLHC
routine. For the example considered here this is done by:
chi2 = ChiSquareLHC["di-muon-CMS",
Coefficients -> {
WC["lq1", {2,2,1,1}],
WC["lq1", {2,2,2,2}]
}
];
Here both the Wilson coefficients CombineBins
option.
It is also possible to derive projections for future searches in the respective channels. In this example this is done by:
(* rescaling the background uncertainties *)
chi2Proj1 = ChiSquareLHC["di-muon-CMS",
Coefficients -> {
WC["lq1", {2,2,1,1}],
WC["lq1", {2,2,2,2}]
},
Luminosity -> 3000,
RescaleError -> True
];
(* not rescaling the background uncertainties *)
chi2Proj2 = ChiSquareLHC["di-muon-CMS",
Coefficients -> {
WC["lq1", {2,2,1,1}],
WC["lq1", {2,2,2,2}]
},
Luminosity -> 3000,
RescaleError -> False
];
Here we compute the HL-LHC projection for an integrated luminosity of
Summing the bins of each respective likelihood and minimizing it afterwards allows to plot the 95% CL contours for the two NP parameters:
(* summing the likelihoods and taking their real part *)
chi2 = Re[Total[chi2]];
chi2Proj1 = Re[Total[chi2Proj1]];
chi2Proj2 = Re[Total[chi2Proj2]];
(* minimizing the combined likelihoods *)
chi2min = NMinimize[chi2 , {WC["lq1",{2,2,1,1}],WC["lq1",{2,2,2,2}]}] // First;
chi2Proj1min = NMinimize[chi2Proj1, {WC["lq1",{2,2,1,1}],WC["lq1",{2,2,2,2}]}] // First;
chi2Proj2min = NMinimize[chi2Proj2, {WC["lq1",{2,2,1,1}],WC["lq1",{2,2,2,2}]}] // First;
(* plotting the CL *)
RegionPlot[
{
chi2 <= chi2min + 5.99,
chi2Proj1 <= chi2Proj1min + 5.99,
chi2Proj2 <= chi2Proj2min + 5.99
},
{WC["lq1", {2, 2, 1, 1}], -0.016, +0.044},
{WC["lq1", {2, 2, 2, 2}], -0.143, +0.143},
... (* omitted printing options *)
]
Here we are plotting the 95% CL contours for which
The assumtions on the alignement of the mass and flavor basis of the quarks can be controlled with the help of the DefineBasisAlignment
routine. Below some different settings correlponding to up-alignement, down-alignment, and a generic alignment condition are shown:
(* down alignment (default) *)
DefineBasisAlignment["down"];
(* up alignment *)
DefineBasisAlignment["up"];
(* general alignment condition *)
DefineBasisAlignment[matrix];
In the last case matrix
must be any
After DefineBasisAlignment
was called, all following computations use the specified basis alignment.
To specify a diagonal CKM matrix
DefineParameters["Wolfenstein" -> {0,0,0,0}];
This sets all the Wolfenstein parameters to zero, thus leading to a diagonal CKM matrix.
As a last example we investigate the model with a
InitializeModel["Mediators",
Mediators -> {
"U1" -> {2000, 0},
"R2" -> {3000, 0}
}
]
Consequently we can derive the likelihoods for this model for the di-tau and mono-tau searches by the ATLAS collaboration:
chi2LQtata = ChiSquareLHC["di-tau-ATLAS",
Coefficients -> {Coupling["x1L",{1,3}], Coupling["y2L",{1,3}]}
] // Total // Re;
chi2LQtanu = ChiSquareLHC["mono-tau-ATLAS",
Coefficients -> {Coupling["x1L",{1,3}], Coupling["y2L",{1,3}]}
] // Total // Re;
(* combined likelihood *)
chi2LQ = chi2LQtata + chi2LQtanu;
Here we retain only the two leptoquark couplings
(* minimizations *)
chi2LQmin = NMinimize[chi2LQ,
{
Coupling["x1L",{1,3}],
Coupling["y2L",{1,3}]
}
] // First;
(* plotting *)
RegionPlot[
chi2LQ <= chi2LQmin + 5.99,
{Coupling["x1L", {1, 3}], -1.4, +1.4},
{Coupling["y2L", {1, 3}], -1.4, +1.4},
... (* omitted printing options *)
]