| 1 | def compareEvents(detId, left, right): |
|---|
| 2 | lftTofs = left.getTofs() |
|---|
| 3 | lftPuls = left.getPulseTimes() |
|---|
| 4 | if len(lftTofs) != len(lftPuls): |
|---|
| 5 | raise RuntimeError("Something really wrong with %d left: %d != %d" % (detId, len(lftTofs), len(lftPuls))) |
|---|
| 6 | |
|---|
| 7 | rgtTofs = right.getTofs() |
|---|
| 8 | rgtPuls = right.getPulseTimes() |
|---|
| 9 | if len(rgtTofs) != len(rgtPuls): |
|---|
| 10 | raise RuntimeError("Something really wrong with %d right: %d != %d" % (detId, len(rgtTofs), len(rgtPuls))) |
|---|
| 11 | |
|---|
| 12 | if len(lftTofs) != len(rgtTofs): |
|---|
| 13 | print "detId %d has different length events %d != %d" % (len(lftTofs), len(rgtTofs)) |
|---|
| 14 | return |
|---|
| 15 | |
|---|
| 16 | results = [] |
|---|
| 17 | |
|---|
| 18 | total_num_diff = 0 |
|---|
| 19 | for i in range(len(lftTofs)): |
|---|
| 20 | is_diff = False |
|---|
| 21 | if abs(lftTofs[i]-rgtTofs[i]) >= .1: # tolerance of 100ns |
|---|
| 22 | is_diff = True |
|---|
| 23 | results.append("tof[%3d] %f != %f (diff=%f)" % (i, lftTofs[i], rgtTofs[i], \ |
|---|
| 24 | rgtTofs[i]-lftTofs[i])) |
|---|
| 25 | if lftPuls[i] != rgtPuls[i]: |
|---|
| 26 | diff = rgtPuls[i]-lftPuls[i] |
|---|
| 27 | if abs(diff.total_nanoseconds()) > 1: |
|---|
| 28 | is_diff = True |
|---|
| 29 | diff = diff.total_nanoseconds()/1000000000. # convert to seconds |
|---|
| 30 | minutes = int(diff/60.) |
|---|
| 31 | seconds = abs(diff - minutes*60.) |
|---|
| 32 | diff = [minutes, seconds] |
|---|
| 33 | results.append("pulse[%3d] %s != %s (diff=%dm%ds)" % (i, str(lftPuls[i]), str(rgtPuls[i]), \ |
|---|
| 34 | diff[0], diff[1])) |
|---|
| 35 | if is_diff: |
|---|
| 36 | total_num_diff += 1 |
|---|
| 37 | |
|---|
| 38 | if total_num_diff>0: |
|---|
| 39 | print "****", detId, "numEvents:", len(lftTofs), "totalDiff:", total_num_diff |
|---|
| 40 | for result in results: |
|---|
| 41 | print result |
|---|
| 42 | |
|---|
| 43 | return total_num_diff |
|---|
| 44 | |
|---|
| 45 | |
|---|
| 46 | files = ("CNCS_7860_event.nxs","CNCS_7860_neutron_event.dat") |
|---|
| 47 | files = ("CNCS_67147_event.nxs","/SNS/CNCS/IPTS-5383/0/67147/preNeXus/CNCS_67147_neutron_event.dat") |
|---|
| 48 | |
|---|
| 49 | nexus = LoadEventNexus(files[0], BankName="bank3") |
|---|
| 50 | prenexus = LoadEventPreNexus(files[1], SpectrumList="2048-3071") |
|---|
| 51 | #SortEvents(nexus, "Pulse Time + TOF") |
|---|
| 52 | #SortEvents(prenexus, "Pulse Time + TOF") |
|---|
| 53 | numNxsSpec = nexus.getNumberHistograms() |
|---|
| 54 | numPreSpec = prenexus.getNumberHistograms() |
|---|
| 55 | total_diff = 0 |
|---|
| 56 | for i in range(numPreSpec): |
|---|
| 57 | preEvents = prenexus.getEventList(i) |
|---|
| 58 | detId = prenexus.getSpectrum(i).getDetectorIDs()[0] |
|---|
| 59 | nxsEvents = None |
|---|
| 60 | for j in range(i, numNxsSpec): |
|---|
| 61 | if nexus.getSpectrum(j).hasDetectorID(detId): |
|---|
| 62 | nxsEvents = nexus.getEventList(j) |
|---|
| 63 | break |
|---|
| 64 | |
|---|
| 65 | total_diff += compareEvents(detId, preEvents, nxsEvents) |
|---|
| 66 | if total_diff == nexus.getNumberEvents(): |
|---|
| 67 | print "all events different out of %d" % nexus.getNumberEvents() |
|---|
| 68 | else: |
|---|
| 69 | print "%d events different out of %d" % (total_diff, nexus.getNumberEvents()) |
|---|