<jupyter_start><jupyter_text>Setup<jupyter_code>import sys
import os
madminer_src_path = "/home/shomiller/madminer"
sys.path.append(madminer_src_path)

from __future__ import absolute_import, division, print_function, unicode_literals
import logging

import numpy as np
import math
import matplotlib
from matplotlib import pyplot as plt
from scipy.optimize import curve_fit
% matplotlib inline
from matplotlib.patches import Patch
from matplotlib.lines import Line2D

from madminer.fisherinformation import FisherInformation
from madminer.fisherinformation import project_information, profile_information

from pandas import DataFrame

import madminer.__version__
print( 'MadMiner version: {}'.format(madminer.__version__) )
# MadMiner output
logging.basicConfig(
    format='%(asctime)-5.5s %(name)-20.20s %(levelname)-7.7s %(message)s',
    datefmt='%H:%M',
    level=logging.INFO
)

# Output of all other modules (e.g. matplotlib)
for key in logging.Logger.manager.loggerDict:
    if "madminer" not in key:
        logging.getLogger(key).setLevel(logging.WARNING)
uselumi=300.
labels = [ 'cHbox', 'cHDD', 'cHW', 'cHq3' ]
labels_rot = [ 'cHK', 'cHW', 'cHq3' ]<jupyter_output><empty_output><jupyter_text>Data Files:Saving the paths for all our lhe data files, for easy use later on.Note, lhedata are saved in the format:`data/{channel}_lhedata_{observables}.h5`while the `SALLY` models are saved in:`models/sally_ensemble_{channel}_{observables}/`here `channel` can be e.g, `wph_mu_wbkgs` or `wmh_e_wbkgs` (or take out the backgrounds for the background free runs), while `observables` can be `full`, `met`, `ptw` or `2d`  Signal + Backgrounds<jupyter_code>lhedatafile_wph_mu_wbkgs_full = 'data/full/wph_mu_wbkgs_lhedata_full.h5'
lhedatafile_wph_mu_wbkgs_met = 'data/met/wph_mu_wbkgs_lhedata_met.h5'
lhedatafile_wph_e_wbkgs_full = 'data/full/wph_e_wbkgs_lhedata_full.h5'
lhedatafile_wph_e_wbkgs_met = 'data/met/wph_e_wbkgs_lhedata_met.h5'
lhedatafile_wmh_mu_wbkgs_full = 'data/full/wmh_mu_wbkgs_lhedata_full.h5'
lhedatafile_wmh_mu_wbkgs_met = 'data/met/wmh_mu_wbkgs_lhedata_met.h5'
lhedatafile_wmh_e_wbkgs_full = 'data/full/wmh_e_wbkgs_lhedata_full.h5'
lhedatafile_wmh_e_wbkgs_met = 'data/met/wmh_e_wbkgs_lhedata_met.h5'<jupyter_output><empty_output><jupyter_text>Signal Only<jupyter_code>lhedatafile_wph_mu_full = 'data/full/signal/wph_mu_smeftsim_lhedata_full.h5'
lhedatafile_wph_mu_met = 'data/met/signal/wph_mu_smeftsim_lhedata_met.h5'
lhedatafile_wph_e_full = 'data/full/signal/wph_e_smeftsim_lhedata_full.h5'
lhedatafile_wph_e_met = 'data/met/signal/wph_e_smeftsim_lhedata_met.h5'
lhedatafile_wmh_mu_full = 'data/full/signal/wmh_mu_smeftsim_lhedata_full.h5'
lhedatafile_wmh_mu_met = 'data/met/signal/wmh_mu_smeftsim_lhedata_met.h5'
lhedatafile_wmh_e_full = 'data/full/signal/wmh_e_smeftsim_lhedata_full.h5'
lhedatafile_wmh_e_met = 'data/met/signal/wmh_e_smeftsim_lhedata_met.h5'<jupyter_output><empty_output><jupyter_text>Backgrounds Only<jupyter_code>lhedatafile_wph_mu_backgrounds_only_met = 'data/met/wph_mu_backgrounds_only_lhedata_met.h5'
lhedatafile_wph_e_backgrounds_only_met = 'data/met/wph_e_backgrounds_only_lhedata_met.h5'
lhedatafile_wmh_mu_backgrounds_only_met = 'data/met/wmh_mu_backgrounds_only_lhedata_met.h5'
lhedatafile_wmh_e_backgrounds_only_met = 'data/met/wmh_e_backgrounds_only_lhedata_met.h5'<jupyter_output><empty_output><jupyter_text>Signal Systematics Only<jupyter_code>lhedatafile_wph_mu_wbkgs_met = 'data/met/wph_mu_wbkgs_sigsystonly_lhedata_met.h5'
lhedatafile_wph_e_wbkgs_met = 'data/met/wph_e_wbkgs_sigsystonly_lhedata_met.h5'
lhedatafile_wmh_mu_wbkgs_met = 'data/met/wmh_mu_wbkgs_sigsystonly_lhedata_met.h5'
lhedatafile_wmh_e_wbkgs_met = 'data/met/wmh_e_wbkgs_sigsystonly_lhedata_met.h5'<jupyter_output><empty_output><jupyter_text>Setup FisherInfo Objects  Signal + Background FisherInfo Objects<jupyter_code>fisher_wph_mu_wbkgs_full = FisherInformation(lhedatafile_wph_mu_wbkgs_full, include_nuisance_parameters=True)
fisher_wph_e_wbkgs_full = FisherInformation(lhedatafile_wph_e_wbkgs_full, include_nuisance_parameters=True)
fisher_wmh_mu_wbkgs_full = FisherInformation(lhedatafile_wmh_mu_wbkgs_full, include_nuisance_parameters=True)
fisher_wmh_e_wbkgs_full = FisherInformation(lhedatafile_wmh_e_wbkgs_full, include_nuisance_parameters=True)
fisher_wph_mu_wbkgs_met = FisherInformation(lhedatafile_wph_mu_wbkgs_met, include_nuisance_parameters=True)
fisher_wph_e_wbkgs_met = FisherInformation(lhedatafile_wph_e_wbkgs_met, include_nuisance_parameters=True)
fisher_wmh_mu_wbkgs_met = FisherInformation(lhedatafile_wmh_mu_wbkgs_met, include_nuisance_parameters=True)
fisher_wmh_e_wbkgs_met = FisherInformation(lhedatafile_wmh_e_wbkgs_met, include_nuisance_parameters=True)<jupyter_output>12:16 madminer.analysis    INFO    Loading data from data/met/wph_mu_wbkgs_sigsystonly_lhedata_met.h5
12:16 madminer.analysis    INFO    Found 4 parameters
12:16 madminer.analysis    INFO    Found 33 nuisance parameters
12:16 madminer.analysis    INFO    Found 54 benchmarks, of which 15 physical
12:16 madminer.analysis    INFO    Found 48 observables
12:16 madminer.analysis    INFO    Found 5000000 events
12:16 madminer.analysis    INFO      1000000 signal events sampled from benchmark sm
12:16 madminer.analysis    INFO      4000000 background events
12:16 madminer.analysis    INFO    Found morphing setup with 15 components
12:16 madminer.analysis    INFO    Found nuisance morphing setup
12:16 madminer.analysis    INFO    Loading data from data/met/wph_e_wbkgs_sigsystonly_lhedata_met.h5
12:16 madminer.analysis    INFO    Found 4 parameters
12:16 madminer.analysis    INFO    Found 33 nuisance parameters
12:16 madminer.analysis    INFO    Found 54 benchmarks, of which 15 physical
12:16 m[...]<jupyter_text>The Backgroud Free Setups<jupyter_code>fisher_wph_mu_full = FisherInformation(lhedatafile_wph_mu_full, include_nuisance_parameters=True)
fisher_wph_e_full = FisherInformation(lhedatafile_wph_e_full, include_nuisance_parameters=True)
fisher_wmh_mu_full = FisherInformation(lhedatafile_wmh_mu_full, include_nuisance_parameters=True)
fisher_wmh_e_full = FisherInformation(lhedatafile_wmh_e_full, include_nuisance_parameters=True)
fisher_wph_mu_met = FisherInformation(lhedatafile_wph_mu_met, include_nuisance_parameters=True)
fisher_wph_e_met = FisherInformation(lhedatafile_wph_e_met, include_nuisance_parameters=True)
fisher_wmh_mu_met = FisherInformation(lhedatafile_wmh_mu_met, include_nuisance_parameters=True)
fisher_wmh_e_met = FisherInformation(lhedatafile_wmh_e_met, include_nuisance_parameters=True)<jupyter_output>12:16 madminer.analysis    INFO    Loading data from data/met/signal/wph_mu_smeftsim_lhedata_met.h5
12:16 madminer.analysis    INFO    Found 4 parameters
12:16 madminer.analysis    INFO    Found 33 nuisance parameters
12:16 madminer.analysis    INFO    Found 54 benchmarks, of which 15 physical
12:16 madminer.analysis    INFO    Found 48 observables
12:16 madminer.analysis    INFO    Found 1000000 events
12:16 madminer.analysis    INFO      1000000 signal events sampled from benchmark sm
12:16 madminer.analysis    INFO    Found morphing setup with 15 components
12:16 madminer.analysis    INFO    Found nuisance morphing setup
12:16 madminer.analysis    INFO    Loading data from data/met/signal/wph_e_smeftsim_lhedata_met.h5
12:16 madminer.analysis    INFO    Found 4 parameters
12:16 madminer.analysis    INFO    Found 33 nuisance parameters
12:16 madminer.analysis    INFO    Found 54 benchmarks, of which 15 physical
12:16 madminer.analysis    INFO    Found 48 observables
12:16 madminer.ana[...]<jupyter_text>Computing The Fisher Information from a Score Estimator  Get the SALLY Information  Here we compute the Fisher Info from the `SALLY` method for each channel and observable.  $W^+ \to \mu^+ \nu_{\mu}$<jupyter_code>fi_sally_wph_mu_wbkgs_full_mean, fi_sally_wph_mu_wbkgs_full_covariance = fisher_wph_mu_wbkgs_full.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/full/ensemble_wph_mu_wbkgs_lhedata_full',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_full_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_mu_wbkgs_met_mean, fi_sally_wph_mu_wbkgs_met_covariance = fisher_wph_mu_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/met/ensemble_newest_wph_mu_wbkgs_sigsystonly_lhedata_met',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_met_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_mu_wbkgs_ptw_mean, fi_sally_wph_mu_wbkgs_ptw_covariance = fisher_wph_mu_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/ptw/ensemble_newest_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_ptw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_mu_wbkgs_2d_mean, fi_sally_wph_mu_wbkgs_2d_covariance = fisher_wph_mu_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/2d/ensemble_newest_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_2d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output>12:55 madminer.ml          INFO    Found score ensemble with 5 estimators
12:55 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_0
12:55 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_1
12:55 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_2
12:55 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_3
12:55 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_4
12:55 madminer.fisherinfor INFO    Found 4 parameters in SALLY model, matching 4 physical parameters in MadMiner file
13:00 madminer.fisherinfor INFO    Evaluating rate Fisher information
13:05 madminer.fisherinfor INFO    Evaluati[...]<jupyter_text>$W^+ \to e^+\nu_e$<jupyter_code>fi_sally_wph_e_wbkgs_full_mean, fi_sally_wph_e_wbkgs_full_covariance = fisher_wph_e_wbkgs_full.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/full/ensemble_wph_e_wbkgs_lhedata_full',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_e_wbkgs_full_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_e_wbkgs_met_mean, fi_sally_wph_e_wbkgs_met_covariance = fisher_wph_e_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/met/ensemble_newest_wph_e_wbkgs_sigsystonly_lhedata_met',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_e_wbkgs_met_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_e_wbkgs_ptw_mean, fi_sally_wph_e_wbkgs_ptw_covariance = fisher_wph_e_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/ptw/ensemble_newest_wph_e_wbkgs_sigsystonly_lhedata_met_ptw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_e_wbkgs_ptw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_e_wbkgs_2d_mean, fi_sally_wph_e_wbkgs_2d_covariance = fisher_wph_e_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/2d/ensemble_newest_wph_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_e_wbkgs_2d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output>13:58 madminer.ml          INFO    Found score ensemble with 5 estimators
13:58 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_0
13:58 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_1
13:58 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_2
13:58 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_3
13:58 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wph_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_4
13:58 madminer.fisherinfor INFO    Found 4 parameters in SALLY model, matching 4 physical parameters in MadMiner file
14:02 madminer.fisherinfor INFO    Evaluating rate Fisher information
14:07 madminer.fisherinfor INFO    Evaluating ki[...]<jupyter_text>$W^- \to \mu^- \bar{\nu}_{\mu}$<jupyter_code>fi_sally_wmh_mu_wbkgs_full_mean, fi_sally_wmh_mu_wbkgs_full_covariance = fisher_wmh_mu_wbkgs_full.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/full/ensemble_wmh_mu_wbkgs_lhedata_full',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_mu_wbkgs_full_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wmh_mu_wbkgs_met_mean, fi_sally_wmh_mu_wbkgs_met_covariance = fisher_wmh_mu_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/met/ensemble_newest_wmh_mu_wbkgs_sigsystonly_lhedata_met',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_mu_wbkgs_met_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wmh_mu_wbkgs_ptw_mean, fi_sally_wmh_mu_wbkgs_ptw_covariance = fisher_wmh_mu_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/ptw/ensemble_newest_wmh_mu_wbkgs_sigsystonly_lhedata_met_ptw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_mu_wbkgs_ptw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wmh_mu_wbkgs_2d_mean, fi_sally_wmh_mu_wbkgs_2d_covariance = fisher_wmh_mu_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/2d/ensemble_newest_wmh_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_mu_wbkgs_2d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output>15:23 madminer.ml          INFO    Found score ensemble with 5 estimators
15:23 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_0
15:23 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_1
15:23 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_2
15:23 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_3
15:23 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_mu_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_4
15:23 madminer.fisherinfor INFO    Found 4 parameters in SALLY model, matching 4 physical parameters in MadMiner file
15:28 madminer.fisherinfor INFO    Evaluating rate Fisher information
15:33 madminer.fisherinfor INFO    Evaluati[...]<jupyter_text>$W^- \to e^- \bar{\nu}_e$<jupyter_code>fi_sally_wmh_e_wbkgs_full_mean, fi_sally_wmh_e_wbkgs_full_covariance = fisher_wmh_e_wbkgs_full.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/full/ensemble_wmh_e_wbkgs_lhedata_full',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_e_wbkgs_full_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wmh_e_wbkgs_met_mean, fi_sally_wmh_e_wbkgs_met_covariance = fisher_wmh_e_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/met/ensemble_newest_wmh_e_wbkgs_sigsystonly_lhedata_met',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_e_wbkgs_met_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wmh_e_wbkgs_ptw_mean, fi_sally_wmh_e_wbkgs_ptw_covariance = fisher_wmh_e_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/ptw/ensemble_newest_wmh_e_wbkgs_sigsystonly_lhedata_met_ptw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_e_wbkgs_ptw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wmh_e_wbkgs_2d_mean, fi_sally_wmh_e_wbkgs_2d_covariance = fisher_wmh_e_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/2d/ensemble_newest_wmh_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_e_wbkgs_2d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output>16:27 madminer.ml          INFO    Found score ensemble with 5 estimators
16:27 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_0
16:27 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_1
16:27 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_2
16:27 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_3
16:27 madminer.ml          INFO    Loading model from models/2d/ensemble_newest_wmh_e_wbkgs_sigsystonly_lhedata_met_ptw_mttot/estimator_4
16:27 madminer.fisherinfor INFO    Found 4 parameters in SALLY model, matching 4 physical parameters in MadMiner file
16:32 madminer.fisherinfor INFO    Evaluating rate Fisher information
16:37 madminer.fisherinfor INFO    Evaluating ki[...]<jupyter_text>Save the Arrays for Later<jupyter_code>fi_sally_wbkgs_outfile = './fisher_info/fi_sally_wbkgs.npz'
fi_sally_wbkgs_cov_outfile = './fisher_info/fi_sally_wbkgs_cov.npz'

fi_sally_wbkgs_list = [
    fi_sally_wph_mu_wbkgs_full_mean, 
    fi_sally_wph_e_wbkgs_full_mean,
    fi_sally_wmh_mu_wbkgs_full_mean,
    fi_sally_wmh_e_wbkgs_full_mean,
    fi_sally_wph_mu_wbkgs_met_mean,
    fi_sally_wph_e_wbkgs_met_mean,
    fi_sally_wmh_mu_wbkgs_met_mean,
    fi_sally_wmh_e_wbkgs_met_mean,
    fi_sally_wph_mu_wbkgs_ptw_mean,
    fi_sally_wph_e_wbkgs_ptw_mean,
    fi_sally_wmh_mu_wbkgs_ptw_mean,
    fi_sally_wmh_e_wbkgs_ptw_mean,
    fi_sally_wph_mu_wbkgs_2d_mean,
    fi_sally_wph_e_wbkgs_2d_mean,
    fi_sally_wmh_mu_wbkgs_2d_mean, 
    fi_sally_wmh_e_wbkgs_2d_mean, 
]

fi_sally_wbkgs_cov_list = [
    fi_sally_wph_mu_wbkgs_full_covariance, 
    fi_sally_wph_e_wbkgs_full_covariance,
    fi_sally_wmh_mu_wbkgs_full_covariance,
    fi_sally_wmh_e_wbkgs_full_covariance,
    fi_sally_wph_mu_wbkgs_met_covariance,
    fi_sally_wph_e_wbkgs_met_covariance,
    fi_sally_wmh_mu_wbkgs_met_covariance,
    fi_sally_wmh_e_wbkgs_met_covariance,
    fi_sally_wph_mu_wbkgs_ptw_covariance,
    fi_sally_wph_e_wbkgs_ptw_covariance,
    fi_sally_wmh_mu_wbkgs_ptw_covariance,
    fi_sally_wmh_e_wbkgs_ptw_covariance,
    fi_sally_wph_mu_wbkgs_2d_covariance,
    fi_sally_wph_e_wbkgs_2d_covariance,
    fi_sally_wmh_mu_wbkgs_2d_covariance, 
    fi_sally_wmh_e_wbkgs_2d_covariance, 
]
np.savez(fi_sally_wbkgs_outfile, fi_sally_wbkgs_list, allow_pickle=False)
np.savez(fi_sally_wbkgs_cov_outfile, fi_sally_wbkgs_cov_list, allow_pickle=False)<jupyter_output><empty_output><jupyter_text>Check Other Kinematic Variables<jupyter_code>fi_sally_wph_mu_wbkgs_other1_mean, fi_sally_wph_mu_wbkgs_other1_covariance = fisher_wph_mu_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/others/ensemble_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw_dphilv',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_other1_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_mu_wbkgs_other2_mean, fi_sally_wph_mu_wbkgs_other2_covariance = fisher_wph_mu_wbkgs_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/others/ensemble_wph_mu_wbkgs_sigsystonly_lhedata_met_ptw_drlb',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_other2_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
print( np.linalg.det(project_information(fi_sally_wph_mu_wbkgs_other1_mean,[2,3])) )
fi, cov = project_information(fi_sally_wph_mu_wbkgs_other1_mean, [0,1,2,3], covariance=fi_sally_wph_mu_wbkgs_other1_covariance)
fi1, cov1 = project_information(fi, [1,2,3], covariance=cov)<jupyter_output><empty_output><jupyter_text>Computing Background-Free Information  Full Observables<jupyter_code>fi_sally_wph_mu_full_mean, fi_sally_wph_mu_full_covariance = fisher_wph_mu_full.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/full/sally_ensemble_wph_mu_smeftsim_full',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_full_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_e_full_mean, fi_sally_wph_e_full_covariance = fisher_wph_e_full.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/full/sally_ensemble_wph_e_smeftsim_full',
    luminosity=uselumi*1000.
)
fi_sally_wmh_mu_full_mean, fi_sally_wmh_mu_full_covariance = fisher_wmh_mu_full.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/full/sally_ensemble_wmh_mu_smeftsim_full',
    luminosity=uselumi*1000.
)
fi_sally_wmh_e_full_mean, fi_sally_wmh_e_full_covariance = fisher_wmh_e_full.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/full/sally_ensemble_wmh_e_smeftsim_full',
    luminosity=uselumi*1000.
)<jupyter_output><empty_output><jupyter_text>MET Observables<jupyter_code>fi_sally_wph_mu_met_mean, fi_sally_wph_mu_met_covariance = fisher_wph_mu_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/met/sally_ensemble_wph_mu_smeftsim_met',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_met_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_e_met_mean, fi_sally_wph_e_met_covariance = fisher_wph_e_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/met/sally_ensemble_wph_e_smeftsim_met',
    luminosity=uselumi*1000.
)
fi_sally_wmh_mu_met_mean, fi_sally_wmh_mu_met_covariance = fisher_wmh_mu_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/met/sally_ensemble_wmh_mu_smeftsim_met',
    luminosity=uselumi*1000.
)
fi_sally_wmh_e_met_mean, fi_sally_wmh_e_met_covariance = fisher_wmh_e_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/met/sally_ensemble_wmh_e_smeftsim_met',
    luminosity=uselumi*1000.
)<jupyter_output><empty_output><jupyter_text>2D Observables<jupyter_code>fi_sally_wph_mu_2d_mean, fi_sally_wph_mu_2d_covariance = fisher_wph_mu_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/2d/sally_ensemble_wph_mu_smeftsim_2d',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_2d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_e_2d_mean, fi_sally_wph_e_2d_covariance = fisher_wph_e_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/2d/sally_ensemble_wph_e_smeftsim_2d',
    luminosity=uselumi*1000.
)
fi_sally_wmh_mu_2d_mean, fi_sally_wmh_mu_2d_covariance = fisher_wmh_mu_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/2d/sally_ensemble_wmh_mu_smeftsim_2d',
    luminosity=uselumi*1000.
)
fi_sally_wmh_e_2d_mean, fi_sally_wmh_e_2d_covariance = fisher_wmh_e_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/2d/sally_ensemble_wmh_e_smeftsim_2d',
    luminosity=uselumi*1000.
)<jupyter_output><empty_output><jupyter_text>$p_{T,W}$ Only<jupyter_code>fi_sally_wph_mu_ptw_mean, fi_sally_wph_mu_ptw_covariance = fisher_wph_mu_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/ptw/sally_ensemble_wph_mu_smeftsim_ptw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_ptw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_sally_wph_e_ptw_mean, fi_sally_wph_e_ptw_covariance = fisher_wph_e_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/ptw/sally_ensemble_wph_e_smeftsim_ptw',
    luminosity=uselumi*1000.
)
fi_sally_wmh_mu_ptw_mean, fi_sally_wmh_mu_ptw_covariance = fisher_wmh_mu_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/ptw/sally_ensemble_wmh_mu_smeftsim_ptw',
    luminosity=uselumi*1000.
)
fi_sally_wmh_e_ptw_mean, fi_sally_wmh_e_ptw_covariance = fisher_wmh_e_met.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/ptw/sally_ensemble_wmh_e_smeftsim_ptw',
    luminosity=uselumi*1000.
)<jupyter_output><empty_output><jupyter_text>Save the Arrays for Later<jupyter_code>fi_sally_nobkgs_outfile = './fisher_info/fi_sally_nobkgs.npz'
fi_sally_nobkgs_cov_outfile = './fisher_info/fi_sally_nobkgs_cov.npz'


fi_sally_nobkgs_list = [
    fi_sally_wph_mu_full_mean,
    fi_sally_wph_e_full_mean,
    fi_sally_wmh_mu_full_mean,
    fi_sally_wmh_e_full_mean,
    fi_sally_wph_mu_met_mean,
    fi_sally_wph_e_met_mean,
    fi_sally_wmh_mu_met_mean,
    fi_sally_wmh_e_met_mean,
    fi_sally_wph_mu_2d_mean,
    fi_sally_wph_e_2d_mean,
    fi_sally_wmh_mu_2d_mean,
    fi_sally_wmh_e_2d_mean,
    fi_sally_wph_mu_ptw_mean,
    fi_sally_wph_e_ptw_mean,
    fi_sally_wmh_mu_ptw_mean,
    fi_sally_wmh_e_ptw_mean,
]

fi_sally_nobkgs_cov_list = [
    fi_sally_wph_mu_full_covariance,
    fi_sally_wph_e_full_covariance,
    fi_sally_wmh_mu_full_covariance,
    fi_sally_wmh_e_full_covariance,
    fi_sally_wph_mu_met_covariance,
    fi_sally_wph_e_met_covariance,
    fi_sally_wmh_mu_met_covariance,
    fi_sally_wmh_e_met_covariance,
    fi_sally_wph_mu_2d_covariance,
    fi_sally_wph_e_2d_covariance,
    fi_sally_wmh_mu_2d_covariance,
    fi_sally_wmh_e_2d_covariance,
    fi_sally_wph_mu_ptw_covariance,
    fi_sally_wph_e_ptw_covariance,
    fi_sally_wmh_mu_ptw_covariance,
    fi_sally_wmh_e_ptw_covariance,
]
np.savez(fi_sally_nobkgs_outfile, fi_sally_nobkgs_list, allow_pickle=False)
np.savez(fi_sally_nobkgs_cov_outfile, fi_sally_nobkgs_cov_list, allow_pickle=False)<jupyter_output><empty_output><jupyter_text>Other Fisher Informations  Truth-Level Information<jupyter_code>fi_wph_mu_truth_mean, fi_wph_mu_truth_covariance = fisher_wph_mu_full.calculate_fisher_information_full_truth(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_wph_mu_truth_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_wph_e_truth_mean, fi_wph_e_truth_covariance = fisher_wph_e_full.calculate_fisher_information_full_truth(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)
fi_wmh_mu_truth_mean, fi_wmh_mu_truth_covariance = fisher_wmh_mu_full.calculate_fisher_information_full_truth(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)
fi_wmh_e_truth_mean, fi_wmh_e_truth_covariance = fisher_wmh_e_full.calculate_fisher_information_full_truth(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)<jupyter_output><empty_output><jupyter_text>Rate-Only Information  No-Backgrounds<jupyter_code>fi_wph_mu_rate_mean, fi_wph_mu_rate_covariance = fisher_wph_mu_met.calculate_fisher_information_rate(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_wph_mu_rate_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_wph_e_rate_mean, fi_wph_e_rate_covariance = fisher_wph_e_met.calculate_fisher_information_rate(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)
fi_wmh_mu_rate_mean, fi_wmh_mu_rate_covariance = fisher_wmh_mu_met.calculate_fisher_information_rate(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)
fi_wmh_e_rate_mean, fi_wmh_e_rate_covariance = fisher_wmh_e_met.calculate_fisher_information_rate(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_wmh_e_rate_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output>cHbox       cHDD        cHW       cHq3
cHbox  160.700091 -40.175016  56.233231  14.705423
cHDD   -40.175016  10.043752 -14.058306  -3.676355
cHW     56.233231 -14.058306  19.677501   5.145818
cHq3    14.705423  -3.676355   5.145818   1.345671<jupyter_text>With Backgrounds<jupyter_code>fi_wph_mu_wbkgs_rate_mean, fi_wph_mu_wbkgs_rate_covariance = fisher_wph_mu_wbkgs_met.calculate_fisher_information_rate(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_wph_mu_wbkgs_rate_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fi_wph_e_wbkgs_rate_mean, fi_wph_e_wbkgs_rate_covariance = fisher_wph_e_wbkgs_met.calculate_fisher_information_rate(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)
fi_wmh_mu_wbkgs_rate_mean, fi_wmh_mu_wbkgs_rate_covariance = fisher_wmh_mu_wbkgs_met.calculate_fisher_information_rate(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)
fi_wmh_e_wbkgs_rate_mean, fi_wmh_e_wbkgs_rate_covariance = fisher_wmh_e_wbkgs_met.calculate_fisher_information_rate(
    theta=[0.,0.,0.,0.],
    luminosity=uselumi*1000.
)<jupyter_output><empty_output><jupyter_text>Save the Arrays for Later<jupyter_code>fi_sally_other_outfile = './fisher_info/fi_sally_other.npz'
fi_sally_other_cov_outfile = './fisher_info/fi_sally_other_cov.npz'

fi_sally_other_list = [
    fi_wph_mu_wbkgs_rate_mean,
    fi_wph_e_wbkgs_rate_mean,
    fi_wmh_mu_wbkgs_rate_mean,
    fi_wmh_e_wbkgs_rate_mean,
    fi_wph_mu_rate_mean,
    fi_wph_e_rate_mean,
    fi_wmh_mu_rate_mean,
    fi_wmh_e_rate_mean,
    fi_wph_mu_truth_mean,
    fi_wph_e_truth_mean,
    fi_wmh_mu_truth_mean,
    fi_wmh_e_truth_mean,
]

fi_sally_other_cov_list = [
    fi_wph_mu_wbkgs_rate_covariance,
    fi_wph_e_wbkgs_rate_covariance,
    fi_wmh_mu_wbkgs_rate_covariance,
    fi_wmh_e_wbkgs_rate_covariance,
    fi_wph_mu_rate_covariance,
    fi_wph_e_rate_covariance,
    fi_wmh_mu_rate_covariance,
    fi_wmh_e_rate_covariance,
    fi_wph_mu_truth_covariance,
    fi_wph_e_truth_covariance,
    fi_wmh_mu_truth_covariance,
    fi_wmh_e_truth_covariance,
]
np.savez(fi_sally_other_outfile, fi_sally_other_list, allow_pickle=False)
np.savez(fi_sally_other_cov_outfile, fi_sally_other_cov_list, allow_pickle=False)<jupyter_output><empty_output><jupyter_text>Information in the Angular Variable $\cos\theta_W^*$  $W^+ \to \mu^+\nu_{\mu}$<jupyter_code>fisher_wph_mu_wbkgs_thetaw = FisherInformation(lhedatafile_wph_mu_wbkgs_thetaw, include_nuisance_parameters=True)
fi_sally_wph_mu_wbkgs_thetaw_mean, fi_sally_wph_mu_wbkgs_thetaw_covariance = fisher_wph_mu_wbkgs_thetaw.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wph_mu_wbkgs_short_thetaw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_thetaw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wph_mu_wbkgs_2dthetaw = FisherInformation(lhedatafile_wph_mu_wbkgs_2dthetaw, include_nuisance_parameters=True)
fi_sally_wph_mu_wbkgs_2dthetaw_mean, fi_sally_wph_mu_wbkgs_2dthetaw_covariance = fisher_wph_mu_wbkgs_2dthetaw.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wph_mu_wbkgs_short_2dthetaw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_2dthetaw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wph_mu_wbkgs_3d = FisherInformation(lhedatafile_wph_mu_wbkgs_3d, include_nuisance_parameters=True)
fi_sally_wph_mu_wbkgs_3d_mean, fi_sally_wph_mu_wbkgs_3d_covariance = fisher_wph_mu_wbkgs_3d.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wph_mu_wbkgs_short_3d',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_wbkgs_3d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wph_mu_3d = FisherInformation(lhedatafile_wph_mu_3d, include_nuisance_parameters=True)
fi_sally_wph_mu_3d_mean, fi_sally_wph_mu_3d_covariance = fisher_wph_mu_3d.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wph_mu_smeftsim_3d',
    luminosity=uselumi*1000.,
)

print( DataFrame(
    data = project_information(fi_sally_wph_mu_3d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output><empty_output><jupyter_text>$W^+ \to e^+\nu_{e}$<jupyter_code>fisher_wph_e_wbkgs_thetaw = FisherInformation(lhedatafile_wph_e_wbkgs_thetaw, include_nuisance_parameters=True)
fi_sally_wph_e_wbkgs_thetaw_mean, fi_sally_wph_e_wbkgs_thetaw_covariance = fisher_wph_e_wbkgs_thetaw.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wph_e_wbkgs_short_thetaw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_e_wbkgs_thetaw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wph_e_wbkgs_2dthetaw = FisherInformation(lhedatafile_wph_e_wbkgs_2dthetaw, include_nuisance_parameters=True)
fi_sally_wph_e_wbkgs_2dthetaw_mean, fi_sally_wph_e_wbkgs_2dthetaw_covariance = fisher_wph_e_wbkgs_2dthetaw.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wph_e_wbkgs_short_2dthetaw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_e_wbkgs_2dthetaw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wph_e_wbkgs_3d = FisherInformation(lhedatafile_wph_e_wbkgs_3d, include_nuisance_parameters=True)
fi_sally_wph_e_wbkgs_3d_mean, fi_sally_wph_e_wbkgs_3d_covariance = fisher_wph_e_wbkgs_3d.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wph_e_wbkgs_short_3d',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wph_e_wbkgs_3d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wph_e_3d = FisherInformation(lhedatafile_wph_e_wbkgs_3d, include_nuisance_parameters=True)
fi_sally_wph_e_3d_mean, fi_sally_wph_e_3d_covariance = fisher_wph_e_3d.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wph_e_smeftsim_3d',
    luminosity=uselumi*1000.,
)

print( DataFrame(
    data = project_information(fi_sally_wph_e_3d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output><empty_output><jupyter_text>$W^- \to \mu^-\bar{\nu}_{\mu}$<jupyter_code>fisher_wmh_mu_wbkgs_thetaw = FisherInformation(lhedatafile_wmh_mu_wbkgs_thetaw, include_nuisance_parameters=True)
fi_sally_wmh_mu_wbkgs_thetaw_mean, fi_sally_wmh_mu_wbkgs_thetaw_covariance = fisher_wmh_mu_wbkgs_thetaw.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wmh_mu_wbkgs_short_thetaw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_mu_wbkgs_thetaw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wmh_mu_wbkgs_2dthetaw = FisherInformation(lhedatafile_wmh_mu_wbkgs_2dthetaw, include_nuisance_parameters=True)
fi_sally_wmh_mu_wbkgs_2dthetaw_mean, fi_sally_wmh_mu_wbkgs_2dthetaw_covariance = fisher_wmh_mu_wbkgs_2dthetaw.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wmh_mu_wbkgs_short_2dthetaw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_mu_wbkgs_2dthetaw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wmh_mu_wbkgs_3d = FisherInformation(lhedatafile_wmh_mu_wbkgs_3d, include_nuisance_parameters=True)
fi_sally_wmh_mu_wbkgs_3d_mean, fi_sally_wmh_mu_wbkgs_3d_covariance = fisher_wmh_mu_wbkgs_3d.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wmh_mu_wbkgs_short_3d',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_mu_wbkgs_3d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wmh_mu_3d = FisherInformation(lhedatafile_wmh_mu_wbkgs_3d, include_nuisance_parameters=True)
fi_sally_wmh_mu_3d_mean, fi_sally_wmh_mu_3d_covariance = fisher_wmh_mu_3d.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wmh_mu_smeftsim_3d',
    luminosity=uselumi*1000.,
)

print( DataFrame(
    data = project_information(fi_sally_wmh_mu_3d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output><empty_output><jupyter_text>$W^- \to e^-\bar{\nu}_{e}$<jupyter_code>fisher_wmh_e_wbkgs_thetaw = FisherInformation(lhedatafile_wmh_e_wbkgs_thetaw, include_nuisance_parameters=True)
fi_sally_wmh_e_wbkgs_thetaw_mean, fi_sally_wmh_e_wbkgs_thetaw_covariance = fisher_wmh_e_wbkgs_thetaw.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wmh_e_wbkgs_short_thetaw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_e_wbkgs_thetaw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wmh_e_wbkgs_2dthetaw = FisherInformation(lhedatafile_wmh_e_wbkgs_2dthetaw, include_nuisance_parameters=True)
fi_sally_wmh_e_wbkgs_2dthetaw_mean, fi_sally_wmh_e_wbkgs_2dthetaw_covariance = fisher_wmh_e_wbkgs_2dthetaw.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wmh_e_wbkgs_short_2dthetaw',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_e_wbkgs_2dthetaw_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wmh_e_wbkgs_3d = FisherInformation(lhedatafile_wmh_e_wbkgs_3d, include_nuisance_parameters=True)
fi_sally_wmh_e_wbkgs_3d_mean, fi_sally_wmh_e_wbkgs_3d_covariance = fisher_wmh_e_wbkgs_3d.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wmh_e_wbkgs_short_3d',
    luminosity=uselumi*1000.
)

print( DataFrame(
    data = project_information(fi_sally_wmh_e_wbkgs_3d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)
fisher_wmh_e_3d = FisherInformation(lhedatafile_wmh_e_wbkgs_3d, include_nuisance_parameters=True)
fi_sally_wmh_e_3d_mean, fi_sally_wmh_e_3d_covariance = fisher_wmh_e_3d.calculate_fisher_information_full_detector(
    theta=[0.,0.,0.,0.],
    model_file='models/sally_ensemble_wmh_e_smeftsim_3d',
    luminosity=uselumi*1000.,
)

print( DataFrame(
    data = project_information(fi_sally_wmh_e_3d_mean, [0,1,2,3]),
    columns = labels,
    index = labels)
)<jupyter_output><empty_output><jupyter_text>Save Output for Later<jupyter_code>fi_sally_thetaw_outfile = './fisher_info/fi_sally_thetaw.npz'
fi_sally_thetaw_cov_outfile = './fisher_info/fi_sally_thetaw_cov.npz'

fi_sally_thetaw_list = [
    fi_sally_wph_mu_wbkgs_thetaw_mean,
    fi_sally_wph_e_wbkgs_thetaw_mean,
    fi_sally_wmh_mu_wbkgs_thetaw_mean,
    fi_sally_wmh_e_wbkgs_thetaw_mean,
    fi_sally_wph_mu_wbkgs_2dthetaw_mean,
    fi_sally_wph_e_wbkgs_2dthetaw_mean,
    fi_sally_wmh_mu_wbkgs_2dthetaw_mean,
    fi_sally_wmh_e_wbkgs_2dthetaw_mean,
    fi_sally_wph_mu_wbkgs_3d_mean,
    fi_sally_wph_e_wbkgs_3d_mean,
    fi_sally_wmh_mu_wbkgs_3d_mean,
    fi_sally_wmh_e_wbkgs_3d_mean,
]

fi_sally_thetaw_cov_list = [
    fi_sally_wph_mu_wbkgs_thetaw_covariance,
    fi_sally_wph_e_wbkgs_thetaw_covariance,
    fi_sally_wmh_mu_wbkgs_thetaw_covariance,
    fi_sally_wmh_e_wbkgs_thetaw_covariance,
    fi_sally_wph_mu_wbkgs_2dthetaw_covariance,
    fi_sally_wph_e_wbkgs_2dthetaw_covariance,
    fi_sally_wmh_mu_wbkgs_2dthetaw_covariance,
    fi_sally_wmh_e_wbkgs_2dthetaw_covariance,
    fi_sally_wph_mu_wbkgs_3d_covariance,
    fi_sally_wph_e_wbkgs_3d_covariance,
    fi_sally_wmh_mu_wbkgs_3d_covariance,
    fi_sally_wmh_e_wbkgs_3d_covariance,
]
np.savez(fi_sally_thetaw_outfile, fi_sally_thetaw_list, allow_pickle=False)
np.savez(fi_sally_thetaw_cov_outfile, fi_sally_thetaw_cov_list, allow_pickle=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.0843359027927863, 'fraction_numerical': 0.03345100016809548, 'mean_word_length': 6.844038425315502, 'pattern_counts': {'":': 0, '<': 102, '<?xml version=': 0, '>': 102, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '27', 'dir': 'jupyter-structured-clean-dedup', 'id': '301284', 'license': 'MIT', 'n_tokens_mistral': 19015, 'n_tokens_neox': 18210, 'n_words': 1809, 'path': '5a-WH-Compute-FisherInfo-SALLY.ipynb', 'repo_name': 'diemort/wh-madminer', 'size': '41643'}