7 from generators
import add_evtgen_generator
8 from modularAnalysis
import setupEventInfo
9 from simulation
import add_simulation
12 from ROOT
import Belle2, TH1F, TH2F, TFile
13 from ROOT.Belle2
import SVDNoiseCalibrations
27 fileIN =
"given by the user"
28 fileOUT =
"given by the user"
29 cluster3 =
"SVDClustersZS3"
30 reco3 =
"SVDRecoDigitsZS3"
31 shaper3 =
"SVDShaperDigitsZS3"
32 cluster5 =
"SVDClustersZS5"
33 reco5 =
"SVDRecoDigitsZS5"
34 shaper5 =
"SVDShaperDigitsZS5"
36 if(len(sys.argv) == 1 + 1):
41 '''class to debug clusterizer'''
48 self.
fb2u = TH2F(
"nCl_L4L5S2U",
"4.5.2 U ZS3 vs ZS5 clusters", 100, 0, 100, 100, 0, 100)
63 if(str(d.getSensorID()) ==
"4.5.2"):
68 if(str(d.getSensorID()) ==
"4.5.2"):
72 self.
fb2u.Fill(nCl3, nCl5)
78 print(
"different number of clusters in event " + str(evt.getEvent()) +
79 "! ZS3 = " + str(nCl3) +
", ZS5 = " + str(nCl5) +
" ")
93 for d3
in clustersZS3:
94 if(str(d3.getSensorID()) ==
"4.5.2"):
97 for d5
in clustersZS5:
98 if(str(d5.getSensorID()) ==
"4.5.2"):
100 if(d5.getSeedCharge() == d3.getSeedCharge()):
103 print(
" ONLY ZS3: seed charge = " + str(d3.getSeedCharge()) +
", size = " + str(d3.getSize()) +
104 ", position = " + str(d3.getPosition()) +
", charge = " + str(d3.getCharge()) +
" ")
105 reco = d3.getRelationsTo(reco3)
108 charge = r.getCharge()
109 noise = noisePayload.getNoiseInElectrons(r.getSensorID(),
True, r.getCellID())
110 print(
" SNR = " + str(charge / noise) +
", charge = " + str(charge) +
", noise = " + str(noise))
115 f = TFile(fileOUT,
"RECREATE")
116 self.
fb2u.GetXaxis().SetTitle(
"# cl ZS3")
117 self.
fb2u.GetYaxis().SetTitle(
"# cl ZS5")
134 setupEventInfo(100, main)
135 add_evtgen_generator(main,
'charged')
136 add_simulation(main, components=[
'SVD'])
137 set_module_parameters(main, type=
"Geometry", useDB=
False, components=[
"SVD"])
146 zs3 = register_module(
'SVDZeroSuppressionEmulator')
147 zs3.set_name(
"SVDZeroSuppressionEmulator_ZS3")
148 zs3.param(
'SNthreshold', 3)
149 zs3.param(
'ShaperDigits',
'SVDShaperDigits')
150 zs3.param(
'ShaperDigitsIN', shaper3)
151 zs3.param(
'FADCmode',
True)
155 fitterZS3 = register_module(
'SVDCoGTimeEstimator')
156 fitterZS3.set_name(
'SVDCoGTimeEstimatorZS3')
157 fitterZS3.param(
'RecoDigits', reco3)
158 fitterZS3.param(
'ShaperDigits', shaper3)
159 main.add_module(fitterZS3)
161 clusterizerZS3 = register_module(
'SVDSimpleClusterizer')
162 clusterizerZS3.set_name(
'SVDSimpleClusterizerZS3')
163 clusterizerZS3.param(
'RecoDigits', reco3)
164 clusterizerZS3.param(
'Clusters', cluster3)
165 main.add_module(clusterizerZS3)
168 zs5 = register_module(
'SVDZeroSuppressionEmulator')
169 zs5.set_name(
"SVDZeroSuppressionEmulator_ZS5")
170 zs5.param(
'SNthreshold', 5)
171 zs5.param(
'ShaperDigits',
'SVDShaperDigits')
172 zs5.param(
'ShaperDigitsIN', shaper5)
173 zs5.param(
'FADCmode',
True)
177 fitterZS5 = register_module(
'SVDCoGTimeEstimator')
178 fitterZS5.set_name(
'SVDCoGTimeEstimatorZS5')
179 fitterZS5.param(
'RecoDigits', reco5)
180 fitterZS5.param(
'ShaperDigits', shaper5)
181 main.add_module(fitterZS5)
183 clusterizerZS5 = register_module(
'SVDSimpleClusterizer')
184 clusterizerZS5.set_name(
'SVDSimpleClusterizerZS5')
185 clusterizerZS5.param(
'RecoDigits', reco5)
186 clusterizerZS5.param(
'Clusters', cluster5)
187 main.add_module(clusterizerZS5)