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