diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/CMakeLists.txt b/InnerDetector/InDetValidation/InDetTrackPerfMon/CMakeLists.txt index 49add1d258b58a88c78f6ba023083b19df8caae6..42bca06d7fff9d77fd5aefbf43820ff756377c6b 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/data/DuplicateRatePlotsDef.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/DuplicateRatePlotsDef.json index bc290662a53377b84e384eaa3d9bcdfca79eafa4..89bcbdfd25bbae17d8b79a6e7dfa8399568e246d 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/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/EFTrack_base_FS_noDoubleRatio_IDTPMconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..5ebce4c9c6fd18d6f5a1eda5faf577b472d89b6e --- /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" : "_TRKCOLLNAME_", + "MatchingType" : "TruthMatch", + "plotTechnicalEfficiencies" : true, + "plotDuplicateRates" : true + } +} diff --git a/InnerDetector/InDetValidation/InDetTrackPerfMon/data/FakeRatePlotsDef.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/FakeRatePlotsDef.json index 105b6ea8afde35bca13f498061897beee22a13d4..315ac7f1f1fd368fd7e83e0bd17bcfdcbeac5805 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/SummaryPlotsDef.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/SummaryPlotsDef.json index 290f3a19a5c90a810c5883433e4d953ec83c40cc..1691ef84163ee17260400054e5eafa6c3bfd3a48 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/data/TrkParamPlotsDef.json b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/TrkParamPlotsDef.json index eb740756b8ea7521a867954b2e32a8f1c6eea122..1e340fd41aec5364fba8fee9cbc6d4648d9397d7 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 new file mode 100644 index 0000000000000000000000000000000000000000..6c3205b5db23ba1ab47c77e8d59d01b0257ed25d --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/data/dcube_config_EFTrack_base_FS_noDoubleRatio.xml @@ -0,0 +1,547 @@ +<?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="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="" 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="" 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="" 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="" 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="" tests="KSnorm"/> + </TDirectory> + <TDirectory name="Parameters"> + <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"/> + <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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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="" 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_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"/> + <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;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"/> + <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_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"/> + <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/python/ConfigUtils.py b/InnerDetector/InDetValidation/InDetTrackPerfMon/python/ConfigUtils.py index fa544ce048ef2d00e6bfe31bd7466b5ed9378914..ae7042189e9eaf4e596e770ab7e07ddc13be5ad6 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 new file mode 100755 index 0000000000000000000000000000000000000000..78c365acb415db0373edb0462d378d6825b9dc2d --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/PrintTrkAnaSummary.py @@ -0,0 +1,151 @@ +#!/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/" +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 plots" ) +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=[] + +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( "-" ) + + + ## 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() + + +## Processing test file +processFile( + inFileName = MyArgs.testFile, + dirName = MyArgs.dirName, + label = MyArgs.testLabel, + data = data, + index = index +) + +## Processing reference file +if MyArgs.refFile : + 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 ) +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/scripts/getEFTrackSample.py b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/getEFTrackSample.py new file mode 100755 index 0000000000000000000000000000000000000000..a07093defb0fbafce34657325a8397b5cdf31698 --- /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/scripts/runReco_C000_FS.sh b/InnerDetector/InDetValidation/InDetTrackPerfMon/scripts/runReco_C000_FS.sh new file mode 100755 index 0000000000000000000000000000000000000000..fc2753e61d76bafd218c08ff417993d18ddc3ae5 --- /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 0000000000000000000000000000000000000000..675deaff1cfe0da21af1c405a28191219e3326eb --- /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/src/plots/DuplicateRatePlots.cxx b/InnerDetector/InDetValidation/InDetTrackPerfMon/src/plots/DuplicateRatePlots.cxx index 07464d416b912fb89ef80712619fe370d2911b22..92ed3f37dbf25330edbd57649f61c1fedaf93a09 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 4ad82afcb0f720f9f2a96152b4b6b31a6907a2ae..da7b69bbb2cb8f04076d9dc75b1d726d3d022bbd 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 11ee9aafb874d9814d3383ec39b778e94ac0894f..2f22c2fdce4768b731ac0a7b700113b42eb85ea1 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 e7f66e8d133f10092830ed939f90a06ef268e4bd..6e6f9db369cf254a2c5679ae92821da24b68608b 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{}; 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 0000000000000000000000000000000000000000..d1c4e940f4262f88d564d3df5076cb3c7d7d4115 --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C000_FS_ttbar_pu200_grid.sh @@ -0,0 +1,110 @@ +#!/bin/bash +# 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: IDTPM.*.root +# art-output: *.json +# art-output: *.xml +# art-output: *.html +# art-output: *.log +# art-output: dcube* +# art-html: dcube_cmp + + +## Input parameters +pipelineName='C000' +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" +refLabel="C-000_cvmfs" +testLabel="C-000_latest" + +## 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 ) +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 + return $rc +} + +## Getting the comma-separated list of input RDOs +InputRDOfiles=$( getEFTrackSample.py -s ${SampleName} ) +if [ ! -f "${InputRDOfiles}" ]; then + echo "art-result: 1 Sample ${SampleName} not found" + exit 1 +fi + +## Track reconstruction step +run "${pipelineName}" \ + runReco_C000_FS.sh \ + -i ${InputRDOfiles} \ + -o "${OutSampleName}.AOD.pool.root" + #-n 10 + +## Don't run if IDTPM json config is not found +if [ ! -f "$IDTPMjsonConfig_absPath" ]; then + echo "art-result: 1 $IDTPMjsonConfig_absPath not found" + exit 1 +fi + +## Copying json config in the output directory +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" + +## Don't run if dcube xml config is not found +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 [ ! -f "$referenceName_absPath" ]; then + echo "art-result: 1 $referenceName_absPath not found" + exit 1 +fi + +## dcube step +run "dcube_skipRC" \ + $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ + -p -x dcube_cmp \ + -c ${dcubeXmlIDTPMconfig_absPath} \ + -r ${referenceName_absPath} \ + -R "ref=${refLabel}" -M "mon=${testLabel}" \ + IDTPM.${OutSampleName}.HIST.root + +## Printing summary +run "PrintSummaryTable_skipRC" \ + PrintTrkAnaSummary.py \ + -t IDTPM.${OutSampleName}.HIST.root \ + -r ${referenceName_absPath} \ + -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 new file mode 100755 index 0000000000000000000000000000000000000000..4252bae1aec5ff641cd6cc3bfe0f9d522601bcff --- /dev/null +++ b/InnerDetector/InDetValidation/InDetTrackPerfMon/test/test_EFTrack_C100_FS_ttbar_pu200_grid.sh @@ -0,0 +1,110 @@ +#!/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: IDTPM.*.root +# art-output: *.json +# art-output: *.xml +# art-output: *.html +# art-output: *.log +# 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" +refLabel="C-000" +testLabel="C-100" + +## 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 ) +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 + return $rc +} + +## Getting the comma-separated list of input RDOs +InputRDOfiles=$( getEFTrackSample.py -s ${SampleName} ) +if [ ! -f "${InputRDOfiles}" ]; then + echo "art-result: 1 Sample ${SampleName} not found" + exit 1 +fi + +## Track reconstruction step +run "${pipelineName}" \ + runReco_C100_FS.sh \ + -i ${InputRDOfiles} \ + -o "${OutSampleName}.AOD.pool.root" + #-n 10 + +## Don't run if IDTPM json config is not found +if [ ! -f "$IDTPMjsonConfig_absPath" ]; then + echo "art-result: 1 $IDTPMjsonConfig_absPath not found" + exit 1 +fi + +## Copying json config in the output directory +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" + +## Don't run if dcube xml config is not found +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 [ ! -f "$referenceName_absPath" ]; then + echo "art-result: 1 $referenceName_absPath not found" + exit 1 +fi + +## dcube step +run "dcube_skipRC" \ + $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \ + -p -x dcube_cmp \ + -c ${dcubeXmlIDTPMconfig_absPath} \ + -r ${referenceName_absPath} \ + -R "ref=${refLabel}" -M "mon=${testLabel}" \ + IDTPM.${OutSampleName}.HIST.root + +## Printing summary +run "PrintSummaryTable_skipRC" \ + PrintTrkAnaSummary.py \ + -t IDTPM.${OutSampleName}.HIST.root \ + -r ${referenceName_absPath} \ + -R "${refLabel}" -T "${testLabel}"