Skip to content
Snippets Groups Projects

Add evaluate_cls

Merged Rui Zhang requested to merge rui_cls into master
1 file
+ 40
1
Compare changes
  • Side-by-side
  • Inline
@@ -566,4 +566,43 @@ class AsymptoticCLs(AnalysisObject):
self.print_summary()
self.stdout.info(f'INFO: Finished with {self.minimizer_calls} calls to minimize(nll)')
return limits
\ No newline at end of file
return limits
def evaluate_cls(self, poi:float):
# TODO: maybe load nominal snapshot first
self.reset()
self.save_snapshot(self.nom_glob_name, variables="globs")
self.save_snapshot(self.nom_nuis_name, variables="nuis")
asimov_data_0 = self.model.generate_asimov(self.poi.GetName(), poi_val=0,
poi_profile=0,
do_fit=not self.do_blind,
modify_globs=not self.do_blind,
dataset=self.data,
restore_states=1)
asimov_0_nll = self.create_nll(asimov_data_0)
self.set_poi_value(0)
self.save_nll_snapshot(asimov_0_nll, 0)
self.load_conditional_snapshot(0, target="globs")
self.load_conditional_snapshot(0, target="nuis")
nll_value = asimov_0_nll.getVal()
self.fill_mappings(asimov_0_nll, asimov_data_0, 0, nll_value)
nll_name = asimov_0_nll.GetName()
self.stdout.info("----------------------------------")
self.stdout.info(f"Getting CLs for nll: {nll_name}")
qmu = self.get_qmu(asimov_0_nll, poi)
sigma= self.LimitTool.getSigma(poi, 0, qmu)
pmu = self.LimitTool.calcPmu(qmu, sigma, poi)
pb = self.LimitTool.calcPb(qmu, sigma, poi)
CLs = self.LimitTool.calcCLs(qmu, sigma, poi)
qmu95 = self.LimitTool.getQmu95(sigma, poi)
self.stdout.info(f"POI: {poi}")
self.stdout.info(f"Sigma: {sigma}")
self.stdout.info(f"NLL(muhat): {nll_value}")
self.stdout.info(f"qmu95: {qmu95}")
self.stdout.info(f"qmu: {qmu}")
self.stdout.info(f"pmu: {pmu}")
self.stdout.info(f"1-pb: {pb}")
self.stdout.info(f"CLs: {CLs}")
Loading