2 from ROOT
import Belle2
7 class nntd(basf2.Module):
9 This class represents a dataset.
14 varnum[
"recoz"] = [0,
r'$Z_{Reco}$',
r'$[cm]$']
15 varnum[
"recotheta"] = [1,
r'$\theta_{Reco}$',
r'$[°]$']
16 varnum[
"recophi"] = [2,
r'$\phi_{Reco}$',
r'$[°]$']
17 varnum[
"recopt"] = [3,
r'$P_{t, Reco}$',
r'$[GeV]$']
18 varnum[
"neuroz"] = [4,
r'$Z_{Neuro}$',
r'$[cm]$']
19 varnum[
"neurotheta"] = [5,
r'$\theta_{Neuro}$',
r'$[°]$']
20 varnum[
"neurophi"] = [6,
r'$\phi_{Neuro}$',
r'$[°]$']
21 varnum[
"neuropt"] = [7,
r'$P_{t, Neuro}$',
r'$[GeV]$']
22 varnum[
"neuroval"] = [8,
r'Validity',
'']
23 varnum[
"neuroqual"] = [9,
r'Quality',
'']
24 varnum[
"neurots"] = [10,
r'TSVector',
'']
25 varnum[
"neuroexp"] = [11,
r'Expert Number',
'']
26 varnum[
"neurodriftth"] = [12,
r'Driftthreshold',
'']
27 varnum[
"neuroquad"] = [13,
r'Quadrant',
'']
28 varnum[
"neurofp"] = [14,
r'Fastestpriority Eventtime',
'clocks']
29 varnum[
"neuroetf"] = [15,
r'ETF Eventtime',
'clocks']
30 varnum[
"twodphi"] = [16,
r'$\phi_{2D}$',
r'$[°]$']
31 varnum[
"twodpt"] = [17,
r'$P_{t, 2D}$',
r'$[GeV]$']
32 varnum[
"twodfot"] = [18,
r'FoundOldTrack',
'']
33 varnum[
"hwneuroz"] = [4,
r'$Z_{HWNeuro}$',
r'$[cm]$']
34 varnum[
"hwneurotheta"] = [5,
r'$\theta_{HWNeuro}$',
r'$[°]$']
35 varnum[
"hwneurophi"] = [6,
r'$\phi_{HWNeuro}$',
r'$[°]$']
36 varnum[
"hwneuropt"] = [7,
r'$P_{t, HWNeuro}$',
r'$[GeV]$']
37 varnum[
"hwNeuroval"] = [8,
r'Validity',
'']
38 varnum[
"hwNeuroqual"] = [9,
r'Quality',
'']
39 varnum[
"hwNeurots"] = [10,
r'TSVector',
'']
40 varnum[
"hwNeuroexp"] = [11,
r'Expert Number',
'']
41 varnum[
"hwNeurodriftth"] = [12,
r'Driftthreshold',
'']
42 varnum[
"hwNeuroquad"] = [13,
r'Quadrant',
'']
43 varnum[
"hwNeurofp"] = [14,
r'Fastestpriority Eventtime',
'clocks']
44 varnum[
"hwNeuroetf"] = [15,
r'ETF Eventtime',
'clocks']
45 nonelist = [
None for i
in range(17)]
61 self.
twodtracksnametwodtracksname =
"CDCTriggerNNInput2DFinderTracks"
62 self.
etfnameetfname =
"CDCTriggerNeuroETFT0"
63 self.
tsnametsname =
"CDCTriggerNNInputSegmentHits"
76 def costotheta(self, x):
77 if isinstance(x, list):
89 return 180. / np.pi * np.arccos(x)
91 def getrecovals(self, fitres):
94 ret.append(fitres.getPosition().Z())
95 ret.append(self.
costothetacostotheta(fitres.getMomentum().CosTheta()))
96 ret.append(fitres.getMomentum().Phi())
97 ret.append(fitres.getMomentum().Pt())
103 def getneurovals(self, neuro):
106 ret.append(neuro.getZ0())
107 ret.append(self.
costothetacostotheta(neuro.getCotTheta() / np.sqrt(1 + neuro.getCotTheta()**2)))
108 ret.append(neuro.getPhi0())
109 ret.append(neuro.getPt())
110 ret.append(neuro.getValidStereoBit())
111 ret.append(neuro.getQualityVector())
113 ret.append(neuro.getExpert())
115 ret.append(neuro.getQuadrant())
117 for ts
in neuro.getRelationsTo(self.
tsnametsname):
118 if ts.priorityTime() < fpt:
119 fpt = ts.priorityTime()
120 if self.
etfetf.hasBinnedEventT0(Belle2.Const.CDC):
121 eft = self.
etfetf.getBinnedEventT0(Belle2.Const.CDC)
131 def gettwodvals(self, twod):
134 ret.append(twod.getPhi0())
135 ret.append(twod.getPt())
151 track = reco.getRelatedFrom(
"Tracks")
153 print(
"no track found for recotrack")
163 except BaseException:
167 except BaseException:
171 except BaseException:
180 if len(neuro.getRelationsFrom(self.
recotracksnamerecotracksname)) > 0:
187 except BaseException:
191 except BaseException:
200 if len(twod.getRelationsFrom(self.
neurotracksnameneurotracksname)) > 0:
213 elif len(event) < 100:
214 for i
in range(100 - len(event)):
226 def save(self, filename, netname):
230 savedict[
"eventlist"] = self.eventlist
231 savedict[
"varnum"] = self.varnum
232 savedict[
"networkname"] = netname
233 savedict[
"version"] = nntd.version
234 f = open(filename,
'wb')
235 pickle.dump(savedict, f)
237 print(
'file ' + filename +
' has been saved. ')
239 def loadmore(self, filenames):
242 savedict = pickle.load(f)
244 if self.version != savedict[
"version"]:
245 print(
"Error! loaded file was made with different version of nntd! exiting ... ")
247 self.networkname = savedict[
"networkname"]
248 self.eventlist += savedict[
"eventlist"]
249 self.varnum = savedict[
"varnum"]
250 print(
"Loaded file: " + x)
251 self.makearray(self.eventlist)
253 def load(self, filename):
255 f = open(filename,
'rb')
256 savedict = pickle.load(f)
258 if self.version != savedict[
"version"]:
259 print(
"Error! loaded file was made with different version of nntd! exiting ... ")
261 self.eventlist = savedict[
"eventlist"]
262 self.varnum = savedict[
"varnum"]
263 self.networkname = savedict[
"networkname"]
265 self.makearray(self.eventlist)
267 def makearray(self, evlist):
269 self.data = np.array(evlist)
Provides a type-safe way to pass members of the chargedStableSet set.
a (simplified) python wrapper for StoreArray.
a (simplified) python wrapper for StoreObjPtr.
def gettwodvals(self, twod)
def getrecovals(self, fitres)
def getneurovals(self, neuro)