The Gaudi Framework  master (37c0b60a)
custom_axis.py
Go to the documentation of this file.
1 
11 import os
12 from traceback import format_exc
13 
14 FILENAME = f"{__name__}.root"
15 FILENAMEJSON = f"{__name__}.json"
16 
17 
18 def config():
19  import GaudiConfig2.Configurables as C
20  import GaudiConfig2.Configurables.Gaudi.Tests.Histograms.CustomAxis as T
21 
22  algs = []
23  tools = []
24  svcs = []
25 
26  Alg = T.EnumAxisAlg
27  algs.append(Alg("Alg"))
28 
29  svcs.append(C.Gaudi.Histograming.Sink.Root(FileName=FILENAME))
30  svcs.append(C.Gaudi.Monitoring.JSONSink(FileName=FILENAMEJSON))
31  svcs.append(C.Gaudi.Monitoring.MessageSvcSink())
32 
33  yield from algs
34  yield from tools
35  yield from svcs
36 
37  yield C.ApplicationMgr(
38  EvtMax=5,
39  EvtSel="NONE",
40  TopAlg=algs,
41  ExtSvc=svcs,
42  )
43 
44  # make sure the histogram file is not already there
45  if os.path.exists(FILENAME):
46  os.remove(FILENAME)
47 
48 
49 def check(causes, result):
50  result["root_output_file"] = FILENAME
51 
52  if not os.path.exists(FILENAME):
53  causes.append("missing histogram file")
54  return False
55 
56  try:
57  import ROOT
58 
59  f = ROOT.TFile.Open(FILENAME)
60 
61  h = f.Get("Alg/Categories")
62  if not h:
63  k = f.GetKey("Alg/Categories")
64  if k:
65  h = k.ReadObj()
66 
67  assert h, "missing histogram"
68 
69  if h.GetNbinsX() != 4:
70  causes.append("number of bins")
71  result["error"] = f"expected 4 bins, got {h.GetNbinsX()}"
72  return False
73 
74  axis = h.GetXaxis()
75  labels = list(axis.GetLabels())
76  expected = ["Simple", "Complex", "Bad", "Wrong"]
77  if labels != expected:
78  causes.append("wrong axis labels")
79  result["expected_labels"] = ", ".join(repr(l) for l in expected)
80  result["found_labels"] = ", ".join(repr(l) for l in labels)
81  return False
82 
83  except AssertionError as err:
84  causes.append(str(err))
85  return False
86 
87  except Exception:
88  causes.append("failure reading histogram file")
89  result["python_exception"] = result.Quote(format_exc())
90  return False
91 
92  return True
custom_axis.check
def check(causes, result)
Definition: custom_axis.py:49
custom_axis.config
def config()
Definition: custom_axis.py:18
GaudiConfig2.Configurables
Definition: Configurables.py:1