def create_roc_counter(tree, netcuts, min_value, max_value, reco_true=0, et_function=et_identity): ''' Create and fill ROC counter array holding number of events left after performing cuts on Et-derived value :param tree: Tree holding events to be loaded :param netcuts: Number of cuts to be performed on events :param min_value: Minimum of Et-derived values :param max_value: Maximum of Et-derived values :param reco_true: Bit value, 0 for using the reconstructed Et and 1 for using the true Pt :param et_function: Arbitrary to be applied to the Et of event :return: Numpy array holding number events left after cuts ''' entries = tree.entries # Scale factor to be used in increment_roc_counter scaler = float(max_value - min_value) / float(netcuts) # This array will hold the number of signal events with Et-derived value greater than a given index # (assuming scaler = 1) roc_counter = np.zeros(netcuts) for i in range(entries): event = prepare_event(tree, i, 1, 1, 0) # Use the reconstructed Et if reco_true set to 0, true Pt if set to 1 if reco_true == 0: event_et = event.reco_et else: event_et = event.true_tau_pt event_et = et_function(event_et) increment_roc_counter(event_et, roc_counter, scaler, min_value) if roc_counter[0] < entries: print('Values exist below defined minimum') if roc_counter[-1] > 0: print('Values exist above defined maximum') return roc_counter
def reco_et_tree_histogram(tree, bins, min_value, max_value): ''' Create a histogram of the reconstructed Et values of the events in tree :param tree: A tree containing events whose reconstructed Et will be loaded into the returned histogram :param bins: Number of bins in the histogram :param min_value: Minimum of values loaded into histogram :param max_value: Maximum of values loaded into histogram :return: A histogram populated with the reconstructed Et values of the events in tree ''' tree_entries = tree.entries histo = TH1F("histo", "Reconstructed Et", bins, min_value, max_value) for i in range(tree_entries): event = prepare_event(tree, i, 0, 1, 0) histo.Fill(event.reco_et) histo.GetXaxis().SetTitle("Reconstructed Et") histo.GetYaxis().SetTitle("Entries") return histo
set_po_tree_parameters(sig_t) print 'New entries' print new_t.entries print 'Old entries' print old_t.entries new_had_histo = TH1F('histo', 'New Hadronic Energy', 100, 0, 20) new_05_had_histo = TH1F('histo', 'New 0.5 GeV Hadronic Energy', 100, 0, 20) old_had_histo = TH1F('histo', 'Old Hadronic Energy', 100, 0, 20) zero_new = 0 zero_05_new = 0 zero_old = 0 for i in range(new_t.entries): event = prepare_event(new_t, i) new_had_histo.Fill(event.had_layer.reco_et) if event.had_layer.reco_et == 0: zero_new += 1 for i in range(new_05_t.entries): event = prepare_event(new_05_t, i) new_05_had_histo.Fill(event.had_layer.reco_et) if event.had_layer.reco_et == 0: zero_05_new += 1 for i in range(old_t.entries): event = prepare_event(old_t, i) old_had_histo.Fill(event.had_layer.reco_et) if event.had_layer.reco_et == 0: zero_old += 1
'New Background L2 Supercell Energy (Constant eta/phi)', bins, min_bin, max_bin) sig_cell_histo = TH1F('hist', 'Signal L2 Supercell Energy (Constant eta/phi)', bins, min_bin, max_bin) old_off_histo = TH1F('hist', 'Old Background L2 Supercell Energy (Seed eta - 2)', bins, min_bin, max_bin) new_off_histo = TH1F('hist', 'New Background L2 Supercell Energy (Seed eta - 2)', bins, min_bin, max_bin) sig_off_histo = TH1F('hist', 'Signal L2 Supercell Energy (Seed eta - 2)', bins, min_bin, max_bin) for i in range(t_old.entries): event = prepare_event(t_old, i) old_seed_histo.Fill(event.seed_et) old_cell_histo.Fill(event.l2_layer.cell_et[3][1]) old_off_histo.Fill(event.l2_layer.cell_et[event.seed_eta - 2][event.seed_phi]) for i in range(t_new.entries): event = prepare_event(t_new, i) new_seed_histo.Fill(event.seed_et) new_cell_histo.Fill(event.l2_layer.cell_et[3][1]) new_off_histo.Fill(event.l2_layer.cell_et[event.seed_eta - 2][event.seed_phi]) for i in range(t_sig.entries): event = prepare_event(t_sig, i) sig_seed_histo.Fill(event.seed_et)
file_path = '~/NewTauSamples/dataFiles/sig_ntuple.root' f = ROOT.TFile(file_path) t = Tree(f.Get('mytree')) set_po_tree_parameters(t) afs_name = '~/NewTauSamples/plots/sanityCheck.pdf' eos_name = '/eos/user/n/nicholas/NewTauSamples/plots/sanityCheck.pdf' plot_names = [afs_name, eos_name] h0 = ROOT.TH1F('hist', 'New Signal True Tau Pt', 100, 0, 100) h1 = ROOT.TH1F('hist', 'New Signal Seed Et', 100, 0, 20) h2 = ROOT.TH1F('hist', 'New Signal Eta', 50, -5, 5) for i in range(t.root_ttree.GetEntries()): t.root_ttree.GetEntry(i) event = prepare_event(t, i) h0.Fill(t.root_ttree.TrueTauPt) h1.Fill(event.l2_layer.cell_et[t.root_ttree.SeedEta][t.root_ttree.SeedPhi]) h2.Fill(t.root_ttree.TOBEta) h0.Draw('hist') multi_print(plot_names, c1, '(') h1.Draw('hist') multi_print(plot_names, c1) h2.Draw('hist') multi_print(plot_names, c1, ')')
tsig, fsig, tback, fback = get_signal_and_background_files( '/eos/user/n/nicholas/SWAN_projects/NewTauSamples/dataFiles/ztt_Output_formatted.root', '/eos/user/n/nicholas/SWAN_projects/NewTauSamples/dataFiles/output_MB80_formatted.root' ) set_et_tree_parameters(tback) audit_event = 0 sig_or_back = 0 if sig_or_back == 1: tree = tsig else: tree = tback event = prepare_event(tree, audit_event, 0, 0, 1) print('L2 Layer Cells') print(event.l2_layer.cell_et) print('FCore Definition') print(event.fcore_def) print('FCore Core Et') print( layer_reco_et(event.l2_layer, event.fcore_def[0][0], event.fcore_def[0][1], event.seed_eta, event.seed_phi)) print('FCore Isolation Et') print( layer_reco_et(event.l2_layer, event.fcore_def[1][0], event.fcore_def[1][1], event.seed_eta, event.seed_phi)) print('FCore') print(event.fcore)