9 sTree = lsOfGlobals.FindObject(
'cbmsim')
11 fPos = ROOT.TVector3()
12 fMom = ROOT.TVector3()
15 for index, track
in enumerate(sTree.MCTrack):
16 if abs(track.GetPdgCode()) == MUON
and index
not in checked_muons:
17 muon_to_follow = index
18 checked_muons.add(muon_to_follow)
21 if muon_to_follow == -1:
24 fT = sTree.MCTrack[muon_to_follow]
25 fT.GetStartVertex(fPos)
27 hitlist[fPos.Z()] = [fPos.X(), fPos.Y(), fT.GetP()]
29 for P
in [
"vetoPoint",
"muonPoint",
"EcalPoint",
"HcalPoint",
"preshowerPoint",
30 "strawtubesPoint",
"ShipRpcPoint",
"TargetPoint"]:
31 if not sTree.GetBranch(P):
33 c = eval(
"sTree." + P)
35 if p.GetTrackID() == muon_to_follow:
37 if hasattr(p,
"LastPoint"):
39 hitlist[lp.z()] = [lp.x(), lp.y(), p.LastMom().Mag()]
40 hitlist[2. * p.GetZ() - lp.z()] = [2. * p.GetX() - lp.x(),
41 2. * p.GetY() - lp.y(),
44 hitlist[p.GetZ()] = [p.GetX(), p.GetY(), fMom.Mag()]
60 canvas = ROOT.gROOT.FindObject(
'Root Canvas EnergyLoss')
62 print(
"add particle flower not started!")
64 lsOfGlobals = ROOT.gROOT.GetListOfGlobals()
69 SHiPDisplay = eveGlobal.SHiPDisplay
70 v = ROOT.gEve.GetViewers().FindChild(
'Bar Embedded Viewer side')
72 cam = vw.CurrentCamera()
73 ed = v.GetEditorObject()
74 co = ed.GetCameraOverlay()
77 test = ROOT.TGLVertex3(0., 0., 0.)
78 vtest = cam.ViewportToWorld(test)
80 test = ROOT.TGLVertex3(fr.GetWidth(), 0., 0.)
81 vtest = cam.ViewportToWorld(test)
86 all_muons_hitlist = [
collect_hits(lsOfGlobals, checked_muons)
for _
in range(N_MUONS)]
87 all_muons_hitlist = list(filter(
lambda x: x, all_muons_hitlist))
88 trajectories = [
trajectory_init(lsOfGlobals,
"SHiP MuonTraj_" + str(index))
89 for index
in range(len(all_muons_hitlist))]
91 emin, emax = 1E9, -1E9
92 for trajectory, hitlist
in zip(trajectories, all_muons_hitlist):
93 for index, z
in enumerate(sorted(hitlist.keys())):
95 trajectory.SetPoint(index, z, E)
99 emin, emax = emin * 0.9, emax * 1.1
100 print(
"zmin/max", zmin, zmax)
101 hist = c1.DrawFrame(zmin, emin, zmax, emax)
102 hist.SetYTitle(
'p (GeV/c)')
103 hist.SetXTitle(
'z cm')
104 xaxis = hist.GetXaxis()
105 xaxis.SetNdivisions(ax.GetNdivisions())
106 for trajectory
in trajectories:
109 txt.DrawLatexNDC(0.6, 0.8,
'event index:' + str(SHiPDisplay.n))