def timecut_charge_track(filename): d = wcsim.Data(filename) name = filename[6:-5] # hack alert: assumes "wcsim-NAME.root" title = "%s Charge-Track Distr (timing cut)" % name ctd = ROOT.TH1F("ctd",title,1000,-10000,10000) ROOT.gStyle.SetOptStat(111111) hits = d.hits(0) track = d.tracks(0)[0] tvtx = [track.GetStart(i) for i in range(3)] tdir = [track.GetDir(i) for i in range(3)] T0 = track.GetTime() #resids = point_residuals(hits, tvtx, T0) resids = track_residuals(hits, tvtx, tdir, T0) intime_hits = [] for r,hit in zip(resids,hits): if r < 800 or r > 820: continue intime_hits.append(hit) charge_track_distr(lambda x,q: ctd.Fill(x,q), intime_hits, tvtx, tdir) assert ctd.GetEntries() <= len(hits), '%d > %d' % (ctd.GetEntries(), len(hits)) ctd.Draw() canvas_print()
def test_charge_track_distr(): d = wcsim.Data(common.filepath()) ctd = ROOT.TH1F("ctd","Charge-Track Distr",1000,-10000,10000) ROOT.gStyle.SetOptStat(111111) hits = d.hits(0) track = d.tracks(0)[0] tvtx = [track.GetStart(i) for i in range(3)] tdir = [track.GetDir(i) for i in range(3)] print 'vertex:', tvtx print 'track: ', tdir charge_track_distr(lambda x,q: ctd.Fill(x,q), hits, tvtx, tdir) assert ctd.GetEntries() <= len(hits), '%d > %d' % (ctd.GetEntries(), len(hits)) ctd.Draw() canvas_print()