from ROOT import TFile, TTree import os, sys job_all = 661 jobs_lines = range(662, 860) #jobs [662,859] gangadir = '/afs/cern.ch/user/l/lcarson/gangadir/workspace/lcarson/LocalXML/' # Location of ganga job logs for job in jobs_lines : path1 = gangadir + str(job) path2 = gangadir + str(job_all) files = sorted(os.listdir(path1)) linename = None events = 0 selected = 0 for filename in files : fullname1 = path1 + '/' + filename + '/output/tuple.root' fullname2 = path2 + '/' + filename + '/output/tuple.root' if not os.path.isfile(fullname1) or not os.path.isfile(fullname2) : continue file1 = TFile(fullname1) tuple_line = file1.Get("tuple/EventTuple") file2 = TFile(fullname2) tuple_all = file2.Get("tuple/EventTuple") # tuple_line.Print() # tuple_all.Print() branches = tuple_line.GetListOfBranches() if linename != None and branches[1].GetName() != linename : print 'Line name is different in the same job! %s != %s' % (linename, branches[1].GetName()) sys.exit(0) if linename == None : linename = branches[1].GetName() print 'Checking line %s (job %d)' % (linename, job) nevents = tuple_all.GetEntries() if tuple_line.GetEntries() != nevents : print 'Number of events does not match: %d (all lines), %d (%s line), subjob %d' % (nevents, tuple_line.GetEntries(), linename, filename) sys.exit(0) list_all = [] for i in tuple_all : list_all += [ eval("i." + linename) ] list_line = [] for i in tuple_line : list_line += [ eval("i." + linename) ] for k in range(0, len(list_all)) : v = list_all[k] if list_line[k] != v : l = "Stripping decision is different: line %s, event %d (job %d, subjob %s): all=%d, single=%d\n" % (linename, k, job, filename, v, list_line[k]) print l file = open('independence.log', 'a') file.write(l) file.close() events += 1 if v == 1: selected += 1 print 'subjob %s checked, %d events, %d selected' % (filename, events, selected) file1.Close() file2.Close()