14 <input>SVDValidationTTreeTrueHit.root</input>
15 <input>SVDValidationTTreeCluster.root</input>
16 <output>SVDClusterPerformance.root</output>
18 Validation plots related to cluster performance.
21 SVD Software Group, svd-software@belle2.org
28 import plotUtils
as pu
30 inputTH = R.TFile.Open(
"../SVDValidationTTreeTrueHit.root")
31 inputC = R.TFile.Open(
"../SVDValidationTTreeCluster.root")
33 treeTH = inputTH.Get(
"tree")
34 treeC = inputC.Get(
"tree")
36 histsCP = R.TFile.Open(
"SVDClusterPerformance.root",
"recreate")
45 x_label=
'Cluster time (ns)',
49 expr=
'cluster_clsTime',
51 descr=
'Reconstructed time of the cluster for all clusters related to at least one TrueHit.\
52 Distribution for signal clusters.',
53 check=
'Distribution peak around 0.',
58 name=
'PositionResidual',
59 title=
'Cluster position residual',
63 x_label=
'Cluster position residual (cm)',
67 expr=
'cluster_position - truehit_position',
69 descr=
'Definition: (reconstructed position of the cluster) - (position of the best TrueHit).\
70 Distribution for signal clusters.',
71 check=
'Distribution peak around 0.',
76 name=
'PositionResidual_size1',
77 title=
'Cluster position residual for one strip',
81 x_label=
'Cluster position residual (cm)',
85 expr=
'cluster_position - truehit_position',
86 cut=pu.cut_size1 + pu.cut_matched,
87 descr=
'Definition: (reconstructed position of the cluster) - (position of the best TrueHit).\
88 Distribution for signal clusters.',
89 check=
'Distribution peak around 0.',
94 name=
'PositionResidual_size2',
95 title=
'Cluster position residual for two strips',
99 x_label=
'Cluster position residual (cm)',
103 expr=
'cluster_position - truehit_position',
104 cut=pu.cut_size2 + pu.cut_matched,
105 descr=
'Definition: (reconstructed position of the cluster) - (position of the best TrueHit).\
106 Distribution for signal clusters.',
107 check=
'Distribution peak around 0.',
112 name=
'PositionResidual_size3plus',
113 title=
'Cluster position residual for 3 or more strips',
117 x_label=
'Cluster position residual (cm)',
121 expr=
'cluster_position - truehit_position',
122 cut=pu.cut_size3plus + pu.cut_matched,
123 descr=
'Definition: (reconstructed position of the cluster) - (position of the best TrueHit).\
124 Distribution for signal clusters.',
125 check=
'Distribution peak around 0.',
131 title=
'Cluster position pull',
135 x_label=
'Cluster position pull',
139 expr=
'(cluster_position - truehit_position)/cluster_positionSigma',
141 descr=
'Definition: (cluster_position - truehit_position)/cluster_positionSigma.\
142 Distribution for signal clusters.',
143 check=
'Distribution peaks around 0 with RMS less than 2.0.',
148 name=
'PositionPull_size1',
149 title=
'Cluster position pull for one strip',
153 x_label=
'Cluster position pull',
157 expr=
'(cluster_position - truehit_position)/cluster_positionSigma',
158 cut=pu.cut_size1 + pu.cut_matched,
159 descr=
'Definition: (cluster_position - truehit_position)/cluster_positionSigma.\
160 Distribution for signal clusters.',
161 check=
'Distribution peaks around 0 with RMS less than 2.0.',
166 name=
'PositionPull_size2',
167 title=
'Cluster position pull for two strip',
171 x_label=
'Cluster position pull',
175 expr=
'(cluster_position - truehit_position)/cluster_positionSigma',
176 cut=pu.cut_size2 + pu.cut_matched,
177 descr=
'Definition: (cluster_position - truehit_position)/cluster_positionSigma.\
178 Distribution for signal clusters.',
179 check=
'Distribution peaks around 0 with RMS less than 2.0.',
184 name=
'PositionPull_size3plus',
185 title=
'Cluster position pull for 3 or more strips',
189 x_label=
'Cluster position pull',
193 expr=
'(cluster_position - truehit_position)/cluster_positionSigma',
194 cut=pu.cut_size3plus + pu.cut_matched,
195 descr=
'Definition: (cluster_position - truehit_position)/cluster_positionSigma.\
196 Distribution for signal clusters.',
197 check=
'Distribution peaks around 0 with RMS less than 2.0.',
202 name=
'TimeResolution',
203 title=
'Cluster time resolution',
207 x_label=
'Cluster time resolution (ns)',
211 expr=
'cluster_clsTime - truehit_time',
213 descr=
'Definition: (reconstructed time of the cluster) - (time of the best TrueHit)\
214 for all signal clusters.',
215 check=
'Distribution peak around 0.',
220 name=
'ClusterCharge',
221 title=
'Cluster charge',
225 x_label=
'Cluster charge (# of electrons)',
229 expr=
'cluster_charge',
231 descr=
'Reconstructed charge of the cluster related to at least one TrueHit.\
232 Distribution for signal clusters.',
233 check=
'Distribution peaks around 20-40 ke.',
238 title=
'Cluster Signal/Noise ratio',
242 x_label=
'cluster SNR',
248 descr=
'Signal/Noise ratio of the clusters related to at least one TrueHit.',
249 check=
'Distribution peaks around 20.',
253 name=
'InterstripPosition',
254 title=
'Interstrip position',
258 x_label=
'Interstrip Position',
262 expr=
'cluster_interstripPosition',
264 descr=
'Definition: (cluster_position % strip_pitch / strip_pitch).\
265 Distribution for signal clusters.',
271 title=
'Cluster size',
275 x_label=
'Cluster size (# of strips in cluster)',
281 descr=
'Number of strips in the Cluster related to at least one TrueHit.',
282 check=
'Distribution peaks in range 2-3.',
286 name=
'ClusterizationEfficiency_U',
287 title=
'Efficiency of clusterization for U side',
288 x_label=
'SVD regions',
289 y_label=
'Efficiency',
290 granules=pu.granulesLayersTypes,
294 cut=pu.cut_notV + pu.cut_reco,
295 descr=
'Definition: (number of clusters related to at least one TrueHit) / (number of best TrueHits)',
296 check=
'Efficiency should be close to 1 in all bins. Note that only one TrueHit (the best one, \
297 i.e. the one with the largest energy deposit) is counted\
298 in case one cluster is related to more than one TrueHit (e.g. in case of delta rays).',
303 name=
'ClusterizationEfficiency_V',
304 title=
'Efficiency of clusterization for V side',
305 x_label=
'SVD regions',
306 y_label=
'Efficiency',
307 granules=pu.granulesLayersTypes,
311 cut=pu.cut_notU + pu.cut_reco,
312 descr=
'Definition: (number of clusters related to at least one TrueHit) / (number of best TrueHits)',
313 check=
'Efficiency should be close to 1 in all bins. Note that only one TrueHit (the best one, \
314 i.e. the one with the largest energy deposit) is counted\
315 in case one cluster is related to more than one TrueHit (e.g. in case of delta rays).',
320 name=
'ClusterizationPurity_U',
321 title=
'Fraction of U-side signal clusters (purity)',
322 x_label=
'SVD regions',
324 granules=pu.granulesLayersTypes,
328 cut=pu.cut_U + pu.cut_matched,
329 descr=
'(number of clusters related to at least one TrueHit) / (number of clusters).\
330 Evaluates the fraction of signal cluster over the total number of signal and background clusters.',
331 check=
'Purity should be above 0 in all bins.',
336 name=
'ClusterizationPurity_V',
337 title=
'Fraction of V-side signal clusters (purity)',
338 x_label=
'SVD regions',
340 granules=pu.granulesLayersTypes,
344 cut=pu.cut_V + pu.cut_matched,
345 descr=
'(number of clusters related to at least one TrueHit) / (number of clusters).\
346 Evaluates the fraction of signal cluster over the total number of signal and background clusters.',
347 check=
'Purity should be above 0 in all bins.',