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_track_residuals(): d = wcsim.Data(common.filepath()) res = ROOT.TH1F("trackres","Track Residuals",400,800,1200) 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 = track_residuals(hits, tvtx, tdir, T0) for r,dat in zip(resids,hits): q = dat[1] res.Fill(r, q) res.Draw() canvas_print()