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