6 from ROOT
import Belle2
9 def add_svd_reconstruction(path, isROIsimulation=False, useNN=False, useCoG=True, applyMasking=False):
12 print(
"WARNING! you can't select both NN and CoG for SVD reconstruction. Using the default algorithm (TB-equivalent)")
13 add_svd_reconstruction_tb(path, isROIsimulation)
15 elif(
not useNN
and not useCoG):
16 add_svd_reconstruction_tb(path, isROIsimulation)
19 add_svd_reconstruction_nn(path, isROIsimulation)
22 add_svd_reconstruction_CoG(path, isROIsimulation, applyMasking)
25 def add_svd_reconstruction_tb(path, isROIsimulation=False):
28 splitterName =
'__ROISVDDigitSplitter'
29 sorterName =
'__ROISVDDigitSorter'
30 clusterizerName =
'__ROISVDClusterizer'
31 clusterName =
'__ROIsvdClusters'
33 splitterName =
'SVDDigitSplitter'
34 sorterName =
'SVDDigitSorter'
35 clusterizerName =
'SVDClusterizer'
38 if splitterName
not in [e.name()
for e
in path.modules()]:
39 splitter = register_module(
'SVDDigitSplitter')
40 splitter.set_name(splitterName)
41 path.add_module(splitter)
43 if sorterName
not in [e.name()
for e
in path.modules()]:
44 sorter = register_module(
'SVDDigitSorter')
45 sorter.set_name(sorterName)
46 path.add_module(sorter)
48 if clusterizerName
not in [e.name()
for e
in path.modules()]:
49 clusterizer = register_module(
'SVDClusterizer')
50 clusterizer.set_name(clusterizerName)
51 clusterizer.param(
'Clusters', clusterName)
52 path.add_module(clusterizer)
55 def add_svd_reconstruction_nn(path, isROIsimulation=False, direct=False):
59 clusterizerName =
'__ROISVDClusterizerDirect'
60 clusterName =
'__ROIsvdClusters'
62 clusterizerName =
'SVDClusterizerDirect'
65 if clusterizerName
not in [e.name()
for e
in path.modules()]:
66 clusterizer = register_module(
'SVDClusterizerDirect')
67 clusterizer.set_name(clusterizerName)
68 clusterizer.param(
'Clusters', clusterName)
69 path.add_module(clusterizer)
72 fitterName =
'__ROISVDNNShapeReconstructor'
73 clusterizerName =
'__ROISVDNNClusterizer'
74 clusterName =
'__ROIsvdClusters'
76 fitterName =
'SVDNNShapeReconstructor'
77 clusterizerName =
'SVDNNClusterizer'
80 if fitterName
not in [e.name()
for e
in path.modules()]:
81 fitter = register_module(
'SVDNNShapeReconstructor')
82 fitter.set_name(fitterName)
83 path.add_module(fitter)
85 if clusterizerName
not in [e.name()
for e
in path.modules()]:
86 clusterizer = register_module(
'SVDNNClusterizer')
87 clusterizer.set_name(clusterizerName)
88 clusterizer.param(
'Clusters', clusterName)
89 path.add_module(clusterizer)
92 def add_svd_reconstruction_CoG(path, isROIsimulation=False, applyMasking=False):
95 fitterName =
'__ROISVDCoGTimeEstimator'
96 clusterizerName =
'__ROISVDSimpleClusterizer'
97 dataFormatName =
'__ROISVDDataFormat'
98 clusterName =
'__ROIsvdClusters'
99 recoDigitsName =
'__ROIsvdRecoDigits'
100 shaperDigitsName =
""
101 missingAPVsClusterCreatorName =
'__ROISVDMissingAPVsClusterCreator'
103 fitterName =
'SVDCoGTimeEstimator'
104 clusterizerName =
'SVDSimpleClusterizer'
105 dataFormatName =
'SVDDataFormat'
108 shaperDigitsName =
""
109 missingAPVsClusterCreatorName =
'SVDMissingAPVsClusterCreator'
114 shaperDigitsName =
'__ROISVDShaperDigitsUnmasked'
115 maskingName =
'__ROISVDStripMasking'
117 shaperDigitsName =
'SVDShaperDigitsUnmasked'
118 maskingName =
'SVDStripMasking'
120 if maskingName
not in [e.name()
for e
in path.modules()]:
121 masking = register_module(
'SVDStripMasking')
122 masking.set_name(maskingName)
123 masking.param(
'ShaperDigitsUnmasked', shaperDigitsName)
124 path.add_module(masking)
126 if dataFormatName
not in [e.name()
for e
in path.modules()]:
127 dataFormat = register_module(
'SVDDataFormatCheck')
128 dataFormat.param(
'ShaperDigits', shaperDigitsName)
130 if fitterName
not in [e.name()
for e
in path.modules()]:
131 fitter = register_module(
'SVDCoGTimeEstimator')
132 fitter.set_name(fitterName)
133 fitter.param(
'RecoDigits', recoDigitsName)
134 path.add_module(fitter)
136 if clusterizerName
not in [e.name()
for e
in path.modules()]:
137 clusterizer = register_module(
'SVDSimpleClusterizer')
138 clusterizer.set_name(clusterizerName)
139 clusterizer.param(
'RecoDigits', recoDigitsName)
140 clusterizer.param(
'Clusters', clusterName)
141 clusterizer.param(
'useDB',
True)
142 path.add_module(clusterizer)
144 if missingAPVsClusterCreatorName
not in [e.name()
for e
in path.modules()]:
145 missingAPVCreator = register_module(
'SVDMissingAPVsClusterCreator')
146 missingAPVCreator.set_name(missingAPVsClusterCreatorName)
147 path.add_module(missingAPVCreator)
150 add_svd_SPcreation(path, isROIsimulation)
153 def add_svd_reconstruction_nn(path, isROIsimulation=False, direct=False):
157 clusterizerName =
'__ROISVDClusterizerDirect'
158 clusterName =
'__ROIsvdClusters'
160 clusterizerName =
'SVDClusterizerDirect'
163 if clusterizerName
not in [e.name()
for e
in path.modules()]:
164 clusterizer = register_module(
'SVDClusterizerDirect')
165 clusterizer.set_name(clusterizerName)
166 clusterizer.param(
'Clusters', clusterName)
167 path.add_module(clusterizer)
170 fitterName =
'__ROISVDNNShapeReconstructor'
171 clusterizerName =
'__ROISVDNNClusterizer'
172 clusterName =
'__ROIsvdClusters'
174 fitterName =
'SVDNNShapeReconstructor'
175 clusterizerName =
'SVDNNClusterizer'
178 if fitterName
not in [e.name()
for e
in path.modules()]:
179 fitter = register_module(
'SVDNNShapeReconstructor')
180 fitter.set_name(fitterName)
181 path.add_module(fitter)
183 if clusterizerName
not in [e.name()
for e
in path.modules()]:
184 clusterizer = register_module(
'SVDNNClusterizer')
185 clusterizer.set_name(clusterizerName)
186 clusterizer.param(
'Clusters', clusterName)
187 path.add_module(clusterizer)
190 def add_svd_simulation(path):
192 svdevtinfoset = register_module(
"SVDEventInfoSetter")
193 path.add_module(svdevtinfoset)
194 digitizer = register_module(
'SVDDigitizer')
195 path.add_module(digitizer)
198 def add_svd_unpacker(path):
200 unpacker = register_module(
'SVDUnpacker')
201 path.add_module(unpacker)
204 def add_svd_packer(path):
206 packer = register_module(
'SVDPacker')
207 path.add_module(packer)
210 def add_svd_SPcreation(path, isROIsimulation=False):
213 svdSPCreatorName =
'__ROISVDSpacePointCreator'
214 svd_clusters =
'__ROIsvdClusters'
215 nameSPs =
'SVDSpacePoints__ROI'
217 svdSPCreatorName =
'SVDSpacePointCreator'
219 nameSPs =
'SVDSpacePoints'
221 if svdSPCreatorName
not in [e.name()
for e
in path.modules()]:
222 spCreatorSVD = register_module(
'SVDSpacePointCreator')
223 spCreatorSVD.set_name(svdSPCreatorName)
224 spCreatorSVD.param(
'NameOfInstance',
'SVDSpacePoints')
225 spCreatorSVD.param(
'SpacePoints', nameSPs)
226 spCreatorSVD.param(
'SVDClusters', svd_clusters)
227 path.add_module(spCreatorSVD)