Belle II Software  release-05-01-25
trggdlDQM.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 # -----------------------------------------------------------------------------------
4 #
5 # Example of GDL trigger DQM Module
6 #
7 # usage : %> basf2 trggdlDQM.py [input sroot file name]
8 #
9 # -----------------------------------------------------------------------------------
10 
11 from basf2 import *
12 
13 import sys # get argv
14 import re
15 import os.path
16 argvs = sys.argv # get arg
17 argc = len(argvs) # of arg
18 
19 set_log_level(LogLevel.DEBUG)
20 
21 use_central_database("TRGGDL_201811")
22 
23 main = create_path()
24 
25 if argc == 2 and argvs[1][-6:] == ".sroot":
26  f_in_root = argvs[1]
27  input = register_module('SeqRootInput')
28  matchobj = re.search("([^\/]+)\.sroot", f_in_root)
29  basename = re.sub('\.sroot$', '', matchobj.group())
30  input.param('inputFileName', f_in_root)
31 elif argc == 2 and argvs[1][-5:] == ".root":
32  f_in_root = argvs[1]
33  input = register_module('RootInput')
34  matchobj = re.search("([^\/]+)\.root", f_in_root)
35  basename = re.sub('\.root$', '', matchobj.group())
36  input.param('inputFileName', f_in_root)
37 elif argc == 1:
38  input = register_module('RootInput')
39  input.param('inputFileName', '/home/belle/nkzw/e3.4S/r034*/all/raw/sub00/raw.physics.hlt_hadron.0003.*.root')
40  basename = "e3.4S.r034"
41 else:
42  sys.exit("trggdlDQM.py> # of arg is strange. Exit.")
43 
44 main.add_module(input)
45 histo = register_module('HistoManager')
46 histo.param("histoFileName", "dqm.%s.root" % basename)
47 
48 # Unpacker
49 trggdlUnpacker = register_module("TRGGDLUnpacker")
50 main.add_module(trggdlUnpacker)
51 main.add_module(histo)
52 
53 # DQM
54 # trggdldqm = register_module('TRGGDLDQM', logLevel=LogLevel.DEBUG, debugLevel=20)
55 trggdldqm = register_module('TRGGDLDQM')
56 # event by event bit-vs-clock TH2I hist for itd, ftdl, psnm in ROOT file.
57 trggdldqm.param('eventByEventTimingHistRecord', False)
58 # bit name on BinLabel for hGDL_itd,ftd,psn.
59 trggdldqm.param('bitNameOnBinLabel', True)
60 # generate postscript file that includes rising and falling edge distribution
61 trggdldqm.param('generatePostscript', False)
62 # postscript file name
63 psname = "dqm.%s.ps" % basename
64 trggdldqm.param('postScriptName', psname)
65 
66 # dump vcd file
67 dumpVcdFileTrue = False
68 trggdldqm.param('dumpVcdFile', dumpVcdFileTrue)
69 if dumpVcdFileTrue:
70  if not os.path.isdir('vcd'):
71  os.mkdir('vcd')
72  trggdldqm.param('bitConditionToDumpVcd', 'HIE ECL_BHA')
73  # '+' means logical OR. '!' is logical NOT.
74  # Bit names is delimited by space. No space after '!'.
75  # Parenthesis, A (B+!C) not allowed. Must be expanded to 'A B+A !C'.
76  # If one of characters is capital, the bit is regarded as psnm bit,
77  # otherwise ftdl bit: 'hie' is ftdl hie bit. 'hIE' is psnm hie bit.
78  trggdldqm.param('vcdEventStart', 0)
79  trggdldqm.param('vcdNumberOfEvents', 10)
80 
81 main.add_module(trggdldqm)
82 
83 progress = register_module('Progress')
84 main.add_module(progress)
85 
86 process(main)
87 
88 print(statistics)