19 def main(path, particle):
21 chain = ROOT.TChain(
"egamma")
24 print(
"entries:", chain.GetEntries())
26 selection = {
"unconv":
"(ph_Rconv >= 800 || ph_Rconv <= 0)",
27 "conv":
"(ph_Rconv < 800 && ph_Rconv > 0)",
28 "electron":
"1"}[particle]
30 prefix = {
"unconv":
"ph",
"conv":
"ph",
"electron":
"el"}[particle]
32 layers =
"rawcl_Es0",
"rawcl_Es1",
"rawcl_Es2",
"rawcl_Es3"
33 layers = [prefix +
"_" + v
for v
in layers]
34 title = [
"ratio_Es0_true_E",
38 aetaCalo =
"abs(" + prefix +
"_" +
"cl_etaCalo" +
")"
39 truth_E = prefix +
"_truth_E"
40 ratio_layers = [
"%s / %s" % (layer, truth_E)
for layer
in layers]
41 truth_eta = prefix +
"_truth_eta"
42 truth_pt =
"(%s / cosh(%s))" % (truth_E, truth_eta)
43 matched = (
"abs(({0}_rawcl_Es0 + "
44 "{0}_rawcl_Es1 + {0}_rawcl_Es2 + "
45 "{0}_rawcl_Es3)/{0}_truth_E - 1)<1").
format(prefix)
46 vars_to_plot = ratio_layers
47 selection +=
" && " +
"(" + matched +
")"
49 pt_binning = [0, 5E3, 10E3, 15E3, 20E3,
50 30E3, 35E3, 40E3, 45E3, 50E3, 55E3, 60E3, 65E3,
51 70E3, 75E3, 80E3, 85E3, 90E3,
52 100E3, 110E3, 120E3, 130E3,
53 140E3, 160E3, 180E3, 200E3, 220E3,
54 250E3, 300E3, 350E3, 400E3, 450E3, 500E3, 550E3, 600E3,
55 700E3, 800E3, 900E3, 1000E3,
56 1200E3, 1400E3, 1600E3, 1800E3, 2000E3,
58 aeta_binning = [0, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6,
59 0.7, 0.75, 0.8, 0.85, 0.9, 1.0,
60 1.1, 1.2, 1.3, 1.425, 1.550, 1.6,
61 1.65, 1.7, 1.75, 1.8, 1.9, 2.0, 2.1,
62 2.2, 2.3, 2.35, 2.4, 2.5]
63 pt_binning =
array(
'd', pt_binning)
64 aeta_binning =
array(
'd', aeta_binning)
65 if particle ==
"conv":
66 vars_to_plot.append(
"ph_Rconv")
67 title.append(
"ph_Rconv")
68 vars_to_plot.append(
"ph_zconv")
69 title.append(
"ph_zconv")
71 print(
"plotting counting")
72 histo_name =
"histo_count_%s" % particle
73 histo_count = ROOT.TH2F(histo_name,
"count %s" % particle, len(
74 pt_binning) - 1, pt_binning, len(aeta_binning) - 1, aeta_binning)
75 chain.Draw(aetaCalo +
":" + truth_pt +
">>" + histo_name, selection)
78 for t, v
in zip(title, vars_to_plot):
80 histo_name =
"histo_%s_%s" % (particle, t)
82 sel = selection +
" && abs(ph_zconv) < 5000"
85 histo = ROOT.TProfile2D(histo_name, t, len(
86 pt_binning) - 1, pt_binning, len(aeta_binning) - 1, aeta_binning)
87 arg = v +
":" + aetaCalo +
":" + truth_pt +
">>" + histo_name
88 chain.Draw(arg, sel,
"profcolz")
89 histo.GetXaxis().SetTitle(
"true pT [MeV]")
90 histo.GetYaxis().SetTitle(
"etaCalo")
92 result.append(histo_count)