58def execute():
59 N_MUONS = 2
60 canvas = ROOT.gROOT.FindObject('Root Canvas EnergyLoss')
61 if not canvas:
62 print("add particle flower not started!")
63 return
64 lsOfGlobals = ROOT.gROOT.GetListOfGlobals()
65 c1 = canvas.cd(1)
66 c1.Clear()
67
68
69 SHiPDisplay = eveGlobal.SHiPDisplay
70 v = ROOT.gEve.GetViewers().FindChild('Bar Embedded Viewer side')
71 vw = v.GetGLViewer()
72 cam = vw.CurrentCamera()
73 ed = v.GetEditorObject()
74 co = ed.GetCameraOverlay()
75 ax = co.GetAttAxis()
76 fr = vw.GetFrame()
77 test = ROOT.TGLVertex3(0., 0., 0.)
78 vtest = cam.ViewportToWorld(test)
79 zmin = vtest.Z()
80 test = ROOT.TGLVertex3(fr.GetWidth(), 0., 0.)
81 vtest = cam.ViewportToWorld(test)
82 zmax = vtest.Z()
83
84
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))]
90
91 emin, emax = 1E9, -1E9
92 for trajectory, hitlist in zip(trajectories, all_muons_hitlist):
93 for index, z in enumerate(sorted(hitlist.keys())):
94 E = hitlist[z][2]
95 trajectory.SetPoint(index, z, E)
96 emax = max(emax, E)
97 emin = min(emin, E)
98
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:
107 trajectory.Draw()
108 txt = ROOT.TLatex()
109 txt.DrawLatexNDC(0.6, 0.8, 'event index:' + str(SHiPDisplay.n))
110 c1.Update()
111
112
set(INCLUDE_DIRECTORIES ${SYSTEM_INCLUDE_DIRECTORIES} ${VMC_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/shipdata ${CMAKE_SOURCE_DIR}/shipLHC ${CMAKE_SOURCE_DIR}/analysis/cuts ${CMAKE_SOURCE_DIR}/analysis/tools ${FMT_INCLUDE_DIR}) include_directories($