Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions bin/rabbit_limit.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ def do_asymptotic_limits(args, fitter, ws, data_values, mapping=None, fit_data=F
idx = np.where(fitter.parms.astype(str) == key)[0][0]
if key in fitter.poi_model.pois.astype(str):
is_poi = True
xbest = fitter_asimov.get_blinded_poi()[idx]
xobs = fitter.get_blinded_poi()[idx]
xbest = fitter_asimov.get_poi()[idx]
xobs = fitter.get_poi()[idx]
elif key in fitter.parms.astype(str):
is_poi = False
xbest = fitter_asimov.get_blinded_theta()[
Expand Down
30 changes: 16 additions & 14 deletions rabbit/fitter.py
Original file line number Diff line number Diff line change
Expand Up @@ -403,19 +403,30 @@ def set_blinding_offsets(self, blind=True):
np.zeros(self.indata.nsyst, dtype=np.float64)
)

def get_blinded_theta(self):
def get_theta(self):
theta = self.x[self.poi_model.npoi : self.poi_model.npoi + self.indata.nsyst]
theta = tf.where(
self.frozen_params_mask[
self.poi_model.npoi : self.poi_model.npoi + self.indata.nsyst
],
tf.stop_gradient(theta),
theta,
)
theta = self.x[self.poi_model.npoi :]
if self.do_blinding:
return theta + self._blinding_offsets_theta
else:
return theta

def get_blinded_poi(self):
def get_poi(self):
xpoi = self.x[: self.poi_model.npoi]
if self.poi_model.allowNegativePOI:
poi = xpoi
else:
poi = tf.square(xpoi)
poi = tf.where(
self.frozen_params_mask[: self.poi_model.npoi], tf.stop_gradient(poi), poi
)
if self.do_blinding:
return poi * self._blinding_offsets_poi
else:
Expand Down Expand Up @@ -1298,17 +1309,8 @@ def _expected_variations(

def _compute_yields_noBBB(self, full=True):
# full: compute yields inclduing masked channels
poi = self.get_blinded_poi()
theta = self.get_blinded_theta()

poi = tf.where(
self.frozen_params_mask[: self.poi_model.npoi], tf.stop_gradient(poi), poi
)
theta = tf.where(
self.frozen_params_mask[self.poi_model.npoi :],
tf.stop_gradient(theta),
theta,
)
poi = self.get_poi()
theta = self.get_theta()

rnorm = self.poi_model.compute(poi)

Expand Down Expand Up @@ -1877,7 +1879,7 @@ def reduced_nll(self):

def _compute_lc(self, full_nll=False):
# constraints
theta = self.get_blinded_theta()
theta = self.get_theta()
lc = self.indata.constraintweights * 0.5 * tf.square(theta - self.theta0)
if full_nll:
# normalization factor for normal distribution: log(1/sqrt(2*pi)) = -0.9189385332046727
Expand Down