ATLAS Offline Software
InDetPerfPlot_VertexTruthMatching.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
13 #include "InDetPerfPlot_Vertex.h"
14 #include "InDetPerfPlot_nTracks.h"
15 #include "TFitResult.h"
16 #include "TFitResultPtr.h"
17 #include "GaudiKernel/PhysicalConstants.h"
18 
19 using namespace IDPVM;
20 
21 InDetPerfPlot_VertexTruthMatching::InDetPerfPlot_VertexTruthMatching(InDetPlotBase* pParent, const std::string& sDir, const int detailLevel) :
22  InDetPlotBase(pParent, sDir),
23  m_detailLevel(detailLevel),
24  m_vx_type_truth(nullptr),
25  m_vx_hs_classification(nullptr),
26  m_vx_nReco_vs_nTruth_inclusive(nullptr),
27  m_vx_nReco_vs_nTruth_matched(nullptr),
28  m_vx_nReco_vs_nTruth_merged(nullptr),
29  m_vx_nReco_vs_nTruth_split(nullptr),
30  m_vx_nReco_vs_nTruth_fake(nullptr),
31  m_vx_nReco_vs_nTruth_dummy(nullptr),
32  m_vx_nReco_vs_nTruth_clean(nullptr),
33  m_vx_nReco_vs_nTruth_lowpu(nullptr),
34  m_vx_nReco_vs_nTruth_highpu(nullptr),
35  m_vx_nReco_vs_nTruth_hssplit(nullptr),
36  m_vx_nReco_vs_nTruth_none(nullptr),
37  m_vx_hs_reco_eff(nullptr),
38  m_vx_hs_sel_eff(nullptr),
39  m_vx_hs_sel_eff_vs_nReco(nullptr),
40  m_vx_hs_reco_sel_eff(nullptr),
41  m_vx_hs_sel_eff_dist(nullptr),
42  m_vx_hs_sel_eff_mu(nullptr),
43  m_vx_hs_sel_eff_dist_vs_nReco(nullptr),
44  m_vx_hs_reco_eff_vs_ntruth(nullptr),
45  m_vx_hs_sel_eff_vs_ntruth(nullptr),
46  m_vx_hs_reco_sel_eff_vs_ntruth(nullptr),
47  m_vx_hs_reco_long_reso(nullptr),
48  m_vx_hs_reco_trans_reso(nullptr),
49 
50  //Longitudinal and transverse resolution plots for hs vertices
51  m_resHelper_PUdensity_hsVxTruthLong(nullptr),
52  m_resolution_vs_PUdensity_hsVxTruthLong(nullptr),
53  m_resmean_vs_PUdensity_hsVxTruthLong(nullptr),
54  m_resHelper_PUdensity_hsVxTruthTransv(nullptr),
55  m_resolution_vs_PUdensity_hsVxTruthTransv(nullptr),
56  m_resmean_vs_PUdensity_hsVxTruthTransv(nullptr),
57 
58  m_vx_hs_z_pull(nullptr),
59  m_vx_hs_y_pull(nullptr),
60  m_vx_hs_x_pull(nullptr),
61  m_vx_all_z_pull(nullptr),
62  m_vx_all_y_pull(nullptr),
63  m_vx_all_x_pull(nullptr),
64  m_vx_hs_z_res(nullptr),
65  m_vx_hs_y_res(nullptr),
66  m_vx_hs_x_res(nullptr),
67  m_vx_all_z_res(nullptr),
68  m_vx_all_y_res(nullptr),
69  m_vx_all_x_res(nullptr),
70  m_vx_all_truth_z_res_vs_PU(nullptr),
71  m_vx_all_truth_x_res_vs_PU(nullptr),
72  m_vx_all_truth_y_res_vs_PU(nullptr),
73  m_vx_all_truth_z_pull_vs_PU(nullptr),
74  m_vx_all_truth_x_pull_vs_PU(nullptr),
75  m_vx_all_truth_y_pull_vs_PU(nullptr),
76  m_vx_all_truth_z_res_vs_nTrk(nullptr),
77  m_vx_all_truth_x_res_vs_nTrk(nullptr),
78  m_vx_all_truth_y_res_vs_nTrk(nullptr),
79  m_vx_all_truth_z_pull_vs_nTrk(nullptr),
80  m_vx_all_truth_x_pull_vs_nTrk(nullptr),
81  m_vx_all_truth_y_pull_vs_nTrk(nullptr),
82  m_vx_hs_truth_z_res_vs_PU(nullptr),
83  m_vx_hs_truth_x_res_vs_PU(nullptr),
84  m_vx_hs_truth_y_res_vs_PU(nullptr),
85  m_vx_hs_truth_z_pull_vs_PU(nullptr),
86  m_vx_hs_truth_x_pull_vs_PU(nullptr),
87  m_vx_hs_truth_y_pull_vs_PU(nullptr),
88  m_vx_hs_truth_z_res_vs_nTrk(nullptr),
89  m_vx_hs_truth_x_res_vs_nTrk(nullptr),
90  m_vx_hs_truth_y_res_vs_nTrk(nullptr),
91  m_vx_hs_truth_z_pull_vs_nTrk(nullptr),
92  m_vx_hs_truth_x_pull_vs_nTrk(nullptr),
93  m_vx_hs_truth_y_pull_vs_nTrk(nullptr),
94 
95  // New Expert Histograms for vertex classifiations
96  m_vx_ntracks_matched(nullptr),
97  m_vx_ntracks_merged(nullptr),
98  m_vx_ntracks_split(nullptr),
99  m_vx_ntracks_HS_matched(nullptr),
100  m_vx_ntracks_HS_merged(nullptr),
101  m_vx_ntracks_HS_split(nullptr),
102  m_vx_ntracks_ALL_matched(nullptr),
103  m_vx_ntracks_ALL_merged(nullptr),
104  m_vx_ntracks_ALL_split(nullptr),
105  m_vx_sumpT_matched(nullptr),
106  m_vx_sumpT_merged(nullptr),
107  m_vx_sumpT_split(nullptr),
108  m_vx_sumpT_HS_matched(nullptr),
109  m_vx_sumpT_HS_merged(nullptr),
110  m_vx_sumpT_HS_split(nullptr),
111 
112  m_vx_z_asym_matched(nullptr),
113  m_vx_z_asym_merged(nullptr),
114  m_vx_z_asym_split(nullptr),
115  m_vx_z_asym_HS_matched(nullptr),
116  m_vx_z_asym_HS_merged(nullptr),
117  m_vx_z_asym_HS_split(nullptr),
118  m_vx_z_asym_weighted_matched(nullptr),
119  m_vx_z_asym_weighted_merged(nullptr),
120  m_vx_z_asym_weighted_split(nullptr),
121  m_vx_z_asym_weighted_HS_matched(nullptr),
122  m_vx_z_asym_weighted_HS_merged(nullptr),
123  m_vx_z_asym_weighted_HS_split(nullptr),
124 
125  m_vx_track_weight_matched(nullptr),
126  m_vx_track_weight_merged(nullptr),
127  m_vx_track_weight_split(nullptr),
128  m_vx_track_weight_HS_matched(nullptr),
129  m_vx_track_weight_HS_merged(nullptr),
130  m_vx_track_weight_HS_split(nullptr),
131 
132  m_vx_normalised_track_weight_matched(nullptr),
133  m_vx_normalised_track_weight_merged(nullptr),
134  m_vx_normalised_track_weight_split(nullptr),
135  m_vx_normalised_track_weight_HS_matched(nullptr),
136  m_vx_normalised_track_weight_HS_merged(nullptr),
137  m_vx_normalised_track_weight_HS_split(nullptr),
138 
139  m_vx_chi2Over_ndf_matched(nullptr),
140  m_vx_chi2Over_ndf_merged(nullptr),
141  m_vx_chi2Over_ndf_split(nullptr),
142  m_vx_chi2Over_ndf_HS_matched(nullptr),
143  m_vx_chi2Over_ndf_HS_merged(nullptr),
144  m_vx_chi2Over_ndf_HS_split(nullptr),
145 
146  m_vx_z0_skewness_matched(nullptr),
147  m_vx_z0_skewness_merged(nullptr),
148  m_vx_z0_skewness_split(nullptr),
149  m_vx_z0_skewness_HS_matched(nullptr),
150  m_vx_z0_skewness_HS_merged(nullptr),
151  m_vx_z0_skewness_HS_split(nullptr),
152 
153  m_vx_z0_kurtosis_matched(nullptr),
154  m_vx_z0_kurtosis_merged(nullptr),
155  m_vx_z0_kurtosis_split(nullptr),
156  m_vx_z0_kurtosis_HS_matched(nullptr),
157  m_vx_z0_kurtosis_HS_merged(nullptr),
158  m_vx_z0_kurtosis_HS_split(nullptr),
159 
160  m_vx_sumpT_ALL_matched(nullptr),
161  m_vx_sumpT_ALL_merged(nullptr),
162  m_vx_sumpT_ALL_split(nullptr),
163  m_vx_z_asym_ALL_matched(nullptr),
164  m_vx_z_asym_ALL_merged(nullptr),
165  m_vx_z_asym_ALL_split(nullptr),
166  m_vx_z_asym_weighted_ALL_matched(nullptr),
167  m_vx_z_asym_weighted_ALL_merged(nullptr),
168  m_vx_z_asym_weighted_ALL_split(nullptr),
169 
170  m_vx_track_weight_ALL_matched(nullptr),
171  m_vx_track_weight_ALL_merged(nullptr),
172  m_vx_track_weight_ALL_split(nullptr),
173 
174  m_vx_normalised_track_weight_ALL_matched(nullptr),
175  m_vx_normalised_track_weight_ALL_merged(nullptr),
176  m_vx_normalised_track_weight_ALL_split(nullptr),
177 
178  m_vx_chi2Over_ndf_ALL_matched(nullptr),
179  m_vx_chi2Over_ndf_ALL_merged(nullptr),
180  m_vx_chi2Over_ndf_ALL_split(nullptr),
181 
182  m_vx_z0_skewness_ALL_matched(nullptr),
183  m_vx_z0_skewness_ALL_merged(nullptr),
184  m_vx_z0_skewness_ALL_split(nullptr),
185 
186  m_vx_z0_kurtosis_ALL_matched(nullptr),
187  m_vx_z0_kurtosis_ALL_merged(nullptr),
188  m_vx_z0_kurtosis_ALL_split(nullptr),
189 
190  m_vx_nVertices_ALL_matched(nullptr),
191  m_vx_nVertices_ALL_merged(nullptr),
192  m_vx_nVertices_ALL_split(nullptr),
193  m_vx_nVertices_ALL_fake(nullptr),
194  m_vx_nVertices_HS_matched(nullptr),
195  m_vx_nVertices_HS_merged(nullptr),
196  m_vx_nVertices_HS_split(nullptr),
197  m_vx_nVertices_HS_fake(nullptr),
198  m_vx_nVertices_matched(nullptr),
199  m_vx_nVertices_merged(nullptr),
200  m_vx_nVertices_split(nullptr),
201  m_vx_nVertices_fake(nullptr),
202 
203  m_vx_all_dz(nullptr),
204  m_vx_hs_mindz(nullptr),
205 
206  m_vx_PUdensity(nullptr),
207  m_vx_nTruth(nullptr),
208  m_vx_nTruth_vs_PUdensity(nullptr)
209 
210 
211 {
212  // nop
213 }
214 
216 
217  book(m_vx_type_truth,"vx_type_truth");
218  book(m_vx_z_diff,"vx_z_diff");
219  book(m_vx_z_diff_pull,"vx_z_diff_pull");
220  book(m_vx_time_diff,"vx_time_diff");
221  book(m_vx_time_diff_pull,"vx_time_diff_pull");
222  if (m_detailLevel >= 200) {
223  book(m_vx_hs_classification,"vx_hs_classification");
224  book(m_vx_nReco_vs_nTruth_inclusive,"vx_nReco_vs_nTruth_inclusive");
225  book(m_vx_nReco_vs_nTruth_matched,"vx_nReco_vs_nTruth_matched");
226  book(m_vx_nReco_vs_nTruth_merged,"vx_nReco_vs_nTruth_merged");
227  book(m_vx_nReco_vs_nTruth_split,"vx_nReco_vs_nTruth_split");
228  book(m_vx_nReco_vs_nTruth_fake,"vx_nReco_vs_nTruth_fake");
229  book(m_vx_nReco_vs_nTruth_dummy,"vx_nReco_vs_nTruth_dummy");
230  book(m_vx_nReco_vs_nTruth_clean,"vx_nReco_vs_nTruth_clean");
231  book(m_vx_nReco_vs_nTruth_lowpu,"vx_nReco_vs_nTruth_lowpu");
232  book(m_vx_nReco_vs_nTruth_highpu,"vx_nReco_vs_nTruth_highpu");
233  book(m_vx_nReco_vs_nTruth_hssplit,"vx_nReco_vs_nTruth_hssplit");
234  book(m_vx_nReco_vs_nTruth_none,"vx_nReco_vs_nTruth_none");
235  book(m_vx_hs_reco_eff,"vx_hs_reco_eff");
236  book(m_vx_hs_sel_eff,"vx_hs_sel_eff");
237  book(m_vx_hs_sel_eff_vs_nReco,"vx_hs_sel_eff_vs_nReco");
238  book(m_vx_hs_reco_sel_eff,"vx_hs_reco_sel_eff");
239  book(m_vx_hs_sel_eff_dist,"vx_hs_sel_eff_dist");
240  book(m_vx_hs_sel_eff_mu,"vx_hs_sel_eff_mu");
241  book(m_vx_hs_sel_eff_dist_vs_nReco,"vx_hs_sel_eff_dist_vs_nReco");
242  book(m_vx_hs_reco_eff_vs_ntruth,"vx_hs_reco_eff_vs_ntruth");
243  book(m_vx_hs_sel_eff_vs_ntruth,"vx_hs_sel_eff_vs_ntruth");
244  book(m_vx_hs_reco_sel_eff_vs_ntruth,"vx_hs_reco_sel_eff_vs_ntruth");
245  book(m_vx_hs_reco_long_reso,"vx_hs_reco_long_reso");
246  book(m_vx_hs_reco_trans_reso,"vx_hs_reco_trans_reso");
247 
248  //Helpers for resolution plots for HS vertex
249  book(m_resHelper_PUdensity_hsVxTruthLong,"resHelper_PUdensity_hsVxTruthLong");
250  book(m_resolution_vs_PUdensity_hsVxTruthLong,"resolution_vs_PUdensity_hsVxTruthLong");
251  book(m_resmean_vs_PUdensity_hsVxTruthLong,"resmean_vs_PUdensity_hsVxTruthLong");
252 
253  book(m_resHelper_PUdensity_hsVxTruthTransv,"resHelper_PUdensity_hsVxTruthTransv");
254  book(m_resolution_vs_PUdensity_hsVxTruthTransv,"resolution_vs_PUdensity_hsVxTruthTransv");
255  book(m_resmean_vs_PUdensity_hsVxTruthTransv,"resmean_vs_PUdensity_hsVxTruthTransv");
256 
257  book(m_vx_hs_z_pull,"vx_TYPE_z_pull","vx_hs_z_pull");
258  book(m_vx_hs_y_pull,"vx_TYPE_y_pull","vx_hs_y_pull");
259  book(m_vx_hs_x_pull,"vx_TYPE_x_pull","vx_hs_x_pull");
260 
261  book(m_vx_all_z_pull,"vx_TYPE_z_pull","vx_all_z_pull");
262  book(m_vx_all_y_pull,"vx_TYPE_y_pull","vx_all_y_pull");
263  book(m_vx_all_x_pull,"vx_TYPE_x_pull","vx_all_x_pull");
264 
265  book(m_vx_hs_z_res,"vx_TYPE_z_reso","vx_hs_z_res");
266  book(m_vx_hs_y_res,"vx_TYPE_y_reso","vx_hs_y_res");
267  book(m_vx_hs_x_res,"vx_TYPE_x_reso","vx_hs_x_res");
268  book(m_vx_all_z_res,"vx_TYPE_z_reso","vx_all_z_res");
269  book(m_vx_all_y_res,"vx_TYPE_y_reso","vx_all_y_res");
270  book(m_vx_all_x_res,"vx_TYPE_x_reso","vx_all_x_res");
271 
272  book(m_vx_all_truth_z_res_vs_PU, "vx_TYPE_truth_reso_z_vs_PU", "vx_all_truth_reso_z_vs_PU");
273  book(m_vx_all_truth_x_res_vs_PU, "vx_TYPE_truth_reso_x_vs_PU", "vx_all_truth_reso_x_vs_PU");
274  book(m_vx_all_truth_y_res_vs_PU, "vx_TYPE_truth_reso_y_vs_PU", "vx_all_truth_reso_y_vs_PU");
275  book(m_vx_all_truth_z_res_vs_nTrk, "vx_TYPE_truth_reso_z_vs_nTrk", "vx_all_truth_reso_z_vs_nTrk");
276  book(m_vx_all_truth_x_res_vs_nTrk, "vx_TYPE_truth_reso_x_vs_nTrk", "vx_all_truth_reso_x_vs_nTrk");
277  book(m_vx_all_truth_y_res_vs_nTrk, "vx_TYPE_truth_reso_y_vs_nTrk", "vx_all_truth_reso_y_vs_nTrk");
278 
279  book(m_vx_all_truth_z_pull_vs_PU, "vx_TYPE_truth_pull_z_vs_PU", "vx_all_truth_pull_z_vs_PU");
280  book(m_vx_all_truth_x_pull_vs_PU, "vx_TYPE_truth_pull_x_vs_PU", "vx_all_truth_pull_x_vs_PU");
281  book(m_vx_all_truth_y_pull_vs_PU, "vx_TYPE_truth_pull_y_vs_PU", "vx_all_truth_pull_y_vs_PU");
282  book(m_vx_all_truth_z_pull_vs_nTrk, "vx_TYPE_truth_pull_z_vs_nTrk", "vx_all_truth_pull_z_vs_nTrk");
283  book(m_vx_all_truth_x_pull_vs_nTrk, "vx_TYPE_truth_pull_x_vs_nTrk", "vx_all_truth_pull_x_vs_nTrk");
284  book(m_vx_all_truth_y_pull_vs_nTrk, "vx_TYPE_truth_pull_y_vs_nTrk", "vx_all_truth_pull_y_vs_nTrk");
285 
286  book(m_vx_hs_truth_z_res_vs_PU, "vx_TYPE_truth_reso_z_vs_PU", "vx_hs_truth_reso_z_vs_PU");
287  book(m_vx_hs_truth_x_res_vs_PU, "vx_TYPE_truth_reso_x_vs_PU", "vx_hs_truth_reso_x_vs_PU");
288  book(m_vx_hs_truth_y_res_vs_PU, "vx_TYPE_truth_reso_y_vs_PU", "vx_hs_truth_reso_y_vs_PU");
289  book(m_vx_hs_truth_z_res_vs_nTrk, "vx_TYPE_truth_reso_z_vs_nTrk", "vx_hs_truth_reso_z_vs_nTrk");
290  book(m_vx_hs_truth_x_res_vs_nTrk, "vx_TYPE_truth_reso_x_vs_nTrk", "vx_hs_truth_reso_x_vs_nTrk");
291  book(m_vx_hs_truth_y_res_vs_nTrk, "vx_TYPE_truth_reso_y_vs_nTrk", "vx_hs_truth_reso_y_vs_nTrk");
292 
293  book(m_vx_hs_truth_z_pull_vs_PU, "vx_TYPE_truth_pull_z_vs_PU", "vx_hs_truth_pull_z_vs_PU");
294  book(m_vx_hs_truth_x_pull_vs_PU, "vx_TYPE_truth_pull_x_vs_PU", "vx_hs_truth_pull_x_vs_PU");
295  book(m_vx_hs_truth_y_pull_vs_PU, "vx_TYPE_truth_pull_y_vs_PU", "vx_hs_truth_pull_y_vs_PU");
296  book(m_vx_hs_truth_z_pull_vs_nTrk, "vx_TYPE_truth_pull_z_vs_nTrk", "vx_hs_truth_pull_z_vs_nTrk");
297  book(m_vx_hs_truth_x_pull_vs_nTrk, "vx_TYPE_truth_pull_x_vs_nTrk", "vx_hs_truth_pull_x_vs_nTrk");
298  book(m_vx_hs_truth_y_pull_vs_nTrk, "vx_TYPE_truth_pull_y_vs_nTrk", "vx_hs_truth_pull_y_vs_nTrk");
299 
300  // book the new expert histos for vertex classifications
301  book(m_vx_ntracks_matched,"vx_ntracks_matched");
302  book(m_vx_ntracks_merged,"vx_ntracks_merged");
303  book(m_vx_ntracks_split,"vx_ntracks_split");
304  book(m_vx_ntracks_HS_matched,"vx_ntracks_HS_matched");
305  book(m_vx_ntracks_HS_merged,"vx_ntracks_HS_merged");
306  book(m_vx_ntracks_HS_split,"vx_ntracks_HS_split");
307  book(m_vx_ntracks_ALL_matched,"vx_ntracks_ALL_matched");
308  book(m_vx_ntracks_ALL_merged,"vx_ntracks_ALL_merged");
309  book(m_vx_ntracks_ALL_split,"vx_ntracks_ALL_split");
310  book(m_vx_sumpT_matched,"vx_sumpT_matched");
311  book(m_vx_sumpT_merged,"vx_sumpT_merged");
312  book(m_vx_sumpT_split,"vx_sumpT_split");
313  book(m_vx_sumpT_HS_matched,"vx_sumpT_HS_matched");
314  book(m_vx_sumpT_HS_merged,"vx_sumpT_HS_merged");
315  book(m_vx_sumpT_HS_split,"vx_sumpT_HS_split");
316  book(m_vx_sumpT_ALL_matched,"vx_sumpT_ALL_matched");
317  book(m_vx_sumpT_ALL_merged,"vx_sumpT_ALL_merged");
318  book(m_vx_sumpT_ALL_split,"vx_sumpT_ALL_split");
319 
320  book(m_vx_z_asym_matched,"vx_z_asym_matched");
321  book(m_vx_z_asym_merged,"vx_z_asym_merged");
322  book(m_vx_z_asym_split,"vx_z_asym_split");
323  book(m_vx_z_asym_HS_matched,"vx_z_asym_HS_matched");
324  book(m_vx_z_asym_HS_merged,"vx_z_asym_HS_merged");
325  book(m_vx_z_asym_HS_split,"vx_z_asym_HS_split");
326  book(m_vx_z_asym_ALL_matched,"vx_z_asym_ALL_matched");
327  book(m_vx_z_asym_ALL_merged,"vx_z_asym_ALL_merged");
328  book(m_vx_z_asym_ALL_split,"vx_z_asym_ALL_split");
329  book(m_vx_z_asym_weighted_matched,"vx_z_asym_weighted_matched");
330  book(m_vx_z_asym_weighted_merged,"vx_z_asym_weighted_merged");
331  book(m_vx_z_asym_weighted_split,"vx_z_asym_weighted_split");
332  book(m_vx_z_asym_weighted_HS_matched,"vx_z_asym_weighted_HS_matched");
333  book(m_vx_z_asym_weighted_HS_merged,"vx_z_asym_weighted_HS_merged");
334  book(m_vx_z_asym_weighted_HS_split,"vx_z_asym_weighted_HS_split");
335  book(m_vx_z_asym_weighted_ALL_matched,"vx_z_asym_weighted_ALL_matched");
336  book(m_vx_z_asym_weighted_ALL_merged,"vx_z_asym_weighted_ALL_merged");
337  book(m_vx_z_asym_weighted_ALL_split,"vx_z_asym_weighted_ALL_split");
338 
339  book(m_vx_track_weight_matched, "vx_track_weight_matched");
340  book(m_vx_track_weight_merged, "vx_track_weight_merged");
341  book(m_vx_track_weight_split, "vx_track_weight_split");
342  book(m_vx_track_weight_HS_matched, "vx_track_weight_HS_matched");
343  book(m_vx_track_weight_HS_merged, "vx_track_weight_HS_merged");
344  book(m_vx_track_weight_HS_split, "vx_track_weight_HS_split");
345  book(m_vx_track_weight_ALL_matched, "vx_track_weight_ALL_matched");
346  book(m_vx_track_weight_ALL_merged, "vx_track_weight_ALL_merged");
347  book(m_vx_track_weight_ALL_split, "vx_track_weight_ALL_split");
348 
349  book(m_vx_normalised_track_weight_matched, "vx_normalised_track_weight_matched");
350  book(m_vx_normalised_track_weight_merged, "vx_normalised_track_weight_merged");
351  book(m_vx_normalised_track_weight_split, "vx_normalised_track_weight_split");
352  book(m_vx_normalised_track_weight_HS_matched, "vx_normalised_track_weight_HS_matched");
353  book(m_vx_normalised_track_weight_HS_merged, "vx_normalised_track_weight_HS_merged");
354  book(m_vx_normalised_track_weight_HS_split, "vx_normalised_track_weight_HS_split");
355  book(m_vx_normalised_track_weight_ALL_matched, "vx_normalised_track_weight_ALL_matched");
356  book(m_vx_normalised_track_weight_ALL_merged, "vx_normalised_track_weight_ALL_merged");
357  book(m_vx_normalised_track_weight_ALL_split, "vx_normalised_track_weight_ALL_split");
358 
359  book(m_vx_chi2Over_ndf_matched,"vx_chi2Over_ndf_matched");
360  book(m_vx_chi2Over_ndf_merged,"vx_chi2Over_ndf_merged");
361  book(m_vx_chi2Over_ndf_split,"vx_chi2Over_ndf_split");
362  book(m_vx_chi2Over_ndf_HS_matched,"vx_chi2Over_ndf_HS_matched");
363  book(m_vx_chi2Over_ndf_HS_merged,"vx_chi2Over_ndf_HS_merged");
364  book(m_vx_chi2Over_ndf_HS_split,"vx_chi2Over_ndf_HS_split");
365  book(m_vx_chi2Over_ndf_ALL_matched,"vx_chi2Over_ndf_ALL_matched");
366  book(m_vx_chi2Over_ndf_ALL_merged,"vx_chi2Over_ndf_ALL_merged");
367  book(m_vx_chi2Over_ndf_ALL_split,"vx_chi2Over_ndf_ALL_split");
368 
369  book(m_vx_z0_skewness_matched, "vx_z0_skewness_matched");
370  book(m_vx_z0_skewness_merged, "vx_z0_skewness_merged");
371  book(m_vx_z0_skewness_split, "vx_z0_skewness_split");
372  book(m_vx_z0_skewness_HS_matched, "vx_z0_skewness_HS_matched");
373  book(m_vx_z0_skewness_HS_merged, "vx_z0_skewness_HS_merged");
374  book(m_vx_z0_skewness_HS_split, "vx_z0_skewness_HS_split");
375  book(m_vx_z0_skewness_ALL_matched, "vx_z0_skewness_ALL_matched");
376  book(m_vx_z0_skewness_ALL_merged, "vx_z0_skewness_ALL_merged");
377  book(m_vx_z0_skewness_ALL_split, "vx_z0_skewness_ALL_split");
378  book(m_vx_z0_kurtosis_matched,"vx_z0_kurtosis_matched");
379  book(m_vx_z0_kurtosis_merged,"vx_z0_kurtosis_merged");
380  book(m_vx_z0_kurtosis_split,"vx_z0_kurtosis_split");
381  book(m_vx_z0_kurtosis_HS_matched,"vx_z0_kurtosis_HS_matched");
382  book(m_vx_z0_kurtosis_HS_merged,"vx_z0_kurtosis_HS_merged");
383  book(m_vx_z0_kurtosis_HS_split,"vx_z0_kurtosis_HS_split");
384  book(m_vx_z0_kurtosis_ALL_matched,"vx_z0_kurtosis_ALL_matched");
385  book(m_vx_z0_kurtosis_ALL_merged,"vx_z0_kurtosis_ALL_merged");
386  book(m_vx_z0_kurtosis_ALL_split,"vx_z0_kurtosis_ALL_split");
387 
388 
389  book(m_vx_nVertices_matched,"vx_nVertices_matched");
390  book(m_vx_nVertices_merged,"vx_nVertices_merged");
391  book(m_vx_nVertices_split, "vx_nVertices_split");
392  book(m_vx_nVertices_fake, "vx_nVertices_fake");
393  book(m_vx_nVertices_HS_matched,"vx_nVertices_HS_matched");
394  book(m_vx_nVertices_HS_merged,"vx_nVertices_HS_merged");
395  book(m_vx_nVertices_HS_split,"vx_nVertices_HS_split");
396  book(m_vx_nVertices_HS_fake,"vx_nVertices_HS_fake");
397  book(m_vx_nVertices_ALL_matched,"vx_nVertices_ALL_matched");
398  book(m_vx_nVertices_ALL_merged,"vx_nVertices_ALL_merged");
399  book(m_vx_nVertices_ALL_split,"vx_nVertices_ALL_split");
400  book(m_vx_nVertices_ALL_fake,"vx_nVertices_ALL_fake");
401 
402  book(m_vx_hs_mindz,"vx_hs_mindz");
403  book(m_vx_all_dz,"vx_all_dz");
404 
405  book(m_vx_PUdensity,"vx_PUdensity");
406  book(m_vx_nTruth,"vx_nTruth");
407  book(m_vx_nTruth_vs_PUdensity,"vx_nTruth_vs_PUdensity");
408  }
409 
410 }
412  const xAOD::Vertex* recoHSVertex = nullptr;
413  float sumPtMax = -1.;
414  const xAOD::TrackParticle* trackTmp = nullptr;
415  float sumPtTmp;
416  for (const auto& vtx : recoVertices.stdcont()) {
417  if (vtx) {
418  sumPtTmp = 0.;
419  for (size_t i = 0; i < vtx->nTrackParticles(); i++) {
420  trackTmp = vtx->trackParticle(i);
421  if (trackTmp) {
422  sumPtTmp += std::pow(trackTmp->pt(), 2);
423  }
424  }
425  if (sumPtTmp > sumPtMax) {
426  sumPtMax = sumPtTmp;
427  recoHSVertex = vtx;
428  }
429  }
430  }
431  return recoHSVertex;
432 }
433 
434 
435 template<typename U, typename V>
436 float InDetPerfPlot_VertexTruthMatching::getRadialDiff2(const U* vtx1, const V* vtx2) const {
437  return (std::pow((vtx1->x() - vtx2->x()), 2) + std::pow((vtx1->y() - vtx2->y()), 2) + std::pow((vtx1->z() - vtx2->z()), 2));
438 }
439 
440 float InDetPerfPlot_VertexTruthMatching::getLocalPUDensity(const xAOD::TruthVertex* vtxOfInterest, const std::vector<const xAOD::TruthVertex*>& truthHSVertices, const std::vector<const xAOD::TruthVertex*>& truthPUVertices, const float radialWindow) const {
441  float radialWindow2 = std::pow(radialWindow, 2);
442  int nTracksInWindow = 0;
443  float localPUDensity;
444  float radialDiff2;
445  for (const auto& vtx : truthHSVertices) {
446  if (vtx != vtxOfInterest) {
447  radialDiff2 = getRadialDiff2(vtxOfInterest, vtx);
448  if (radialDiff2 < radialWindow2) {
449  nTracksInWindow += 1;
450  }
451  }
452  }
453  for (const auto& vtx : truthPUVertices) {
454  if (vtx != vtxOfInterest) {
455  radialDiff2 = getRadialDiff2(vtxOfInterest, vtx);
456  if (radialDiff2 < radialWindow2) {
457  nTracksInWindow += 1;
458  }
459  }
460  }
461  localPUDensity = (float)(nTracksInWindow) / (2 * radialWindow);
462  return localPUDensity;
463 }
464 
466  return std::sqrt(recoVtx->covariancePosition()(2, 2));
467 }
468 
470  float x = recoVtx->x();
471  float y = recoVtx->y();
472  float xErr2 = recoVtx->covariancePosition()(0, 0);
473  float yErr2 = recoVtx->covariancePosition()(1, 1);
474  float xyCov = recoVtx->covariancePosition()(0, 1);
475  float r2 = std::pow(x, 2) + std::pow(y, 2);
476  return std::sqrt(std::pow(x, 2) / r2 * xErr2 + std::pow(y, 2) / r2 * yErr2 + 2 * x * y / r2 * xyCov);
477 }
478 
479 // Copied from Graham:
480 void InDetPerfPlot_VertexTruthMatching::fillResoHist(TH1* resoHist, const TH2* resoHist2D) {
481 
482  TH1* projHist = nullptr;
483  int safety_counter;
484  TFitResultPtr fitResult;
485  double mean;
486  double rms;
487  double itr_rms = -1.;
488  double itr_rms_err;
489 
490  for (int i = 1; i < resoHist2D->GetNbinsX() + 1; i++) {
491 
492  projHist = resoHist2D->ProjectionY("projectionY", i, i);
493 
494  if (projHist->GetEntries() == 0.) {
495  resoHist->SetBinContent(i, 0.);
496  resoHist->SetBinError(i, 0.);
497  continue;
498  }
499 
500  safety_counter = 0;
501 
502  fitResult = projHist->Fit("gaus", "QS0");
503  if (!fitResult.Get()) {
504  // Is it necessary to also require fitResult->Status() % 1000 == 0 for a successful fit?
505  // --> fitStatus = migradResult + 10 * minosResult + 100 * hesseResult + 1000 * improveResult
506  resoHist->SetBinContent(i, 0.);
507  resoHist->SetBinError(i, 0.);
508  continue;
509  }
510  mean = fitResult->Parameter(1);
511  rms = fitResult->Parameter(2);
512 
513  while (true) {
514 
515  projHist->SetAxisRange(mean - 3 * rms, mean + 3 * rms, "X");
516 
517  fitResult = projHist->Fit("gaus", "QS0");
518  if (!fitResult.Get()) {
519  itr_rms = 0.;
520  itr_rms_err = 0.;
521  break;
522  }
523  itr_rms = fitResult->Parameter(2);
524  itr_rms_err = fitResult->ParError(2);
525 
526  if ((fabs(itr_rms - rms) < 0.0001) || (safety_counter == 5)) {
527  break;
528  }
529 
530  safety_counter++;
531  mean = fitResult->Parameter(1);
532  rms = itr_rms;
533 
534  }
535 
536  resoHist->SetBinContent(i, itr_rms);
537  resoHist->SetBinError(i, itr_rms_err);
538 
539  }
540 }
541 
543  const xAOD::TruthVertex* truthVtx = nullptr;
544  if (recoVtx) {
545  const static xAOD::Vertex::Decorator<std::vector<InDetVertexTruthMatchUtils::VertexTruthMatchInfo>> truthMatchingInfos("TruthEventMatchingInfos");
546  try{
547  if (!truthMatchingInfos.isAvailable(*recoVtx)){
548  ATH_MSG_WARNING("TruthEventMatchingInfos DECORATOR not available -- returning nullptr!");
549  return truthVtx;
550  }
551  const std::vector<InDetVertexTruthMatchUtils::VertexTruthMatchInfo>& truthInfos = truthMatchingInfos(*recoVtx);
552  if (!truthInfos.empty()) {
553  const InDetVertexTruthMatchUtils::VertexTruthMatchInfo& truthInfo = truthInfos.at(0);
554  const ElementLink<xAOD::TruthEventBaseContainer> truthEventLink = std::get<0>(truthInfo);
555  const xAOD::TruthEvent* truthEvent = nullptr;
556  if (truthEventLink.isValid()) {
557  truthEvent = static_cast<const xAOD::TruthEvent*>(*truthEventLink);
558  if (truthEvent) {
559  size_t i_vtx = 0;
560  size_t n_vtx = truthEvent->nTruthVertices();
561  while(!truthVtx && i_vtx<n_vtx){
562  truthVtx = truthEvent->truthVertex(i_vtx);
563  i_vtx++;
564  }
565  }
566  }
567  }
568  else {
569  ATH_MSG_WARNING("TruthEventMatchingInfos DECORATOR yields empty vector -- returning nullptr!");
570  }
571  }
572  catch (SG::ExcBadAuxVar &){
573  ATH_MSG_WARNING("TruthEventMatchingInfos DECORATOR yields empty vector -- returning nullptr!");
574  }
575  }
576  return truthVtx;
577 }
578 
580  // not sure how to deal with this type of histogram
581  if(tvrt){
582  float diff_z=vertex.z()-tvrt->z();
583  const AmgSymMatrix(3)& covariance = vertex.covariancePosition();
584  float err_z = fabs(Amg::error(covariance, 2)) > 1e-7 ? Amg::error(covariance, 2) : 1000.;
585  fillHisto(m_vx_z_diff,diff_z, weight);
586  fillHisto(m_vx_z_diff_pull,diff_z/err_z, weight);
587 
588  static const SG::AuxElement::Accessor<uint8_t> accHasValidTime("hasValidTime");
589  static const SG::AuxElement::Accessor<float> accTime("time");
590  static const SG::AuxElement::Accessor<float> accTimeResolution("timeResolution");
591  if (accHasValidTime.isAvailable(vertex) && accTime.isAvailable(vertex) &&
592  accTimeResolution.isAvailable(vertex)) {
593 
594  if (vertex.hasValidTime()) {
595  float diff_time = vertex.time()-tvrt->t()/Gaudi::Units::c_light;
596  float err_time = vertex.timeResolution();
597  fillHisto(m_vx_time_diff, diff_time, weight);
598  fillHisto(m_vx_time_diff_pull, diff_time/err_time, weight);
599  }
600  }
601  }
602 
603  // Get the match type info for each vertex:
604  const static xAOD::Vertex::Decorator<InDetVertexTruthMatchUtils::VertexMatchType> recoVtxMatchTypeInfo("VertexMatchType");
606  if (recoVtxMatchTypeInfo.isAvailable(vertex)) {
607  try {
608  matchType = recoVtxMatchTypeInfo(vertex);
609  ATH_MSG_DEBUG("VERTEX DECORATOR ======= " << matchType << ", with nTRACKS === " << vertex.nTrackParticles() << ", vertex index = " << vertex.index() << " AT (x, y, z) = (" << vertex.x() << ", " << vertex.y() << ", " << vertex.z() << ")");
610  fillHisto(m_vx_type_truth, matchType, weight);
611  }
612  catch (SG::ExcBadAuxVar &) {
613  ATH_MSG_WARNING("VertexMatchType DECORATOR seems to be available, but may be broken ===========");
614  }
615  }
616  else {
617  ATH_MSG_WARNING("VertexMatchType DECORATOR is NOT available ===========");
618  }
619 
620 } // void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::Vertex& vertex) {
621 
622 void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::Vertex* recoHardScatter,const xAOD::VertexContainer& vertexContainer, const std::vector<const xAOD::TruthVertex*>& truthHSVertices, const std::vector<const xAOD::TruthVertex*>& truthPUVertices, float actualMu, float weight) {
623 
624  if (m_detailLevel >= 200) {
625  // Fill our histograms
626  // Inclusive:
627  int nTruthVertices = (int)(truthHSVertices.size() + truthPUVertices.size());
628  int nRecoVertices = (int)vertexContainer.size()-1; //Not counting the dummy vertex of type 0
629  fillHisto(m_vx_nReco_vs_nTruth_inclusive, nTruthVertices, nRecoVertices, weight);
630  fillHisto(m_vx_nTruth, nTruthVertices, weight);
631 
632  // Let's also plot the vertices by vertex match type:
633  const static xAOD::Vertex::Decorator<InDetVertexTruthMatchUtils::VertexMatchType> recoVtxMatchTypeInfo("VertexMatchType");
634  std::map<InDetVertexTruthMatchUtils::VertexMatchType, int> breakdown = {};
640 
641  if (!recoHardScatter){
642  ATH_MSG_INFO("No recoHardScatter vertex - not filling vertex truth matching.");
643  return;
644  }
645 
646 
647  // Get the truth HS vertex
648  const xAOD::TruthVertex* truthHSVtx = nullptr;
649 
650  // Check that we have *exactly* 1 truth HS vertex
651  if (!truthHSVertices.empty()) {
652  if (truthHSVertices.size() != 1) {
653  ATH_MSG_WARNING("Size of truth HS vertex vector is >1 -- only using the first one in the vector.");
654  }
655  truthHSVtx = truthHSVertices.at(0);
656  fillHisto(m_vx_hs_sel_eff_dist, nTruthVertices, getRadialDiff2(recoHardScatter, truthHSVtx) < std::pow(m_cutMinTruthRecoRadialDiff, 2), weight);
657  fillHisto(m_vx_hs_sel_eff_dist_vs_nReco, nRecoVertices, getRadialDiff2(recoHardScatter, truthHSVtx) < std::pow(m_cutMinTruthRecoRadialDiff, 2), weight);
658  }
659  else {
660  ATH_MSG_WARNING("Size of truth HS vertex vector is 0 -- assuming truth HS vertex to NOT be reconstructed.");
661  }
662 
663  //Calculating the local PU density around the true HS vertex
664  float localPUDensity = getLocalPUDensity(truthHSVtx, truthHSVertices, truthPUVertices);
665  fillHisto(m_vx_PUdensity, localPUDensity, weight);
666  fillHisto(m_vx_nTruth_vs_PUdensity, nTruthVertices, localPUDensity, weight);
667 
668  // Best reco HS vertex identified via truth HS weights
669  const xAOD::Vertex* bestRecoHSVtx_truth = InDetVertexTruthMatchUtils::bestHardScatterMatch(vertexContainer);
670  if (!bestRecoHSVtx_truth){
671  ATH_MSG_INFO("No bestRecoHS vertex - not filling vertex truth matching.");
672  return;
673  }
674 
675  fillHisto(m_vx_hs_sel_eff_mu, actualMu, (recoHardScatter == bestRecoHSVtx_truth), weight);
676  fillHisto(m_vx_hs_sel_eff, localPUDensity, (recoHardScatter == bestRecoHSVtx_truth), weight);
677  fillHisto(m_vx_hs_sel_eff_vs_nReco, nRecoVertices, (recoHardScatter == bestRecoHSVtx_truth), weight);
678  fillHisto(m_vx_hs_sel_eff_vs_ntruth, nTruthVertices, (recoHardScatter == bestRecoHSVtx_truth), weight);
679 
680  // Did we successfully reconstruct our truth HS vertex?
681  bool truthHSVtxRecoed = false;
682  float minTruthRecoRadialDiff2 = std::pow(m_cutMinTruthRecoRadialDiff, 2);
683  float truthRecoRadialDiff2 = -1.;
684  if (truthHSVtx) {
685  // If the radial difference between the truth-pkg-selected best reco HS vertex and the truth HS vertex is
686  // less than some cut (e.g., 0.1 mm), then we say the truth HS vertex is reconstructed
687  truthRecoRadialDiff2 = getRadialDiff2(bestRecoHSVtx_truth, truthHSVtx);
688  if (truthRecoRadialDiff2 < minTruthRecoRadialDiff2) {
689  truthHSVtxRecoed = true;
690  minTruthRecoRadialDiff2 = truthRecoRadialDiff2;
691  }
692  }
693 
694  // add variables here so that they are in correct scope (outside loop over vertices)
695  float number_matched = 0;
696  float number_merged = 0;
697  float number_split = 0;
698  float number_fake = 0;
699  float number_matched_HS = 0;
700  float number_merged_HS = 0;
701  float number_split_HS = 0;
702  float number_fake_HS = 0;
703  float number_matched_PU = 0;
704  float number_merged_PU = 0;
705  float number_split_PU = 0;
706  float number_fake_PU = 0;
707 
708  // variables for delta z between the HS and the closest one
709  float vx_hs_mindz=9999.;
710  float min_fabs_dz = 9999.;
711 
712  // Iterate over vertices:
714  for (const auto& vertex : vertexContainer.stdcont()) {
715 
716  // Skip dummy vertex (last one in the container)
717  if (vertex->vertexType() == xAOD::VxType::NoVtx) {
718  continue;
719  }
720 
721  fill(*vertex);
722 
723  matchType = recoVtxMatchTypeInfo(*vertex);
724  breakdown[matchType] += 1;
725 
726 
727  const xAOD::TruthVertex *matchVertex = getTruthVertex(vertex);
728  if(!matchVertex) continue;
729  float residual_z = matchVertex->z() - vertex->z();
730  float residual_x = matchVertex->x() - vertex->x();
731  float residual_y = matchVertex->y() - vertex->y();
732  const AmgSymMatrix(3)& covariance = vertex->covariancePosition();
733  float vtxerr_x = fabs(Amg::error(covariance, 0)) > 1e-7 ? Amg::error(covariance, 0) : 1000.;
734  float vtxerr_y = fabs(Amg::error(covariance, 1)) > 1e-7 ? Amg::error(covariance, 1) : 1000.;
735  float vtxerr_z = fabs(Amg::error(covariance, 2)) > 1e-7 ? Amg::error(covariance, 2) : 1000.;
736  localPUDensity = getLocalPUDensity(matchVertex, truthHSVertices, truthPUVertices);
737 
738  fillHisto(m_vx_all_z_pull, residual_z/vtxerr_z, weight);
739  fillHisto(m_vx_all_y_pull, residual_y/vtxerr_y, weight);
740  fillHisto(m_vx_all_x_pull, residual_x/vtxerr_x, weight);
741 
742  fillHisto(m_vx_all_truth_z_res_vs_PU, localPUDensity, residual_z, weight);
743  fillHisto(m_vx_all_truth_x_res_vs_PU, localPUDensity, residual_x, weight);
744  fillHisto(m_vx_all_truth_y_res_vs_PU, localPUDensity, residual_y, weight);
745 
746  fillHisto(m_vx_all_z_res, residual_z, weight);
747  fillHisto(m_vx_all_y_res, residual_y, weight);
748  fillHisto(m_vx_all_x_res, residual_x, weight);
749 
750  fillHisto(m_vx_all_truth_z_pull_vs_PU, localPUDensity, residual_z/vtxerr_z, weight);
751  fillHisto(m_vx_all_truth_x_pull_vs_PU, localPUDensity, residual_x/vtxerr_x, weight);
752  fillHisto(m_vx_all_truth_y_pull_vs_PU, localPUDensity, residual_y/vtxerr_y, weight);
753 
754  fillHisto(m_vx_all_truth_z_res_vs_nTrk, vertex->nTrackParticles(), residual_z, weight);
755  fillHisto(m_vx_all_truth_x_res_vs_nTrk, vertex->nTrackParticles(), residual_x, weight);
756  fillHisto(m_vx_all_truth_y_res_vs_nTrk, vertex->nTrackParticles(), residual_y, weight);
757 
758  fillHisto(m_vx_all_truth_z_pull_vs_nTrk, vertex->nTrackParticles(), residual_z/vtxerr_z, weight);
759  fillHisto(m_vx_all_truth_x_pull_vs_nTrk, vertex->nTrackParticles(), residual_x/vtxerr_x, weight);
760  fillHisto(m_vx_all_truth_y_pull_vs_nTrk, vertex->nTrackParticles(), residual_y/vtxerr_y, weight);
761 
762 
763 
764 
765  // New Expert histograms for observables for vertex classifications for HS and PU
766  // For each vertex, loop over all tracks and get sumpt and sum of charges
767  // also use this to get the z asymmetry around the vertex.
768 
769  // Declaring variables for the observables
770  const xAOD::TrackParticle* trackTmp = nullptr;
771  float sumPt =0;
772  float minpt = 20000 ; // minimum sum pt required for the 'All' vertices plots - 20 GeV
773  float trackPt = 0;
774 
775  // variables for calculation of delta Z asymmetry and delta d asymmetry
776  float z_asym = 0;
777  float sumDZ = 0;
778  float deltaZ =0;
779  float modsumDZ =0;
780  float weighted_sumDZ = 0;
781  float weighted_deltaZ = 0;
782  float weighted_modsumDZ = 0;
783  float weighted_z_asym =0;
784 
785  // make vector
786  std::vector<float> track_deltaZ;
787  std::vector<float> track_deltaPt;
788  std::vector<float> track_deltaZ_weighted;
789  // loop over tracks
790  for (size_t i = 0; i < vertex->nTrackParticles(); i++) {
791  trackTmp = vertex->trackParticle(i);
792 
793 
794  if (trackTmp) {
795  trackPt = trackTmp->pt(); // MeV
796  sumPt = sumPt + trackPt; // in MeV
797  deltaZ = trackTmp->z0() - vertex->z();
798  track_deltaZ.push_back(deltaZ);
799  // get the track weight for each track to get the deltaZ/trk_weight
800  float trk_weight = vertex->trackWeight(i);
801  weighted_deltaZ = deltaZ*trk_weight;
802  // sum of delta z
803  sumDZ = sumDZ + deltaZ;
804  modsumDZ = modsumDZ + std::abs(deltaZ);
805  weighted_sumDZ = weighted_sumDZ + weighted_deltaZ;
806  weighted_modsumDZ = weighted_modsumDZ + std::abs(weighted_deltaZ);
807 
808  }
809  } // end loop over tracks
810  if (modsumDZ >0) {
811  z_asym = sumDZ/modsumDZ;
812  }
813  if (weighted_modsumDZ >0) {
814  weighted_z_asym = weighted_sumDZ/weighted_modsumDZ;
815  }
816 
817 
818 
819  double mean_Dz =0;
820  mean_Dz=sumDZ/track_deltaZ.size(); //calculate average
821  double number_tracks =0;
822  number_tracks = track_deltaZ.size(); // get number of tracks
823 
824  double z_sd = 0; // standard deviation
825  double z_skew = 0; // skewness of DeltaZ asymmetry
826  double z_kurt = 0; // Kurtosis of DeltaZ asymmetry
827  double z_var=0; // variance of DeltaZ
828  double z_zbar=0; // for use in calculation below
829 
830  for ( auto i : track_deltaZ) {
831 
832  z_zbar = (i - mean_Dz);
833  z_var =(z_var + z_zbar*z_zbar);
834  z_skew =(z_skew + z_zbar*z_zbar*z_zbar);
835  z_kurt =(z_kurt + z_zbar*z_zbar*z_zbar*z_zbar);
836 
837  }
838  z_var = z_var/(number_tracks -1);
839  z_sd = std::sqrt(z_var);
840  z_skew = z_skew/((number_tracks -1)*z_sd*z_sd*z_sd);
841  z_kurt = z_kurt/((number_tracks -1)*z_sd*z_sd*z_sd*z_sd);
842 
843  float ndf = vertex->numberDoF();
844  if (ndf != 0) {
845 
847  if (vertex == bestRecoHSVtx_truth) {
848 
853 
856 
857 
858  for (const float& trkWeight : vertex->trackWeights()) {
860  fillHisto(m_vx_normalised_track_weight_HS_matched, trkWeight/number_tracks,weight);
861  }
862 
863  }
864  else {
865 
870 
873 
874 
875  for (const float& trkWeight : vertex->trackWeights()) {
877  fillHisto(m_vx_normalised_track_weight_matched, trkWeight/number_tracks,weight);
878  }
879  }
880 // fill some histograms that contain both HS and PU above a min pt - say 20GeV
881  if (sumPt > minpt) {
886 
889  for (const float& trkWeight : vertex->trackWeights()) {
892  }
893 
894  }
895  } // end of if matched vertices
896 
898  if (vertex == bestRecoHSVtx_truth) {
899 
904 
907  for (const float& trkWeight : vertex->trackWeights()) {
909  fillHisto(m_vx_normalised_track_weight_HS_merged, trkWeight/number_tracks,weight);
910  }
911 
912 
913 
914  }
915  else {
918  fillHisto(m_vx_z_asym_weighted_merged, weighted_z_asym,weight);
920 
923  for (const float& trkWeight : vertex->trackWeights()) {
925  fillHisto(m_vx_normalised_track_weight_merged, trkWeight/number_tracks,weight);
926  }
927 
928  }
929  if (sumPt > minpt) {
934 
937  for (const float& trkWeight : vertex->trackWeights()) {
939  fillHisto(m_vx_normalised_track_weight_ALL_merged, trkWeight/number_tracks,weight);
940  }
941 
942  }
943  } //end of if merged vertices
944 
946  if (vertex == bestRecoHSVtx_truth) {
951 
954  for (const float& trkWeight : vertex->trackWeights()) {
956  fillHisto(m_vx_normalised_track_weight_HS_split, trkWeight/number_tracks,weight);
957  }
958 
959 
960  }
961  else {
964  fillHisto(m_vx_z_asym_weighted_split, weighted_z_asym,weight);
966 
969  for (const float& trkWeight : vertex->trackWeights()) {
971  fillHisto(m_vx_normalised_track_weight_split, trkWeight/number_tracks,weight);
972  }
973 
974 
975  }
976 
977  if (sumPt > minpt) {
982 
985  for (const float& trkWeight : vertex->trackWeights()) {
987  fillHisto(m_vx_normalised_track_weight_ALL_split, trkWeight/number_tracks,weight);
988  }
989  }
990 
991  } // end of if split vertices
992 
993 // Count the number of vertices for each type per event
994 
995 
997  if (vertex == bestRecoHSVtx_truth) {
998  number_matched_HS++;
999  }
1000  else {
1001  number_matched_PU++;
1002  }
1003  if (sumPt > minpt) {
1004  number_matched++;
1005  }
1006  }
1007 
1009  if (vertex == bestRecoHSVtx_truth) {
1010  number_merged_HS++;
1011  }
1012  else {
1013  number_merged_PU++;
1014  }
1015  if (sumPt > minpt) {
1016  number_merged++;
1017  }
1018  }
1019 
1021  if (vertex == bestRecoHSVtx_truth) {
1022  number_split_HS++;
1023  }
1024  else {
1025  number_split_PU++;
1026  }
1027  if (sumPt > minpt) {
1028  number_split++;
1029  }
1030  }
1031 
1032  else if (matchType == InDetVertexTruthMatchUtils::VertexMatchType::FAKE) {
1033  if (vertex == bestRecoHSVtx_truth) {
1034  number_fake_HS++;
1035  }
1036  else {
1037  number_fake_PU++;
1038  }
1039  if (sumPt > minpt) {
1040  number_fake++;
1041  }
1042  }
1043  } // end of if (ndf != 0)
1044 
1045 
1046 
1047 // New histos to check for number of tracks for each vertex type
1048  for (const auto& vertex : vertexContainer.stdcont()) {
1049  if (vertex == bestRecoHSVtx_truth) {
1050 
1051 
1053 
1054  fillHisto(m_vx_ntracks_HS_matched, vertex->nTrackParticles(),weight);
1055  }
1056 
1058  fillHisto(m_vx_ntracks_HS_merged, vertex->nTrackParticles(),weight);
1059 
1060  }
1061 
1063  fillHisto(m_vx_ntracks_HS_split, vertex->nTrackParticles(),weight);
1064  }
1065  }
1066  else {
1067 
1068 
1070 
1071  fillHisto(m_vx_ntracks_matched, vertex->nTrackParticles(),weight);
1072  }
1073 
1075  fillHisto(m_vx_ntracks_merged, vertex->nTrackParticles(),weight);
1076 
1077  }
1078 
1080  fillHisto(m_vx_ntracks_split, vertex->nTrackParticles(),weight);
1081  }
1082 
1083  }
1084  if (sumPt > minpt) {
1086 
1087  fillHisto(m_vx_ntracks_ALL_matched, vertex->nTrackParticles(),weight);
1088  }
1089 
1091  fillHisto(m_vx_ntracks_ALL_merged, vertex->nTrackParticles(),weight);
1092 
1093  }
1094 
1096  fillHisto(m_vx_ntracks_ALL_split, vertex->nTrackParticles(),weight);
1097  }
1098 
1099  }
1100 
1101  }
1102 
1103 // delta z between HS and nearby vertices
1104  float absd_hs_dz = std::abs(bestRecoHSVtx_truth->z() - vertex->z());
1105  if(bestRecoHSVtx_truth != vertex && absd_hs_dz < min_fabs_dz) {
1106  min_fabs_dz = absd_hs_dz;
1107  vx_hs_mindz = bestRecoHSVtx_truth->z() - vertex->z();
1108  }
1109 // loop over vertices again for dz of every vertices pair
1110  for (const auto& vertex2 : vertexContainer.stdcont()) {
1111  if (vertex2->vertexType() == xAOD::VxType::NoVtx) continue;
1112  if(vertex2 == vertex) continue;
1113  fillHisto(m_vx_all_dz, vertex->z() - vertex2->z(), 0.5*weight);
1114  }
1115 
1116  } // end loop over vertices
1117 
1118 // new histos to count number of vertices per event
1119  fillHisto(m_vx_nVertices_ALL_matched, number_matched,weight);
1120  fillHisto(m_vx_nVertices_ALL_merged, number_merged,weight);
1121  fillHisto(m_vx_nVertices_ALL_split, number_split,weight);
1123  fillHisto(m_vx_nVertices_HS_matched, number_matched_HS,weight);
1124  fillHisto(m_vx_nVertices_HS_merged, number_merged_HS,weight);
1125  fillHisto(m_vx_nVertices_HS_split, number_split_HS,weight);
1126  fillHisto(m_vx_nVertices_HS_fake, number_fake_HS,weight);
1127  fillHisto(m_vx_nVertices_matched, number_matched_PU,weight);
1128  fillHisto(m_vx_nVertices_merged, number_merged_PU,weight);
1129  fillHisto(m_vx_nVertices_split, number_split_PU,weight);
1130  fillHisto(m_vx_nVertices_fake, number_fake_PU,weight);
1131 
1132 // new histo to delta z between HS and the closest one
1133  fillHisto(m_vx_hs_mindz, vx_hs_mindz, weight);
1134 
1135  // Now fill plots relating to the reconstruction of our truth HS vertex (efficiency and resolutions)
1136  if (!truthHSVertices.empty()) {
1137  if (truthHSVtxRecoed) {
1138  float residual_z = truthHSVtx->z() - bestRecoHSVtx_truth->z();
1139  float residual_r = std::sqrt(std::pow(truthHSVtx->x() - bestRecoHSVtx_truth->x(), 2) + std::pow(truthHSVtx->y() - bestRecoHSVtx_truth->y(), 2));
1140  float residual_x = truthHSVtx->x() - bestRecoHSVtx_truth->x();
1141  float residual_y = truthHSVtx->y() - bestRecoHSVtx_truth->y();
1142  fillHisto(m_vx_hs_reco_eff, localPUDensity, 1, weight);
1143  fillHisto(m_vx_hs_reco_sel_eff, localPUDensity, (recoHardScatter == bestRecoHSVtx_truth), weight);
1144  fillHisto(m_vx_hs_reco_eff_vs_ntruth, nTruthVertices, 1, weight);
1145  fillHisto(m_vx_hs_reco_sel_eff_vs_ntruth, nTruthVertices, (recoHardScatter == bestRecoHSVtx_truth), weight);
1146  fillHisto(m_vx_hs_reco_long_reso, localPUDensity, getRecoLongitudinalReso(bestRecoHSVtx_truth), weight);
1147  fillHisto(m_vx_hs_reco_trans_reso, localPUDensity, getRecoTransverseReso(bestRecoHSVtx_truth), weight);
1148 
1149  fillHisto(m_resHelper_PUdensity_hsVxTruthLong, localPUDensity, residual_z, weight);
1150  fillHisto(m_resHelper_PUdensity_hsVxTruthTransv, localPUDensity, residual_r, weight);
1151 
1152  const AmgSymMatrix(3)& covariance = bestRecoHSVtx_truth->covariancePosition();
1153  float vtxerr_x = Amg::error(covariance, 0);
1154  float vtxerr_y = Amg::error(covariance, 1);
1155  float vtxerr_z = Amg::error(covariance, 2);
1156 
1157  if(fabs(vtxerr_z) > 1e-7) fillHisto(m_vx_hs_z_pull, residual_z/vtxerr_z, weight);
1158  if(fabs(vtxerr_y) > 1e-7) fillHisto(m_vx_hs_y_pull, residual_y/vtxerr_y, weight);
1159  if(fabs(vtxerr_x) > 1e-7) fillHisto(m_vx_hs_x_pull, residual_x/vtxerr_x, weight);
1160 
1161  fillHisto(m_vx_hs_truth_z_res_vs_PU, localPUDensity, residual_z, weight);
1162  fillHisto(m_vx_hs_truth_x_res_vs_PU, localPUDensity, residual_x, weight);
1163  fillHisto(m_vx_hs_truth_y_res_vs_PU, localPUDensity, residual_y, weight);
1164 
1165  fillHisto(m_vx_hs_z_res, residual_z, weight);
1166  fillHisto(m_vx_hs_y_res, residual_y, weight);
1167  fillHisto(m_vx_hs_x_res, residual_x, weight);
1168 
1169  fillHisto(m_vx_hs_truth_z_pull_vs_PU, localPUDensity, residual_z/vtxerr_z, weight);
1170  fillHisto(m_vx_hs_truth_x_pull_vs_PU, localPUDensity, residual_x/vtxerr_x, weight);
1171  fillHisto(m_vx_hs_truth_y_pull_vs_PU, localPUDensity, residual_y/vtxerr_y, weight);
1172 
1173  fillHisto(m_vx_hs_truth_z_res_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_z, weight);
1174  fillHisto(m_vx_hs_truth_x_res_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_x, weight);
1175  fillHisto(m_vx_hs_truth_y_res_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_y, weight);
1176 
1177  fillHisto(m_vx_hs_truth_z_pull_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_z/vtxerr_z, weight);
1178  fillHisto(m_vx_hs_truth_x_pull_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_x/vtxerr_x, weight);
1179  fillHisto(m_vx_hs_truth_y_pull_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_y/vtxerr_y, weight);
1180 
1181  }
1182  else {
1183  fillHisto(m_vx_hs_reco_eff, localPUDensity, 0, weight);
1184  fillHisto(m_vx_hs_reco_eff_vs_ntruth, nTruthVertices, 0, weight);
1185  }
1186  }
1187 
1193 
1194  // And by hardscatter type:
1197  switch (hsType) {
1199  fillHisto(m_vx_nReco_vs_nTruth_clean, nTruthVertices, nRecoVertices, weight);
1200  break;
1201  }
1203  fillHisto(m_vx_nReco_vs_nTruth_lowpu, nTruthVertices, nRecoVertices, weight);
1204  break;
1205  }
1207  fillHisto(m_vx_nReco_vs_nTruth_highpu, nTruthVertices, nRecoVertices, weight);
1208  break;
1209  }
1211  fillHisto(m_vx_nReco_vs_nTruth_hssplit, nTruthVertices, nRecoVertices, weight);
1212  break;
1213  }
1215  fillHisto(m_vx_nReco_vs_nTruth_none, nTruthVertices, nRecoVertices, weight);
1216  break;
1217  }
1218  default: {
1219  break;
1220  }
1221  } // End of switch
1222  } // end of EXpert plots - (if (m_detailLevel >= 200))
1223 
1224 } // end InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertexContainer, const std::vector<const xAOD::TruthVertex*>& truthHSVertices, const std::vector<const xAOD::TruthVertex*>& truthPUVertices)
1225 
1226 
1228 
1229  if (m_detailLevel >= 200) {
1230 
1233  }
1234 
1235 } // end InDetPerfPlot_VertexTruthMatching::finalizePlots()
InDetVertexTruthMatchUtils::DUMMY
@ DUMMY
Definition: InDetVertexTruthMatchUtils.h:25
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_merged
TH1 * m_vx_chi2Over_ndf_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:190
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_matched
TH1 * m_vx_z0_kurtosis_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:202
IDPVM
Class to retrieve associated truth from a track, implementing a cached response.
Definition: InDetPhysValMonitoringTool.h:55
NONE
@ NONE
Definition: sTGCenumeration.h:13
covarianceTool.ndf
ndf
Definition: covarianceTool.py:678
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_HS_split
TH1 * m_vx_chi2Over_ndf_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:194
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
InDetVertexTruthMatchUtils::LOWPU
@ LOWPU
Definition: InDetVertexTruthMatchUtils.h:32
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_ALL_matched
TH1 * m_vx_track_weight_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:220
InDetPerfPlot_VertexTruthMatching::m_resolution_vs_PUdensity_hsVxTruthTransv
TH1 * m_resolution_vs_PUdensity_hsVxTruthTransv
Definition: InDetPerfPlot_VertexTruthMatching.h:100
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_HS_split
TH1 * m_vx_z0_skewness_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:201
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_split
TH1 * m_vx_z0_kurtosis_split
Definition: InDetPerfPlot_VertexTruthMatching.h:204
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_HS_merged
TH1 * m_vx_z0_kurtosis_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:206
xAOD::Vertex_v1::x
float x() const
Returns the x position.
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_HS_split
TH1 * m_vx_track_weight_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:180
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_HS_merged
TH1 * m_vx_z_asym_weighted_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:172
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_HS_split
TH1 * m_vx_z0_kurtosis_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:207
InDetPerfPlot_VertexTruthMatching::m_vx_hs_classification
TH1 * m_vx_hs_classification
hardscatter classification
Definition: InDetPerfPlot_VertexTruthMatching.h:59
InDetPerfPlot_VertexTruthMatching::m_vx_all_y_pull
TH1 * m_vx_all_y_pull
Definition: InDetPerfPlot_VertexTruthMatching.h:108
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_z_res_vs_nTrk
TH2 * m_vx_hs_truth_z_res_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:139
InDetPerfPlot_VertexTruthMatching::m_vx_all_x_pull
TH1 * m_vx_all_x_pull
Definition: InDetPerfPlot_VertexTruthMatching.h:109
InDetPerfPlot_VertexTruthMatching::m_resolution_vs_PUdensity_hsVxTruthLong
TH1 * m_resolution_vs_PUdensity_hsVxTruthLong
Definition: InDetPerfPlot_VertexTruthMatching.h:97
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_HS_matched
TH1 * m_vx_z0_skewness_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:199
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_y_res_vs_nTrk
TH2 * m_vx_all_truth_y_res_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:127
mean
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Definition: dependence.cxx:254
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_HS_merged
TH1 * m_vx_z_asym_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:166
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_matched
TProfile * m_vx_nReco_vs_nTruth_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:62
xAOD::Vertex_v1::nTrackParticles
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
Definition: Vertex_v1.cxx:270
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_ALL_merged
TH1 * m_vx_z0_kurtosis_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:235
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_matched
TH1 * m_vx_z0_skewness_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:196
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_z_res_vs_PU
TH2 * m_vx_all_truth_z_res_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:118
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_x_res_vs_nTrk
TH2 * m_vx_hs_truth_x_res_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:140
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
InDetPlotBase::book
void book(Htype *&pHisto, const std::string &histoIdentifier, const std::string &nameOverride="", const std::string &folder="default")
Helper method to book histograms using an identifier string.
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_y_pull_vs_nTrk
TH2 * m_vx_hs_truth_y_pull_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:144
InDetPerfPlot_VertexTruthMatching::getRadialDiff2
float getRadialDiff2(const U *vtx1, const V *vtx2) const
Definition: InDetPerfPlot_VertexTruthMatching.cxx:436
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
InDetPerfPlot_VertexTruthMatching::getLocalPUDensity
float getLocalPUDensity(const xAOD::TruthVertex *vtxOfInterest, const std::vector< const xAOD::TruthVertex * > &truthHSVertices, const std::vector< const xAOD::TruthVertex * > &truthPUVertices, const float radialWindow=2.0) const
Definition: InDetPerfPlot_VertexTruthMatching.cxx:440
InDetVertexTruthMatchUtils::bestHardScatterMatch
const xAOD::Vertex * bestHardScatterMatch(const xAOD::VertexContainer &vxContainer)
Definition: InDetVertexTruthMatchUtils.cxx:20
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
InDetPerfPlot_VertexTruthMatching::m_cutMinTruthRecoRadialDiff
float m_cutMinTruthRecoRadialDiff
Definition: InDetPerfPlot_VertexTruthMatching.h:48
InDetPerfPlot_VertexTruthMatching::m_vx_hs_x_pull
TH1 * m_vx_hs_x_pull
Definition: InDetPerfPlot_VertexTruthMatching.h:106
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_ALL_matched
TH1 * m_vx_nVertices_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:238
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_highpu
TProfile * m_vx_nReco_vs_nTruth_highpu
Definition: InDetPerfPlot_VertexTruthMatching.h:69
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_ALL_matched
TH1 * m_vx_z_asym_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:214
python.copyTCTOutput.sDir
sDir
Definition: copyTCTOutput.py:60
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_ALL_matched
TH1 * m_vx_ntracks_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:152
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_matched
TH1 * m_vx_track_weight_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:175
InDetPerfPlot_VertexTruthMatching::m_vx_hs_sel_eff_dist_vs_nReco
TEfficiency * m_vx_hs_sel_eff_dist_vs_nReco
Definition: InDetPerfPlot_VertexTruthMatching.h:85
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_HS_matched
TH1 * m_vx_normalised_track_weight_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:185
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_clean
TProfile * m_vx_nReco_vs_nTruth_clean
Definition: InDetPerfPlot_VertexTruthMatching.h:67
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_split
TH1 * m_vx_z_asym_weighted_split
Definition: InDetPerfPlot_VertexTruthMatching.h:170
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_split
TH1 * m_vx_z_asym_split
Definition: InDetPerfPlot_VertexTruthMatching.h:164
EventPrimitivesHelpers.h
InDetPerfPlot_VertexTruthMatching::m_vx_hs_y_res
TH1 * m_vx_hs_y_res
Definition: InDetPerfPlot_VertexTruthMatching.h:112
InDetPerfPlot_VertexTruthMatching::m_vx_all_dz
TH1 * m_vx_all_dz
Definition: InDetPerfPlot_VertexTruthMatching.h:252
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_merged
TH1 * m_vx_normalised_track_weight_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:183
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_ALL_split
TH1 * m_vx_z_asym_weighted_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:219
InDetVertexTruthMatchUtils::classifyHardScatter
HardScatterType classifyHardScatter(const xAOD::VertexContainer &vxContainer)
Definition: InDetVertexTruthMatchUtils.cxx:70
InDetPerfPlot_VertexTruthMatching::m_vx_z_diff
TH1 * m_vx_z_diff
Definition: InDetPerfPlot_VertexTruthMatching.h:51
InDetPerfPlot_VertexTruthMatching::m_vx_time_diff
TH1 * m_vx_time_diff
vertex time
Definition: InDetPerfPlot_VertexTruthMatching.h:55
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_x_pull_vs_PU
TH2 * m_vx_hs_truth_x_pull_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:136
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_z_pull_vs_PU
TH2 * m_vx_all_truth_z_pull_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:121
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_z_pull_vs_nTrk
TH2 * m_vx_hs_truth_z_pull_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:142
xAOD::TrackParticle_v1::z0
float z0() const
Returns the parameter.
InDetPerfPlot_VertexTruthMatching::m_vx_hs_reco_eff
TEfficiency * m_vx_hs_reco_eff
Definition: InDetPerfPlot_VertexTruthMatching.h:73
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_HS_matched
TH1 * m_vx_nVertices_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:242
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_x_res_vs_PU
TH2 * m_vx_hs_truth_x_res_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:133
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_y_pull_vs_nTrk
TH2 * m_vx_all_truth_y_pull_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:130
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_HS_split
TH1 * m_vx_sumpT_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:160
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_matched
TH1 * m_vx_sumpT_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:155
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_ALL_merged
TH1 * m_vx_ntracks_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:153
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_ALL_matched
TH1 * m_vx_normalised_track_weight_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:223
InDetPerfPlot_VertexTruthMatching::m_vx_hs_reco_trans_reso
TProfile * m_vx_hs_reco_trans_reso
Definition: InDetPerfPlot_VertexTruthMatching.h:94
InDetPerfPlot_VertexTruthMatching::m_vx_nTruth
TH1 * m_vx_nTruth
Definition: InDetPerfPlot_VertexTruthMatching.h:256
InDetVertexTruthMatchUtils::MATCHED
@ MATCHED
Definition: InDetVertexTruthMatchUtils.h:21
InDetPerfPlot_VertexTruthMatching::m_vx_hs_reco_eff_vs_ntruth
TEfficiency * m_vx_hs_reco_eff_vs_ntruth
Definition: InDetPerfPlot_VertexTruthMatching.h:87
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_split
TH1 * m_vx_chi2Over_ndf_split
Definition: InDetPerfPlot_VertexTruthMatching.h:191
InDetPerfPlot_VertexTruthMatching::m_vx_hs_sel_eff_vs_ntruth
TEfficiency * m_vx_hs_sel_eff_vs_ntruth
Definition: InDetPerfPlot_VertexTruthMatching.h:89
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_merged
TH1 * m_vx_z_asym_weighted_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:169
x
#define x
xAOD::VxType::NoVtx
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
Definition: TrackingPrimitives.h:570
InDetPerfPlot_VertexTruthMatching.h
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_merged
TH1 * m_vx_sumpT_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:156
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:50
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_HS_matched
TH1 * m_vx_chi2Over_ndf_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:192
xAOD::TruthVertex_v1::y
float y() const
Vertex y displacement.
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_x_pull_vs_nTrk
TH2 * m_vx_hs_truth_x_pull_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:143
xAOD::TruthVertex_v1::t
float t() const
Vertex time.
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_x_pull_vs_nTrk
TH2 * m_vx_all_truth_x_pull_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:129
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_y_res_vs_PU
TH2 * m_vx_hs_truth_y_res_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:134
InDetPerfPlot_VertexTruthMatching::m_vx_nTruth_vs_PUdensity
TH2 * m_vx_nTruth_vs_PUdensity
Definition: InDetPerfPlot_VertexTruthMatching.h:257
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_ALL_merged
TH1 * m_vx_track_weight_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:221
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:189
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_HS_merged
TH1 * m_vx_z0_skewness_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:200
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_split
TH1 * m_vx_z0_skewness_split
Definition: InDetPerfPlot_VertexTruthMatching.h:198
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_merged
TH1 * m_vx_z0_skewness_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:197
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_HS_fake
TH1 * m_vx_nVertices_HS_fake
Definition: InDetPerfPlot_VertexTruthMatching.h:245
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_ALL_matched
TH1 * m_vx_z0_skewness_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:231
InDetPerfPlot_VertexTruthMatching::m_vx_all_x_res
TH1 * m_vx_all_x_res
Definition: InDetPerfPlot_VertexTruthMatching.h:116
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_matched
TH1 * m_vx_normalised_track_weight_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:182
InDetVertexTruthMatchUtils::CLEAN
@ CLEAN
Definition: InDetVertexTruthMatchUtils.h:31
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_dummy
TProfile * m_vx_nReco_vs_nTruth_dummy
Definition: InDetPerfPlot_VertexTruthMatching.h:66
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_ALL_merged
TH1 * m_vx_z_asym_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:215
InDetVertexTruthMatchUtils::HSSPLIT
@ HSSPLIT
Definition: InDetVertexTruthMatchUtils.h:34
InDetPlotBase
Mixin class to give extra capabilities to plots such as ATH_MSG and an easier booking interface,...
Definition: InDetPlotBase.h:33
InDetPerfPlot_VertexTruthMatching::m_vx_hs_x_res
TH1 * m_vx_hs_x_res
Definition: InDetPerfPlot_VertexTruthMatching.h:113
InDetPerfPlot_VertexTruthMatching::InDetPerfPlot_VertexTruthMatching
InDetPerfPlot_VertexTruthMatching(InDetPlotBase *pParent, const std::string &dirName, const int detailLevel=10)
Definition: InDetPerfPlot_VertexTruthMatching.cxx:21
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_HS_matched
TH1 * m_vx_z0_kurtosis_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:205
InDetPerfPlot_VertexTruthMatching::m_vx_hs_mindz
TH1 * m_vx_hs_mindz
Definition: InDetPerfPlot_VertexTruthMatching.h:253
InDetPerfPlot_VertexTruthMatching::m_vx_type_truth
TH1 * m_vx_type_truth
truth type
Definition: InDetPerfPlot_VertexTruthMatching.h:50
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_lowpu
TProfile * m_vx_nReco_vs_nTruth_lowpu
Definition: InDetPerfPlot_VertexTruthMatching.h:68
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_ALL_split
TH1 * m_vx_nVertices_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:240
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_ALL_matched
TH1 * m_vx_z_asym_weighted_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:217
SG::ExcBadAuxVar
Exception — Attempt to retrieve nonexistent aux data item.
Definition: Control/AthContainers/AthContainers/exceptions.h:59
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:59
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_ALL_split
TH1 * m_vx_z0_kurtosis_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:236
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_HS_merged
TH1 * m_vx_nVertices_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:243
lumiFormat.i
int i
Definition: lumiFormat.py:85
InDetPerfPlot_VertexTruthMatching::m_detailLevel
int m_detailLevel
Definition: InDetPerfPlot_VertexTruthMatching.h:47
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_HS_merged
TH1 * m_vx_normalised_track_weight_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:186
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_matched
TH1 * m_vx_chi2Over_ndf_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:189
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_y_res_vs_PU
TH2 * m_vx_all_truth_y_res_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:120
InDetVertexTruthMatchUtils::HIGHPU
@ HIGHPU
Definition: InDetVertexTruthMatchUtils.h:33
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_HS_merged
TH1 * m_vx_track_weight_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:179
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_inclusive
TProfile * m_vx_nReco_vs_nTruth_inclusive
vertex reco efficiency
Definition: InDetPerfPlot_VertexTruthMatching.h:61
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_ALL_matched
TH1 * m_vx_chi2Over_ndf_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:227
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_matched
TH1 * m_vx_nVertices_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:246
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_HS_split
TH1 * m_vx_normalised_track_weight_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:187
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_HS_merged
TH1 * m_vx_chi2Over_ndf_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:193
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_split
TH1 * m_vx_nVertices_split
Definition: InDetPerfPlot_VertexTruthMatching.h:248
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_ALL_merged
TH1 * m_vx_z_asym_weighted_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:218
InDetPerfPlot_VertexTruthMatching::m_resmean_vs_PUdensity_hsVxTruthLong
TH1 * m_resmean_vs_PUdensity_hsVxTruthLong
Definition: InDetPerfPlot_VertexTruthMatching.h:98
InDetPerfPlot_VertexTruthMatching::finalizePlots
void finalizePlots()
Definition: InDetPerfPlot_VertexTruthMatching.cxx:1227
xAOD::TruthEvent_v1
Class describing a signal truth event in the MC record.
Definition: TruthEvent_v1.h:35
InDetPerfPlot_VertexTruthMatching::getHSRecoVertexSumPt2
static const xAOD::Vertex * getHSRecoVertexSumPt2(const xAOD::VertexContainer &recoVertices)
Definition: InDetPerfPlot_VertexTruthMatching.cxx:411
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_HS_matched
TH1 * m_vx_track_weight_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:178
InDetVertexTruthMatchUtils::VertexTruthMatchInfo
std::tuple< ElementLink< xAOD::TruthEventBaseContainer >, float, float > VertexTruthMatchInfo
Definition: InDetVertexTruthMatchUtils.h:17
InDetPerfPlot_VertexTruthMatching::m_vx_hs_sel_eff_vs_nReco
TEfficiency * m_vx_hs_sel_eff_vs_nReco
Definition: InDetPerfPlot_VertexTruthMatching.h:77
InDetVertexTruthMatchUtils::VertexMatchType
VertexMatchType
Definition: InDetVertexTruthMatchUtils.h:20
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_ALL_fake
TH1 * m_vx_nVertices_ALL_fake
Definition: InDetPerfPlot_VertexTruthMatching.h:241
InDetPerfPlot_VertexTruthMatching::fill
void fill(const xAOD::Vertex &vertex, const xAOD::TruthVertex *tvrt=0, float weight=1.0)
Definition: InDetPerfPlot_VertexTruthMatching.cxx:579
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_x_res_vs_nTrk
TH2 * m_vx_all_truth_x_res_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:126
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_split
TH1 * m_vx_track_weight_split
Definition: InDetPerfPlot_VertexTruthMatching.h:177
xAOD::Vertex_v1::z
float z() const
Returns the z position.
InDetPerfPlot_VertexTruthMatching::m_vx_all_z_res
TH1 * m_vx_all_z_res
Definition: InDetPerfPlot_VertexTruthMatching.h:114
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_HS_matched
TH1 * m_vx_z_asym_weighted_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:171
InDetPerfPlot_VertexTruthMatching::m_vx_hs_reco_long_reso
TProfile * m_vx_hs_reco_long_reso
Definition: InDetPerfPlot_VertexTruthMatching.h:93
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_ALL_split
TH1 * m_vx_z_asym_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:216
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_z_res_vs_PU
TH2 * m_vx_hs_truth_z_res_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:132
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_z_res_vs_nTrk
TH2 * m_vx_all_truth_z_res_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:125
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_ALL_split
TH1 * m_vx_chi2Over_ndf_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:229
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_ALL_split
TH1 * m_vx_ntracks_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:154
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_x_pull_vs_PU
TH2 * m_vx_all_truth_x_pull_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:122
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_x_res_vs_PU
TH2 * m_vx_all_truth_x_res_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:119
TauGNNUtils::Variables::Track::trackPt
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:472
InDetVertexTruthMatchUtils::MERGED
@ MERGED
Definition: InDetVertexTruthMatchUtils.h:22
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_split
TH1 * m_vx_normalised_track_weight_split
Definition: InDetPerfPlot_VertexTruthMatching.h:184
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_split
TH1 * m_vx_ntracks_split
Definition: InDetPerfPlot_VertexTruthMatching.h:148
EventPrimitives.h
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:37
InDetPerfPlot_VertexTruthMatching::m_vx_chi2Over_ndf_ALL_merged
TH1 * m_vx_chi2Over_ndf_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:228
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_merged
TProfile * m_vx_nReco_vs_nTruth_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:63
Amg::error
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
Definition: EventPrimitivesHelpers.h:40
InDetPerfPlot_VertexTruthMatching::m_vx_hs_reco_sel_eff
TEfficiency * m_vx_hs_reco_sel_eff
Definition: InDetPerfPlot_VertexTruthMatching.h:79
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_ALL_split
TH1 * m_vx_sumpT_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:212
InDetPerfPlot_VertexTruthMatching::m_resHelper_PUdensity_hsVxTruthLong
TH2 * m_resHelper_PUdensity_hsVxTruthLong
Definition: InDetPerfPlot_VertexTruthMatching.h:96
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_ALL_merged
TH1 * m_vx_z0_skewness_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:232
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_z_pull_vs_PU
TH2 * m_vx_hs_truth_z_pull_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:135
python.PhysicalConstants.c_light
float c_light
Definition: PhysicalConstants.py:63
internal_poltrig::SPLIT
@ SPLIT
Definition: PolygonTriangulator.cxx:112
InDetPerfPlot_VertexTruthMatching::m_vx_z_diff_pull
TH1 * m_vx_z_diff_pull
Definition: InDetPerfPlot_VertexTruthMatching.h:52
InDetPerfPlot_VertexTruthMatching::m_vx_hs_sel_eff
TEfficiency * m_vx_hs_sel_eff
Definition: InDetPerfPlot_VertexTruthMatching.h:75
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_y_res_vs_nTrk
TH2 * m_vx_hs_truth_y_res_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:141
InDetPerfPlot_VertexTruthMatching::initializePlots
void initializePlots()
Definition: InDetPerfPlot_VertexTruthMatching.cxx:215
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_split
TH1 * m_vx_sumpT_split
Definition: InDetPerfPlot_VertexTruthMatching.h:157
InDetVertexTruthMatchUtils::HardScatterType
HardScatterType
Definition: InDetVertexTruthMatchUtils.h:30
xAOD::TruthVertex_v1::x
float x() const
Vertex x displacement.
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_HS_split
TH1 * m_vx_ntracks_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:151
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_HS_merged
TH1 * m_vx_sumpT_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:159
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_hssplit
TProfile * m_vx_nReco_vs_nTruth_hssplit
Definition: InDetPerfPlot_VertexTruthMatching.h:70
DataVector::stdcont
const PtrVector & stdcont() const
Return the underlying std::vector of the container.
xAOD::TruthEventBase_v1::nTruthVertices
size_t nTruthVertices() const
Get the number of truth vertices.
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_ALL_merged
TH1 * m_vx_nVertices_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:239
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_matched
TH1 * m_vx_ntracks_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:146
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_merged
TH1 * m_vx_ntracks_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:147
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_ALL_merged
TH1 * m_vx_normalised_track_weight_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:224
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_split
TProfile * m_vx_nReco_vs_nTruth_split
Definition: InDetPerfPlot_VertexTruthMatching.h:64
y
#define y
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_HS_split
TH1 * m_vx_z_asym_weighted_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:173
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_none
TProfile * m_vx_nReco_vs_nTruth_none
Definition: InDetPerfPlot_VertexTruthMatching.h:71
SG::Decorator::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_ALL_matched
TH1 * m_vx_z0_kurtosis_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:234
xAOD::TruthVertex_v1::z
float z() const
Vertex longitudinal distance along the beam line form the origin.
xAOD::Vertex_v1::y
float y() const
Returns the y position.
InDetPerfPlot_VertexTruthMatching::m_vx_nReco_vs_nTruth_fake
TProfile * m_vx_nReco_vs_nTruth_fake
Definition: InDetPerfPlot_VertexTruthMatching.h:65
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_HS_matched
TH1 * m_vx_z_asym_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:165
beamspotnt.rms
rms
Definition: bin/beamspotnt.py:1266
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_merged
TH1 * m_vx_z_asym_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:163
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_z_pull_vs_nTrk
TH2 * m_vx_all_truth_z_pull_vs_nTrk
Definition: InDetPerfPlot_VertexTruthMatching.h:128
InDetPerfPlot_VertexTruthMatching::m_resHelper_PUdensity_hsVxTruthTransv
TH2 * m_resHelper_PUdensity_hsVxTruthTransv
Definition: InDetPerfPlot_VertexTruthMatching.h:99
InDetPerfPlot_VertexTruthMatching::m_vx_all_y_res
TH1 * m_vx_all_y_res
Definition: InDetPerfPlot_VertexTruthMatching.h:115
InDetPerfPlot_VertexTruthMatching::m_vx_hs_z_pull
TH1 * m_vx_hs_z_pull
Definition: InDetPerfPlot_VertexTruthMatching.h:104
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_fake
TH1 * m_vx_nVertices_fake
Definition: InDetPerfPlot_VertexTruthMatching.h:249
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_HS_merged
TH1 * m_vx_ntracks_HS_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:150
SG::ConstAccessor< T, AuxAllocator_t< T > >::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
InDetVertexTruthMatchUtils::FAKE
@ FAKE
Definition: InDetVertexTruthMatchUtils.h:24
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_merged
TH1 * m_vx_track_weight_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:176
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_merged
TH1 * m_vx_nVertices_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:247
InDetPerfPlot_VertexTruthMatching::m_vx_nVertices_HS_split
TH1 * m_vx_nVertices_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:244
InDetPerfPlot_VertexTruthMatching::m_vx_hs_reco_sel_eff_vs_ntruth
TEfficiency * m_vx_hs_reco_sel_eff_vs_ntruth
Definition: InDetPerfPlot_VertexTruthMatching.h:91
InDetPerfPlot_VertexTruthMatching::m_vx_hs_z_res
TH1 * m_vx_hs_z_res
Definition: InDetPerfPlot_VertexTruthMatching.h:111
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_HS_split
TH1 * m_vx_z_asym_HS_split
Definition: InDetPerfPlot_VertexTruthMatching.h:167
InDetPerfPlot_VertexTruthMatching::m_vx_hs_y_pull
TH1 * m_vx_hs_y_pull
Definition: InDetPerfPlot_VertexTruthMatching.h:105
InDetPerfPlot_VertexTruthMatching::m_vx_hs_sel_eff_dist
TEfficiency * m_vx_hs_sel_eff_dist
Definition: InDetPerfPlot_VertexTruthMatching.h:81
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
InDetPerfPlot_nTracks.h
InDetPerfPlot_VertexTruthMatching::m_vx_track_weight_ALL_split
TH1 * m_vx_track_weight_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:222
InDetPerfPlot_VertexTruthMatching::m_vx_hs_truth_y_pull_vs_PU
TH2 * m_vx_hs_truth_y_pull_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:137
InDetPerfPlot_VertexTruthMatching::m_vx_hs_sel_eff_mu
TEfficiency * m_vx_hs_sel_eff_mu
Definition: InDetPerfPlot_VertexTruthMatching.h:83
InDetPerfPlot_VertexTruthMatching::m_vx_all_truth_y_pull_vs_PU
TH2 * m_vx_all_truth_y_pull_vs_PU
Definition: InDetPerfPlot_VertexTruthMatching.h:123
InDetPerfPlot_VertexTruthMatching::getRecoLongitudinalReso
static float getRecoLongitudinalReso(const xAOD::Vertex *recoVtx)
Definition: InDetPerfPlot_VertexTruthMatching.cxx:465
InDetPerfPlot_Vertex.h
makeComparison.deltaZ
int deltaZ
Definition: makeComparison.py:46
InDetPerfPlot_VertexTruthMatching::m_vx_all_z_pull
TH1 * m_vx_all_z_pull
Definition: InDetPerfPlot_VertexTruthMatching.h:107
InDetPlotBase::fillHisto
static void fillHisto(TProfile *pTprofile, const float bin, const float weight, const float weight2=1.0)
Definition: InDetPlotBase.cxx:82
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_ALL_merged
TH1 * m_vx_sumpT_ALL_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:211
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_ALL_matched
TH1 * m_vx_sumpT_ALL_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:210
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
InDetPerfPlot_VertexTruthMatching::getRecoTransverseReso
static float getRecoTransverseReso(const xAOD::Vertex *recoVtx)
Definition: InDetPerfPlot_VertexTruthMatching.cxx:469
InDetPerfPlot_VertexTruthMatching::m_vx_PUdensity
TH1 * m_vx_PUdensity
Definition: InDetPerfPlot_VertexTruthMatching.h:255
InDetPerfPlot_VertexTruthMatching::m_vx_z0_kurtosis_merged
TH1 * m_vx_z0_kurtosis_merged
Definition: InDetPerfPlot_VertexTruthMatching.h:203
InDetPerfPlot_VertexTruthMatching::m_vx_z0_skewness_ALL_split
TH1 * m_vx_z0_skewness_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:233
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
xAOD::TruthEventBase_v1::truthVertex
const TruthVertex * truthVertex(size_t index) const
Get a pointer to one of the truth vertices.
Definition: TruthEventBase_v1.cxx:112
readCCLHist.float
float
Definition: readCCLHist.py:83
InDetPerfPlot_VertexTruthMatching::m_vx_normalised_track_weight_ALL_split
TH1 * m_vx_normalised_track_weight_ALL_split
Definition: InDetPerfPlot_VertexTruthMatching.h:225
InDetPerfPlot_VertexTruthMatching::m_vx_time_diff_pull
TH1 * m_vx_time_diff_pull
Definition: InDetPerfPlot_VertexTruthMatching.h:56
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_matched
TH1 * m_vx_z_asym_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:162
InDetPerfPlot_VertexTruthMatching::m_vx_z_asym_weighted_matched
TH1 * m_vx_z_asym_weighted_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:168
InDetPerfPlot_VertexTruthMatching::fillResoHist
static void fillResoHist(TH1 *resoHist, const TH2 *resoHist2D)
Definition: InDetPerfPlot_VertexTruthMatching.cxx:480
InDetPerfPlot_VertexTruthMatching::m_vx_ntracks_HS_matched
TH1 * m_vx_ntracks_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:149
InDetPerfPlot_VertexTruthMatching::m_resmean_vs_PUdensity_hsVxTruthTransv
TH1 * m_resmean_vs_PUdensity_hsVxTruthTransv
Definition: InDetPerfPlot_VertexTruthMatching.h:101
InDetPerfPlot_VertexTruthMatching::getTruthVertex
const xAOD::TruthVertex * getTruthVertex(const xAOD::Vertex *recoVtx) const
Definition: InDetPerfPlot_VertexTruthMatching.cxx:542
InDetPerfPlot_VertexTruthMatching::m_vx_sumpT_HS_matched
TH1 * m_vx_sumpT_HS_matched
Definition: InDetPerfPlot_VertexTruthMatching.h:158