From f1ba37d103575fd9b2124574479830e1e01b79fa Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Sat, 15 Feb 2025 23:02:48 +0100 Subject: [PATCH 1/9] Adding C000 test --- ...ack_base_FS_noDoubleRatio_IDTPMconfig.json | 11 + ...e_config_EFTrack_base_FS_noDoubleRatio.xml | 545 ++++++++++++++++++ .../test_EFTrack_C000_FS_ttbar_pu200_grid.sh | 87 +++ 3 files changed, 643 insertions(+) create mode 100644 InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json create mode 100644 InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml create mode 100755 InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json new file mode 100644 index 000000000000..ede75926df63 --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json @@ -0,0 +1,11 @@ +{ + "TrkAnaEF" : { + "enabled" : true, + "TestType" : "Offline", + "RefType" : "Truth", + "OfflineTrkKey" : "InDetTrackParticles", + "MatchingType" : "TruthMatch", + "plotTechnicalEfficiencies" : true, + "plotDuplicateRates" : true + } +} diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml new file mode 100644 index 000000000000..ef9c1b3ab259 --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml @@ -0,0 +1,545 @@ +<?xml version="1.0" ?> +<!-- + DCube configuration XML file = dcube_config.xml + auto-generated using DCube 7.3.0 by Krzysztof Daniel Ciba (Krzysztof.Ciba@NOSPAMgmail.com) + on Sat, 15 Feb 2025 18:54:46 CET + from Root reference file: IDTPM.C000_FS.HIST.root + Statistics tests: + "['KSnorm']" + Legend: + * KS - Kolmogorov-Smirnov test + * KSnorm - Kolmogorov-Smirnov + normalisation tests (default) + * chi2 - chi2 test + * bbb - bin-by-bin comparision + * meany - avg eff mean y [TProfiles only!] + * all - all above tests (except KSnorm) + * allnorm - all above tests (except KS) + Tweaks: + [1] remove or comment out (using HTML comments tags) histograms not relevant + to your analysis + [2] provide a new content to "ref_desc" and "mon_desc" tags to something + more meaningful + [3] and of course feel free to change attribute "tests" in each "hist" tag + [4] limits of p-value warning and failure can be set by changing attributes + in <plimit> tag + [5] if you want to make plots FOR EVERY histogram in your monitored file + change attribute "inclusive" in <mode> tag to "true" +--> +<dcube_client_config> + <dcube branch="*" install="*" cmtconfig="*" project="*" jobId="*"> + <!-- + ################################################### + DCubeClient for: + [1] branch: * + [2] install: * + [3] cmtconfig: * + [4] project: * + [5] jobId: * + [6] reference root file: IDTPM.C000_FS.HIST.root + [7] p-values limits FAIL = 0.750000 WARN = 0.950000 + ################################################### +--> + <reference file="/eos/home-m/maparo/IDTPMout/ART/IDTPM.C000_FS.HIST.root"/> + <ref_desc>PUT YOUR REFERENCE DESCRIPTION HERE</ref_desc> + <test_desc>PUT YOUR TEST DESCRIPTION HERE</test_desc> + <plimit fail="0.50" warn="0.95"/> + <TDirectory name="/"> + <TDirectory name="InDetTrackPerfMonPlots"> + <TDirectory name="TrkAnaEF"> + <TDirectory name="Offline"> + <TDirectory name="Tracks"> + <TDirectory name="Multiplicities"> + <hist1D name="summary" type="TH1D" plotopts="logy" tests="KSnorm"/> + <hist1D name="num_offl_all" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_offl_all_vs_num_vtx_offl_all" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="num_offl_selected" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_offl_selected_vs_num_vtx_offl_selected" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="num_offl_matched" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_offl_matched_vs_num_vtx_offl_matched" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_offl_selected_vs_actualMu" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_offl_selected_vs_truthMu" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="num_truth_all" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_truth_all_vs_num_vtx_truth_all" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="num_truth_selected" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_truth_selected_vs_num_vtx_truth_selected" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="num_truth_matched" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_truth_matched_vs_num_vtx_truth_matched" type="TH2F" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <TDirectory name="Parameters"> + <hist1D name="offl_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_chi2" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_ndof" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_chi2OverNdof" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_author" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_time" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_eta_vs_pt" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_eta_vs_phi" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_z0_vs_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_z0sin_vs_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_prodR" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_prodZ" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="truth_nSiHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="truth_nSiHits_vs_eta" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="truth_eta_vs_pt" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="truth_eta_vs_phi" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="truth_z0_vs_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="truth_z0sin_vs_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <graph name="offl_hasValidTime_eff_vs_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <TDirectory name="Resolutions"> + <hist1D name="pull_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_pt" type="TH2F" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_pt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_pt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_pt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_pt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_pt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_pt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_pt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_pt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_pt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_pt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_pt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_pt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pull_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_eta" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_eta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_eta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_eta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_eta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_eta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_eta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_eta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_eta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_eta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_eta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_eta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_eta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pull_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_d0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_d0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_d0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_d0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_d0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_d0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_d0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_d0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_d0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_d0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_d0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_d0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pull_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_z0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_z0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_z0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_z0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_z0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_z0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_z0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_z0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_z0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_z0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_z0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_z0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_z0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pull_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_qoverp" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_qoverp_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_qoverp_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_qoverp_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_qoverp_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_qoverp_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_qoverp_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_qoverp_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_qoverp_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pull_ptqopt" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_ptqopt" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_ptqopt" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_ptqopt" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_ptqopt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_ptqopt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_ptqopt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_ptqopt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_ptqopt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_ptqopt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_ptqopt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_ptqopt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pull_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_theta" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_theta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_theta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_theta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_theta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_theta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_theta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_theta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_theta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_theta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_theta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_theta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_theta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pull_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_phi" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_phi_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_phi_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_phi_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_phi_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_phi_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_phi_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_phi_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_phi_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_phi_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_phi_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_phi_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_phi_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pull_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="res_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="sigma_offl_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_z0sin" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_z0sin_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_z0sin_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_z0sin_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_z0sin_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resolution_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resmean_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullwidth_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="pullmean_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_z0sin_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="resmean_z0sin_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullwidth_z0sin_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="pullmean_z0sin_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <TDirectory name="Duplicates"> + <hist1D name="duplnum_vs_truth_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_vs_truth_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_vs_truth_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_vs_truth_d0" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_vs_truth_z0" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_nonzero_vs_truth_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_nonzero_vs_truth_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_nonzero_vs_truth_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_nonzero_vs_truth_d0" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_nonzero_vs_truth_z0" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_nonzero_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="duplnum_nonzero_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <graph name="duplrate_vs_truth_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="duplrate_vs_truth_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="duplrate_vs_truth_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="duplrate_vs_truth_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="duplrate_vs_truth_z0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="duplrate_vs_actualMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="duplrate_vs_truthMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <TDirectory name="HitsOnTracks"> + <hist1D name="offl_nInnerMostPixelHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelEndcapHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelEndcapHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedEndcapHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHoles" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelSharedHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_pixeldEdx" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHoles" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTSharedHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelEndcapHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelEndcapHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedEndcapHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHoles_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelSharedHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_pixeldEdx_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHoles_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTSharedHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_offl_pt_vs_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_offl_pt_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelEndcapHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelEndcapHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedEndcapHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHoles_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelSharedHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_pixeldEdx_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHoles_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTSharedHits_vs_offl_eta" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_offl_eta_vs_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelEndcapHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelEndcapHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedEndcapHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHoles_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelSharedHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_pixeldEdx_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHoles_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTSharedHits_vs_offl_phi" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelEndcapHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelEndcapHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedEndcapHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHoles_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelSharedHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_pixeldEdx_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHoles_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTSharedHits_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_truthMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_truthMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_truthMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelEndcapHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelEndcapHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedEndcapHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelHoles_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nPixelSharedHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_pixeldEdx_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTHoles_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nSCTSharedHits_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_actualMu_vs_offl_pt" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_actualMu_vs_offl_eta" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelEndcapHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nNextToInnerMostPixelEndcapHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nInnerMostPixelSharedEndcapHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelHoles_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nPixelSharedHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_pixeldEdx_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTHoles_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + <hist2D name="offl_nSCTSharedHits_vs_actualMu_vs_offl_phi" type="TProfile2D" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <TDirectory name="Efficiencies"> + <TDirectory name="Purities"> + <graph name="eff_vs_offl_inclusive" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_lowPt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_z0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_eta_vs_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_eta_vs_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_z0_vs_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_z0sin_vs_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <TDirectory name="Technical"> + <TDirectory name="Purities"> + <graph name="eff_vs_offl_inclusive" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_lowPt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_z0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_eta_vs_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_eta_vs_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_z0_vs_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_offl_z0sin_vs_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <graph name="eff_vs_truth_inclusive" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_lowPt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_z0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_prodR" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_prodZ" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_eta_vs_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_eta_vs_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_z0_vs_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_z0sin_vs_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_actualMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truthMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <graph name="eff_vs_truth_inclusive" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_lowPt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_z0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_prodR" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_prodZ" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_eta_vs_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_eta_vs_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_z0_vs_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truth_z0sin_vs_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_actualMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="eff_vs_truthMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + <TDirectory name="FakeRates"> + <graph name="fakerate_vs_offl_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="fakerate_vs_offl_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="fakerate_vs_offl_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="fakerate_vs_offl_d0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="fakerate_vs_offl_z0" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="fakerate_vs_actualMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + <graph name="fakerate_vs_truthMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> + </TDirectory> + </TDirectory> + </TDirectory> + </TDirectory> + </TDirectory> + </TDirectory> + </dcube> +</dcube_client_config> diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh new file mode 100755 index 000000000000..674a1226ca59 --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# art-description: Niglty test to produce a reference for EFTrack studies using ttbar pu200 sample +# art-type: grid +# art-include: main/Athena +# art-output: *.root +# art-output: *.json +# art-output: *.xml +# art-output: dcube* +# art-html: dcube_cmp + +SampleName='C000_FS.ttbar_pu200' +InputRDOfile='/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-01/mc21_14TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.RDO.e8514_s4345_r15583_tid39626672_00/RDO.39626672._001121.pool.root.1' +IDTPMjsonConfig='EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json' +dcubeXmlIDTPMconfig='dcube_config_EFTrack_base_FS_noDoubleRatio.xml' + +# search in $DATAPATH for matching files +IDTPMjsonConfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $IDTPMjsonConfig -print -quit 2>/dev/null ) +dcubeXmlIDTPMconfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $dcubeXmlIDTPMconfig -print -quit 2>/dev/null ) + +run () { + name="${1}" + cmd="${@:2}" + echo "Running ${name}..." + echo "command: ${cmd}" + time ${cmd} + rc=$? + echo "art-result: $rc ${name}" + if [ $rc != 0 ]; then + exit $rc + fi + return $rc +} + +## Track reconstruction step +run "C000 ref" \ + Reco_tf.py \ + --maxEvents 10 \ + --multithreaded 'True' \ + --autoConfiguration 'everything' \ + --conditionsTag 'all:OFLCOND-MC21-SDR-RUN4-02' \ + --geometryVersion 'all:ATLAS-P2-RUN4-03-00-00' \ + --postInclude 'all:PyJobTransforms.UseFrontier' \ + --preInclude 'InDetConfig.ConfigurationHelpers.OnlyTrackingPreInclude' \ + --preExec 'flags.Tracking.writeExtendedSi_PRDInfo=True' \ + --steering 'doRAWtoALL' \ + --inputRDOFile ${InputRDOfile} \ + --outputAODFile "${SampleName}.AOD.pool.root" + +## Don't run if IDTPM json config is not found +if [ -z "$IDTPMjsonConfig_absPath" ]; then + echo "art-result: 1 $IDTPMjsonConfig_absPath not found" + exit 1 +fi + +## Copying json config in the output directory +cwd=$(pwd) +echo "Running IDTPM with the following json config:" +## change the name of the track collection if needed +TrkCollName="InDetTrackParticles" +cat $IDTPMjsonConfig_absPath | sed "s|InDetTrackParticles|${TrkCollName}|g" | tee ${cwd}/IDTPMconfig.json + +## IDTPM step +run "IDTPM" \ + runIDTPM.py \ + --inputFileNames "${SampleName}.AOD.pool.root" \ + --outputFilePrefix "IDTPM.${SampleName}" \ + --trkAnaCfgFile "${cwd}/IDTPMconfig.json" + +reco_rc=$? +if [ $reco_rc != 0 ]; then + exit $reco_rc +fi + +## Don't run if dcube xml config is not found +if [ -z "$dcubeXmlIDTPMconfig_absPath" ]; then + echo "art-result: 1 $dcubeXmlIDTPMconfig_absPath not found" + exit 1 +fi +echo "MARCO: $dcubeXmlIDTPMconfig_absPath" + +## dcube step +$ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ + -p -x dcube_cmp \ + -c ${dcubeXmlIDTPMconfig_absPath} \ + -r IDTPM.${SampleName}.HIST.root \ + -R 'ref = C-000 (reference)' -M 'mon = C-000 (latest)' \ + IDTPM.${SampleName}.HIST.root -- GitLab From b4d944f927cd6970e1e20adab29e4153b169c2c2 Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Sun, 16 Feb 2025 00:17:10 +0100 Subject: [PATCH 2/9] Adding getSample script --- .../scripts/getEFTrackSample.py | 23 ++++++++++ .../test_EFTrack_C000_FS_ttbar_pu200_grid.sh | 43 +++++++++++++------ 2 files changed, 54 insertions(+), 12 deletions(-) create mode 100755 InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/getEFTrackSample.py diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/getEFTrackSample.py b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/getEFTrackSample.py new file mode 100755 index 000000000000..a07093defb0f --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/getEFTrackSample.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration + +## quick script to get comma-separated list of files + +import argparse + +# Parsing arguments +parser = argparse.ArgumentParser( description = "MakePlots.py options:" ) +parser.add_argument( "-s", "--sampleName", help="Short name of the sample to get" ) + +MyArgs = parser.parse_args() +sampleName = MyArgs.sampleName + +## TODO - update this list with latest samples +samplesDict = { + "ttbar_pu200" : [ + "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-01/mc21_14TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.RDO.e8514_s4345_r15583_tid39626672_00/RDO.39626672._001121.pool.root.1", + ], +} + +if sampleName in samplesDict: + print( ','.join( samplesDict[ sampleName ] ) ) diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh index 674a1226ca59..fbbbb3eb3aae 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh @@ -8,12 +8,20 @@ # art-output: dcube* # art-html: dcube_cmp -SampleName='C000_FS.ttbar_pu200' -InputRDOfile='/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-01/mc21_14TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.RDO.e8514_s4345_r15583_tid39626672_00/RDO.39626672._001121.pool.root.1' + +## Input parameters +pipelineName='C000' +SampleName='ttbar_pu200' # as defined in InDetTrackPerfMon/scripts/getEFTrackSample.py +OutSampleName="${pipelineName}_FS.${SampleName}" +TrkCollName='InDetTrackParticles' +referencePath=$(pwd) # FIXME - change to cvmfs path +referenceName="C000_FS.${SampleName}" +referenceName_absPath="${referencePath}/IDTPM.${referenceName}.HIST.root" + +## search in $DATAPATH for matching files IDTPMjsonConfig='EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json' dcubeXmlIDTPMconfig='dcube_config_EFTrack_base_FS_noDoubleRatio.xml' -# search in $DATAPATH for matching files IDTPMjsonConfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $IDTPMjsonConfig -print -quit 2>/dev/null ) dcubeXmlIDTPMconfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $dcubeXmlIDTPMconfig -print -quit 2>/dev/null ) @@ -31,10 +39,16 @@ run () { return $rc } +## Getting the comma-separated list of input RDOs +InputRDOfiles=$( getEFTrackSample.py -s ${SampleName} ) +if [ "x${InputRDOfiles}" == "x" ]; then + echo "art-result: 1 Sample ${SampleName} not found" + exit 1 +fi + ## Track reconstruction step run "C000 ref" \ Reco_tf.py \ - --maxEvents 10 \ --multithreaded 'True' \ --autoConfiguration 'everything' \ --conditionsTag 'all:OFLCOND-MC21-SDR-RUN4-02' \ @@ -43,8 +57,9 @@ run "C000 ref" \ --preInclude 'InDetConfig.ConfigurationHelpers.OnlyTrackingPreInclude' \ --preExec 'flags.Tracking.writeExtendedSi_PRDInfo=True' \ --steering 'doRAWtoALL' \ - --inputRDOFile ${InputRDOfile} \ - --outputAODFile "${SampleName}.AOD.pool.root" + --inputRDOFile ${InputRDOfiles} \ + --outputAODFile "${OutSampleName}.AOD.pool.root" + #--maxEvents 10 \ ## Don't run if IDTPM json config is not found if [ -z "$IDTPMjsonConfig_absPath" ]; then @@ -56,14 +71,13 @@ fi cwd=$(pwd) echo "Running IDTPM with the following json config:" ## change the name of the track collection if needed -TrkCollName="InDetTrackParticles" cat $IDTPMjsonConfig_absPath | sed "s|InDetTrackParticles|${TrkCollName}|g" | tee ${cwd}/IDTPMconfig.json ## IDTPM step run "IDTPM" \ runIDTPM.py \ - --inputFileNames "${SampleName}.AOD.pool.root" \ - --outputFilePrefix "IDTPM.${SampleName}" \ + --inputFileNames "${OutSampleName}.AOD.pool.root" \ + --outputFilePrefix "IDTPM.${OutSampleName}" \ --trkAnaCfgFile "${cwd}/IDTPMconfig.json" reco_rc=$? @@ -76,12 +90,17 @@ if [ -z "$dcubeXmlIDTPMconfig_absPath" ]; then echo "art-result: 1 $dcubeXmlIDTPMconfig_absPath not found" exit 1 fi -echo "MARCO: $dcubeXmlIDTPMconfig_absPath" + +## Don't run if reference histogram file is not found +if [ -z "$referenceName_absPath" ]; then + echo "art-result: 1 $referenceName_absPath not found" + exit 1 +fi ## dcube step $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ -p -x dcube_cmp \ -c ${dcubeXmlIDTPMconfig_absPath} \ - -r IDTPM.${SampleName}.HIST.root \ + -r ${referenceName_absPath} \ -R 'ref = C-000 (reference)' -M 'mon = C-000 (latest)' \ - IDTPM.${SampleName}.HIST.root + IDTPM.${OutSampleName}.HIST.root -- GitLab From 5403fa789e18d0f248463e588e8988dd07a0b459 Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Sun, 16 Feb 2025 19:00:23 +0100 Subject: [PATCH 3/9] Adding C-100 test + config changes --- ...ack_base_FS_noDoubleRatio_IDTPMconfig.json | 2 +- .../data/TrkParamPlotsDef.json | 2 +- ...e_config_EFTrack_base_FS_noDoubleRatio.xml | 176 +++++++++--------- .../test_EFTrack_C000_FS_ttbar_pu200_grid.sh | 16 +- .../test_EFTrack_C100_FS_ttbar_pu200_grid.sh | 106 +++++++++++ 5 files changed, 204 insertions(+), 98 deletions(-) create mode 100755 InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json index ede75926df63..5ebce4c9c6fd 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json @@ -3,7 +3,7 @@ "enabled" : true, "TestType" : "Offline", "RefType" : "Truth", - "OfflineTrkKey" : "InDetTrackParticles", + "OfflineTrkKey" : "_TRKCOLLNAME_", "MatchingType" : "TruthMatch", "plotTechnicalEfficiencies" : true, "plotDuplicateRates" : true diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/TrkParamPlotsDef.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/TrkParamPlotsDef.json index eb740756b8ea..1e340fd41aec 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/TrkParamPlotsDef.json +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/TrkParamPlotsDef.json @@ -72,7 +72,7 @@ }, "$TRKTAG_chi2OverNdof" : { "type" : "TH1F", - "xAxis" : { "title" : "$TRKTYPE #chi^i{2}/nDoF", "nBins" : "100", "low" : "0", "high" : "5" }, + "xAxis" : { "title" : "$TRKTYPE #chi^{2}/nDoF", "nBins" : "100", "low" : "0", "high" : "5" }, "yAxis" : { "title" : "Entries" } }, "$TRKTAG_author" : { diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml index ef9c1b3ab259..0f6932fbd6a0 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml @@ -49,40 +49,40 @@ <TDirectory name="Offline"> <TDirectory name="Tracks"> <TDirectory name="Multiplicities"> - <hist1D name="summary" type="TH1D" plotopts="logy" tests="KSnorm"/> + <hist1D name="summary" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="num_offl_all" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="num_offl_all_vs_num_vtx_offl_all" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_offl_all_vs_num_vtx_offl_all" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="num_offl_selected" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="num_offl_selected_vs_num_vtx_offl_selected" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_offl_selected_vs_num_vtx_offl_selected" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="num_offl_matched" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="num_offl_matched_vs_num_vtx_offl_matched" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="num_offl_selected_vs_actualMu" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="num_offl_selected_vs_truthMu" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_offl_matched_vs_num_vtx_offl_matched" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="num_offl_selected_vs_actualMu" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="num_offl_selected_vs_truthMu" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="num_truth_all" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist2D name="num_truth_all_vs_num_vtx_truth_all" type="TH2F" plotopts="ratio" tests="KSnorm"/> <hist1D name="num_truth_selected" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="num_truth_selected_vs_num_vtx_truth_selected" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_truth_selected_vs_num_vtx_truth_selected" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="num_truth_matched" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="num_truth_matched_vs_num_vtx_truth_matched" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="num_truth_matched_vs_num_vtx_truth_matched" type="TH2F" plotopts="" tests="KSnorm"/> </TDirectory> <TDirectory name="Parameters"> - <hist1D name="offl_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_chi2" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_ndof" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_chi2OverNdof" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_author" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_time" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="offl_eta_vs_pt" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="offl_eta_vs_phi" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="offl_z0_vs_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="offl_z0sin_vs_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_pt" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_eta" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_phi" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_d0" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_z0" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_z0sin" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_theta" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_qoverp" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_chi2" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_ndof" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_chi2OverNdof" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_author" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_time" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist2D name="offl_eta_vs_pt" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="offl_eta_vs_phi" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="offl_z0_vs_d0" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="offl_z0sin_vs_d0" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="truth_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="truth_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -94,26 +94,26 @@ <hist1D name="truth_prodR" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="truth_prodZ" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="truth_nSiHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="truth_nSiHits_vs_eta" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="truth_eta_vs_pt" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="truth_eta_vs_phi" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="truth_z0_vs_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> - <hist2D name="truth_z0sin_vs_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="truth_nSiHits_vs_eta" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="truth_eta_vs_pt" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="truth_eta_vs_phi" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="truth_z0_vs_d0" type="TH2F" plotopts="" tests="KSnorm"/> + <hist2D name="truth_z0sin_vs_d0" type="TH2F" plotopts="" tests="KSnorm"/> <graph name="offl_hasValidTime_eff_vs_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> </TDirectory> <TDirectory name="Resolutions"> <hist1D name="pull_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_pt" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_pt" type="TH2F" plotopts="ratio,logx" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_pt" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_pt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_pt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_pt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_pt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_pt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_pt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_pt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_pt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_pt_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_pt_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_pt_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_pt_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_pt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_pt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_pt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -121,15 +121,15 @@ <hist1D name="pull_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_eta" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_eta" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_eta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_eta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_eta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_eta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_eta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_eta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_eta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_eta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_eta_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_eta_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_eta_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_eta_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_eta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_eta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_eta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -137,15 +137,15 @@ <hist1D name="pull_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_d0" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_d0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_d0" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_d0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_d0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_d0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_d0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_d0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_d0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_d0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_d0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_d0_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_d0_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_d0_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_d0_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_d0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_d0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_d0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -153,15 +153,15 @@ <hist1D name="pull_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_z0" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_z0" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_z0" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_z0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_z0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_z0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_z0_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_z0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_z0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_z0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_z0_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_z0_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_z0_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_z0_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_z0_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_z0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_z0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_z0_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -169,15 +169,15 @@ <hist1D name="pull_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_qoverp" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_qoverp" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_qoverp" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_qoverp_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_qoverp_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_qoverp_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_qoverp_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_qoverp_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_qoverp_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_qoverp_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_qoverp_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -185,15 +185,15 @@ <hist1D name="pull_ptqopt" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_ptqopt" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_ptqopt" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_ptqopt" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_ptqopt" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_ptqopt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_ptqopt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_ptqopt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_ptqopt_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_ptqopt_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_ptqopt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_ptqopt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_ptqopt_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -201,15 +201,15 @@ <hist1D name="pull_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_theta" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_theta" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_theta" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_theta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_theta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_theta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_theta_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_theta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_theta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_theta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_theta_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_theta_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_theta_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_theta_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_theta_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_theta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_theta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_theta_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -217,15 +217,15 @@ <hist1D name="pull_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_phi" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_phi" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_phi" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_phi_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_phi_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_phi_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_phi_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_phi_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_phi_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_phi_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_phi_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_phi_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_phi_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_phi_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_phi_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_phi_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_phi_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_phi_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -233,15 +233,15 @@ <hist1D name="pull_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="res_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="sigma_offl_z0sin" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist2D name="corr_offl_vs_truth_z0sin" type="TH2F" plotopts="ratio" tests="KSnorm"/> + <hist2D name="corr_offl_vs_truth_z0sin" type="TH2F" plotopts="" tests="KSnorm"/> <hist1D name="resolution_z0sin_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_z0sin_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_z0sin_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullmean_z0sin_vs_truth_inclusive" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="resolution_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="resmean_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullwidth_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> - <hist1D name="pullmean_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio,logx" tests="KSnorm"/> + <hist1D name="resolution_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="resmean_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullwidth_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> + <hist1D name="pullmean_z0sin_vs_truth_pt" type="TH1D" plotopts="ratio;logx" tests="KSnorm"/> <hist1D name="resolution_z0sin_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="resmean_z0sin_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> <hist1D name="pullwidth_z0sin_vs_truth_eta" type="TH1D" plotopts="ratio" tests="KSnorm"/> @@ -271,19 +271,19 @@ <graph name="duplrate_vs_truthMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> </TDirectory> <TDirectory name="HitsOnTracks"> - <hist1D name="offl_nInnerMostPixelHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nInnerMostPixelEndcapHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nNextToInnerMostPixelHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nNextToInnerMostPixelEndcapHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nInnerMostPixelSharedHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nInnerMostPixelSharedEndcapHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nPixelHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nPixelHoles" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nPixelSharedHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_pixeldEdx" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nSCTHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nSCTHoles" type="TH1D" plotopts="ratio" tests="KSnorm"/> - <hist1D name="offl_nSCTSharedHits" type="TH1D" plotopts="ratio" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelEndcapHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nNextToInnerMostPixelEndcapHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nInnerMostPixelSharedEndcapHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nPixelHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nPixelHoles" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nPixelSharedHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_pixeldEdx" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nSCTHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nSCTHoles" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> + <hist1D name="offl_nSCTSharedHits" type="TH1D" plotopts="ratio;norm" tests="KSnorm"/> <hist1D name="offl_nInnerMostPixelHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> <hist1D name="offl_nInnerMostPixelEndcapHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> <hist1D name="offl_nNextToInnerMostPixelHits_vs_offl_pt" type="TProfile" plotopts="ratio" tests="KSnorm"/> diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh index fbbbb3eb3aae..4de18359932a 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh @@ -1,5 +1,5 @@ #!/bin/bash -# art-description: Niglty test to produce a reference for EFTrack studies using ttbar pu200 sample +# art-description: Nightly test to compare C-000 reference to latest C-000 (Full-scan) for EFTrack studies using ttbar pu200 sample # art-type: grid # art-include: main/Athena # art-output: *.root @@ -11,10 +11,10 @@ ## Input parameters pipelineName='C000' -SampleName='ttbar_pu200' # as defined in InDetTrackPerfMon/scripts/getEFTrackSample.py +SampleName='ttbar_pu200' # as defined in samplesDict of InDetTrackPerfMon/scripts/getEFTrackSample.py OutSampleName="${pipelineName}_FS.${SampleName}" TrkCollName='InDetTrackParticles' -referencePath=$(pwd) # FIXME - change to cvmfs path +referencePath='/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetTrackPerfMon/EFTrackRefereceHistograms/' referenceName="C000_FS.${SampleName}" referenceName_absPath="${referencePath}/IDTPM.${referenceName}.HIST.root" @@ -29,7 +29,6 @@ run () { name="${1}" cmd="${@:2}" echo "Running ${name}..." - echo "command: ${cmd}" time ${cmd} rc=$? echo "art-result: $rc ${name}" @@ -47,8 +46,10 @@ if [ "x${InputRDOfiles}" == "x" ]; then fi ## Track reconstruction step -run "C000 ref" \ +# FIXME - remove maxEvents +run "${pipelineName}" \ Reco_tf.py \ + --maxEvents 10 \ --multithreaded 'True' \ --autoConfiguration 'everything' \ --conditionsTag 'all:OFLCOND-MC21-SDR-RUN4-02' \ @@ -59,7 +60,6 @@ run "C000 ref" \ --steering 'doRAWtoALL' \ --inputRDOFile ${InputRDOfiles} \ --outputAODFile "${OutSampleName}.AOD.pool.root" - #--maxEvents 10 \ ## Don't run if IDTPM json config is not found if [ -z "$IDTPMjsonConfig_absPath" ]; then @@ -70,8 +70,8 @@ fi ## Copying json config in the output directory cwd=$(pwd) echo "Running IDTPM with the following json config:" -## change the name of the track collection if needed -cat $IDTPMjsonConfig_absPath | sed "s|InDetTrackParticles|${TrkCollName}|g" | tee ${cwd}/IDTPMconfig.json +## change the name of the track collection to monitor and copy json config in work dir +cat $IDTPMjsonConfig_absPath | sed "s|_TRKCOLLNAME_|${TrkCollName}|g" | tee ${cwd}/IDTPMconfig.json ## IDTPM step run "IDTPM" \ diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh new file mode 100755 index 000000000000..193e76bac9f3 --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh @@ -0,0 +1,106 @@ +#!/bin/bash +# art-description: Nightly test to compare C-100 vs C-000 (Full-scan) for EFTrack studies using ttbar pu200 sample +# art-type: grid +# art-include: main/Athena +# art-output: *.root +# art-output: *.json +# art-output: *.xml +# art-output: dcube* +# art-html: dcube_cmp + + +## Input parameters +pipelineName='C100' +SampleName='ttbar_pu200' # as defined in samplesDict of InDetTrackPerfMon/scripts/getEFTrackSample.py +OutSampleName="${pipelineName}_FS.${SampleName}" +TrkCollName='InDetTrackParticles' +referencePath='/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetTrackPerfMon/EFTrackRefereceHistograms/' +referenceName="C000_FS.${SampleName}" +referenceName_absPath="${referencePath}/IDTPM.${referenceName}.HIST.root" + +## search in $DATAPATH for matching files +IDTPMjsonConfig='EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json' +dcubeXmlIDTPMconfig='dcube_config_EFTrack_base_FS_noDoubleRatio.xml' + +IDTPMjsonConfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $IDTPMjsonConfig -print -quit 2>/dev/null ) +dcubeXmlIDTPMconfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $dcubeXmlIDTPMconfig -print -quit 2>/dev/null ) + +run () { + name="${1}" + cmd="${@:2}" + echo "Running ${name}..." + time ${cmd} + rc=$? + echo "art-result: $rc ${name}" + if [ $rc != 0 ]; then + exit $rc + fi + return $rc +} + +## Getting the comma-separated list of input RDOs +InputRDOfiles=$( getEFTrackSample.py -s ${SampleName} ) +if [ "x${InputRDOfiles}" == "x" ]; then + echo "art-result: 1 Sample ${SampleName} not found" + exit 1 +fi + +## Track reconstruction step +# FIXME - remove maxEvents +run "${pipelineName}" \ + Reco_tf.py \ + --maxEvents 10 \ + --multithreaded 'True' \ + --autoConfiguration 'everything' \ + --conditionsTag 'all:OFLCOND-MC21-SDR-RUN4-02' \ + --geometryVersion 'all:ATLAS-P2-RUN4-03-00-00' \ + --postInclude 'all:PyJobTransforms.UseFrontier' \ + --preInclude 'InDetConfig.ConfigurationHelpers.OnlyTrackingPreInclude,ActsConfig.ActsCIFlags.actsAloneFastWorkflowFlags' \ + --preExec 'flags.Tracking.writeExtendedSi_PRDInfo=True' \ + --steering 'doRAWtoALL' \ + --inputRDOFile ${InputRDOfiles} \ + --outputAODFile "${OutSampleName}.AOD.pool.root" + +## Don't run if IDTPM json config is not found +if [ -z "$IDTPMjsonConfig_absPath" ]; then + echo "art-result: 1 $IDTPMjsonConfig_absPath not found" + exit 1 +fi + +## Copying json config in the output directory +cwd=$(pwd) +echo "Running IDTPM with the following json config:" +## change the name of the track collection to monitor and copy json config in work dir +cat $IDTPMjsonConfig_absPath | sed "s|_TRKCOLLNAME_|${TrkCollName}|g" | tee ${cwd}/IDTPMconfig.json + +## IDTPM step +run "IDTPM" \ + runIDTPM.py \ + --inputFileNames "${OutSampleName}.AOD.pool.root" \ + --outputFilePrefix "IDTPM.${OutSampleName}" \ + --trkAnaCfgFile "${cwd}/IDTPMconfig.json" + +reco_rc=$? +if [ $reco_rc != 0 ]; then + exit $reco_rc +fi + +## Don't run if dcube xml config is not found +if [ -z "$dcubeXmlIDTPMconfig_absPath" ]; then + echo "art-result: 1 $dcubeXmlIDTPMconfig_absPath not found" + exit 1 +fi + +## Don't run if reference histogram file is not found +if [ -z "$referenceName_absPath" ]; then + echo "art-result: 1 $referenceName_absPath not found" + exit 1 +fi + +## dcube step +$ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ + -p -x dcube_cmp \ + -c ${dcubeXmlIDTPMconfig_absPath} \ + -r ${referenceName_absPath} \ + -R 'ref = C-000' -M 'mon = C-100' \ + IDTPM.${OutSampleName}.HIST.root -- GitLab From 6bb19d001f3c6d5f80335b895dde36c31f6f64ae Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Mon, 17 Feb 2025 12:43:22 +0100 Subject: [PATCH 4/9] Adding script PrintTrkAnaSummary.py --- .../scripts/PrintTrkAnaSummary.py | 58 +++++++++++++++++++ .../test_EFTrack_C000_FS_ttbar_pu200_grid.sh | 7 +++ .../test_EFTrack_C100_FS_ttbar_pu200_grid.sh | 7 +++ 3 files changed, 72 insertions(+) create mode 100755 InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py new file mode 100755 index 000000000000..0795fdde08aa --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration + +import sys, os, argparse, ROOT +import pandas as pd + +# Parsing arguments +commandName = os.path.basename( sys.argv[0] ) +summaryDirDefault="InDetTrackPerfMonPlots/TrkAnaEF/Offline/Tracks/Multiplicities/" +parser = argparse.ArgumentParser( description = commandName+" options:" ) +parser.add_argument( "-t", "--testFile", help="Path to input TEST file" ) +parser.add_argument( "-r", "--refFile", default="", help="Path to input REFERENCE file" ) +parser.add_argument( "-T", "--testLabel", default="TEST", help="Label for TEST" ) +parser.add_argument( "-R", "--refLabel", default="REF", help="Label for REFERENCE" ) +parser.add_argument( "-d", "--dirName", default=summaryDirDefault, help="Name of the TDirectory path with summary plot" ) +parser.add_argument( "-o", "--outName", default="TrkAnaSummary.html", help="Name of the output html file" ) +MyArgs = parser.parse_args() + +if not MyArgs.testFile: + print( "ERROR: input test file not provided" ) + sys.exit(1) + +data={} +index=[] + +## Processing test file +inTestFile = ROOT.TFile.Open( MyArgs.testFile , "READ" ) +hs1 = inTestFile.Get( MyArgs.dirName+"/summary" ) +testList = [] +for i in range( 1, hs1.GetNbinsX()+1 ) : + index.append( hs1.GetXaxis().GetBinLabel(i) ) + c = hs1.GetBinContent(i) + e = hs1.GetBinError(i) + testList.append( f"{c:.1f} +/- {e:.1f}" ) +data.update( { MyArgs.testLabel : testList } ) +inTestFile.Close() + +## Processing reference file +if MyArgs.refFile : + inRefFile = ROOT.TFile.Open( MyArgs.refFile , "READ" ) + hs2 = inRefFile.Get( MyArgs.dirName+"/summary" ) + refList = [] + for i in range( 1, hs2.GetNbinsX()+1 ) : + c = hs2.GetBinContent(i) + e = hs2.GetBinError(i) + refList.append( f"{c:.1f} +/- {e:.1f}" ) + data.update( { MyArgs.refLabel : refList } ) + inRefFile.Close() + +## printing table to screen +df = pd.DataFrame( data, index=index ) +print( df ) + +## printing table to html output file +with open( MyArgs.outName, 'w' ) as f : + print( df.to_html(), file=f ) + +sys.exit(0) diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh index 4de18359932a..f0394bce1ba8 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh @@ -5,6 +5,7 @@ # art-output: *.root # art-output: *.json # art-output: *.xml +# art-output: *.html # art-output: dcube* # art-html: dcube_cmp @@ -104,3 +105,9 @@ $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ -r ${referenceName_absPath} \ -R 'ref = C-000 (reference)' -M 'mon = C-000 (latest)' \ IDTPM.${OutSampleName}.HIST.root + +## Printing summary +PrintTrkAnaSummary.py \ + -t IDTPM.${OutSampleName}.HIST.root \ + -r ${referenceName_absPath} \ + -R 'C-000 (reference)' -T 'C-000 (latest)' diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh index 193e76bac9f3..d4314988eaf3 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh @@ -5,6 +5,7 @@ # art-output: *.root # art-output: *.json # art-output: *.xml +# art-output: *.html # art-output: dcube* # art-html: dcube_cmp @@ -104,3 +105,9 @@ $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ -r ${referenceName_absPath} \ -R 'ref = C-000' -M 'mon = C-100' \ IDTPM.${OutSampleName}.HIST.root + +## Printing summary +PrintTrkAnaSummary.py \ + -t IDTPM.${OutSampleName}.HIST.root \ + -r ${referenceName_absPath} \ + -R 'C-000' -T 'C-100' -- GitLab From b2498cb2ec5254557112205d346329e219306596 Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Mon, 17 Feb 2025 15:32:52 +0100 Subject: [PATCH 5/9] Updating PrintTrkAnaSummary.py --- .../scripts/PrintTrkAnaSummary.py | 111 ++++++++++++++---- 1 file changed, 90 insertions(+), 21 deletions(-) diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py index 0795fdde08aa..325e67361f1c 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py @@ -6,13 +6,13 @@ import pandas as pd # Parsing arguments commandName = os.path.basename( sys.argv[0] ) -summaryDirDefault="InDetTrackPerfMonPlots/TrkAnaEF/Offline/Tracks/Multiplicities/" +summaryDirDefault="InDetTrackPerfMonPlots/TrkAnaEF/Offline/Tracks/" parser = argparse.ArgumentParser( description = commandName+" options:" ) parser.add_argument( "-t", "--testFile", help="Path to input TEST file" ) parser.add_argument( "-r", "--refFile", default="", help="Path to input REFERENCE file" ) parser.add_argument( "-T", "--testLabel", default="TEST", help="Label for TEST" ) parser.add_argument( "-R", "--refLabel", default="REF", help="Label for REFERENCE" ) -parser.add_argument( "-d", "--dirName", default=summaryDirDefault, help="Name of the TDirectory path with summary plot" ) +parser.add_argument( "-d", "--dirName", default=summaryDirDefault, help="Name of the TDirectory path with plots" ) parser.add_argument( "-o", "--outName", default="TrkAnaSummary.html", help="Name of the output html file" ) MyArgs = parser.parse_args() @@ -23,29 +23,98 @@ if not MyArgs.testFile: data={} index=[] +def processFile( inFileName, dirName, label, data, index, updateIndex=True ): + sList = [] + inFile = ROOT.TFile.Open( inFileName, "READ" ) + + ## multiplicities + hs = inFile.Get( dirName+"Multiplicities/summary" ) + if hs: + for i in range( 1, hs.GetNbinsX()+1 ) : + if updateIndex : index.append( hs.GetXaxis().GetBinLabel(i) ) + c = hs.GetBinContent(i) + e = hs.GetBinError(i) + sList.append( f"{c:.1f} +/- {e:.1f}" ) + + ## efficiency + he = inFile.Get( dirName+"Efficiencies/eff_vs_truth_inclusive" ) + if updateIndex : index.append( " " ) + sList.append( " " ) + if updateIndex : index.append( "Eff_vs_truth" ) + if he: + c = 100*he.GetEfficiency(1) + eu = 100*he.GetEfficiencyErrorUp(1) + el = 100*he.GetEfficiencyErrorLow(1) + sList.append( f"{c:.2f} +{eu:.2f}/-{el:.2f} %" ) + else : sList.append( "-" ) + + ## technical efficiency + het = inFile.Get( dirName+"Efficiencies/Technical/eff_vs_truth_inclusive" ) + if updateIndex : index.append( "Tech_eff_vs_truth" ) + if het: + c = 100*het.GetEfficiency(1) + eu = 100*het.GetEfficiencyErrorUp(1) + el = 100*het.GetEfficiencyErrorLow(1) + sList.append( f"{c:.2f} +{eu:.2f}/-{el:.2f} %" ) + else : sList.append( "-" ) + + + ## pT resolution + hrpt = inFile.Get( dirName+"Resolutions/resolution_pt_vs_truth_inclusive" ) + if updateIndex : index.append( " " ) + sList.append( " " ) + if updateIndex : index.append( "Resolution_pT_vs_truth" ) + if hrpt: + c = hrpt.GetBinContent(1) + e = hrpt.GetBinError(1) + sList.append( f"{c:.2f} +/- {e:.2f} GeV" ) + else : sList.append( "-" ) + + + ## d0 resolution + hrd0 = inFile.Get( dirName+"Resolutions/resolution_d0_vs_truth_inclusive" ) + if updateIndex : index.append( "Resolution_d0_vs_truth" ) + if hrd0: + c = hrd0.GetBinContent(1) + e = hrd0.GetBinError(1) + sList.append( f"{c:.2f} +/- {e:.2f} mm" ) + else : sList.append( "-" ) + + + ## z0 resolution + hrz0 = inFile.Get( dirName+"Resolutions/resolution_z0_vs_truth_inclusive" ) + if updateIndex : index.append( "Resolution_z0_vs_truth" ) + if hrz0: + c = hrz0.GetBinContent(1) + e = hrz0.GetBinError(1) + sList.append( f"{c:.2f} +/- {e:.2f} mm" ) + else : sList.append( "-" ) + + + ## updating data + data.update( { label : sList } ) + inFile.Close() + + ## Processing test file -inTestFile = ROOT.TFile.Open( MyArgs.testFile , "READ" ) -hs1 = inTestFile.Get( MyArgs.dirName+"/summary" ) -testList = [] -for i in range( 1, hs1.GetNbinsX()+1 ) : - index.append( hs1.GetXaxis().GetBinLabel(i) ) - c = hs1.GetBinContent(i) - e = hs1.GetBinError(i) - testList.append( f"{c:.1f} +/- {e:.1f}" ) -data.update( { MyArgs.testLabel : testList } ) -inTestFile.Close() +processFile( + inFileName = MyArgs.testFile, + dirName = MyArgs.dirName, + label = MyArgs.testLabel, + data = data, + index = index +) ## Processing reference file if MyArgs.refFile : - inRefFile = ROOT.TFile.Open( MyArgs.refFile , "READ" ) - hs2 = inRefFile.Get( MyArgs.dirName+"/summary" ) - refList = [] - for i in range( 1, hs2.GetNbinsX()+1 ) : - c = hs2.GetBinContent(i) - e = hs2.GetBinError(i) - refList.append( f"{c:.1f} +/- {e:.1f}" ) - data.update( { MyArgs.refLabel : refList } ) - inRefFile.Close() + processFile( + inFileName = MyArgs.refFile, + dirName = MyArgs.dirName, + label = MyArgs.refLabel, + data = data, + index = index, + updateIndex=False + ) ## printing table to screen df = pd.DataFrame( data, index=index ) -- GitLab From 032bbbf4f336ad0201705de5e2b7530c51cef4c1 Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Mon, 17 Feb 2025 21:07:05 +0100 Subject: [PATCH 6/9] Adding inclusive fake and dupl rate plots --- .../InDetTrackPerfMon/data/DuplicateRatePlotsDef.json | 5 +++++ .../InDetTrackPerfMon/data/FakeRatePlotsDef.json | 5 +++++ .../data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml | 2 ++ .../InDetTrackPerfMon/src/plots/DuplicateRatePlots.cxx | 2 ++ .../InDetTrackPerfMon/src/plots/DuplicateRatePlots.h | 1 + .../InDetTrackPerfMon/src/plots/FakeRatePlots.cxx | 2 ++ .../InDetTrackPerfMon/src/plots/FakeRatePlots.h | 1 + 7 files changed, 18 insertions(+) diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/DuplicateRatePlotsDef.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/DuplicateRatePlotsDef.json index bc290662a533..89bcbdfd25bb 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/DuplicateRatePlotsDef.json +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/DuplicateRatePlotsDef.json @@ -1,4 +1,9 @@ { + "duplrate_vs_$TRKTAG_inclusive" : { + "type" : "TEfficiency", + "xAxis" : { "title" : "Inclusive", "nBins" : "1", "low" : "0.0", "high" : "2.0" }, + "yAxis" : { "title" : "Duplicate rate" } + }, "duplrate_vs_$TRKTAG_pt" : { "type" : "TEfficiency", "xAxis" : { "title" : "$TRKTYPE p_{T} [GeV]", "nBins" : "25", "low" : "0.0", "high" : "50.0" }, diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/FakeRatePlotsDef.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/FakeRatePlotsDef.json index 105b6ea8afde..315ac7f1f1fd 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/FakeRatePlotsDef.json +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/FakeRatePlotsDef.json @@ -1,4 +1,9 @@ { + "fakerate_vs_$TRKTAG_inclusive" : { + "type" : "TEfficiency", + "xAxis" : { "title" : "Inclusive", "nBins" : "1", "low" : "0.0", "high" : "2.0" }, + "yAxis" : { "title" : "Fake rate" } + }, "fakerate_vs_$TRKTAG_pt" : { "type" : "TEfficiency", "xAxis" : { "title" : "$TRKTYPE p_{T} [GeV]", "nBins" : "100", "low" : "0.0", "high" : "50.0" }, diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml index 0f6932fbd6a0..6c3205b5db23 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml @@ -262,6 +262,7 @@ <hist1D name="duplnum_nonzero_vs_actualMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> <hist1D name="duplnum_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> <hist1D name="duplnum_nonzero_vs_truthMu" type="TProfile" plotopts="ratio" tests="KSnorm"/> + <graph name="duplrate_vs_truth_inclusive" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> <graph name="duplrate_vs_truth_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> <graph name="duplrate_vs_truth_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> <graph name="duplrate_vs_truth_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> @@ -528,6 +529,7 @@ <graph name="eff_vs_truthMu" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> </TDirectory> <TDirectory name="FakeRates"> + <graph name="fakerate_vs_offl_inclusive" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> <graph name="fakerate_vs_offl_pt" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> <graph name="fakerate_vs_offl_eta" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> <graph name="fakerate_vs_offl_phi" type="TEfficiency" plotopts="ratio" tests="KSnorm"/> diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.cxx b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.cxx index 07464d416b91..92ed3f37dbf2 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.cxx +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.cxx @@ -41,6 +41,7 @@ StatusCode IDTPM::DuplicateRatePlots::bookPlots() { ATH_MSG_DEBUG( "Booking duplicate rate plots in " << getDirectory() ); + ATH_CHECK( retrieveAndBook( m_duplrate_vs_incl, "duplrate_vs_"+m_trackType+"_inclusive" ) ); ATH_CHECK( retrieveAndBook( m_duplrate_vs_pt, "duplrate_vs_"+m_trackType+"_pt" ) ); ATH_CHECK( retrieveAndBook( m_duplrate_vs_eta, "duplrate_vs_"+m_trackType+"_eta" ) ); ATH_CHECK( retrieveAndBook( m_duplrate_vs_phi, "duplrate_vs_"+m_trackType+"_phi" ) ); @@ -94,6 +95,7 @@ StatusCode IDTPM::DuplicateRatePlots::fillPlots( float pz0 = z0( particle ); /// Fill the histograms + ATH_CHECK( fill( m_duplrate_vs_incl, 1, (nMatched>1), weight ) ); ATH_CHECK( fill( m_duplrate_vs_pt, ppt, (nMatched>1), weight ) ); ATH_CHECK( fill( m_duplrate_vs_eta, peta, (nMatched>1), weight ) ); ATH_CHECK( fill( m_duplrate_vs_phi, pphi, (nMatched>1), weight ) ); diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.h b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.h index 4ad82afcb0f7..da7b69bbb2cb 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.h +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.h @@ -54,6 +54,7 @@ namespace IDTPM { bool m_doGlobalPlots{}; bool m_doTruthMuPlots{}; + TEfficiency* m_duplrate_vs_incl{}; TEfficiency* m_duplrate_vs_pt{}; TEfficiency* m_duplrate_vs_eta{}; TEfficiency* m_duplrate_vs_phi{}; diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/FakeRatePlots.cxx b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/FakeRatePlots.cxx index 11ee9aafb874..2f22c2fdce47 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/FakeRatePlots.cxx +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/FakeRatePlots.cxx @@ -41,6 +41,7 @@ StatusCode IDTPM::FakeRatePlots::bookPlots() { ATH_MSG_DEBUG( "Booking efficiency plots in " << getDirectory() ); + ATH_CHECK( retrieveAndBook( m_fakerate_vs_incl, "fakerate_vs_"+m_trackType+"_inclusive" ) ); ATH_CHECK( retrieveAndBook( m_fakerate_vs_pt, "fakerate_vs_"+m_trackType+"_pt" ) ); ATH_CHECK( retrieveAndBook( m_fakerate_vs_eta, "fakerate_vs_"+m_trackType+"_eta" ) ); ATH_CHECK( retrieveAndBook( m_fakerate_vs_phi, "fakerate_vs_"+m_trackType+"_phi" ) ); @@ -69,6 +70,7 @@ StatusCode IDTPM::FakeRatePlots::fillPlots( float pz0 = z0( particle ); /// Fill the histograms + ATH_CHECK( fill( m_fakerate_vs_incl, 1, isFake, weight ) ); ATH_CHECK( fill( m_fakerate_vs_pt, ppt, isFake, weight ) ); ATH_CHECK( fill( m_fakerate_vs_eta, peta, isFake, weight ) ); ATH_CHECK( fill( m_fakerate_vs_phi, pphi, isFake, weight ) ); diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/FakeRatePlots.h b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/FakeRatePlots.h index e7f66e8d133f..6e6f9db369cf 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/FakeRatePlots.h +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/FakeRatePlots.h @@ -54,6 +54,7 @@ namespace IDTPM { bool m_doGlobalPlots{}; bool m_doTruthMuPlots{}; + TEfficiency* m_fakerate_vs_incl{}; TEfficiency* m_fakerate_vs_pt{}; TEfficiency* m_fakerate_vs_eta{}; TEfficiency* m_fakerate_vs_phi{}; -- GitLab From 9f1fcc8a65af0650e1bce6bddf22099c1aad81f2 Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Thu, 20 Feb 2025 16:32:41 +0100 Subject: [PATCH 7/9] Update labels and html table --- .../data/SummaryPlotsDef.json | 8 +++---- .../InDetTrackPerfMon/python/ConfigUtils.py | 17 +++++++++++++ .../scripts/PrintTrkAnaSummary.py | 24 +++++++++++++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/SummaryPlotsDef.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/SummaryPlotsDef.json index 290f3a19a5c9..1691ef84163e 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/SummaryPlotsDef.json +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/SummaryPlotsDef.json @@ -5,10 +5,10 @@ "title" : "Summary", "labels" : [ "N_{Events}", - "N_{$TESTTYPEs}^{All}", + "N_{$TESTTYPEs}^{$TESTALL}", "N_{$TESTTYPEs}^{Selected}", "N_{$TESTTYPEs}^{Matched}", - "N_{$REFTYPEs}^{All}", + "N_{$REFTYPEs}^{$REFALL}", "N_{$REFTYPEs}^{Selected}", "N_{$REFTYPEs}^{Matched}" ] @@ -22,11 +22,11 @@ "labels" : [ "N_{Events}^{Triggered}", "N_{RoIs}", - "N_{$TESTTYPEs}^{All}", + "N_{$TESTTYPEs}^{$TESTALL}", "N_{$TESTTYPEs}^{Selected}", "N_{$TESTTYPEs}^{Selected in RoI}", "N_{$TESTTYPEs}^{Matched}", - "N_{$REFTYPEs}^{All}", + "N_{$REFTYPEs}^{$REFALL}", "N_{$REFTYPEs}^{Selected}", "N_{$REFTYPEs}^{Selected in RoI}", "N_{$REFTYPEs}^{Matched}" diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/python/ConfigUtils.py b/InnerDetector/InDetValidation/InDetTrackPerfMon/python/ConfigUtils.py index fa544ce048ef..ae7042189e9e 100644 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/python/ConfigUtils.py +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/python/ConfigUtils.py @@ -200,12 +200,17 @@ def getPlotsDefList( flags ): refLabel = getLabel( flags, flags.PhysVal.IDTPM.currentTrkAna.RefType ) trkLabels = [ testLabel, refLabel ] + testAllLabel = getAllTruthLabel( flags, flags.PhysVal.IDTPM.currentTrkAna.TestType ) + refAllLabel = getAllTruthLabel( flags, flags.PhysVal.IDTPM.currentTrkAna.RefType ) + + if flags.PhysVal.IDTPM.currentTrkAna.MatchingType == "EFTruthMatch": trkLabels.append( getLabel( flags, "Truth" ) ) ## First loop to replace track tags and labels plotsDefStrList = [] for plotsDefStr in plotsDefStrList_v2 : + plotsDefStr = plotsDefStr.replace( "$TESTALL", testAllLabel ).replace( "$REFALL", refAllLabel ) plotsDefStr = plotsDefStr.replace( "$TESTTYPE", testLabel[1] ).replace( "$TESTTAG", testLabel[0] ) plotsDefStr = plotsDefStr.replace( "$REFTYPE", refLabel[1] ).replace( "$REFTAG", refLabel[0] ) if ( "$TRKTAG" not in plotsDefStr ) and ( "$TRKTYPE" not in plotsDefStr ) : @@ -315,3 +320,15 @@ def updateResolutionPlots( myPlotsDefDict ) : outDict.update( { pName : pDict } ) return outDict + + +def getAllTruthLabel( flags, key ) : + ## replace All label to All HS/PU depending + ## pileupSwitch, for truth particles + if key != "Truth": + return "All" + if flags.PhysVal.IDTPM.currentTrkAna.pileupSwitch == "HardScatter" : + return "All HS" + if flags.PhysVal.IDTPM.currentTrkAna.pileupSwitch == "PileUp" : + return "All PU" + return "All" diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py index 325e67361f1c..78c365acb415 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py @@ -91,6 +91,30 @@ def processFile( inFileName, dirName, label, data, index, updateIndex=True ): else : sList.append( "-" ) + ## fake rate + hf = inFile.Get( dirName+"FakeRates/fakerate_vs_offl_inclusive" ) + if updateIndex : index.append( " " ) + sList.append( " " ) + if updateIndex : index.append( "FakeRate_vs_reco" ) + if hf: + c = 100*hf.GetEfficiency(1) + eu = 100*hf.GetEfficiencyErrorUp(1) + el = 100*hf.GetEfficiencyErrorLow(1) + sList.append( f"{c:.2f} +{eu:.2f}/-{el:.2f} %" ) + else : sList.append( "-" ) + + + ## duplicate rate + hd = inFile.Get( dirName+"Duplicates/duplrate_vs_truth_inclusive" ) + if updateIndex : index.append( "DuplicateRate_vs_truth" ) + if hd: + c = 100*hd.GetEfficiency(1) + eu = 100*hd.GetEfficiencyErrorUp(1) + el = 100*hd.GetEfficiencyErrorLow(1) + sList.append( f"{c:.2f} +{eu:.2f}/-{el:.2f} %" ) + else : sList.append( "-" ) + + ## updating data data.update( { label : sList } ) inFile.Close() -- GitLab From 5049acf392d353c7afaa56007eecaba049e67cc3 Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Thu, 20 Feb 2025 18:30:48 +0100 Subject: [PATCH 8/9] Updating reco steps and moving them into scripts --- .../InDetTrackPerfMon/CMakeLists.txt | 1 + .../scripts/runReco_C000_FS.sh | 70 +++++++++++++++++++ .../scripts/runReco_C100_FS.sh | 70 +++++++++++++++++++ .../test_EFTrack_C000_FS_ttbar_pu200_grid.sh | 15 +--- .../test_EFTrack_C100_FS_ttbar_pu200_grid.sh | 15 +--- 5 files changed, 147 insertions(+), 24 deletions(-) create mode 100755 InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C000_FS.sh create mode 100755 InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C100_FS.sh diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/CMakeLists.txt b/InnerDetector/InDetValidation/InDetTrackPerfMon/CMakeLists.txt index 49add1d258b5..42bca06d7fff 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/CMakeLists.txt +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/CMakeLists.txt @@ -44,4 +44,5 @@ atlas_install_data( test/ref.json ) atlas_install_runtime( scripts/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) atlas_install_scripts( test/test*.py POST_BUILD_CMD ${ATLAS_FLAKE8}) atlas_install_data( scripts/hdefXmlToJson.xsl) +atlas_install_scripts( scripts/*.sh ) atlas_install_scripts( test/test*.sh ) diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C000_FS.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C000_FS.sh new file mode 100755 index 000000000000..fc2753e61d76 --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C000_FS.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +usage () { + [ $# -gt 1 ] && echo $2 + echo " + Command line script to run track reconstruction + for the reference (C-000) pipeline only as offline-like algorithms (Full-Scan) + + Usage: + runReco_C000_FS.sh -i <your_input_RDO_file> -o <your_output_AOD_file_name> + + Options: + -i | --inputRDO STRING full path to input RDO file (mandatory) + -o | --outputAOD STRING name of the output AOD file (mandatory) + -n | --nEvents INT Number of events to run on (default = -1 aka All) + -s | --skipCheck skip checks on output AOD file + -h | --help this help + " + [ $# -gt 0 ] && exit $1 + exit 0 +} + +inputRDO="" +outputAOD="" +nEvents="-1" +skipCheck="0" + +## parsing flags +while [ $# -ge 1 ];do + case "$1" in + --) shift ; break ;; + -i | --inputRDO ) if [ $# -lt 2 ] ; then usage ; fi ; inputRDO="$2" ; shift ;; + -o | --outputAOD ) if [ $# -lt 2 ] ; then usage ; fi ; outputAOD="$2" ; shift ;; + -n | --nEvents ) if [ $# -lt 2 ] ; then usage ; fi ; nEvents="$2" ; shift ;; + -s | --skipCheck ) if [ $# -lt 1 ] ; then usage ; fi ; skipCheck="1" ; shift ;; + -h | --help ) usage 0 ;; + *) shift ;; + esac + shift +done + +## checking valid inputs +if [ -z $inputRDO ]; then usage ; fi +if [ -z $outputAOD ]; then usage ; fi + +if [ ! -f $inputRDO ]; then + echo "runReco_C000_FS.sh result: 1 ${inputRDO} not found" + exit 1 +fi + +## running reconstruction +Reco_tf.py --CA \ + --maxEvents ${nEvents} \ + --preInclude 'InDetConfig.ConfigurationHelpers.OnlyTrackingPreInclude' \ + --preExec 'flags.Tracking.writeExtendedSi_PRDInfo=True' \ + --steering 'doRAWtoALL' \ + --inputRDOFile ${inputRDO} \ + --outputAODFile ${outputAOD} +# --conditionsTag 'all:OFLCOND-MC21-SDR-RUN4-02' \ +# --geometryVersion 'all:ATLAS-P2-RUN4-03-00-00' \ + +rc=$? +echo "Reco_tf.py result: $rc" +if [ $rc != 0 ]; then exit $rc; fi + +## check output +if [ "$skipCheck" == "0" ]; then + checkxAOD.py ${outputAOD} > ${outputAOD}.checkxAOD.log + checkFile.py ${outputAOD} > ${outputAOD}.checkFile.log +fi diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C100_FS.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C100_FS.sh new file mode 100755 index 000000000000..675deaff1cfe --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C100_FS.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +usage () { + [ $# -gt 1 ] && echo $2 + echo " + Command line script to run track reconstruction + for the reference (C-000) pipeline only as offline-like algorithms (Full-Scan) + + Usage: + runReco_C100_FS.sh -i <your_input_RDO_file> -o <your_output_AOD_file_name> + + Options: + -i | --inputRDO STRING full path to input RDO file (mandatory) + -o | --outputAOD STRING name of the output AOD file (mandatory) + -n | --nEvents INT Number of events to run on (default = -1 aka All) + -s | --skipCheck skip checks on output AOD file + -h | --help this help + " + [ $# -gt 0 ] && exit $1 + exit 0 +} + +inputRDO="" +outputAOD="" +nEvents="-1" +skipCheck=0 + +## parsing flags +while [ $# -ge 1 ];do + case "$1" in + --) shift ; break ;; + -i | --inputRDO ) if [ $# -lt 2 ] ; then usage ; fi ; inputRDO="$2" ; shift ;; + -o | --outputAOD ) if [ $# -lt 2 ] ; then usage ; fi ; outputAOD="$2" ; shift ;; + -n | --nEvents ) if [ $# -lt 2 ] ; then usage ; fi ; nEvents="$2" ; shift ;; + -s | --skipCheck ) if [ $# -lt 1 ] ; then usage ; fi ; skipCheck=1 ; shift ;; + -h | --help ) usage 0 ;; + *) shift ;; + esac + shift +done + +## checking valid inputs +if [ -z $inputRDO ]; then usage ; fi +if [ -z $outputAOD ]; then usage ; fi + +if [ ! -f $inputRDO ]; then + echo "runReco_C100_FS.sh result: 1 ${inputRDO} not found" + exit 1 +fi + +## running reconstruction +Reco_tf.py --CA \ + --maxEvents ${nEvents} \ + --preInclude 'InDetConfig.ConfigurationHelpers.OnlyTrackingPreInclude,ActsConfig.ActsCIFlags.actsFastWorkflowFlags' \ + --preExec 'flags.Tracking.writeExtendedSi_PRDInfo=True' \ + --steering 'doRAWtoALL' \ + --inputRDOFile ${inputRDO} \ + --outputAODFile ${outputAOD} +# --conditionsTag 'all:OFLCOND-MC21-SDR-RUN4-02' \ +# --geometryVersion 'all:ATLAS-P2-RUN4-03-00-00' \ + +rc=$? +echo "Reco_tf.py result: $rc" +if [ $rc != 0 ]; then exit $rc; fi + +## check output +if [ "$skipCheck" == "0" ]; then + checkxAOD.py ${outputAOD} > ${outputAOD}.checkxAOD.log + checkFile.py ${outputAOD} > ${outputAOD}.checkFile.log +fi diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh index f0394bce1ba8..cfa5a1c7c25b 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh @@ -49,18 +49,9 @@ fi ## Track reconstruction step # FIXME - remove maxEvents run "${pipelineName}" \ - Reco_tf.py \ - --maxEvents 10 \ - --multithreaded 'True' \ - --autoConfiguration 'everything' \ - --conditionsTag 'all:OFLCOND-MC21-SDR-RUN4-02' \ - --geometryVersion 'all:ATLAS-P2-RUN4-03-00-00' \ - --postInclude 'all:PyJobTransforms.UseFrontier' \ - --preInclude 'InDetConfig.ConfigurationHelpers.OnlyTrackingPreInclude' \ - --preExec 'flags.Tracking.writeExtendedSi_PRDInfo=True' \ - --steering 'doRAWtoALL' \ - --inputRDOFile ${InputRDOfiles} \ - --outputAODFile "${OutSampleName}.AOD.pool.root" + runReco_C000_FS.sh \ + -i ${InputRDOfiles} \ + -o "${OutSampleName}.AOD.pool.root" -n 10 ## Don't run if IDTPM json config is not found if [ -z "$IDTPMjsonConfig_absPath" ]; then diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh index d4314988eaf3..e12b28231abc 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh @@ -49,18 +49,9 @@ fi ## Track reconstruction step # FIXME - remove maxEvents run "${pipelineName}" \ - Reco_tf.py \ - --maxEvents 10 \ - --multithreaded 'True' \ - --autoConfiguration 'everything' \ - --conditionsTag 'all:OFLCOND-MC21-SDR-RUN4-02' \ - --geometryVersion 'all:ATLAS-P2-RUN4-03-00-00' \ - --postInclude 'all:PyJobTransforms.UseFrontier' \ - --preInclude 'InDetConfig.ConfigurationHelpers.OnlyTrackingPreInclude,ActsConfig.ActsCIFlags.actsAloneFastWorkflowFlags' \ - --preExec 'flags.Tracking.writeExtendedSi_PRDInfo=True' \ - --steering 'doRAWtoALL' \ - --inputRDOFile ${InputRDOfiles} \ - --outputAODFile "${OutSampleName}.AOD.pool.root" + runReco_C100_FS.sh \ + -i ${InputRDOfiles} \ + -o "${OutSampleName}.AOD.pool.root" -n 10 ## Don't run if IDTPM json config is not found if [ -z "$IDTPMjsonConfig_absPath" ]; then -- GitLab From 37b681a82236edd3e7d5c60520b1e07dfbcf3a53 Mon Sep 17 00:00:00 2001 From: marco aparo <aparo.marco@gmail.com> Date: Fri, 21 Feb 2025 15:32:23 +0100 Subject: [PATCH 9/9] Updating ART test scripts --- .../test_EFTrack_C000_FS_ttbar_pu200_grid.sh | 40 +++++++++++-------- .../test_EFTrack_C100_FS_ttbar_pu200_grid.sh | 40 +++++++++++-------- 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh index cfa5a1c7c25b..d1c4e940f426 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh @@ -2,10 +2,11 @@ # art-description: Nightly test to compare C-000 reference to latest C-000 (Full-scan) for EFTrack studies using ttbar pu200 sample # art-type: grid # art-include: main/Athena -# art-output: *.root +# art-output: IDTPM.*.root # art-output: *.json # art-output: *.xml # art-output: *.html +# art-output: *.log # art-output: dcube* # art-html: dcube_cmp @@ -18,6 +19,8 @@ TrkCollName='InDetTrackParticles' referencePath='/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetTrackPerfMon/EFTrackRefereceHistograms/' referenceName="C000_FS.${SampleName}" referenceName_absPath="${referencePath}/IDTPM.${referenceName}.HIST.root" +refLabel="C-000_cvmfs" +testLabel="C-000_latest" ## search in $DATAPATH for matching files IDTPMjsonConfig='EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json' @@ -25,14 +28,21 @@ dcubeXmlIDTPMconfig='dcube_config_EFTrack_base_FS_noDoubleRatio.xml' IDTPMjsonConfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $IDTPMjsonConfig -print -quit 2>/dev/null ) dcubeXmlIDTPMconfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $dcubeXmlIDTPMconfig -print -quit 2>/dev/null ) +cwd=$(pwd) run () { name="${1}" cmd="${@:2}" echo "Running ${name}..." + echo -e "\n---> ${name}" >> "${cwd}/commands.log" + echo "${cmd}" >> "${cwd}/commands.log" time ${cmd} rc=$? echo "art-result: $rc ${name}" + ## if _skipRC is in name skip exit condition + if [[ "${name}" =~ "_skipRC" ]]; then + return 0 + fi if [ $rc != 0 ]; then exit $rc fi @@ -41,26 +51,25 @@ run () { ## Getting the comma-separated list of input RDOs InputRDOfiles=$( getEFTrackSample.py -s ${SampleName} ) -if [ "x${InputRDOfiles}" == "x" ]; then +if [ ! -f "${InputRDOfiles}" ]; then echo "art-result: 1 Sample ${SampleName} not found" exit 1 fi ## Track reconstruction step -# FIXME - remove maxEvents run "${pipelineName}" \ runReco_C000_FS.sh \ -i ${InputRDOfiles} \ - -o "${OutSampleName}.AOD.pool.root" -n 10 + -o "${OutSampleName}.AOD.pool.root" + #-n 10 ## Don't run if IDTPM json config is not found -if [ -z "$IDTPMjsonConfig_absPath" ]; then +if [ ! -f "$IDTPMjsonConfig_absPath" ]; then echo "art-result: 1 $IDTPMjsonConfig_absPath not found" exit 1 fi ## Copying json config in the output directory -cwd=$(pwd) echo "Running IDTPM with the following json config:" ## change the name of the track collection to monitor and copy json config in work dir cat $IDTPMjsonConfig_absPath | sed "s|_TRKCOLLNAME_|${TrkCollName}|g" | tee ${cwd}/IDTPMconfig.json @@ -72,33 +81,30 @@ run "IDTPM" \ --outputFilePrefix "IDTPM.${OutSampleName}" \ --trkAnaCfgFile "${cwd}/IDTPMconfig.json" -reco_rc=$? -if [ $reco_rc != 0 ]; then - exit $reco_rc -fi - ## Don't run if dcube xml config is not found -if [ -z "$dcubeXmlIDTPMconfig_absPath" ]; then +if [ ! -f "$dcubeXmlIDTPMconfig_absPath" ]; then echo "art-result: 1 $dcubeXmlIDTPMconfig_absPath not found" exit 1 fi ## Don't run if reference histogram file is not found -if [ -z "$referenceName_absPath" ]; then +if [ ! -f "$referenceName_absPath" ]; then echo "art-result: 1 $referenceName_absPath not found" exit 1 fi ## dcube step -$ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ +run "dcube_skipRC" \ + $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ -p -x dcube_cmp \ -c ${dcubeXmlIDTPMconfig_absPath} \ -r ${referenceName_absPath} \ - -R 'ref = C-000 (reference)' -M 'mon = C-000 (latest)' \ + -R "ref=${refLabel}" -M "mon=${testLabel}" \ IDTPM.${OutSampleName}.HIST.root ## Printing summary -PrintTrkAnaSummary.py \ +run "PrintSummaryTable_skipRC" \ + PrintTrkAnaSummary.py \ -t IDTPM.${OutSampleName}.HIST.root \ -r ${referenceName_absPath} \ - -R 'C-000 (reference)' -T 'C-000 (latest)' + -R "${refLabel}" -T "${testLabel}" diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh index e12b28231abc..4252bae1aec5 100755 --- a/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh @@ -2,10 +2,11 @@ # art-description: Nightly test to compare C-100 vs C-000 (Full-scan) for EFTrack studies using ttbar pu200 sample # art-type: grid # art-include: main/Athena -# art-output: *.root +# art-output: IDTPM.*.root # art-output: *.json # art-output: *.xml # art-output: *.html +# art-output: *.log # art-output: dcube* # art-html: dcube_cmp @@ -18,6 +19,8 @@ TrkCollName='InDetTrackParticles' referencePath='/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetTrackPerfMon/EFTrackRefereceHistograms/' referenceName="C000_FS.${SampleName}" referenceName_absPath="${referencePath}/IDTPM.${referenceName}.HIST.root" +refLabel="C-000" +testLabel="C-100" ## search in $DATAPATH for matching files IDTPMjsonConfig='EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json' @@ -25,14 +28,21 @@ dcubeXmlIDTPMconfig='dcube_config_EFTrack_base_FS_noDoubleRatio.xml' IDTPMjsonConfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $IDTPMjsonConfig -print -quit 2>/dev/null ) dcubeXmlIDTPMconfig_absPath=$( find -H ${DATAPATH//:/ } -mindepth 1 -maxdepth 2 -name $dcubeXmlIDTPMconfig -print -quit 2>/dev/null ) +cwd=$(pwd) run () { name="${1}" cmd="${@:2}" echo "Running ${name}..." + echo -e "\n---> ${name}" >> "${cwd}/commands.log" + echo "${cmd}" >> "${cwd}/commands.log" time ${cmd} rc=$? echo "art-result: $rc ${name}" + ## if _skipRC is in name skip exit condition + if [[ "${name}" =~ "_skipRC" ]]; then + return 0 + fi if [ $rc != 0 ]; then exit $rc fi @@ -41,26 +51,25 @@ run () { ## Getting the comma-separated list of input RDOs InputRDOfiles=$( getEFTrackSample.py -s ${SampleName} ) -if [ "x${InputRDOfiles}" == "x" ]; then +if [ ! -f "${InputRDOfiles}" ]; then echo "art-result: 1 Sample ${SampleName} not found" exit 1 fi ## Track reconstruction step -# FIXME - remove maxEvents run "${pipelineName}" \ runReco_C100_FS.sh \ -i ${InputRDOfiles} \ - -o "${OutSampleName}.AOD.pool.root" -n 10 + -o "${OutSampleName}.AOD.pool.root" + #-n 10 ## Don't run if IDTPM json config is not found -if [ -z "$IDTPMjsonConfig_absPath" ]; then +if [ ! -f "$IDTPMjsonConfig_absPath" ]; then echo "art-result: 1 $IDTPMjsonConfig_absPath not found" exit 1 fi ## Copying json config in the output directory -cwd=$(pwd) echo "Running IDTPM with the following json config:" ## change the name of the track collection to monitor and copy json config in work dir cat $IDTPMjsonConfig_absPath | sed "s|_TRKCOLLNAME_|${TrkCollName}|g" | tee ${cwd}/IDTPMconfig.json @@ -72,33 +81,30 @@ run "IDTPM" \ --outputFilePrefix "IDTPM.${OutSampleName}" \ --trkAnaCfgFile "${cwd}/IDTPMconfig.json" -reco_rc=$? -if [ $reco_rc != 0 ]; then - exit $reco_rc -fi - ## Don't run if dcube xml config is not found -if [ -z "$dcubeXmlIDTPMconfig_absPath" ]; then +if [ ! -f "$dcubeXmlIDTPMconfig_absPath" ]; then echo "art-result: 1 $dcubeXmlIDTPMconfig_absPath not found" exit 1 fi ## Don't run if reference histogram file is not found -if [ -z "$referenceName_absPath" ]; then +if [ ! -f "$referenceName_absPath" ]; then echo "art-result: 1 $referenceName_absPath not found" exit 1 fi ## dcube step -$ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ +run "dcube_skipRC" \ + $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ -p -x dcube_cmp \ -c ${dcubeXmlIDTPMconfig_absPath} \ -r ${referenceName_absPath} \ - -R 'ref = C-000' -M 'mon = C-100' \ + -R "ref=${refLabel}" -M "mon=${testLabel}" \ IDTPM.${OutSampleName}.HIST.root ## Printing summary -PrintTrkAnaSummary.py \ +run "PrintSummaryTable_skipRC" \ + PrintTrkAnaSummary.py \ -t IDTPM.${OutSampleName}.HIST.root \ -r ${referenceName_absPath} \ - -R 'C-000' -T 'C-100' + -R "${refLabel}" -T "${testLabel}" -- GitLab