41 import EventInspectorPocketDAQ
42 from ROOT
import TFile
44 from optparse
import OptionParser
47 parser = OptionParser()
48 parser.add_option(
'-i',
'--inputfile',
49 dest=
'infilename', default=
'',
50 help=
'Input ROOT filename [no default]')
51 parser.add_option(
'-e',
'--experiment',
52 dest=
'eNumber', default=
'',
53 help=
'Experiment number [no default]')
54 parser.add_option(
'-r',
'--run',
55 dest=
'rNumber', default=
'',
56 help=
'Run number [no default]')
57 parser.add_option(
'-n',
'--nEvents',
58 dest=
'nEvents', default=
'',
59 help=
'# of events to process [no default]')
60 parser.add_option(
'-f',
'--filter',
61 dest=
'eventFilter', default=
'',
62 help=
'Event filter (0=evens, 1=odds) [no default]')
63 (options, args) = parser.parse_args()
66 if options.nEvents !=
'':
67 maxCount = int(options.nEvents)
69 print(
"Maximum number of events to analyze is", maxCount,
" - nothing to do.")
73 if (options.eventFilter ==
'0')
or (options.eventFilter ==
'1'):
74 eventFilter = int(options.eventFilter)
79 if options.infilename !=
'':
80 inputName = options.infilename
81 fileList = glob.glob(inputName)
82 if len(fileList) == 0:
83 print(
"No file(s) match {0}".format(inputName))
85 inputName = fileList[0].replace(
"f00000",
"f*")
87 print(
"Missing input filename (required parameter) for experiment <{0}> run <{1}>".format(options.eNumber, options.rNumber))
89 if not options.eNumber.isdecimal():
90 print(
"Experiment number ({0}) is not valid".format(options.eNumber))
92 exp =
'{0:04d}'.format(int(options.eNumber))
93 if not options.rNumber.isdecimal():
94 print(
"Run number ({0}) is not valid".format(options.rNumber))
96 run =
'{0:05d}'.format(int(options.rNumber))
98 infile = TFile(fileList[0])
99 histName =
'bklmHists-e{0}r{1}.root'.format(exp, run)
100 pdfName =
'bklmPlots-e{0}r{1}.pdf'.format(exp, run)
103 print(
'bklm-pocketdaq: exp=' + exp +
' run=' + run +
' input=', options.infilename +
' - processing even-numbered events')
104 elif eventFilter == 1:
105 print(
'bklm-pocketdaq: exp=' + exp +
' run=' + run +
' input=', options.infilename +
' - processing odd-numbered events')
107 print(
'bklm-pocketdaq: exp=' + exp +
' run=' + run +
' input=', options.infilename)
110 inspector.initialize()
117 for row
in infile.Get(
'KLM_raw_hits'):
119 if (maxCount > 0)
and (row.eventNr >= maxCount):
122 if (eventFilter >= 0)
and (row.eventNr % 2) != eventFilter:
124 items = (row.lane, row.channel, row.axis, row.ctime, row.tdc, row.charge)
125 newEventNumber = row.eventNr
126 if newEventNumber == eventNumber:
127 eventHits.append(items)
130 inspector.event(eventHits, tt_ctime, raw_time)
132 eventNumber = newEventNumber
134 print(
'*** Event {0} is broken!'.format(eventNumber))
136 eventHits.append(items)
137 tt_ctime = row.tt_ctime << 3
138 raw_time = (row.raw_time >> 16) << 3
140 inspector.event(eventHits, tt_ctime, raw_time)
142 inspector.terminate()
143 print(
'# of analyzed events = ', count)