ATLAS Offline Software
Loading...
Searching...
No Matches
makeegammaturnon.py
Go to the documentation of this file.
1# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2
3
4#***************************************************************************
5# makeplots.py -
6# -------------------
7# begin : 28 03 2020
8# email : tong.qiu@cern.ch
9# **************************************************************************
10import numpy as np
11from eFEXNTuple import *
12from plotlib import *
13import sys
14
15def rebin(binning, data):
16 hist, edge = np.histogram(data, binning)
17 newbin = [edge[0]]
18 total_i = 0
19 for i in range(len(hist)):
20 total_i += hist[i]
21 if total_i > 0:
22 newbin.append(edge[i+1])
23 total_i = 0
24 newbin[-1] = binning[-1]
25 return newbin
26
27def rebin2(binning, data1, data2):
28 hist1, edge = np.histogram(data1, binning)
29 hist2, edge = np.histogram(data2, binning)
30 newbin = [edge[0]]
31 total_1 = 0
32 total_2 = 0
33 for i in range(len(hist1)):
34 total_1 += hist1[i]
35 total_2 += hist2[i]
36 if total_1 > 0 and total_2 > 0:
37 newbin.append(edge[i+1])
38 total_1 = 0
39 total_2 = 0
40 newbin[-1] = binning[-1]
41 return newbin
42
43def turn_on_curve(all_data, selected_data, bins):
44 bins = rebin(bins, all_data)
45 hist_all, edges = np.histogram(all_data, bins)
46 hist_selected, edges = np.histogram(selected_data, bins)
47 bin_centre = [(edges[i] + edges[i+1])/2. for i in range(len(edges)-1)]
48 hist_height = hist_selected / hist_all
49 hist_error = ((hist_selected**0.5 / hist_all)**2. + (hist_all**0.5 * hist_selected / hist_all**2.)**2.)**0.5
50 return (hist_height, bin_centre, hist_error)
51
52def main(path):
53 myntuple = eFEXNTupleLoader(path)
54 all_e_ET = []
55 selected_e_ET = []
56 for each in myntuple.entries():
57 each.set_class_type("e")
58 if each.is_in_crack(each.leading_l_id()):
59 continue
60 if abs(each.truth_e_eta[each.leading_l_id()]) > 2.3:
61 continue
62 all_e_ET.append(each.truth_e_ET[each.leading_l_id()])
63 matched_tobs = each.get_eg_matchedtob_id()[each.leading_l_id()]
64 selected = False
65 for i in matched_tobs:
66 if not each.eg_haveseed[i]:
67 continue
68 if each.eg_ET[i] <= 22:
69 continue
70 #if 0.025*(each.eg_wstotnum[i]/each.eg_wstotden[i])**0.5 < 0.045:
71 selected = True
72 break
73 if selected:
74 selected_e_ET.append(each.truth_e_ET[each.leading_l_id()])
75
76 hist_height, bin_centre, hist_error = turn_on_curve(all_e_ET, selected_e_ET, range(0,100,5))
77 histplot([bin_centre], [hist_height], [hist_error], errorbar_limit=1, filename="egammatrunon")
78
79
80if __name__ == "__main__":
81 if len(sys.argv) > 2:
82 print("Error: too many arguments")
83 print("Example: python makeplots.py PATH/TO/INPUT")
84 exit(1)
85 if len(sys.argv) == 1:
86 print("Error: need the path to the input file")
87 print("Example: python makeplots.py PATH/TO/INPUT")
88 print("Info: Using default input file path")
89 inputfile = "myfile.root"
90 else:
91 inputfile = sys.argv[1]
92 main(inputfile)
void print(char *figname, TCanvas *c1)
int main()
Definition hello.cxx:18
rebin2(binning, data1, data2)
rebin(binning, data)
turn_on_curve(all_data, selected_data, bins)
histplot(data_x, data_y, error=None, label=None, **kwargs)
Definition plotlib.py:17