13def readHists(h, fname, wanted=None) -> None:
14 if wanted is None:
15 wanted = []
16 if fname[0:4] == "/eos":
17 eospath = ROOT.gSystem.Getenv("EOSSHIP") + fname
18 f = ROOT.TFile.Open(eospath)
19 else:
20 f = ROOT.TFile(fname)
21 for akey in f.GetListOfKeys():
22 name = akey.GetName()
23 try:
24 hname = int(name)
25 except ValueError:
26 hname = name
27 if len(wanted) > 0 and hname not in wanted:
28 continue
29 obj = akey.ReadObj()
30 cln = obj.Class().GetName()
31 if "TCanv" in cln:
32 h[hname] = obj.Clone()
33 if "TH" not in cln:
34 continue
35 if hname in h:
36 rc = h[hname].Add(obj)
37 if not rc:
38 print("Error when adding histogram ", hname)
39 else:
40 h[hname] = obj.Clone()
41 if h[hname].GetSumw2N() == 0:
42 h[hname].Sumw2()
43 h[hname].SetDirectory(ROOT.gROOT)
44 if cln in {"TH2D", "TH2F"}:
45 for p in ["_projx", "_projy"]:
46 if isinstance(hname, str):
47 projname = hname + p
48 else:
49 projname = str(hname) + p
50 if "x" in p:
51 h[projname] = h[hname].ProjectionX()
52 else:
53 h[projname] = h[hname].ProjectionY()
54 h[projname].SetName(name + p)
55 h[projname].SetDirectory(ROOT.gROOT)
56 return
57
58