From ec196fa0ec2c61e1e431836b8af9d78f427bbf75 Mon Sep 17 00:00:00 2001 From: Helen Maguire <helen.maguire@cern.ch> Date: Wed, 2 Jun 2021 17:37:00 +0200 Subject: [PATCH] 2June added num vertices, track weight and normalised track weight --- .../share/InDetPVMPlotDefCommon.xml | 634 ++++++++++++++- .../src/InDetPerfPlot_VertexTruthMatching.cxx | 762 +++++++++++++++++- .../src/InDetPerfPlot_VertexTruthMatching.h | 160 ++++ 3 files changed, 1496 insertions(+), 60 deletions(-) diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml index a26dc53fcd58..09df1ba9928d 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml @@ -994,27 +994,27 @@ <y title="Number of Tracks" /> </h> <h id="vx_ntracks_vs_HS_nsplitvertices" type="TH1" title="Number of tracks for split HS vertices"> - <x title="Number of Split HS Vertices" n="150" lo="0.0" hi="50"/> + <x title="Number of Matched HS Vertices" n="150" lo="0.0" hi="150"/> <y title="Number of Tracks" /> </h> <h id="vx_ntracks_vs_HS_nfakevertices" type="TH1" title="Number of tracks for fake HS vertices"> - <x title="Number of Fake HS Vertices" n="150" lo="0.0" hi="50"/> + <x title="Number of Matched HS Vertices" n="150" lo="0.0" hi="150"/> <y title="Number of Tracks" /> </h> <h id="vx_sumpT_matched" type="TH1" title="SumPt of tracks for matched vertices"> - <x title="sum p_{T} (GeV)of tracks" n="100" lo="0.0" hi="400"/> + <x title="sum p_{T} (GeV)of tracks" n="100" lo="0.0" hi="150"/> <y title="Entries" /> </h> <h id="vx_sumpT_merged" type="TH1" title="SumPt of tracks for merged vertices"> - <x title="sum p_{T} (GeV)of tracks" n="100" lo="0.0" hi="400"/> + <x title="sum p_{T} (GeV)of tracks" n="100" lo="0.0" hi="150"/> <y title="Entries" /> </h> <h id="vx_sumpT_split" type="TH1" title="SumPt of tracks for split vertices"> - <x title="sum p_{T} (GeV)of tracks" n="100" lo="0.0" hi="400"/> + <x title="sum p_{T} (GeV)of tracks" n="100" lo="0.0" hi="150"/> <y title="Entries" /> </h> <h id="vx_sumpT_fake" type="TH1" title="SumPt of tracks for fake vertices"> - <x title="sum p_{T} (GeV)of tracks" n="100" lo="0.0" hi="400"/> + <x title="sum p_{T} (GeV)of tracks" n="100" lo="0.0" hi="150"/> <y title="Entries" /> </h> <h id="vx_sumpT_HS_matched" type="TH1" title="SumPt of tracks for HS matched vertices"> @@ -1036,51 +1036,51 @@ <!--Helen OTP sum charge plots --> <h id="vx_sumCharge_matched" type="TH1" title="Sum of charges of tracks for matched vertices"> - <x title="sum of charges of tracks" n="100" lo="-25.0" hi="25"/> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> <y title="Entries" /> </h> <h id="vx_sumCharge_merged" type="TH1" title="Sum of charges of tracks for merged vertices"> - <x title="sum of charges of tracks" n="100" lo="-25.0" hi="25"/> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> <y title="Entries" /> </h> <h id="vx_sumCharge_split" type="TH1" title="Sumof charges of tracks for split vertices"> - <x title="sum of charges of tracks" n="100" lo="-25.0" hi="25"/> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> <y title="Entries" /> </h> <h id="vx_sumCharge_fake" type="TH1" title="Sum of charges of tracks for fake vertices"> - <x title="sum of charges of tracks" n="100" lo="-25.0" hi="25"/> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> <y title="Entries" /> </h> <h id="vx_sumCharge_HS_matched" type="TH1" title="Sum of charges of tracks for HS matched vertices"> - <x title="sum of charges of tracks" n="100" lo="-25.0" hi="25"/> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> <y title="Entries" /> </h> <h id="vx_sumCharge_HS_merged" type="TH1" title="Sum of charges of tracks for HS merged vertices"> - <x title="sum of charges of tracks" n="100" lo="-25.0" hi="25"/> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> <y title="Entries" /> </h> <h id="vx_sumCharge_HS_split" type="TH1" title="Sumof charges of tracks for HS split vertices"> - <x title="sum of charges of tracks" n="100" lo="-25.0" hi="25"/> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> <y title="Entries" /> </h> <h id="vx_sumCharge_HS_fake" type="TH1" title="Sum of charges of tracks for HS fake vertices"> - <x title="sum of charges of tracks" n="100" lo="-25.0" hi="25"/> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> <y title="Entries" /> </h> <h id="vx_sumCharge_N_trk_HS_matched" type="TH1" title="Sum of charges of tracks/N_trk for HS matched vertices"> - <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.5" hi="0.5"/> + <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.4" hi="0.4"/> <y title="Entries" /> </h> <h id="vx_sumCharge_N_trk_HS_merged" type="TH1" title="Sum of charges of tracks/N_trk for HS merged vertices"> - <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.5" hi="0.5"/> + <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.4" hi="0.4"/> <y title="Entries" /> </h> <h id="vx_sumCharge_N_trk_HS_split" type="TH1" title="Sum of charges of tracks/N_trk for HS split vertices"> - <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.5" hi="0.5"/> + <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.4" hi="0.4"/> <y title="Entries" /> </h> <h id="vx_sumCharge_N_trk_HS_fake" type="TH1" title="Sum of charges of tracks/N_trk for HS fake vertices"> - <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.5" hi="0.5"/> + <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.4" hi="0.4"/> <y title="Entries" /> </h> @@ -1101,38 +1101,620 @@ <y title="Entries" /> </h> <h id="vx_z_asym_matched" type="TH1" title="asymmetry of track Z0 around vertex of tracks for matched vertices"> - <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-5.0" hi="5"/> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1.0"/> <y title="Entries" /> </h> <h id="vx_z_asym_merged" type="TH1" title="asymmetry of track Z0 around vertex of tracks for merged vertices"> - <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-5.0" hi="5"/> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1.0"/> <y title="Entries" /> </h> <h id="vx_z_asym_split" type="TH1" title="asymmetry of track Z0 around vertex of tracks for split vertices"> - <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-5.0" hi="5"/> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1.0"/> <y title="Entries" /> </h> <h id="vx_z_asym_fake" type="TH1" title="asymmetry of track Z0 around vertex of tracks for fake vertices"> - <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-5.0" hi="5"/> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1.0"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_matched" type="TH1" title="Weights of tracks for PU matched vertices"> + <x title="track weights for PU vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_merged" type="TH1" title="Weights of tracks for PU merged vertices"> + <x title="track weights for PU vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_split" type="TH1" title="Weights of tracks for PU split vertices"> + <x title="track weights for PU vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_fake" type="TH1" title="Weights of tracks for PU fake vertices"> + <x title="track weights for PU vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_matched" type="TH1" title="Normalised weights of tracks for PU matched vertices"> + <x title="Normalised track weights for PU vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_merged" type="TH1" title="Normalised weights of tracks for PU merged vertices"> + <x title="Normalised track weights for PU vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_split" type="TH1" title="Normalised weights of tracks for PU split vertices"> + <x title="Normalised track weights for PU vertex" n="100" lo="0" hi="1.10"/> <y title="Entries" /> </h> +<h id="vx_normalised_track_weight_fake" type="TH1" title="Normalised weights of tracks for PU fake vertices"> + <x title="Normalised track weights for PU vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> + <h id="vx_z_asym_HS_matched" type="TH1" title="asymmetry of track Z0 around vertex of tracks for HS matched vertices"> - <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-5.0" hi="5"/> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> <y title="Entries" /> </h> <h id="vx_z_asym_HS_merged" type="TH1" title="asymmetry of track Z0 around vertex of tracks for HS merged vertices"> - <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-5.0" hi="5"/> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> <y title="Entries" /> </h> <h id="vx_z_asym_HS_split" type="TH1" title="asymmetry of track Z0 around vertex of tracks for HS split vertices"> - <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-5.0" hi="5"/> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> <y title="Entries" /> </h> <h id="vx_z_asym_HS_fake" type="TH1" title="asymmetry of track Z0 around vertex of tracks for HS fake vertices"> - <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-5.0" hi="5"/> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_HS_matched" type="TH1" title="Weights of tracks for HS matched vertices"> + <x title="track weights for HS vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_HS_merged" type="TH1" title="Weights of tracks for HS merged vertices"> + <x title="track weights for HS vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_HS_split" type="TH1" title="Weights of tracks for HS split vertices"> + <x title="track weights for HS vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_HS_fake" type="TH1" title="Weights of tracks for HS fake vertices"> + <x title="track weights for HS vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_HS_matched" type="TH1" title="Normalised weights of tracks for HS matched vertices"> + <x title="Normalised track weights for HS vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_HS_merged" type="TH1" title="Normalised weights of tracks for HS merged vertices"> + <x title="Normalised track weights for HS vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_HS_split" type="TH1" title="Normalised weights of tracks for HS split vertices"> + <x title="Normalised track weights for HS vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_HS_fake" type="TH1" title="Normalised weights of tracks for HS fake vertices"> + <x title="Normalised track weights for HS vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_matched" type="TH1" title="asymmetry of track d0 around vertex of tracks for matched vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1.0"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_merged" type="TH1" title="asymmetry of track d0 around vertex of tracks for merged vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1.0"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_split" type="TH1" title="asymmetry of track d0 around vertex of tracks for split vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1.0"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_fake" type="TH1" title="asymmetry of track d0 around vertex of tracks for fake vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1.0"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_HS_matched" type="TH1" title="asymmetry of track d0 around vertex of tracks for HS matched vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_HS_merged" type="TH1" title="asymmetry of track d0 around vertex of tracks for HS merged vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_HS_split" type="TH1" title="asymmetry of track d0 around vertex of tracks for HS split vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_HS_fake" type="TH1" title="asymmetry of track d0 around vertex of tracks for HS fake vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_matched" type="TH1" title="Chi squared/ndf of tracks for PU matched vertices"> + <x title="Chi squared/ndf for vertex fit for PU" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_merged" type="TH1" title="Chi squared/ndf of tracks for PU merged vertices"> + <x title="Chi squared/ndf for vertex fit for PU" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_split" type="TH1" title="Chi squared/ndf of tracks for PU split vertices"> + <x title="Chi squared/ndf for vertex fit for PU" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_fake" type="TH1" title="Chi squared/ndf of tracks for PU fake vertices"> + <x title="Chi squared/ndf for vertex fit for PU" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_HS_matched" type="TH1" title="Chi squared/ndf of tracks for HS matched vertices"> + <x title="Chi squared/ndf for vertex fit for matched HS" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_HS_merged" type="TH1" title="Chi squared/ndf of tracks for HS merged vertices"> + <x title="Chi squared/ndf for vertex fit for merged HS" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_HS_split" type="TH1" title="Chi squared/ndf of tracks for HS split vertices"> + <x title="Chi squared/ndf for vertex fit for split HS" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_HS_fake" type="TH1" title="Chi squared/ndf of tracks for HS fake vertices"> + <x title="Chi squared/ndf for vertex fit for fake HS" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_HS_matched" type="TH1" title="Skewness of z0 of tracks z0 for HS matched vertices"> + <x title="Skewness for z0 for HS" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_HS_merged" type="TH1" title="Skewness of z0 of tracks for HS merged vertices"> + <x title="Skewness for z0 for HS" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_HS_split" type="TH1" title="Skewness of z0 of tracks for HS split vertices"> + <x title="Skewness for z0 for HS" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_HS_fake" type="TH1" title="Skewness of z0 of tracks for HS fake vertices"> + <x title="Skewness for z0 for HS" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_matched" type="TH1" title="Skewness of z0 of tracks z0 for PU matched vertices"> + <x title="Skewness for Z0 PU" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_merged" type="TH1" title="Skewness of z0 of tracks for PU merged vertices"> + <x title="Skewness for Z0 PU" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_split" type="TH1" title="Skewness of z0 of tracks for PU split vertices"> + <x title="Skewness for Z0 PU" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_fake" type="TH1" title="Skewness of z0 of tracks for PU fake vertices"> + <x title="Skewness for Z0 PU" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_HS_matched" type="TH1" title="Kurtosis of z0 of tracks z0 for HS matched vertices"> + <x title="Kurtosis for Z0 HS" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_HS_merged" type="TH1" title="Kurtosis of z0 of tracks for HS merged vertices"> + <x title="Kurtosis for Z0 HS" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_HS_split" type="TH1" title="Kurtosis of z0 of tracks for HS split vertices"> + <x title="Kurtosis for Z0 HS" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_HS_fake" type="TH1" title="Kurtosis of z0 of tracks for HS fake vertices"> + <x title="Kurtosis for Z0 HS" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_matched" type="TH1" title="Kurtosis of z0 of tracks for PU matched vertices"> + <x title="Kurtosis for z0 PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_merged" type="TH1" title="Kurtosis of z0 of tracks for PU merged vertices"> + <x title="Kurtosis for z0 PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_split" type="TH1" title="Kurtosis of z0 of tracks for PU split vertices"> + <x title="Kurtosis for z0 PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_fake" type="TH1" title="Kurtosis of z0 of tracks for PU fake vertices"> + <x title="Kurtosis for z0 PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_HS_matched" type="TH1" title="Skewness of d0 of tracks for HS matched vertices"> + <x title="Skewness for d0 HS" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_HS_merged" type="TH1" title="Skewness of d0 of tracks for HS merged vertices"> + <x title="Skewness for d0 HS" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_HS_split" type="TH1" title="Skewness of d0 of tracks for HS split vertices"> + <x title="Skewness for d0 HS" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_HS_fake" type="TH1" title="Skewness of d0 of tracks for HS fake vertices"> + <x title="Skewness for d0 HS" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_matched" type="TH1" title="Skewness of d0 of tracks for PU matched vertices"> + <x title="Skewness for d0 PU" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_merged" type="TH1" title="Skewness of d0 of tracks for PU merged vertices"> + <x title="Skewness for d0 PU" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_split" type="TH1" title="Skewness of d0 of tracks for PU split vertices"> + <x title="Skewness for d0 PU" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_fake" type="TH1" title="Skewness of d0 of tracks for PU fake vertices"> + <x title="Skewness for d0 PU" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_HS_matched" type="TH1" title="Kurtosis of d0 of tracks for HS matched vertices"> + <x title="Kurtosis for d0 HS" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_HS_merged" type="TH1" title="Kurtosis of d0 of tracks for HS merged vertices"> + <x title="Kurtosis for d0 HS" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_HS_split" type="TH1" title="Kurtosis of d0 of tracks for HS split vertices"> + <x title="Kurtosis for d0 HS" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_HS_fake" type="TH1" title="Kurtosis of d0 of tracks for HS fake vertices"> + <x title="Kurtosis for d0 HS" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_matched" type="TH1" title="Kurtosis of d0 of tracks for PU matched vertices"> + <x title="Kurtosis for d0 PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_merged" type="TH1" title="Kurtosis of d0 of tracks for PU merged vertices"> + <x title="Kurtosis for d0 PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_split" type="TH1" title="Kurtosis of d0 of tracks for PU split vertices"> + <x title="Kurtosis for d0 PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_fake" type="TH1" title="Kurtosis of d0 of tracks for PU fake vertices"> + <x title="Kurtosis for d0 PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_HS_matched" type="TH1" title="Skewness of pt of tracks for HS matched vertices"> + <x title="Skewness for pt HS" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_HS_merged" type="TH1" title="Skewness of pt of tracks for HS merged vertices"> + <x title="Skewness for pt HS" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_HS_split" type="TH1" title="Skewness of pt of tracks for HS split vertices"> + <x title="Skewness for pt HS" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_HS_fake" type="TH1" title="Skewness of pt of tracks for HS fake vertices"> + <x title="Skewness for pt HS" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_matched" type="TH1" title="Skewness of pt of tracks for PU matched vertices"> + <x title="Skewness for pt PU" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_merged" type="TH1" title="Skewness of pt of tracks for PU merged vertices"> + <x title="Skewness for pt PU" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_split" type="TH1" title="Skewness of pt of tracks for PU split vertices"> + <x title="Skewness for pt PU" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_fake" type="TH1" title="Skewness of pt of tracks for PU fake vertices"> + <x title="Skewness for pt PU" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_HS_matched" type="TH1" title="Kurtosis of pt of tracks for HS matched vertices"> + <x title="Kurtosis for pt HS" n="100" lo="0" hi="50"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_HS_merged" type="TH1" title="Kurtosis of pt of tracks for HS merged vertices"> + <x title="Kurtosis for pt HS" n="100" lo="0" hi="50"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_HS_split" type="TH1" title="Kurtosis of pt of tracks for HS split vertices"> + <x title="Kurtosis for pt HS" n="100" lo="0" hi="50"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_HS_fake" type="TH1" title="Kurtosis of pt of tracks for HS fake vertices"> + <x title="Kurtosis for pt HS" n="100" lo="0" hi="50"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_matched" type="TH1" title="Kurtosis of pt of tracks for PU matched vertices"> + <x title="Kurtosis for pt PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_merged" type="TH1" title="Kurtosis of pt of tracks for PU merged vertices"> + <x title="Kurtosis for pt PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_split" type="TH1" title="Kurtosis of pt of tracks for PU split vertices"> + <x title="Kurtosis for pt PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_fake" type="TH1" title="Kurtosis of pt of tracks for PU fake vertices"> + <x title="Kurtosis for pt PU" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<!-- Helen ALL vertices (PU and HS) --> +<h id="vx_sumpT_ALL_matched" type="TH1" title="SumPt of tracks for ALL matched vertices"> + <x title="sum p_{T} (GeV)of tracks" n="100" lo="20.0" hi="400"/> + <y title="Entries" /> +</h> +<h id="vx_sumpT_ALL_merged" type="TH1" title="SumPt of tracks for ALL merged vertices"> + <x title="sum p_{T} (GeV)of tracks" n="100" lo="20.0" hi="400"/> + <y title="Entries" /> +</h> +<h id="vx_sumpT_ALL_split" type="TH1" title="SumPt of tracks for ALL split vertices"> + <x title="sum p_{T} (GeV)of tracks" n="100" lo="20.0" hi="400"/> + <y title="Entries" /> +</h> +<h id="vx_sumpT_ALL_fake" type="TH1" title="SumPt of tracks for ALL fake vertices"> + <x title="sum p_{T} (GeV)of tracks" n="100" lo="20.0" hi="400"/> + <y title="Entries" /> +</h> +<h id="vx_sumCharge_ALL_matched" type="TH1" title="Sum of charges of tracks for ALL matched vertices"> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> + <y title="Entries" /> +</h> +<h id="vx_sumCharge_ALL_merged" type="TH1" title="Sum of charges of tracks for ALL merged vertices"> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> + <y title="Entries" /> +</h> +<h id="vx_sumCharge_ALL_split" type="TH1" title="Sumof charges of tracks for ALL split vertices"> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> + <y title="Entries" /> +</h> +<h id="vx_sumCharge_ALL_fake" type="TH1" title="Sum of charges of tracks for ALL fake vertices"> + <x title="sum of charges of tracks" n="51" lo="-25.0" hi="25"/> + <y title="Entries" /> +</h> +<h id="vx_sumCharge_N_trk_ALL_matched" type="TH1" title="Sum of charges of tracks/N_trk for ALL matched vertices"> + <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.4" hi="0.4"/> + <y title="Entries" /> +</h> +<h id="vx_sumCharge_N_trk_ALL_merged" type="TH1" title="Sum of charges of tracks/N_trk for ALL merged vertices"> + <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.4" hi="0.4"/> + <y title="Entries" /> +</h> +<h id="vx_sumCharge_N_trk_ALL_split" type="TH1" title="Sum of charges of tracks/N_trk for ALL split vertices"> + <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.4" hi="0.4"/> + <y title="Entries" /> +</h> +<h id="vx_sumCharge_N_trk_ALL_fake" type="TH1" title="Sum of charges of tracks/N_trk for ALL fake vertices"> + <x title="sum of charges of tracks/number of tracks" n="100" lo="-0.4" hi="0.4"/> <y title="Entries" /> </h> +<h id="vx_z_asym_ALL_matched" type="TH1" title="asymmetry of track Z0 around vertex of tracks for ALL matched vertices"> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_z_asym_ALL_merged" type="TH1" title="asymmetry of track Z0 around vertex of tracks for ALL merged vertices"> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_z_asym_ALL_split" type="TH1" title="asymmetry of track Z0 around vertex of tracks for ALL split vertices"> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_z_asym_ALL_fake" type="TH1" title="asymmetry of track Z0 around vertex of tracks for ALL fake vertices"> + <x title="asymmetry of track Z0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_ALL_matched" type="TH1" title="Weights of tracks for ALL matched vertices"> + <x title="track weights for ALL vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_ALL_merged" type="TH1" title="Weights of tracks for ALL merged vertices"> + <x title="track weights for ALL vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_ALL_split" type="TH1" title="Weights of tracks for ALL split vertices"> + <x title="track weights for ALL vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_track_weight_ALL_fake" type="TH1" title="Weights of tracks for ALL fake vertices"> + <x title="track weights for ALL vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_ALL_matched" type="TH1" title="Normalised weights of tracks for ALL matched vertices"> + <x title="Normalised track weights for ALL vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_ALL_merged" type="TH1" title="Normalised weights of tracks for ALL merged vertices"> + <x title="Normalised track weights for ALL vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_ALL_split" type="TH1" title="Normalised weights of tracks for ALL split vertices"> + <x title="Normalised track weights for ALL vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_normalised_track_weight_ALL_fake" type="TH1" title="Normalised weights of tracks for ALL fake vertices"> + <x title="Normalised track weights for ALL vertex" n="100" lo="0" hi="1.10"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_ALL_matched" type="TH1" title="asymmetry of track d0 around vertex of tracks for ALL matched vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_ALL_merged" type="TH1" title="asymmetry of track d0 around vertex of tracks for ALL merged vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_ALL_split" type="TH1" title="asymmetry of track d0 around vertex of tracks for ALL split vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_d_asym_ALL_fake" type="TH1" title="asymmetry of track d0 around vertex of tracks for ALL fake vertices"> + <x title="asymmetry of track d0 around vertex of tracks" n="100" lo="-1.0" hi="1"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_ALL_matched" type="TH1" title="Chi squared/ndf of tracks for ALL matched vertices"> + <x title="Chi squared/ndf for vertex fit for matched ALL" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_ALL_merged" type="TH1" title="Chi squared/ndf of tracks for ALL merged vertices"> + <x title="Chi squared/ndf for vertex fit for merged ALL" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_ALL_split" type="TH1" title="Chi squared/ndf of tracks for ALL split vertices"> + <x title="Chi squared/ndf for vertex fit for split ALL" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_chi2Over_ndf_ALL_fake" type="TH1" title="Chi squared/ndf of tracks for ALL fake vertices"> + <x title="Chi squared/ndf for vertex fit for fake ALL" n="100" lo="0" hi="3"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_ALL_matched" type="TH1" title="Skewness of z0 of tracks z0 for ALL matched vertices"> + <x title="Skewness for z0 for ALL" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_ALL_merged" type="TH1" title="Skewness of z0 of tracks for ALL merged vertices"> + <x title="Skewness for z0 for ALL" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_ALL_split" type="TH1" title="Skewness of z0 of tracks for ALL split vertices"> + <x title="Skewness for z0 for ALL" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_skewness_ALL_fake" type="TH1" title="Skewness of z0 of tracks for ALL fake vertices"> + <x title="Skewness for z0 for ALL" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_ALL_matched" type="TH1" title="Kurtosis of z0 of tracks z0 for ALL matched vertices"> + <x title="Kurtosis for Z0 ALL" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_ALL_merged" type="TH1" title="Kurtosis of z0 of tracks for ALL merged vertices"> + <x title="Kurtosis for Z0 ALL" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_ALL_split" type="TH1" title="Kurtosis of z0 of tracks for ALL split vertices"> + <x title="Kurtosis for Z0 ALL" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_z0_kurtosis_ALL_fake" type="TH1" title="Kurtosis of z0 of tracks for ALL fake vertices"> + <x title="Kurtosis for Z0 ALL" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_ALL_matched" type="TH1" title="Skewness of d0 of tracks for ALL matched vertices"> + <x title="Skewness for d0 ALL" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_ALL_merged" type="TH1" title="Skewness of d0 of tracks for ALL merged vertices"> + <x title="Skewness for d0 ALL" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_ALL_split" type="TH1" title="Skewness of d0 of tracks for ALL split vertices"> + <x title="Skewness for d0 ALL" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_skewness_ALL_fake" type="TH1" title="Skewness of d0 of tracks for ALL fake vertices"> + <x title="Skewness for d0 ALL" n="100" lo="-5" hi="5"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_ALL_matched" type="TH1" title="Kurtosis of d0 of tracks for ALL matched vertices"> + <x title="Kurtosis for d0 ALL" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_ALL_merged" type="TH1" title="Kurtosis of d0 of tracks for ALL merged vertices"> + <x title="Kurtosis for d0 ALL" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_ALL_split" type="TH1" title="Kurtosis of d0 of tracks for ALL split vertices"> + <x title="Kurtosis for d0 ALL" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_d0_kurtosis_ALL_fake" type="TH1" title="Kurtosis of d0 of tracks for ALL fake vertices"> + <x title="Kurtosis for d0 ALL" n="100" lo="0" hi="20"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_ALL_matched" type="TH1" title="Skewness of pt of tracks for ALL matched vertices"> + <x title="Skewness for pt ALL" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_ALL_merged" type="TH1" title="Skewness of pt of tracks for ALL merged vertices"> + <x title="Skewness for pt ALL" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_ALL_split" type="TH1" title="Skewness of pt of tracks for ALL split vertices"> + <x title="Skewness for pt ALL" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_skewness_ALL_fake" type="TH1" title="Skewness of pt of tracks for ALL fake vertices"> + <x title="Skewness for pt ALL" n="100" lo="-10" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_ALL_matched" type="TH1" title="Kurtosis of pt of tracks for ALL matched vertices"> + <x title="Kurtosis for pt ALL" n="100" lo="0" hi="50"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_ALL_merged" type="TH1" title="Kurtosis of pt of tracks for ALL merged vertices"> + <x title="Kurtosis for pt ALL" n="100" lo="0" hi="50"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_ALL_split" type="TH1" title="Kurtosis of pt of tracks for ALL split vertices"> + <x title="Kurtosis for pt ALL" n="100" lo="0" hi="50"/> + <y title="Entries" /> +</h> +<h id="vx_pt_kurtosis_ALL_fake" type="TH1" title="Kurtosis of pt of tracks for ALL fake vertices"> + <x title="Kurtosis for pt ALL" n="100" lo="0" hi="50"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_ALL_matched" type="TH1" title="Number of matched vertices per event for sumpt above 20Gev"> + <x title="Number of vertices per event ALL" n="100" lo="0" hi="100"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_ALL_merged" type="TH1" title="Number of merged vertices per event for sumpt above 20Gev"> + <x title="Number of vertices per event ALL" n="100" lo="0" hi="100"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_ALL_split" type="TH1" title="Number of split vertices per event for sumpt above 20Gev"> + <x title="Number of vertices per event ALL" n="100" lo="0" hi="100"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_HS_matched" type="TH1" title="Number of HS matched vertices per event"> + <x title="Number of vertices per event HS" n="100" lo="0" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_HS_merged" type="TH1" title="Number of HS merged vertices per event"> + <x title="Number of vertices per event HS" n="100" lo="0" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_HS_split" type="TH1" title="Number of HS split vertices per event"> + <x title="Number of vertices per event HS" n="100" lo="0" hi="10"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_matched" type="TH1" title="Number of PU matched vertices per event"> + <x title="Number of vertices per event PU" n="100" lo="0" hi="100"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_merged" type="TH1" title="Number of PU merged vertices per event"> + <x title="Number of vertices per event PU" n="100" lo="0" hi="100"/> + <y title="Entries" /> +</h> +<h id="vx_nVertices_split" type="TH1" title="Number of PU split vertices per event"> + <x title="Number of vertices per event PU" n="100" lo="0" hi="100"/> + <y title="Entries" /> +</h> <!-- --> <!-- Bad Match Rate (BMR) plots --> <h id="BadMatchRate" type="TProfile" title="Fraction of Tracks with < 80% Truth Matching Probability"> diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx index 48ef93979af7..d3eea9adbac8 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx @@ -10,9 +10,10 @@ #include "InDetPerfPlot_VertexTruthMatching.h" #include "EventPrimitives/EventPrimitives.h" #include "EventPrimitives/EventPrimitivesHelpers.h" -// 2 new includes HRM +// 3 new includes HRM #include "InDetPerfPlot_Vertex.h" #include "InDetPerfPlot_nTracks.h" +//#include "VxVertex/VxTrackAtVertex.h" using namespace IDPVM; @@ -117,7 +118,169 @@ InDetPerfPlot_VertexTruthMatching::InDetPerfPlot_VertexTruthMatching(InDetPlotBa m_vx_z_asym_HS_matched(nullptr), m_vx_z_asym_HS_merged(nullptr), m_vx_z_asym_HS_split(nullptr), - m_vx_z_asym_HS_fake(nullptr) + m_vx_z_asym_HS_fake(nullptr), + + m_vx_track_weight_matched(nullptr), + m_vx_track_weight_merged(nullptr), + m_vx_track_weight_split(nullptr), + m_vx_track_weight_fake(nullptr), + m_vx_track_weight_HS_matched(nullptr), + m_vx_track_weight_HS_merged(nullptr), + m_vx_track_weight_HS_split(nullptr), + m_vx_track_weight_HS_fake(nullptr), + + m_vx_normalised_track_weight_matched(nullptr), + m_vx_normalised_track_weight_merged(nullptr), + m_vx_normalised_track_weight_split(nullptr), + m_vx_normalised_track_weight_fake(nullptr), + m_vx_normalised_track_weight_HS_matched(nullptr), + m_vx_normalised_track_weight_HS_merged(nullptr), + m_vx_normalised_track_weight_HS_split(nullptr), + m_vx_normalised_track_weight_HS_fake(nullptr), + + m_vx_d_asym_matched(nullptr), + m_vx_d_asym_merged(nullptr), + m_vx_d_asym_split(nullptr), + m_vx_d_asym_fake(nullptr), + m_vx_d_asym_HS_matched(nullptr), + m_vx_d_asym_HS_merged(nullptr), + m_vx_d_asym_HS_split(nullptr), + m_vx_d_asym_HS_fake(nullptr), + + m_vx_chi2Over_ndf_matched(nullptr), + m_vx_chi2Over_ndf_merged(nullptr), + m_vx_chi2Over_ndf_split(nullptr), + m_vx_chi2Over_ndf_fake(nullptr), + m_vx_chi2Over_ndf_HS_matched(nullptr), + m_vx_chi2Over_ndf_HS_merged(nullptr), + m_vx_chi2Over_ndf_HS_split(nullptr), + m_vx_chi2Over_ndf_HS_fake(nullptr), + + m_vx_z0_skewness_matched(nullptr), + m_vx_z0_skewness_merged(nullptr), + m_vx_z0_skewness_split(nullptr), + m_vx_z0_skewness_fake(nullptr), + m_vx_z0_skewness_HS_matched(nullptr), + m_vx_z0_skewness_HS_merged(nullptr), + m_vx_z0_skewness_HS_split(nullptr), + m_vx_z0_skewness_HS_fake(nullptr), + + m_vx_z0_kurtosis_matched(nullptr), + m_vx_z0_kurtosis_merged(nullptr), + m_vx_z0_kurtosis_split(nullptr), + m_vx_z0_kurtosis_fake(nullptr), + m_vx_z0_kurtosis_HS_matched(nullptr), + m_vx_z0_kurtosis_HS_merged(nullptr), + m_vx_z0_kurtosis_HS_split(nullptr), + m_vx_z0_kurtosis_HS_fake(nullptr), + + m_vx_d0_skewness_matched(nullptr), + m_vx_d0_skewness_merged(nullptr), + m_vx_d0_skewness_split(nullptr), + m_vx_d0_skewness_fake(nullptr), + m_vx_d0_skewness_HS_matched(nullptr), + m_vx_d0_skewness_HS_merged(nullptr), + m_vx_d0_skewness_HS_split(nullptr), + m_vx_d0_skewness_HS_fake(nullptr), + m_vx_d0_kurtosis_matched(nullptr), + m_vx_d0_kurtosis_merged(nullptr), + m_vx_d0_kurtosis_split(nullptr), + m_vx_d0_kurtosis_fake(nullptr), + m_vx_d0_kurtosis_HS_matched(nullptr), + m_vx_d0_kurtosis_HS_merged(nullptr), + m_vx_d0_kurtosis_HS_split(nullptr), + m_vx_d0_kurtosis_HS_fake(nullptr), + m_vx_pt_skewness_matched(nullptr), + m_vx_pt_skewness_merged(nullptr), + m_vx_pt_skewness_split(nullptr), + m_vx_pt_skewness_fake(nullptr), + m_vx_pt_skewness_HS_matched(nullptr), + m_vx_pt_skewness_HS_merged(nullptr), + m_vx_pt_skewness_HS_split(nullptr), + m_vx_pt_skewness_HS_fake(nullptr), + m_vx_pt_kurtosis_matched(nullptr), + m_vx_pt_kurtosis_merged(nullptr), + m_vx_pt_kurtosis_split(nullptr), + m_vx_pt_kurtosis_fake(nullptr), + m_vx_pt_kurtosis_HS_matched(nullptr), + m_vx_pt_kurtosis_HS_merged(nullptr), + m_vx_pt_kurtosis_HS_split(nullptr), + m_vx_pt_kurtosis_HS_fake(nullptr), + + m_vx_sumpT_ALL_matched(nullptr), + m_vx_sumpT_ALL_merged(nullptr), + m_vx_sumpT_ALL_split(nullptr), + m_vx_sumpT_ALL_fake(nullptr), + m_vx_sumCharge_ALL_matched(nullptr), + m_vx_sumCharge_ALL_merged(nullptr), + m_vx_sumCharge_ALL_split(nullptr), + m_vx_sumCharge_ALL_fake(nullptr), + m_vx_sumCharge_N_trk_ALL_matched(nullptr), + m_vx_sumCharge_N_trk_ALL_merged(nullptr), + m_vx_sumCharge_N_trk_ALL_split(nullptr), + m_vx_sumCharge_N_trk_ALL_fake(nullptr), + m_vx_z_asym_ALL_matched(nullptr), + m_vx_z_asym_ALL_merged(nullptr), + m_vx_z_asym_ALL_split(nullptr), + m_vx_z_asym_ALL_fake(nullptr), + m_vx_d_asym_ALL_matched(nullptr), + m_vx_d_asym_ALL_merged(nullptr), + m_vx_d_asym_ALL_split(nullptr), + m_vx_d_asym_ALL_fake(nullptr), + + m_vx_track_weight_ALL_matched(nullptr), + m_vx_track_weight_ALL_merged(nullptr), + m_vx_track_weight_ALL_split(nullptr), + m_vx_track_weight_ALL_fake(nullptr), + + m_vx_normalised_track_weight_ALL_matched(nullptr), + m_vx_normalised_track_weight_ALL_merged(nullptr), + m_vx_normalised_track_weight_ALL_split(nullptr), + m_vx_normalised_track_weight_ALL_fake(nullptr), + + m_vx_chi2Over_ndf_ALL_matched(nullptr), + m_vx_chi2Over_ndf_ALL_merged(nullptr), + m_vx_chi2Over_ndf_ALL_split(nullptr), + m_vx_chi2Over_ndf_ALL_fake(nullptr), + + m_vx_z0_skewness_ALL_matched(nullptr), + m_vx_z0_skewness_ALL_merged(nullptr), + m_vx_z0_skewness_ALL_split(nullptr), + m_vx_z0_skewness_ALL_fake(nullptr), + + m_vx_z0_kurtosis_ALL_matched(nullptr), + m_vx_z0_kurtosis_ALL_merged(nullptr), + m_vx_z0_kurtosis_ALL_split(nullptr), + m_vx_z0_kurtosis_ALL_fake(nullptr), + + m_vx_d0_skewness_ALL_matched(nullptr), + m_vx_d0_skewness_ALL_merged(nullptr), + m_vx_d0_skewness_ALL_split(nullptr), + m_vx_d0_skewness_ALL_fake(nullptr), + m_vx_d0_kurtosis_ALL_matched(nullptr), + m_vx_d0_kurtosis_ALL_merged(nullptr), + m_vx_d0_kurtosis_ALL_split(nullptr), + m_vx_d0_kurtosis_ALL_fake(nullptr), + m_vx_pt_skewness_ALL_matched(nullptr), + m_vx_pt_skewness_ALL_merged(nullptr), + m_vx_pt_skewness_ALL_split(nullptr), + m_vx_pt_skewness_ALL_fake(nullptr), + m_vx_pt_kurtosis_ALL_matched(nullptr), + m_vx_pt_kurtosis_ALL_merged(nullptr), + m_vx_pt_kurtosis_ALL_split(nullptr), + m_vx_pt_kurtosis_ALL_fake(nullptr), + m_vx_nVertices_ALL_matched(nullptr), + m_vx_nVertices_ALL_merged(nullptr), + m_vx_nVertices_ALL_split(nullptr), + m_vx_nVertices_HS_matched(nullptr), + m_vx_nVertices_HS_merged(nullptr), + m_vx_nVertices_HS_split(nullptr), + m_vx_nVertices_matched(nullptr), + m_vx_nVertices_merged(nullptr), + m_vx_nVertices_split(nullptr) + + + { // nop @@ -233,10 +396,169 @@ void InDetPerfPlot_VertexTruthMatching::initializePlots() { book(m_vx_z_asym_HS_merged,"vx_z_asym_HS_merged"); book(m_vx_z_asym_HS_split,"vx_z_asym_HS_split"); book(m_vx_z_asym_HS_fake,"vx_z_asym_HS_fake"); + book(m_vx_track_weight_matched, "vx_track_weight_matched"); + book(m_vx_track_weight_merged, "vx_track_weight_merged"); + book(m_vx_track_weight_split, "vx_track_weight_split"); + book(m_vx_track_weight_fake, "vx_track_weight_fake"); + book(m_vx_track_weight_HS_matched, "vx_track_weight_HS_matched"); + book(m_vx_track_weight_HS_merged, "vx_track_weight_HS_merged"); + book(m_vx_track_weight_HS_split, "vx_track_weight_HS_split"); + book(m_vx_track_weight_HS_fake, "vx_track_weight_HS_fake"); + + + book(m_vx_normalised_track_weight_matched, "vx_normalised_track_weight_matched"); + book(m_vx_normalised_track_weight_merged, "vx_normalised_track_weight_merged"); + book(m_vx_normalised_track_weight_split, "vx_normalised_track_weight_split"); + book(m_vx_normalised_track_weight_fake, "vx_normalised_track_weight_fake"); + book(m_vx_normalised_track_weight_HS_matched, "vx_normalised_track_weight_HS_matched"); + book(m_vx_normalised_track_weight_HS_merged, "vx_normalised_track_weight_HS_merged"); + book(m_vx_normalised_track_weight_HS_split, "vx_normalised_track_weight_HS_split"); + book(m_vx_normalised_track_weight_HS_fake, "vx_normalised_track_weight_HS_fake"); + + book(m_vx_d_asym_matched,"vx_d_asym_matched"); + book(m_vx_d_asym_merged,"vx_d_asym_merged"); + book(m_vx_d_asym_split,"vx_d_asym_split"); + book(m_vx_d_asym_fake,"vx_d_asym_fake"); + book(m_vx_d_asym_HS_matched,"vx_d_asym_HS_matched"); + book(m_vx_d_asym_HS_merged,"vx_d_asym_HS_merged"); + book(m_vx_d_asym_HS_split,"vx_d_asym_HS_split"); + book(m_vx_d_asym_HS_fake,"vx_d_asym_HS_fake"); + book(m_vx_chi2Over_ndf_matched,"vx_chi2Over_ndf_matched"); + book(m_vx_chi2Over_ndf_merged,"vx_chi2Over_ndf_merged"); + book(m_vx_chi2Over_ndf_split,"vx_chi2Over_ndf_split"); + book(m_vx_chi2Over_ndf_fake,"vx_chi2Over_ndf_fake"); + book(m_vx_chi2Over_ndf_HS_matched,"vx_chi2Over_ndf_HS_matched"); + book(m_vx_chi2Over_ndf_HS_merged,"vx_chi2Over_ndf_HS_merged"); + book(m_vx_chi2Over_ndf_HS_split,"vx_chi2Over_ndf_HS_split"); + book(m_vx_chi2Over_ndf_HS_fake,"vx_chi2Over_ndf_HS_fake"); + + book(m_vx_z0_skewness_matched, "vx_z0_skewness_matched"); + book(m_vx_z0_skewness_merged, "vx_z0_skewness_merged"); + book(m_vx_z0_skewness_split, "vx_z0_skewness_split"); + book(m_vx_z0_skewness_fake, "vx_z0_skewness_fake"); + book(m_vx_z0_skewness_HS_matched, "vx_z0_skewness_HS_matched"); + book(m_vx_z0_skewness_HS_merged, "vx_z0_skewness_HS_merged"); + book(m_vx_z0_skewness_HS_split, "vx_z0_skewness_HS_split"); + book(m_vx_z0_skewness_HS_fake, "vx_z0_skewness_HS_fake"); + book(m_vx_z0_kurtosis_matched,"vx_z0_kurtosis_matched"); + book(m_vx_z0_kurtosis_merged,"vx_z0_kurtosis_merged"); + book(m_vx_z0_kurtosis_split,"vx_z0_kurtosis_split"); + book(m_vx_z0_kurtosis_fake,"vx_z0_kurtosis_fake"); + book(m_vx_z0_kurtosis_HS_matched,"vx_z0_kurtosis_HS_matched"); + book(m_vx_z0_kurtosis_HS_merged,"vx_z0_kurtosis_HS_merged"); + book(m_vx_z0_kurtosis_HS_split,"vx_z0_kurtosis_HS_split"); + book(m_vx_z0_kurtosis_HS_fake,"vx_z0_kurtosis_HS_fake"); + + book(m_vx_d0_skewness_matched,"vx_d0_skewness_matched"); + book(m_vx_d0_skewness_merged,"vx_d0_skewness_merged"); + book(m_vx_d0_skewness_split,"vx_d0_skewness_split"); + book(m_vx_d0_skewness_fake,"vx_d0_skewness_fake"); + book(m_vx_d0_skewness_HS_matched,"vx_d0_skewness_HS_matched"); + book(m_vx_d0_skewness_HS_merged,"vx_d0_skewness_HS_merged"); + book(m_vx_d0_skewness_HS_split,"vx_d0_skewness_HS_split"); + book(m_vx_d0_skewness_HS_fake,"vx_d0_skewness_HS_fake"); + book(m_vx_d0_kurtosis_matched,"vx_d0_kurtosis_matched"); + book(m_vx_d0_kurtosis_merged,"vx_d0_kurtosis_merged"); + book(m_vx_d0_kurtosis_split,"vx_d0_kurtosis_split"); + book(m_vx_d0_kurtosis_fake,"vx_d0_kurtosis_fake"); + book(m_vx_d0_kurtosis_HS_matched,"vx_d0_kurtosis_HS_matched"); + book(m_vx_d0_kurtosis_HS_merged,"vx_d0_kurtosis_HS_merged"); + book(m_vx_d0_kurtosis_HS_split,"vx_d0_kurtosis_HS_split"); + book(m_vx_d0_kurtosis_HS_fake,"vx_d0_kurtosis_HS_fake"); - - + + book(m_vx_pt_skewness_matched,"vx_pt_skewness_matched"); + book(m_vx_pt_skewness_merged,"vx_pt_skewness_merged"); + book(m_vx_pt_skewness_split,"vx_pt_skewness_split"); + book(m_vx_pt_skewness_fake,"vx_pt_skewness_fake"); + book(m_vx_pt_skewness_HS_matched,"vx_pt_skewness_HS_matched"); + book(m_vx_pt_skewness_HS_merged,"vx_pt_skewness_HS_merged"); + book(m_vx_pt_skewness_HS_split,"vx_pt_skewness_HS_split"); + book(m_vx_pt_skewness_HS_fake,"vx_pt_skewness_HS_fake"); + book(m_vx_pt_kurtosis_matched,"vx_pt_kurtosis_matched"); + book(m_vx_pt_kurtosis_merged,"vx_pt_kurtosis_merged"); + book(m_vx_pt_kurtosis_split,"vx_pt_kurtosis_split"); + book(m_vx_pt_kurtosis_fake,"vx_pt_kurtosis_fake"); + book(m_vx_pt_kurtosis_HS_matched,"vx_pt_kurtosis_HS_matched"); + book(m_vx_pt_kurtosis_HS_merged,"vx_pt_kurtosis_HS_merged"); + book(m_vx_pt_kurtosis_HS_split,"vx_pt_kurtosis_HS_split"); + book(m_vx_pt_kurtosis_HS_fake,"vx_pt_kurtosis_HS_fake"); + // Histograms with all vertices + book(m_vx_sumpT_ALL_matched,"vx_sumpT_ALL_matched"); + book(m_vx_sumpT_ALL_merged,"vx_sumpT_ALL_merged"); + book(m_vx_sumpT_ALL_split,"vx_sumpT_ALL_split"); + book( m_vx_sumpT_ALL_fake,"vx_sumpT_ALL_fake"); + + book(m_vx_sumCharge_ALL_matched,"vx_sumCharge_ALL_matched"); + book(m_vx_sumCharge_ALL_merged,"vx_sumCharge_ALL_merged"); + book(m_vx_sumCharge_ALL_split,"vx_sumCharge_ALL_split"); + book(m_vx_sumCharge_ALL_fake,"vx_sumCharge_ALL_fake"); + book(m_vx_sumCharge_N_trk_ALL_matched, "vx_sumCharge_N_trk_ALL_matched"); + book(m_vx_sumCharge_N_trk_ALL_merged, "vx_sumCharge_N_trk_ALL_merged"); + book(m_vx_sumCharge_N_trk_ALL_split, "vx_sumCharge_N_trk_ALL_split"); + book(m_vx_sumCharge_N_trk_ALL_fake, "vx_sumCharge_N_trk_ALL_fake"); + + book(m_vx_z_asym_ALL_matched,"vx_z_asym_ALL_matched"); + book(m_vx_z_asym_ALL_merged,"vx_z_asym_ALL_merged"); + book(m_vx_z_asym_ALL_split,"vx_z_asym_ALL_split"); + book(m_vx_z_asym_ALL_fake,"vx_z_asym_ALL_fake"); + + book(m_vx_track_weight_ALL_matched, "vx_track_weight_ALL_matched"); + book(m_vx_track_weight_ALL_merged, "vx_track_weight_ALL_merged"); + book(m_vx_track_weight_ALL_split, "vx_track_weight_ALL_split"); + book(m_vx_track_weight_ALL_fake, "vx_track_weight_ALL_fake"); + + book(m_vx_normalised_track_weight_ALL_matched, "vx_normalised_track_weight_ALL_matched"); + book(m_vx_normalised_track_weight_ALL_merged, "vx_normalised_track_weight_ALL_merged"); + book(m_vx_normalised_track_weight_ALL_split, "vx_normalised_track_weight_ALL_split"); + book(m_vx_normalised_track_weight_ALL_fake, "vx_normalised_track_weight_ALL_fake"); + + book(m_vx_d_asym_ALL_matched,"vx_d_asym_ALL_matched"); + book(m_vx_d_asym_ALL_merged,"vx_d_asym_ALL_merged"); + book(m_vx_d_asym_ALL_split,"vx_d_asym_ALL_split"); + book(m_vx_d_asym_ALL_fake,"vx_d_asym_ALL_fake"); + book(m_vx_chi2Over_ndf_ALL_matched,"vx_chi2Over_ndf_ALL_matched"); + book(m_vx_chi2Over_ndf_ALL_merged,"vx_chi2Over_ndf_ALL_merged"); + book(m_vx_chi2Over_ndf_ALL_split,"vx_chi2Over_ndf_ALL_split"); + book(m_vx_chi2Over_ndf_ALL_fake,"vx_chi2Over_ndf_ALL_fake"); + + book(m_vx_z0_skewness_ALL_matched, "vx_z0_skewness_ALL_matched"); + book(m_vx_z0_skewness_ALL_merged, "vx_z0_skewness_ALL_merged"); + book(m_vx_z0_skewness_ALL_split, "vx_z0_skewness_ALL_split"); + book(m_vx_z0_skewness_ALL_fake, "vx_z0_skewness_ALL_fake"); + book(m_vx_z0_kurtosis_ALL_matched,"vx_z0_kurtosis_ALL_matched"); + book(m_vx_z0_kurtosis_ALL_merged,"vx_z0_kurtosis_ALL_merged"); + book(m_vx_z0_kurtosis_ALL_split,"vx_z0_kurtosis_ALL_split"); + book(m_vx_z0_kurtosis_ALL_fake,"vx_z0_kurtosis_ALL_fake"); + + book(m_vx_d0_skewness_ALL_matched,"vx_d0_skewness_ALL_matched"); + book(m_vx_d0_skewness_ALL_merged,"vx_d0_skewness_ALL_merged"); + book(m_vx_d0_skewness_ALL_split,"vx_d0_skewness_ALL_split"); + book(m_vx_d0_skewness_ALL_fake,"vx_d0_skewness_ALL_fake"); + book(m_vx_d0_kurtosis_ALL_matched,"vx_d0_kurtosis_ALL_matched"); + book(m_vx_d0_kurtosis_ALL_merged,"vx_d0_kurtosis_ALL_merged"); + book(m_vx_d0_kurtosis_ALL_split,"vx_d0_kurtosis_ALL_split"); + book(m_vx_d0_kurtosis_ALL_fake,"vx_d0_kurtosis_ALL_fake"); + + book(m_vx_pt_skewness_ALL_matched,"vx_pt_skewness_ALL_matched"); + book(m_vx_pt_skewness_ALL_merged,"vx_pt_skewness_ALL_merged"); + book(m_vx_pt_skewness_ALL_split,"vx_pt_skewness_ALL_split"); + book(m_vx_pt_skewness_ALL_fake,"vx_pt_skewness_ALL_fake"); + book(m_vx_pt_kurtosis_ALL_matched,"vx_pt_kurtosis_ALL_matched"); + book(m_vx_pt_kurtosis_ALL_merged,"vx_pt_kurtosis_ALL_merged"); + book(m_vx_pt_kurtosis_ALL_split,"vx_pt_kurtosis_ALL_split"); + book(m_vx_pt_kurtosis_ALL_fake,"vx_pt_kurtosis_ALL_fake"); + + book(m_vx_nVertices_ALL_matched,"vx_nVertices_ALL_matched"); + book(m_vx_nVertices_ALL_merged,"vx_nVertices_ALL_merged"); + book(m_vx_nVertices_ALL_split,"vx_nVertices_ALL_split"); + book(m_vx_nVertices_HS_matched,"vx_nVertices_HS_matched"); + book(m_vx_nVertices_HS_merged,"vx_nVertices_HS_merged"); + book(m_vx_nVertices_HS_split,"vx_nVertices_HS_split"); + book(m_vx_nVertices_matched,"vx_nVertices_matched"); + book(m_vx_nVertices_merged,"vx_nVertices_merged"); + book(m_vx_nVertices_split, "vx_nVertices_split"); } } @@ -481,7 +803,22 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex else { ATH_MSG_WARNING("Size of truth HS vertex vector is 0 -- assuming truth HS vertex to NOT be reconstructed."); } + + // add variables here so that they are in correct scope (outside loop over vertices) + float number_matched = 0; + float number_merged = 0; + float number_split = 0; + float number_matched_HS = 0; + float number_merged_HS = 0; + float number_split_HS = 0; + float number_matched_PU = 0; + float number_merged_PU = 0; + float number_split_PU = 0; + + // std::cout << "declaring vertex number variables helenmaguire"; + + // Iterate over vertices: InDetVertexTruthMatchUtils::VertexMatchType matchType; for (const auto& vertex : vertexContainer.stdcont()) { @@ -541,33 +878,131 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex fillHisto(m_vx_all_truth_x_pull_vs_nTrk, vertex->nTrackParticles(), residual_x/vtxerr_y); fillHisto(m_vx_all_truth_y_pull_vs_nTrk, vertex->nTrackParticles(), residual_y/vtxerr_x); + + + // Helen OTP - get sumpt for each vertex (not just for HS vertex) // For each vertex, loop over all tracks and get sumpt and sum of charges // also use this to get the z asymmetry around the vertex. - + const xAOD::TrackParticle* trackTmp = nullptr; float sumPt =0; + float sum_dD =0; + // get the charge associated with each track double sumCharge = 0; float z_asym = 0; + float d_asym = 0; float sumDZ = 0; float deltaZ =0; + float deltaD =0; float modsumDZ =0; - - + float modsumDD =0; + + // make vector + std::vector<float> track_deltaZ; + track_deltaZ.clear(); + std::vector<float> track_deltaD; + track_deltaD.clear(); + std::vector<float> track_deltaPt; + track_deltaPt.clear(); + + // loop over tracks for (size_t i = 0; i < vertex->nTrackParticles(); i++) { trackTmp = vertex->trackParticle(i); deltaZ = trackTmp->z0() - vertex->z(); + deltaD = trackTmp->d0(); + + // std::cout << "loop over tracks helenmaguire"; + + if (trackTmp) { sumPt = sumPt + trackTmp->pt(); sumCharge = sumCharge + trackTmp->charge(); + track_deltaZ.push_back(deltaZ); + track_deltaD.push_back(deltaD); + track_deltaPt.push_back(trackTmp->pt()); // sum of delta z sumDZ = sumDZ + deltaZ; modsumDZ = modsumDZ + sqrt(deltaZ * deltaZ); - z_asym = modsumDZ/sumDZ; - } + sum_dD = sum_dD + trackTmp->d0(); + modsumDD = modsumDD + sqrt(deltaD * deltaD); + } + + } // end loop over tracks + if (modsumDZ >0) { + z_asym = sumDZ/modsumDZ; } + if (modsumDD >0) { + d_asym = sum_dD/modsumDD; + } + + + + double av_sumPt =0; + double mean_Dz =0; + mean_Dz=sumDZ/track_deltaZ.size(); //calculate average + sum_dD=sum_dD/track_deltaD.size(); //calculate average + av_sumPt=sumPt/track_deltaPt.size(); //calculate average + double n=0; + n = track_deltaZ.size(); // get number of tracks + + double z_sd = 0; // standard deviation + double z_skew = 0; + double z_kurt = 0; + double z_var=0; + double d_sd = 0; + double d_var = 0; + double d_kurt =0; + double d_skew =0; + double pt_sd = 0; + double pt_var = 0; + double pt_kurt =0; + double pt_skew =0; + + for ( size_t i = 0; i < track_deltaZ.size(); i++) { + + z_var =(z_var + (track_deltaZ.at(i) - mean_Dz )*(track_deltaZ.at(i) - mean_Dz )); + z_skew =(z_skew + (track_deltaZ.at(i) - mean_Dz )*(track_deltaZ.at(i) - mean_Dz )*(track_deltaZ.at(i) - mean_Dz )); + z_kurt =(z_kurt + (track_deltaZ.at(i) - mean_Dz )*(track_deltaZ.at(i) - mean_Dz )*(track_deltaZ.at(i) - mean_Dz )*(track_deltaZ.at(i) - mean_Dz )); + + } + z_var = z_var/(n-1); + z_sd = sqrt(z_var); + z_skew = z_skew/((n-1)*z_sd*z_sd*z_sd); + z_kurt = z_kurt/((n-1)*z_sd*z_sd*z_sd*z_sd); + + for ( size_t i = 0; i < track_deltaD.size(); i++) { + + d_var =(d_var + (track_deltaD.at(i) - sum_dD )*(track_deltaD.at(i) - sum_dD )); + d_skew =(d_skew + (track_deltaD.at(i) - sum_dD )*(track_deltaD.at(i) - sum_dD )*(track_deltaD.at(i) - sum_dD )); + d_kurt =(d_kurt + (track_deltaD.at(i) - sum_dD )*(track_deltaD.at(i) - sum_dD )*(track_deltaD.at(i) - sum_dD )*(track_deltaD.at(i) - sum_dD )); + + } + d_var = d_var/(n-1); + d_sd = sqrt(d_var); + d_skew = d_skew/((n-1)*d_sd*d_sd*d_sd); + d_kurt = d_kurt/((n-1)*d_sd*d_sd*d_sd*d_sd); + + + for ( size_t i = 0; i < track_deltaPt.size(); i++) { + + pt_var =(pt_var + (track_deltaPt.at(i) - av_sumPt )*(track_deltaPt.at(i) - av_sumPt )); + pt_skew =(pt_skew + (track_deltaPt.at(i) - av_sumPt )*(track_deltaPt.at(i) - av_sumPt )*(track_deltaPt.at(i) - av_sumPt )); + pt_kurt =(pt_kurt + (track_deltaPt.at(i) - av_sumPt )*(track_deltaPt.at(i) - av_sumPt )*(track_deltaPt.at(i) - av_sumPt )*(track_deltaPt.at(i) - av_sumPt )); + + } + pt_var = pt_var/(n-1); + pt_sd = sqrt(pt_var); + pt_skew = pt_skew/((n-1)*pt_sd*pt_sd*pt_sd); + pt_kurt = pt_kurt/((n-1)*pt_sd*pt_sd*pt_sd*pt_sd); + + float ndf = vertex->numberDoF(); + if (ndf != 0) { + + + if (recoVtxMatchTypeInfo(*vertex) == InDetVertexTruthMatchUtils::VertexMatchType::MATCHED) { if (vertex == bestRecoHSVtx_truth) { @@ -575,6 +1010,21 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex fillHisto(m_vx_sumCharge_HS_matched,sumCharge); fillHisto(m_vx_sumCharge_N_trk_HS_matched, sumCharge/vertex->nTrackParticles()); fillHisto(m_vx_z_asym_HS_matched, z_asym); + fillHisto(m_vx_d_asym_HS_matched, d_asym); + fillHisto(m_vx_chi2Over_ndf_HS_matched, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_HS_matched, z_skew); + fillHisto(m_vx_z0_kurtosis_HS_matched, z_kurt); + fillHisto(m_vx_d0_skewness_HS_matched, d_skew); + fillHisto(m_vx_d0_kurtosis_HS_matched, d_kurt); + fillHisto(m_vx_pt_skewness_HS_matched, pt_skew); + fillHisto(m_vx_pt_kurtosis_HS_matched, pt_kurt); + + + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_HS_matched, weight); + fillHisto(m_vx_normalised_track_weight_HS_matched, weight/n); + } } else { @@ -583,8 +1033,46 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex fillHisto(m_vx_sumCharge_matched,sumCharge); fillHisto(m_vx_sumCharge_N_trk_matched, sumCharge/vertex->nTrackParticles()); fillHisto(m_vx_z_asym_matched, z_asym); - } - } + fillHisto(m_vx_d_asym_matched, d_asym); + fillHisto(m_vx_chi2Over_ndf_matched, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_matched, z_skew); + fillHisto(m_vx_z0_kurtosis_matched, z_kurt); + fillHisto(m_vx_d0_skewness_matched, d_skew); + fillHisto(m_vx_d0_kurtosis_matched, d_kurt); + fillHisto(m_vx_pt_skewness_matched, pt_skew); + fillHisto(m_vx_pt_kurtosis_matched, pt_kurt); + + + + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_matched, weight); + fillHisto(m_vx_normalised_track_weight_matched, weight/n); + } + } +// fill some histograms that contain both HS and PU above a min pt - say 20GeV + double minpt = 20 ; // GeV + if (sumPt/Gaudi::Units::GeV > minpt) { + fillHisto(m_vx_sumpT_ALL_matched,sumPt / Gaudi::Units::GeV); + fillHisto(m_vx_sumCharge_ALL_matched,sumCharge); + fillHisto(m_vx_sumCharge_N_trk_ALL_matched, sumCharge/vertex->nTrackParticles()); + fillHisto(m_vx_z_asym_ALL_matched, z_asym); + fillHisto(m_vx_d_asym_ALL_matched, d_asym); + fillHisto(m_vx_chi2Over_ndf_ALL_matched, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_ALL_matched, z_skew); + fillHisto(m_vx_z0_kurtosis_ALL_matched, z_kurt); + fillHisto(m_vx_d0_skewness_ALL_matched, d_skew); + fillHisto(m_vx_d0_kurtosis_ALL_matched, d_kurt); + fillHisto(m_vx_pt_skewness_ALL_matched, pt_skew); + fillHisto(m_vx_pt_kurtosis_ALL_matched, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_ALL_matched, weight); + fillHisto(m_vx_normalised_track_weight_ALL_matched, weight/n); + } + + } + } // end of if matched vertices if (recoVtxMatchTypeInfo(*vertex) == InDetVertexTruthMatchUtils::VertexMatchType::MERGED) { if (vertex == bestRecoHSVtx_truth) { @@ -593,53 +1081,243 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex fillHisto(m_vx_sumCharge_HS_merged, sumCharge); fillHisto(m_vx_sumCharge_N_trk_HS_merged, sumCharge/vertex->nTrackParticles()); fillHisto(m_vx_z_asym_HS_merged, z_asym); + fillHisto(m_vx_d_asym_HS_merged, d_asym); + fillHisto(m_vx_chi2Over_ndf_HS_merged, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_HS_merged, z_skew); + fillHisto(m_vx_z0_kurtosis_HS_merged, z_kurt); + fillHisto(m_vx_d0_skewness_HS_merged, d_skew); + fillHisto(m_vx_d0_kurtosis_HS_merged, d_kurt); + fillHisto(m_vx_pt_skewness_HS_merged, pt_skew); + fillHisto(m_vx_pt_kurtosis_HS_merged, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_HS_merged, weight); + fillHisto(m_vx_normalised_track_weight_HS_merged, weight/n); + } + + + } else { fillHisto(m_vx_sumpT_merged, sumPt / Gaudi::Units::GeV); fillHisto(m_vx_sumCharge_merged, sumCharge); fillHisto(m_vx_sumCharge_N_trk_merged, sumCharge/vertex->nTrackParticles()); fillHisto(m_vx_z_asym_merged, z_asym); + fillHisto(m_vx_d_asym_merged, d_asym); + fillHisto(m_vx_chi2Over_ndf_merged, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_merged, z_skew); + fillHisto(m_vx_z0_kurtosis_merged, z_kurt); + fillHisto(m_vx_d0_skewness_merged, d_skew); + fillHisto(m_vx_d0_kurtosis_merged, d_kurt); + fillHisto(m_vx_pt_skewness_merged, pt_skew); + fillHisto(m_vx_pt_kurtosis_merged, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_merged, weight); + fillHisto(m_vx_normalised_track_weight_merged, weight/n); + } + } - } + double minpt = 20 ; // GeV + if (sumPt/Gaudi::Units::GeV > minpt) { + fillHisto(m_vx_sumpT_ALL_merged,sumPt / Gaudi::Units::GeV); + fillHisto(m_vx_sumCharge_ALL_merged,sumCharge); + fillHisto(m_vx_sumCharge_N_trk_ALL_merged, sumCharge/vertex->nTrackParticles()); + fillHisto(m_vx_z_asym_ALL_merged, z_asym); + fillHisto(m_vx_d_asym_ALL_merged, d_asym); + fillHisto(m_vx_chi2Over_ndf_ALL_merged, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_ALL_merged, z_skew); + fillHisto(m_vx_z0_kurtosis_ALL_merged, z_kurt); + fillHisto(m_vx_d0_skewness_ALL_merged, d_skew); + fillHisto(m_vx_d0_kurtosis_ALL_merged, d_kurt); + fillHisto(m_vx_pt_skewness_ALL_merged, pt_skew); + fillHisto(m_vx_pt_kurtosis_ALL_merged, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_ALL_merged, weight); + fillHisto(m_vx_normalised_track_weight_ALL_merged, weight/n); + } + + } + } //end of if merged vertices if (recoVtxMatchTypeInfo(*vertex) == InDetVertexTruthMatchUtils::VertexMatchType::SPLIT) { if (vertex == bestRecoHSVtx_truth) { - fillHisto(m_vx_sumpT_HS_split, sumPt / Gaudi::Units::GeV); - fillHisto(m_vx_sumCharge_HS_split, sumCharge); - fillHisto(m_vx_sumCharge_N_trk_HS_split, sumCharge/vertex->nTrackParticles()); - fillHisto(m_vx_z_asym_HS_split, z_asym); + fillHisto(m_vx_sumpT_HS_split, sumPt / Gaudi::Units::GeV); + fillHisto(m_vx_sumCharge_HS_split, sumCharge); + fillHisto(m_vx_sumCharge_N_trk_HS_split, sumCharge/vertex->nTrackParticles()); + fillHisto(m_vx_z_asym_HS_split, z_asym); + fillHisto(m_vx_d_asym_HS_split, d_asym); + fillHisto(m_vx_chi2Over_ndf_HS_split, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_HS_split, z_skew); + fillHisto(m_vx_z0_kurtosis_HS_split, z_kurt); + fillHisto(m_vx_d0_skewness_HS_split, d_skew); + fillHisto(m_vx_d0_kurtosis_HS_split, d_kurt); + fillHisto(m_vx_pt_skewness_HS_split, pt_skew); + fillHisto(m_vx_pt_kurtosis_HS_split, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_HS_split, weight); + fillHisto(m_vx_normalised_track_weight_HS_split, weight/n); + } + + } else { - fillHisto(m_vx_sumpT_split, sumPt / Gaudi::Units::GeV); - fillHisto(m_vx_sumCharge_split, sumCharge); - fillHisto(m_vx_sumCharge_N_trk_split, sumCharge/vertex->nTrackParticles()); - fillHisto(m_vx_z_asym_split, z_asym); + fillHisto(m_vx_sumpT_split, sumPt / Gaudi::Units::GeV); + fillHisto(m_vx_sumCharge_split, sumCharge); + fillHisto(m_vx_sumCharge_N_trk_split, sumCharge/vertex->nTrackParticles()); + fillHisto(m_vx_z_asym_split, z_asym); + fillHisto(m_vx_d_asym_split, d_asym); + fillHisto(m_vx_chi2Over_ndf_split, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_split, z_skew); + fillHisto(m_vx_z0_kurtosis_split, z_kurt); + fillHisto(m_vx_d0_skewness_split, d_skew); + fillHisto(m_vx_d0_kurtosis_split, d_kurt); + fillHisto(m_vx_pt_skewness_split, pt_skew); + fillHisto(m_vx_pt_kurtosis_split, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_split, weight); + fillHisto(m_vx_normalised_track_weight_split, weight/n); + } + + } - } +// fill some histograms that contain both HS and PU above a min pt - say 20GeV + double minpt = 20 ; // GeV + if (sumPt/Gaudi::Units::GeV > minpt) { + fillHisto(m_vx_sumpT_ALL_split,sumPt / Gaudi::Units::GeV); + fillHisto(m_vx_sumCharge_ALL_split,sumCharge); + fillHisto(m_vx_sumCharge_N_trk_ALL_split, sumCharge/vertex->nTrackParticles()); + fillHisto(m_vx_z_asym_ALL_split, z_asym); + fillHisto(m_vx_d_asym_ALL_split, d_asym); + fillHisto(m_vx_chi2Over_ndf_ALL_split, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_ALL_split, z_skew); + fillHisto(m_vx_z0_kurtosis_ALL_split, z_kurt); + fillHisto(m_vx_d0_skewness_ALL_split, d_skew); + fillHisto(m_vx_d0_kurtosis_ALL_split, d_kurt); + fillHisto(m_vx_pt_skewness_ALL_split, pt_skew); + fillHisto(m_vx_pt_kurtosis_ALL_split, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_ALL_split, weight); + fillHisto(m_vx_normalised_track_weight_ALL_split, weight/n); + } + } + + } // end of if split vertices + + if (recoVtxMatchTypeInfo(*vertex) == InDetVertexTruthMatchUtils::VertexMatchType::FAKE) { if (vertex == bestRecoHSVtx_truth) { - fillHisto(m_vx_sumpT_HS_fake, sumPt / Gaudi::Units::GeV); - fillHisto(m_vx_sumCharge_HS_fake, sumCharge); - fillHisto(m_vx_sumCharge_N_trk_HS_fake, sumCharge/vertex->nTrackParticles()); - fillHisto(m_vx_z_asym_HS_fake, z_asym); + fillHisto(m_vx_sumpT_HS_fake, sumPt / Gaudi::Units::GeV); + fillHisto(m_vx_sumCharge_HS_fake, sumCharge); + fillHisto(m_vx_sumCharge_N_trk_HS_fake, sumCharge/vertex->nTrackParticles()); + fillHisto(m_vx_z_asym_HS_fake, z_asym); + fillHisto(m_vx_d_asym_HS_fake, d_asym); + fillHisto(m_vx_chi2Over_ndf_HS_fake, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_HS_fake, z_skew); + fillHisto(m_vx_z0_kurtosis_HS_fake, z_kurt); + fillHisto(m_vx_d0_skewness_HS_fake, d_skew); + fillHisto(m_vx_d0_kurtosis_HS_fake, d_kurt); + fillHisto(m_vx_pt_skewness_HS_fake, pt_skew); + fillHisto(m_vx_pt_kurtosis_HS_fake, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_HS_fake, weight); + } } else { - fillHisto(m_vx_sumpT_fake, sumPt / Gaudi::Units::GeV); - fillHisto(m_vx_sumCharge_fake, sumCharge); - fillHisto(m_vx_sumCharge_N_trk_fake, sumCharge/vertex->nTrackParticles()); - fillHisto(m_vx_z_asym_fake, z_asym); + fillHisto(m_vx_sumpT_fake, sumPt / Gaudi::Units::GeV); + fillHisto(m_vx_sumCharge_fake, sumCharge); + fillHisto(m_vx_sumCharge_N_trk_fake, sumCharge/vertex->nTrackParticles()); + fillHisto(m_vx_z_asym_fake, z_asym); + fillHisto(m_vx_d_asym_fake, d_asym); + fillHisto(m_vx_chi2Over_ndf_fake, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_fake, z_skew); + fillHisto(m_vx_z0_kurtosis_fake, z_kurt); + fillHisto(m_vx_d0_skewness_fake, d_skew); + fillHisto(m_vx_d0_kurtosis_fake, d_kurt); + fillHisto(m_vx_pt_skewness_fake, pt_skew); + fillHisto(m_vx_pt_kurtosis_fake, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_fake, weight); + } } - } +// fill some histograms that contain both HS and PU above a min pt - say 20GeV + double minpt = 20 ; // GeV + if (sumPt/Gaudi::Units::GeV > minpt) { + fillHisto(m_vx_sumpT_ALL_fake,sumPt / Gaudi::Units::GeV); + fillHisto(m_vx_sumCharge_ALL_fake,sumCharge); + fillHisto(m_vx_sumCharge_N_trk_ALL_fake, sumCharge/vertex->nTrackParticles()); + fillHisto(m_vx_z_asym_ALL_fake, z_asym); + fillHisto(m_vx_d_asym_ALL_fake, d_asym); + fillHisto(m_vx_chi2Over_ndf_ALL_fake, vertex->chiSquared()/ndf); + + fillHisto(m_vx_z0_skewness_ALL_fake, z_skew); + fillHisto(m_vx_z0_kurtosis_ALL_fake, z_kurt); + fillHisto(m_vx_d0_skewness_ALL_fake, d_skew); + fillHisto(m_vx_d0_kurtosis_ALL_fake, d_kurt); + fillHisto(m_vx_pt_skewness_ALL_fake, pt_skew); + fillHisto(m_vx_pt_kurtosis_ALL_fake, pt_kurt); + for (const float& weight : vertex->trackWeights()) { + fillHisto(m_vx_track_weight_ALL_fake, weight); + } + + } + } // end of fake vertices +// Helen OTP count the number of vertices for each type per event + + + if (recoVtxMatchTypeInfo(*vertex) == InDetVertexTruthMatchUtils::VertexMatchType::MATCHED) { + if (vertex == bestRecoHSVtx_truth) { + number_matched_HS++; + } + else { + number_matched_PU++; + } + double minpt = 20 ; // GeV + if (sumPt/Gaudi::Units::GeV > minpt) { + number_matched++; + } + } + + if (recoVtxMatchTypeInfo(*vertex) == InDetVertexTruthMatchUtils::VertexMatchType::MERGED) { + if (vertex == bestRecoHSVtx_truth) { + number_merged_HS++; + } + else { + number_merged_PU++; + } + double minpt = 20 ; // GeV + if (sumPt/Gaudi::Units::GeV > minpt) { + number_merged++; + } + } + + if (recoVtxMatchTypeInfo(*vertex) == InDetVertexTruthMatchUtils::VertexMatchType::SPLIT) { + if (vertex == bestRecoHSVtx_truth) { + number_split_HS++; + } + else { + number_split_PU++; + } + double minpt = 20 ; // GeV + if (sumPt/Gaudi::Units::GeV > minpt) { + number_split++; + } + } - //end of sumPt; // can't return here as its a void function + } // end of if (ndf != 0) // Add new histos to check for number of tracks for each vertex type Helen OTP -// - + for (const auto& vertex : vertexContainer.stdcont()) { if (vertex == bestRecoHSVtx_truth) { @@ -684,9 +1362,22 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex } - + } + // std::cout << " End loop over vertices helenmaguire"; } // end loop over vertices +// Helen OTP - add new histos to count number of vertices per event + fillHisto(m_vx_nVertices_ALL_matched, number_matched); + fillHisto(m_vx_nVertices_ALL_merged, number_merged); + fillHisto(m_vx_nVertices_ALL_split, number_split); + fillHisto(m_vx_nVertices_HS_matched, number_matched_HS); + fillHisto(m_vx_nVertices_HS_merged, number_merged_HS); + fillHisto(m_vx_nVertices_HS_split, number_split_HS); + fillHisto(m_vx_nVertices_matched, number_matched_PU); + fillHisto(m_vx_nVertices_merged, number_merged_PU); + fillHisto(m_vx_nVertices_split, number_split_PU); + + // Now fill plots relating to the reconstruction of our truth HS vertex (efficiency and resolutions) if (truthHSVertices.size() != 0) { localPUDensity = getLocalPUDensity(truthHSVtx, truthHSVertices, truthPUVertices); @@ -779,6 +1470,9 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex void InDetPerfPlot_VertexTruthMatching::finalizePlots() { if (m_iDetailLevel >= 200) { + +// std::cout << " finalizePlots helenmaguire !!!*"; + fillResoHist(m_vx_hs_truth_long_reso, m_vx_hs_truth_long_reso_vs_PU); fillResoHist(m_vx_hs_truth_trans_reso, m_vx_hs_truth_trans_reso_vs_PU); } diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h index c0961b52a50d..8305367c3a74 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h @@ -160,12 +160,172 @@ private: TH1* m_vx_z_asym_merged; TH1* m_vx_z_asym_split; TH1* m_vx_z_asym_fake; + TH1* m_vx_track_weight_matched; + TH1* m_vx_track_weight_merged; + TH1* m_vx_track_weight_split; + TH1* m_vx_track_weight_fake; + TH1* m_vx_track_weight_HS_matched; + TH1* m_vx_track_weight_HS_merged; + TH1* m_vx_track_weight_HS_split; + TH1* m_vx_track_weight_HS_fake; TH1* m_vx_z_asym_HS_matched; TH1* m_vx_z_asym_HS_merged; TH1* m_vx_z_asym_HS_split; TH1* m_vx_z_asym_HS_fake; + + TH1* m_vx_normalised_track_weight_matched; + TH1* m_vx_normalised_track_weight_merged; + TH1* m_vx_normalised_track_weight_split; + TH1* m_vx_normalised_track_weight_fake; + TH1* m_vx_normalised_track_weight_HS_matched; + TH1* m_vx_normalised_track_weight_HS_merged; + TH1* m_vx_normalised_track_weight_HS_split; + TH1* m_vx_normalised_track_weight_HS_fake; + + TH1* m_vx_d_asym_matched; + TH1* m_vx_d_asym_merged; + TH1* m_vx_d_asym_split; + TH1* m_vx_d_asym_fake; + TH1* m_vx_d_asym_HS_matched; + TH1* m_vx_d_asym_HS_merged; + TH1* m_vx_d_asym_HS_split; + TH1* m_vx_d_asym_HS_fake; + + TH1* m_vx_chi2Over_ndf_matched; + TH1* m_vx_chi2Over_ndf_merged; + TH1* m_vx_chi2Over_ndf_split; + TH1* m_vx_chi2Over_ndf_fake; + TH1* m_vx_chi2Over_ndf_HS_matched; + TH1* m_vx_chi2Over_ndf_HS_merged; + TH1* m_vx_chi2Over_ndf_HS_split; + TH1* m_vx_chi2Over_ndf_HS_fake; + +// histo to get skewness and kurtosis of z0 of tracks around vertex + + TH1* m_vx_z0_skewness_HS_matched; + TH1* m_vx_z0_kurtosis_HS_matched; + TH1* m_vx_z0_skewness_matched; + TH1* m_vx_z0_kurtosis_matched; + TH1* m_vx_z0_skewness_HS_merged; + TH1* m_vx_z0_kurtosis_HS_merged; + TH1* m_vx_z0_skewness_merged; + TH1* m_vx_z0_kurtosis_merged; + TH1* m_vx_z0_skewness_HS_split; + TH1* m_vx_z0_kurtosis_HS_split; + TH1* m_vx_z0_skewness_split; + TH1* m_vx_z0_kurtosis_split; + TH1* m_vx_z0_skewness_HS_fake; + TH1* m_vx_z0_kurtosis_HS_fake; + TH1* m_vx_z0_skewness_fake; + TH1* m_vx_z0_kurtosis_fake; + + TH1* m_vx_d0_skewness_HS_matched; + TH1* m_vx_d0_skewness_HS_merged; + TH1* m_vx_d0_skewness_HS_split; + TH1* m_vx_d0_skewness_HS_fake; + TH1* m_vx_d0_skewness_matched; + TH1* m_vx_d0_skewness_merged; + TH1* m_vx_d0_skewness_split; + TH1* m_vx_d0_skewness_fake; + TH1* m_vx_d0_kurtosis_HS_matched; + TH1* m_vx_d0_kurtosis_HS_merged; + TH1* m_vx_d0_kurtosis_HS_split; + TH1* m_vx_d0_kurtosis_HS_fake; + TH1* m_vx_d0_kurtosis_matched; + TH1* m_vx_d0_kurtosis_merged; + TH1* m_vx_d0_kurtosis_split; + TH1* m_vx_d0_kurtosis_fake; + + + TH1* m_vx_pt_skewness_matched; + TH1* m_vx_pt_skewness_merged; + TH1* m_vx_pt_skewness_split; + TH1* m_vx_pt_skewness_fake; + TH1* m_vx_pt_skewness_HS_matched; + TH1* m_vx_pt_skewness_HS_merged; + TH1* m_vx_pt_skewness_HS_split; + TH1* m_vx_pt_skewness_HS_fake; + TH1* m_vx_pt_kurtosis_matched; + TH1* m_vx_pt_kurtosis_merged; + TH1* m_vx_pt_kurtosis_split; + TH1* m_vx_pt_kurtosis_fake; + TH1* m_vx_pt_kurtosis_HS_matched; + TH1* m_vx_pt_kurtosis_HS_merged; + TH1* m_vx_pt_kurtosis_HS_split; + TH1* m_vx_pt_kurtosis_HS_fake; + // ALL Vertices + TH1* m_vx_sumpT_ALL_matched; + TH1* m_vx_sumpT_ALL_merged; + TH1* m_vx_sumpT_ALL_split; + TH1* m_vx_sumpT_ALL_fake; + + TH1* m_vx_sumCharge_ALL_matched; + TH1* m_vx_sumCharge_ALL_merged; + TH1* m_vx_sumCharge_ALL_split; + TH1* m_vx_sumCharge_ALL_fake; + TH1* m_vx_sumCharge_N_trk_ALL_matched; + TH1* m_vx_sumCharge_N_trk_ALL_merged; + TH1* m_vx_sumCharge_N_trk_ALL_split; + TH1* m_vx_sumCharge_N_trk_ALL_fake; + TH1* m_vx_z_asym_ALL_matched; + TH1* m_vx_z_asym_ALL_merged; + TH1* m_vx_z_asym_ALL_split; + TH1* m_vx_z_asym_ALL_fake; + TH1* m_vx_track_weight_ALL_matched; + TH1* m_vx_track_weight_ALL_merged; + TH1* m_vx_track_weight_ALL_split; + TH1* m_vx_track_weight_ALL_fake; + TH1* m_vx_normalised_track_weight_ALL_matched; + TH1* m_vx_normalised_track_weight_ALL_merged; + TH1* m_vx_normalised_track_weight_ALL_split; + TH1* m_vx_normalised_track_weight_ALL_fake; + TH1* m_vx_d_asym_ALL_matched; + TH1* m_vx_d_asym_ALL_merged; + TH1* m_vx_d_asym_ALL_split; + TH1* m_vx_d_asym_ALL_fake; + + TH1* m_vx_chi2Over_ndf_ALL_matched; + TH1* m_vx_chi2Over_ndf_ALL_merged; + TH1* m_vx_chi2Over_ndf_ALL_split; + TH1* m_vx_chi2Over_ndf_ALL_fake; + +// histo to get skewness and kurtosis of z0 of tracks around vertex + + TH1* m_vx_z0_skewness_ALL_matched; + TH1* m_vx_z0_kurtosis_ALL_matched; + TH1* m_vx_z0_skewness_ALL_merged; + TH1* m_vx_z0_kurtosis_ALL_merged; + TH1* m_vx_z0_skewness_ALL_split; + TH1* m_vx_z0_kurtosis_ALL_split; + TH1* m_vx_z0_skewness_ALL_fake; + TH1* m_vx_z0_kurtosis_ALL_fake; + TH1* m_vx_d0_skewness_ALL_matched; + TH1* m_vx_d0_skewness_ALL_merged; + TH1* m_vx_d0_skewness_ALL_split; + TH1* m_vx_d0_skewness_ALL_fake; + TH1* m_vx_d0_kurtosis_ALL_matched; + TH1* m_vx_d0_kurtosis_ALL_merged; + TH1* m_vx_d0_kurtosis_ALL_split; + TH1* m_vx_d0_kurtosis_ALL_fake; + TH1* m_vx_pt_skewness_ALL_matched; + TH1* m_vx_pt_skewness_ALL_merged; + TH1* m_vx_pt_skewness_ALL_split; + TH1* m_vx_pt_skewness_ALL_fake; + TH1* m_vx_pt_kurtosis_ALL_matched; + TH1* m_vx_pt_kurtosis_ALL_merged; + TH1* m_vx_pt_kurtosis_ALL_split; + TH1* m_vx_pt_kurtosis_ALL_fake; + TH1* m_vx_nVertices_ALL_matched; + TH1* m_vx_nVertices_ALL_merged; + TH1* m_vx_nVertices_ALL_split; + TH1* m_vx_nVertices_HS_matched; + TH1* m_vx_nVertices_HS_merged; + TH1* m_vx_nVertices_HS_split; + TH1* m_vx_nVertices_matched; + TH1* m_vx_nVertices_merged; + TH1* m_vx_nVertices_split; ///@} -- GitLab