diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml index 301f6400d608b5d66d412d9c7ec65ab33232b141..85c485645d0a8e012baa8bf735518de26899acb0 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/share/InDetPVMPlotDefCommon.xml @@ -814,7 +814,31 @@ </h> <h id="vx_hs_truth_trans_reso_vs_PU" type="TH2" title="Truth Transverse Resolution vs. PU (2D)"> <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> - <y title="|Reco-truth| transverse resolution [mm]" n="20" lo="0.0" hi="0.02"/> + <y title="|Reco-truth| transverse resolution [mm]" n="40" lo="-0.08" hi="0.08"/> +</h> +<h id="vx_hs_truth_long_pull_vs_PU" type="TH2" title="Truth Longitudinal Pull vs. PU (2D)"> + <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> + <y title="|Reco-truth| longitudinal resolution [mm]" n="100" lo="-5.0" hi="5.0"/> +</h> +<h id="vx_hs_truth_trans_pull_vs_PU" type="TH2" title="Truth Transverse Pull vs. PU (2D)"> + <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> + <y title="|Reco-truth| transverse resolution [mm]" n="100" lo="-5.0" hi="5.0"/> +</h> +<h id="vx_hs_truth_long_pull_vs_nTrk" type="TH2" title="Truth Longitudinal Pull vs. nTrk (2D)"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco-truth| longitudinal resolution [mm]" n="100" lo="-5.0" hi="5.0"/> +</h> +<h id="vx_hs_truth_trans_pull_vs_nTrk" type="TH2" title="Truth Transverse Pull vs. nTrk (2D)"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco-truth| transverse resolution [mm]" n="100" lo="-5.0" hi="5.0"/> +</h> +<h id="vx_hs_truth_long_reso_vs_nTrk" type="TH2" title="Truth Longitudinal Resolution vs. nTrk (2D)"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco-truth| longitudinal resolution [mm]" n="40" lo="-0.08" hi="0.08"/> +</h> +<h id="vx_hs_truth_trans_reso_vs_nTrk" type="TH2" title="Truth Transverse Resolution vs. nTrk (2D)"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco-truth| longitudinal resolution [mm]" n="40" lo="-0.08" hi="0.08"/> </h> <h id="vx_hs_truth_long_reso" type="TH1" title="Truth Longitudinal Resolution"> <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> @@ -824,6 +848,86 @@ <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> <y title="|Reco-truth| transverse resolution [mm]" lo="0.0" hi="1.0"/> </h> + + +<h id="vx_TYPE_truth_reso_z_vs_PU" type="TH2" title="Vertex Resolution vs PU Density"> + <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> + <y title="|Reco_z-truth_z| [mm]" n="60" lo="-0.2" hi="0.2"/> +</h> +<h id="vx_TYPE_truth_reso_x_vs_PU" type="TH2" title="Vertex Resolution vs PU Density"> + <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> + <y title="|Reco_x-truth_x| [mm]" n="60" lo="-0.1" hi="0.1"/> +</h> +<h id="vx_TYPE_truth_reso_y_vs_PU" type="TH2" title="Vertex Resolution vs PU Density"> + <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> + <y title="|Reco_y-truth_y| [mm]" n="60" lo="-0.1" hi="0.1"/> +</h> +<h id="vx_TYPE_truth_pull_z_vs_PU" type="TH2" title="Vertex Pull vs PU Density"> + <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> + <y title="|Reco_z-truth_z|/err_z" n="60" lo="-5.0" hi="5.0"/> +</h> +<h id="vx_TYPE_truth_pull_x_vs_PU" type="TH2" title="Vertex Pull vs PU Density"> + <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> + <y title="|Reco_x-truth_x|/err_x" n="60" lo="-5.0" hi="5.0"/> +</h> +<h id="vx_TYPE_truth_pull_y_vs_PU" type="TH2" title="Vertex Pull vs PU Density"> + <x title="Local PU density [vertices/mm]" n="4" lo="0.0" hi="2.0"/> + <y title="|Reco_y-truth_y|/err_y" n="60" lo="-5.0" hi="5.0"/> +</h> + +<h id="vx_TYPE_truth_reso_z_vs_nTrk" type="TH2" title="Vertex Resolution vs Number of Tracks"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco_z-truth_z| [mm]" n="60" lo="-0.2" hi="0.2"/> +</h> +<h id="vx_TYPE_truth_reso_x_vs_nTrk" type="TH2" title="Vertex Resolution vs Number of Tracks"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco_x-truth_x| [mm]" n="60" lo="-0.1" hi="0.1"/> +</h> +<h id="vx_TYPE_truth_reso_y_vs_nTrk" type="TH2" title="Vertex Resolution vs Number of Tracks"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco_y-truth_y| [mm]" n="60" lo="-0.1" hi="0.1"/> +</h> +<h id="vx_TYPE_truth_pull_z_vs_nTrk" type="TH2" title="Vertex Pull vs Number of Tracks"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco_z-truth_z|/err_z" n="60" lo="-5.0" hi="5.0"/> +</h> +<h id="vx_TYPE_truth_pull_x_vs_nTrk" type="TH2" title="Vertex Pull vs Number of Tracks"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco_x-truth_x|/err_x" n="60" lo="-5.0" hi="5.0"/> +</h> +<h id="vx_TYPE_truth_pull_y_vs_nTrk" type="TH2" title="Vertex Pull vs Number of Tracks"> + <x title="Number of Tracks" n="50" lo="0.0" hi="100"/> + <y title="|Reco_y-truth_y|/err_y" n="60" lo="-5.0" hi="5.0"/> +</h> + + + +<h id="vx_TYPE_z_pull" type="TH1" title="Vertex Z Pull"> + <x title="|Reco_z-Truth_z|/Err_z" n="25" lo="-5.0" hi="5.0"/> + <y title="Number of Enries"/> +</h> +<h id="vx_TYPE_y_pull" type="TH1" title="Vertex Y Pull"> + <x title="|Reco_y-Truth_y|/Err_y" n="25" lo="-5.0" hi="5.0"/> + <y title="Number of Enries"/> +</h> +<h id="vx_TYPE_x_pull" type="TH1" title="Vertex X Pull"> + <x title="|Reco_x-Truth_x|/Err_x" n="25" lo="-5.0" hi="5.0"/> + <y title="Number of Enries"/> +</h> +<h id="vx_TYPE_z_reso" type="TH1" title="Vertex Z Resolution"> + <x title="|Reco_z-Truth_z|" n="60" lo="-0.2" hi="0.2"/> + <y title="Number of Enries"/> +</h> +<h id="vx_TYPE_y_reso" type="TH1" title="Vertex Y Resolution"> + <x title="|Reco_y-Truth_y|" n="60" lo="-0.2" hi="0.2"/> + <y title="Number of Enries"/> +</h> +<h id="vx_TYPE_x_reso" type="TH1" title="Vertex X Resolution"> + <x title="|Reco_x-Truth_x|" n="60" lo="-0.2" hi="0.2"/> + <y title="Number of Enries"/> +</h> + + <h id="vx_nTracks" type="TH1F" title="Number of tracks at vertex"> <x title="Number of Tracks" n="150" lo="0" hi="150"/> <y title="Entries"/> diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Vertex.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Vertex.cxx index 2dc45bf250b2cdf2b9fdbd25af769587651b04c3..2fe81931ffbf252b376c776bb21cadf771c3cf4b 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Vertex.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Vertex.cxx @@ -36,31 +36,31 @@ InDetPerfPlot_Vertex::InDetPerfPlot_Vertex(InDetPlotBase* pParent, const std::st void InDetPerfPlot_Vertex::initializePlots() { - IDPVM_BOOK(m_vx_x); - IDPVM_BOOK(m_vx_y); - IDPVM_BOOK(m_vx_z); + book(m_vx_x,"vx_x"); + book(m_vx_y,"vx_y"); + book(m_vx_z,"vx_z"); - IDPVM_BOOK(m_vx_err_x); - IDPVM_BOOK(m_vx_err_y); - IDPVM_BOOK(m_vx_err_z); + book(m_vx_err_x,"vx_err_x"); + book(m_vx_err_y,"vx_err_y"); + book(m_vx_err_z,"vx_err_z"); - IDPVM_BOOK(m_vx_chi2_over_ndf); - IDPVM_BOOK(m_vx_type); + book(m_vx_chi2_over_ndf,"vx_chi2_over_ndf"); + book(m_vx_type,"vx_type"); - IDPVM_BOOK(m_vx_nTracks); - IDPVM_BOOK(m_vx_track_weights); + book(m_vx_nTracks,"vx_nTracks"); + book(m_vx_track_weights,"vx_track_weights"); if (m_iDetailLevel >= 100) { - IDPVM_BOOK(m_vx_track_pt); - IDPVM_BOOK(m_vx_track_eta); - IDPVM_BOOK(m_vx_track_nSiHits); - IDPVM_BOOK(m_vx_track_nSiHoles); - IDPVM_BOOK(m_vx_track_d0); - IDPVM_BOOK(m_vx_track_err_d0); - IDPVM_BOOK(m_vx_track_z0); - IDPVM_BOOK(m_vx_track_err_z0); + book(m_vx_track_pt,"vx_track_pt"); + book(m_vx_track_eta,"vx_track_eta"); + book(m_vx_track_nSiHits,"vx_track_nSiHits"); + book(m_vx_track_nSiHoles,"vx_track_nSiHoles"); + book(m_vx_track_d0,"vx_track_d0"); + book(m_vx_track_err_d0,"vx_track_err_d0"); + book(m_vx_track_z0,"vx_track_z0"); + book(m_vx_track_err_z0,"vx_track_err_z0"); } } diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx index 62f5a53a690ee847c4eb935ed5c4f3b5ad0bc621..a6b21a33004b4279d8091b5c4a907d7180763539 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx @@ -8,6 +8,8 @@ **/ #include "InDetPerfPlot_VertexTruthMatching.h" +#include "EventPrimitives/EventPrimitives.h" +#include "EventPrimitives/EventPrimitivesHelpers.h" using namespace IDPVM; @@ -34,35 +36,117 @@ InDetPerfPlot_VertexTruthMatching::InDetPerfPlot_VertexTruthMatching(InDetPlotBa m_vx_hs_truth_long_reso_vs_PU(nullptr), m_vx_hs_truth_trans_reso_vs_PU(nullptr), m_vx_hs_truth_long_reso(nullptr), - m_vx_hs_truth_trans_reso(nullptr) + m_vx_hs_truth_trans_reso(nullptr), + m_vx_hs_z_pull(nullptr), + m_vx_hs_y_pull(nullptr), + m_vx_hs_x_pull(nullptr), + m_vx_all_z_pull(nullptr), + m_vx_all_y_pull(nullptr), + m_vx_all_x_pull(nullptr), + m_vx_hs_z_res(nullptr), + m_vx_hs_y_res(nullptr), + m_vx_hs_x_res(nullptr), + m_vx_all_z_res(nullptr), + m_vx_all_y_res(nullptr), + m_vx_all_x_res(nullptr), + m_vx_all_truth_z_res_vs_PU(nullptr), + m_vx_all_truth_x_res_vs_PU(nullptr), + m_vx_all_truth_y_res_vs_PU(nullptr), + m_vx_all_truth_z_pull_vs_PU(nullptr), + m_vx_all_truth_x_pull_vs_PU(nullptr), + m_vx_all_truth_y_pull_vs_PU(nullptr), + m_vx_all_truth_z_res_vs_nTrk(nullptr), + m_vx_all_truth_x_res_vs_nTrk(nullptr), + m_vx_all_truth_y_res_vs_nTrk(nullptr), + m_vx_all_truth_z_pull_vs_nTrk(nullptr), + m_vx_all_truth_x_pull_vs_nTrk(nullptr), + m_vx_all_truth_y_pull_vs_nTrk(nullptr), + m_vx_hs_truth_z_res_vs_PU(nullptr), + m_vx_hs_truth_x_res_vs_PU(nullptr), + m_vx_hs_truth_y_res_vs_PU(nullptr), + m_vx_hs_truth_z_pull_vs_PU(nullptr), + m_vx_hs_truth_x_pull_vs_PU(nullptr), + m_vx_hs_truth_y_pull_vs_PU(nullptr), + m_vx_hs_truth_z_res_vs_nTrk(nullptr), + m_vx_hs_truth_x_res_vs_nTrk(nullptr), + m_vx_hs_truth_y_res_vs_nTrk(nullptr), + m_vx_hs_truth_z_pull_vs_nTrk(nullptr), + m_vx_hs_truth_x_pull_vs_nTrk(nullptr), + m_vx_hs_truth_y_pull_vs_nTrk(nullptr) + { // nop } void InDetPerfPlot_VertexTruthMatching::initializePlots() { - IDPVM_BOOK(m_vx_type_truth); + book(m_vx_type_truth,"vx_type_truth"); if (m_iDetailLevel >= 200) { - IDPVM_BOOK(m_vx_hs_classification); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_inclusive); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_matched); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_merged); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_split); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_fake); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_dummy); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_clean); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_lowpu); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_highpu); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_hssplit); - IDPVM_BOOK(m_vx_nReco_vs_nTruth_none); - IDPVM_BOOK(m_vx_hs_reco_eff); - IDPVM_BOOK(m_vx_hs_sel_eff); - IDPVM_BOOK(m_vx_hs_reco_long_reso); - IDPVM_BOOK(m_vx_hs_reco_trans_reso); - IDPVM_BOOK(m_vx_hs_truth_long_reso); - IDPVM_BOOK(m_vx_hs_truth_trans_reso); - IDPVM_BOOK(m_vx_hs_truth_long_reso_vs_PU); - IDPVM_BOOK(m_vx_hs_truth_trans_reso_vs_PU); + book(m_vx_hs_classification,"vx_hs_classification"); + book(m_vx_nReco_vs_nTruth_inclusive,"vx_nReco_vs_nTruth_inclusive"); + book(m_vx_nReco_vs_nTruth_matched,"vx_nReco_vs_nTruth_matched"); + book(m_vx_nReco_vs_nTruth_merged,"vx_nReco_vs_nTruth_merged"); + book(m_vx_nReco_vs_nTruth_split,"vx_nReco_vs_nTruth_split"); + book(m_vx_nReco_vs_nTruth_fake,"vx_nReco_vs_nTruth_fake"); + book(m_vx_nReco_vs_nTruth_dummy,"vx_nReco_vs_nTruth_dummy"); + book(m_vx_nReco_vs_nTruth_clean,"vx_nReco_vs_nTruth_clean"); + book(m_vx_nReco_vs_nTruth_lowpu,"vx_nReco_vs_nTruth_lowpu"); + book(m_vx_nReco_vs_nTruth_highpu,"vx_nReco_vs_nTruth_highpu"); + book(m_vx_nReco_vs_nTruth_hssplit,"vx_nReco_vs_nTruth_hssplit"); + book(m_vx_nReco_vs_nTruth_none,"vx_nReco_vs_nTruth_none"); + book(m_vx_hs_reco_eff,"vx_hs_reco_eff"); + book(m_vx_hs_sel_eff,"vx_hs_sel_eff"); + book(m_vx_hs_reco_long_reso,"vx_hs_reco_long_reso"); + book(m_vx_hs_reco_trans_reso,"vx_hs_reco_trans_reso"); + book(m_vx_hs_truth_long_reso,"vx_hs_truth_long_reso"); + book(m_vx_hs_truth_trans_reso,"vx_hs_truth_trans_reso"); + book(m_vx_hs_truth_long_reso_vs_PU,"vx_hs_truth_long_reso_vs_PU"); + book(m_vx_hs_truth_trans_reso_vs_PU,"vx_hs_truth_trans_reso_vs_PU"); + + book(m_vx_hs_z_pull,"vx_TYPE_z_pull","vx_hs_z_pull"); + book(m_vx_hs_y_pull,"vx_TYPE_y_pull","vx_hs_y_pull"); + book(m_vx_hs_x_pull,"vx_TYPE_x_pull","vx_hs_x_pull"); + + book(m_vx_all_z_pull,"vx_TYPE_z_pull","vx_all_z_pull"); + book(m_vx_all_y_pull,"vx_TYPE_y_pull","vx_all_y_pull"); + book(m_vx_all_x_pull,"vx_TYPE_x_pull","vx_all_x_pull"); + + book(m_vx_hs_z_res,"vx_TYPE_z_reso","vx_hs_z_res"); + book(m_vx_hs_y_res,"vx_TYPE_y_reso","vx_hs_y_res"); + book(m_vx_hs_x_res,"vx_TYPE_x_reso","vx_hs_x_res"); + book(m_vx_all_z_res,"vx_TYPE_z_reso","vx_all_z_res"); + book(m_vx_all_y_res,"vx_TYPE_y_reso","vx_all_y_res"); + book(m_vx_all_x_res,"vx_TYPE_x_reso","vx_all_x_res"); + + book(m_vx_all_truth_z_res_vs_PU, "vx_TYPE_truth_reso_z_vs_PU", "vx_all_truth_reso_z_vs_PU"); + book(m_vx_all_truth_x_res_vs_PU, "vx_TYPE_truth_reso_x_vs_PU", "vx_all_truth_reso_x_vs_PU"); + book(m_vx_all_truth_y_res_vs_PU, "vx_TYPE_truth_reso_y_vs_PU", "vx_all_truth_reso_y_vs_PU"); + book(m_vx_all_truth_z_res_vs_nTrk, "vx_TYPE_truth_reso_z_vs_nTrk", "vx_all_truth_reso_z_vs_nTrk"); + book(m_vx_all_truth_x_res_vs_nTrk, "vx_TYPE_truth_reso_x_vs_nTrk", "vx_all_truth_reso_x_vs_nTrk"); + book(m_vx_all_truth_y_res_vs_nTrk, "vx_TYPE_truth_reso_y_vs_nTrk", "vx_all_truth_reso_y_vs_nTrk"); + + book(m_vx_all_truth_z_pull_vs_PU, "vx_TYPE_truth_pull_z_vs_PU", "vx_all_truth_pull_z_vs_PU"); + book(m_vx_all_truth_x_pull_vs_PU, "vx_TYPE_truth_pull_x_vs_PU", "vx_all_truth_pull_x_vs_PU"); + book(m_vx_all_truth_y_pull_vs_PU, "vx_TYPE_truth_pull_y_vs_PU", "vx_all_truth_pull_y_vs_PU"); + book(m_vx_all_truth_z_pull_vs_nTrk, "vx_TYPE_truth_pull_z_vs_nTrk", "vx_all_truth_pull_z_vs_nTrk"); + book(m_vx_all_truth_x_pull_vs_nTrk, "vx_TYPE_truth_pull_x_vs_nTrk", "vx_all_truth_pull_x_vs_nTrk"); + book(m_vx_all_truth_y_pull_vs_nTrk, "vx_TYPE_truth_pull_y_vs_nTrk", "vx_all_truth_pull_y_vs_nTrk"); + + book(m_vx_hs_truth_z_res_vs_PU, "vx_TYPE_truth_reso_z_vs_PU", "vx_hs_truth_reso_z_vs_PU"); + book(m_vx_hs_truth_x_res_vs_PU, "vx_TYPE_truth_reso_x_vs_PU", "vx_hs_truth_reso_x_vs_PU"); + book(m_vx_hs_truth_y_res_vs_PU, "vx_TYPE_truth_reso_y_vs_PU", "vx_hs_truth_reso_y_vs_PU"); + book(m_vx_hs_truth_z_res_vs_nTrk, "vx_TYPE_truth_reso_z_vs_nTrk", "vx_hs_truth_reso_z_vs_nTrk"); + book(m_vx_hs_truth_x_res_vs_nTrk, "vx_TYPE_truth_reso_x_vs_nTrk", "vx_hs_truth_reso_x_vs_nTrk"); + book(m_vx_hs_truth_y_res_vs_nTrk, "vx_TYPE_truth_reso_y_vs_nTrk", "vx_hs_truth_reso_y_vs_nTrk"); + + book(m_vx_hs_truth_z_pull_vs_PU, "vx_TYPE_truth_pull_z_vs_PU", "vx_hs_truth_pull_z_vs_PU"); + book(m_vx_hs_truth_x_pull_vs_PU, "vx_TYPE_truth_pull_x_vs_PU", "vx_hs_truth_pull_x_vs_PU"); + book(m_vx_hs_truth_y_pull_vs_PU, "vx_TYPE_truth_pull_y_vs_PU", "vx_hs_truth_pull_y_vs_PU"); + book(m_vx_hs_truth_z_pull_vs_nTrk, "vx_TYPE_truth_pull_z_vs_nTrk", "vx_hs_truth_pull_z_vs_nTrk"); + book(m_vx_hs_truth_x_pull_vs_nTrk, "vx_TYPE_truth_pull_x_vs_nTrk", "vx_hs_truth_pull_x_vs_nTrk"); + book(m_vx_hs_truth_y_pull_vs_nTrk, "vx_TYPE_truth_pull_y_vs_nTrk", "vx_hs_truth_pull_y_vs_nTrk"); + + } } @@ -324,6 +408,42 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex minTruthRecoRadialDiff2 = truthRecoRadialDiff2; } } + + const xAOD::TruthVertex *matchVertex = getTruthVertex(vertex); + if(!matchVertex) continue; + float residual_z = matchVertex->z() - vertex->z(); + float residual_x = matchVertex->x() - vertex->x(); + float residual_y = matchVertex->y() - vertex->y(); + const AmgSymMatrix(3)& covariance = vertex->covariancePosition(); + float vtxerr_x = fabs(Amg::error(covariance, 0)) > 1e-7 ? Amg::error(covariance, 0) : 1000.; + float vtxerr_y = fabs(Amg::error(covariance, 1)) > 1e-7 ? Amg::error(covariance, 1) : 1000.; + float vtxerr_z = fabs(Amg::error(covariance, 2)) > 1e-7 ? Amg::error(covariance, 2) : 1000.; + localPUDensity = getLocalPUDensity(matchVertex, truthHSVertices, truthPUVertices); + + fillHisto(m_vx_all_z_pull, residual_z/vtxerr_z); + fillHisto(m_vx_all_y_pull, residual_y/vtxerr_y); + fillHisto(m_vx_all_x_pull, residual_x/vtxerr_x); + + fillHisto(m_vx_all_truth_z_res_vs_PU, localPUDensity, residual_z); + fillHisto(m_vx_all_truth_x_res_vs_PU, localPUDensity, residual_x); + fillHisto(m_vx_all_truth_y_res_vs_PU, localPUDensity, residual_y); + + fillHisto(m_vx_all_z_res, residual_z); + fillHisto(m_vx_all_y_res, residual_y); + fillHisto(m_vx_all_x_res, residual_x); + + fillHisto(m_vx_all_truth_z_pull_vs_PU, localPUDensity, residual_z/vtxerr_z); + fillHisto(m_vx_all_truth_x_pull_vs_PU, localPUDensity, residual_x/vtxerr_y); + fillHisto(m_vx_all_truth_y_pull_vs_PU, localPUDensity, residual_y/vtxerr_x); + + fillHisto(m_vx_all_truth_z_res_vs_nTrk, vertex->nTrackParticles(), residual_z); + fillHisto(m_vx_all_truth_x_res_vs_nTrk, vertex->nTrackParticles(), residual_x); + fillHisto(m_vx_all_truth_y_res_vs_nTrk, vertex->nTrackParticles(), residual_y); + + fillHisto(m_vx_all_truth_z_pull_vs_nTrk, vertex->nTrackParticles(), residual_z/vtxerr_z); + 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); + } // end loop over vertices @@ -331,11 +451,45 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::VertexContainer& vertex if (truthHSVertices.size() != 0) { localPUDensity = getLocalPUDensity(truthHSVtx, truthHSVertices, truthPUVertices); if (truthHSVtxRecoed) { + float residual_z = truthHSVtx->z() - bestRecoHSVtx_truth->z(); + float residual_r = std::sqrt(std::pow(truthHSVtx->x() - bestRecoHSVtx_truth->x(), 2) + std::pow(truthHSVtx->y() - bestRecoHSVtx_truth->y(), 2)); + float residual_x = truthHSVtx->x() - bestRecoHSVtx_truth->x(); + float residual_y = truthHSVtx->y() - bestRecoHSVtx_truth->y(); fillHisto(m_vx_hs_reco_eff, localPUDensity, 1); fillHisto(m_vx_hs_reco_long_reso, localPUDensity, getRecoLongitudinalReso(bestRecoHSVtx_truth)); fillHisto(m_vx_hs_reco_trans_reso, localPUDensity, getRecoTransverseReso(bestRecoHSVtx_truth)); - fillHisto(m_vx_hs_truth_long_reso_vs_PU, localPUDensity, truthHSVtx->z() - bestRecoHSVtx_truth->z()); - fillHisto(m_vx_hs_truth_trans_reso_vs_PU, localPUDensity, std::sqrt(std::pow(truthHSVtx->x() - bestRecoHSVtx_truth->x(), 2) + std::pow(truthHSVtx->y() - bestRecoHSVtx_truth->y(), 2))); + fillHisto(m_vx_hs_truth_long_reso_vs_PU, localPUDensity, residual_z); + fillHisto(m_vx_hs_truth_trans_reso_vs_PU, localPUDensity, residual_r); + + const AmgSymMatrix(3)& covariance = bestRecoHSVtx_truth->covariancePosition(); + float vtxerr_x = Amg::error(covariance, 0); + float vtxerr_y = Amg::error(covariance, 1); + float vtxerr_z = Amg::error(covariance, 2); + + if(fabs(vtxerr_z) > 1e-7) fillHisto(m_vx_hs_z_pull, residual_z/vtxerr_z); + if(fabs(vtxerr_y) > 1e-7) fillHisto(m_vx_hs_y_pull, residual_y/vtxerr_y); + if(fabs(vtxerr_x) > 1e-7) fillHisto(m_vx_hs_x_pull, residual_x/vtxerr_x); + + fillHisto(m_vx_hs_truth_z_res_vs_PU, localPUDensity, residual_z); + fillHisto(m_vx_hs_truth_x_res_vs_PU, localPUDensity, residual_x); + fillHisto(m_vx_hs_truth_y_res_vs_PU, localPUDensity, residual_y); + + fillHisto(m_vx_hs_z_res, residual_z); + fillHisto(m_vx_hs_y_res, residual_y); + fillHisto(m_vx_hs_x_res, residual_x); + + fillHisto(m_vx_hs_truth_z_pull_vs_PU, localPUDensity, residual_z/vtxerr_z); + fillHisto(m_vx_hs_truth_x_pull_vs_PU, localPUDensity, residual_x/vtxerr_y); + fillHisto(m_vx_hs_truth_y_pull_vs_PU, localPUDensity, residual_y/vtxerr_x); + + fillHisto(m_vx_hs_truth_z_res_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_z); + fillHisto(m_vx_hs_truth_x_res_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_x); + fillHisto(m_vx_hs_truth_y_res_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_y); + + fillHisto(m_vx_hs_truth_z_pull_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_z/vtxerr_z); + fillHisto(m_vx_hs_truth_x_pull_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_x/vtxerr_y); + fillHisto(m_vx_hs_truth_y_pull_vs_nTrk, bestRecoHSVtx_truth->nTrackParticles(), residual_y/vtxerr_x); + } else { fillHisto(m_vx_hs_reco_eff, localPUDensity, 0); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h index 754427d18db61c7907d47040e4bfdcd7abf4c0d1..e1903fb2dd46766cceadc89c4c328151360f7f2b 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h @@ -72,8 +72,68 @@ private: // For reco-truth resolutions: TH2* m_vx_hs_truth_long_reso_vs_PU; TH2* m_vx_hs_truth_trans_reso_vs_PU; + TH2* m_vx_all_truth_long_reso_vs_PU; + TH2* m_vx_all_truth_trans_reso_vs_PU; + + TH2* m_vx_hs_truth_long_pull_vs_PU; + TH2* m_vx_hs_truth_trans_pull_vs_PU; + TH2* m_vx_all_truth_long_pull_vs_PU; + TH2* m_vx_all_truth_trans_pull_vs_PU; + + TH2* m_vx_hs_truth_long_reso_vs_nTrk; + TH2* m_vx_hs_truth_trans_reso_vs_nTrk; + TH2* m_vx_all_truth_long_reso_vs_nTrk; + TH2* m_vx_all_truth_trans_reso_vs_nTrk; + TH2* m_vx_hs_truth_long_pull_vs_nTrk; + TH2* m_vx_hs_truth_trans_pull_vs_nTrk; + TH2* m_vx_all_truth_long_pull_vs_nTrk; + TH2* m_vx_all_truth_trans_pull_vs_nTrk; + TH1* m_vx_hs_truth_long_reso; TH1* m_vx_hs_truth_trans_reso; + + TH1* m_vx_hs_z_pull; + TH1* m_vx_hs_y_pull; + TH1* m_vx_hs_x_pull; + TH1* m_vx_all_z_pull; + TH1* m_vx_all_y_pull; + TH1* m_vx_all_x_pull; + + TH1* m_vx_hs_z_res; + TH1* m_vx_hs_y_res; + TH1* m_vx_hs_x_res; + TH1* m_vx_all_z_res; + TH1* m_vx_all_y_res; + TH1* m_vx_all_x_res; + + TH2* m_vx_all_truth_z_res_vs_PU; + TH2* m_vx_all_truth_x_res_vs_PU; + TH2* m_vx_all_truth_y_res_vs_PU; + TH2* m_vx_all_truth_z_pull_vs_PU; + TH2* m_vx_all_truth_x_pull_vs_PU; + TH2* m_vx_all_truth_y_pull_vs_PU; + + TH2* m_vx_all_truth_z_res_vs_nTrk; + TH2* m_vx_all_truth_x_res_vs_nTrk; + TH2* m_vx_all_truth_y_res_vs_nTrk; + TH2* m_vx_all_truth_z_pull_vs_nTrk; + TH2* m_vx_all_truth_x_pull_vs_nTrk; + TH2* m_vx_all_truth_y_pull_vs_nTrk; + + TH2* m_vx_hs_truth_z_res_vs_PU; + TH2* m_vx_hs_truth_x_res_vs_PU; + TH2* m_vx_hs_truth_y_res_vs_PU; + TH2* m_vx_hs_truth_z_pull_vs_PU; + TH2* m_vx_hs_truth_x_pull_vs_PU; + TH2* m_vx_hs_truth_y_pull_vs_PU; + + TH2* m_vx_hs_truth_z_res_vs_nTrk; + TH2* m_vx_hs_truth_x_res_vs_nTrk; + TH2* m_vx_hs_truth_y_res_vs_nTrk; + TH2* m_vx_hs_truth_z_pull_vs_nTrk; + TH2* m_vx_hs_truth_x_pull_vs_nTrk; + TH2* m_vx_hs_truth_y_pull_vs_nTrk; + ///@} private: // plot base has no default implementation of this; we use it to book the histos