38n_samples_morph = 10000  
 
   40n_samples_train = n_samples_morph * n_bins  
 
   59    for j 
in range(n_dimensions):
 
   60        gaussian = 
ROOT.RooGaussian(f
"gdim{j}", f
"gdim{j}", x_vars[j], mu_helps[j], sigmas[j])
 
   70        for i_dim 
in range(n_dimensions):
 
   71            mu_helps[i_dim].setVal(nd_idx[i_dim])
 
  103mu_observed = [2.5, 2.0]
 
  110    def __init__(self, ws, n_vars):
 
  112        self.classifier = 
MLPClassifier(hidden_layer_sizes=(20, 20), max_iter=1000, random_state=42)
 
  113        self.data_model = 
None 
  119        self._training_mus = 
None 
  120        self._reference_mu = 
None 
  123    def model_data(self, model, x_vars, mu_vars, n_samples):
 
  126            ws[model].generate([ws[x] 
for x 
in x_vars] + [ws[mu] 
for mu 
in mu_vars], n_samples).
to_numpy()
 
  129        self._training_mus = 
np.array([samples_gaussian[mu] 
for mu 
in mu_vars]).T
 
  130        data_test_model = 
np.array([samples_gaussian[x] 
for x 
in x_vars]).T
 
  135    def reference_data(self, model, x_vars, mu_vars, n_samples, help_model):
 
  138        samples_uniform = ws[model].generate([ws[x] 
for x 
in x_vars], n_samples)
 
  145        samples_mu = ws[help_model].generate([ws[mu] 
for mu 
in mu_vars], n_samples)
 
  162        self.classifier.fit(self.X_train, self.y_train)
 
  167    n_vars = 
len(mu_observed)
 
  170    gaussians = [
ROOT.RooGaussian(f
"gauss{i}", f
"gauss{i}", x_vars[i], mu_vars[i], sigmas[i]) 
for i 
in range(n_vars)]
 
  172    uniforms_help = [
ROOT.RooUniform(f
"uniformh{i}", f
"uniformh{i}", mu_vars[i]) 
for i 
in range(n_vars)]
 
  197x_vars = [ws[f
"x{i}"] 
for i 
in range(
len(mu_observed))]
 
  198mu_vars = [ws[f
"mu{i}"] 
for i 
in range(
len(mu_observed))]
 
  205nll_morph = ws[
"morph"].createNLL(ws[
"obs_data"], EvalBackend=
"legacy")
 
  208model = 
SBI(ws, 
len(mu_observed))
 
  213    "uniform", [
x.GetName() 
for x 
in x_vars], [
mu.GetName() 
for mu 
in mu_vars], n_samples_train, 
"uniform_help" 
  224    n = max(*(
len(a) 
for a 
in args))
 
  229    return prob / (1.0 - prob)
 
  234for var 
in x_vars + mu_vars:
 
  244nll_gauss = ws[
"gauss"].createNLL(ws[
"obs_data"])
 
  252frame1 = mu_vars[0].frame(
 
  253    Title=
"NLL of SBI vs. Morphing;#mu_{1};NLL",
 
  254    Range=(mu_observed[0] - 1, mu_observed[0] + 1),
 
  256nll_gauss.plotOn(frame1, ShiftToZero=
True, LineColor=
"kP6Yellow", Name=
"gauss")
 
  266RooAbsArg &my_deref(std::unique_ptr<RooAbsArg> const& ptr) { return *ptr; } 
  277frame2 = x_vars[0].frame(Title=
"Likelihood ratio r(x_{1}|#mu_{1}=2.5);x_{1};p_{gauss}/p_{uniform}")
 
  284c = 
ROOT.TCanvas(
"", 
"", 1200 
if single_canvas 
else 600, 600)
 
  324for nll 
in [nll_gauss, nllr_learned, nll_morph]:
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len