# Muon.py # Written by Benjamin T. Jolitz for SCIPP/Quarknet # The original author must be named in all direct # derivative programs and must be named in # this program # copyright 2007 # questions/changes? See http://benjamin.telemuse.net/contact # read and translate lines of data class data : rollover_time = 0 # time ticks of rollover overflow last_tim = 0 # previous time stamp trigger = False # accumulating a sample? trigger_start_time = 0 # starting time for this trigger trigger_accumulator = [] # list of data in sample def __init__(self, file) : for line in file.readlines() : columns = line.strip().split(' ') # print columns # adjust time (in 24ns ticks) by advancing when it exceeds maximum value tim = int(columns[0], 16) if tim < self.last_tim : self.rollover_time += 4294967296 data_timestamp = 24L * (tim + self.rollover_time) # data time stamp in nanoseconds self.last_tim = tim #print data_timestamp if columns[1] == '80' : # trigger self.trigger = True self.trigger_time = data_timestamp if self.trigger : self.trigger_accumulator = self.trigger_accumulator + [columns] if self.trigger and columns[5] == '00' : # last line of data in sample # do something with sample - in this case, print it's data lines print 'lifetime', data_timestamp - self.trigger_start_time # print self.trigger_accumulator # clear trigger and accumulated data self.trigger = False self.trigger_accumulator = [] # locate and open file, read and translate time stamped data from sys import argv, exit if len(argv) <> 2 : print '%s: usage: %s datafile' % (argv[0], argv[0]) exit(1) datafile = open (argv[1], 'r') data(datafile)