35 import EventInspectorPocketDAQ
36 from EventInspectorPocketDAQ
import *
38 from ROOT
import TFile
39 from optparse
import Option, OptionValueError, OptionParser
42 parser = OptionParser()
43 parser.add_option(
'-i',
'--inputfile',
44 dest=
'infilename', default=
'',
45 help=
'Input ROOT filename [no default]')
46 parser.add_option(
'-e',
'--experiment',
47 dest=
'eNumber', default=
'',
48 help=
'Experiment number [no default]')
49 parser.add_option(
'-r',
'--run',
50 dest=
'rNumber', default=
'',
51 help=
'Run number [no default]')
52 parser.add_option(
'-n',
'--nEvents',
53 dest=
'nEvents', default=
'',
54 help=
'# of events to process [no default]')
55 parser.add_option(
'-f',
'--filter',
56 dest=
'eventFilter', default=
'',
57 help=
'Event filter (0=evens, 1=odds) [no default]')
58 (options, args) = parser.parse_args()
61 if options.nEvents !=
'':
62 maxCount = int(options.nEvents)
64 print(
"Maximum number of events to analyze is", maxCount,
" - nothing to do.")
68 if (options.eventFilter ==
'0')
or (options.eventFilter ==
'1'):
69 eventFilter = int(options.eventFilter)
74 if options.infilename !=
'':
75 inputName = options.infilename
76 fileList = glob.glob(inputName)
77 if len(fileList) == 0:
78 print(
"No file(s) match {0}".format(inputName))
80 inputName = fileList[0].replace(
"f00000",
"f*")
82 print(
"Missing input filename (required parameter) for experiment <{0}> run <{1}>".format(options.eNumber, options.rNumber))
84 if not options.eNumber.isdecimal():
85 print(
"Experiment number ({0}) is not valid".format(options.eNumber))
87 exp =
'{0:04d}'.format(int(options.eNumber))
88 if not options.rNumber.isdecimal():
89 print(
"Run number ({0}) is not valid".format(options.rNumber))
91 run =
'{0:05d}'.format(int(options.rNumber))
93 infile = TFile(fileList[0])
94 histName =
'bklmHists-e{0}r{1}.root'.format(exp, run)
95 pdfName =
'bklmPlots-e{0}r{1}.pdf'.format(exp, run)
98 print(
'bklm-pocketdaq: exp=' + exp +
' run=' + run +
' input=', options.infilename +
' - processing even-numbered events')
99 elif eventFilter == 1:
100 print(
'bklm-pocketdaq: exp=' + exp +
' run=' + run +
' input=', options.infilename +
' - processing odd-numbered events')
102 print(
'bklm-pocketdaq: exp=' + exp +
' run=' + run +
' input=', options.infilename)
105 inspector.initialize()
112 for row
in infile.Get(
'KLM_raw_hits'):
114 if (maxCount > 0)
and (row.eventNr >= maxCount):
117 if (eventFilter >= 0)
and (row.eventNr % 2) != eventFilter:
119 items = (row.lane, row.channel, row.axis, row.ctime, row.tdc, row.charge)
120 newEventNumber = row.eventNr
121 if newEventNumber == eventNumber:
122 eventHits.append(items)
125 inspector.event(eventHits, tt_ctime, raw_time)
127 eventNumber = newEventNumber
129 print(
'*** Event {0} is broken!'.format(eventNumber))
131 eventHits.append(items)
132 tt_ctime = row.tt_ctime << 3
133 raw_time = (row.raw_time >> 16) << 3
135 inspector.event(eventHits, tt_ctime, raw_time)
137 inspector.terminate()
138 print(
'# of analyzed events = ', count)