histcmp 0.6.7__tar.gz → 0.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. histcmp-0.7.0/.editorconfig +3 -0
  2. histcmp-0.7.0/.gitignore +11 -0
  3. histcmp-0.7.0/PKG-INFO +17 -0
  4. histcmp-0.7.0/histcmp.log +250 -0
  5. histcmp-0.7.0/pyproject.toml +32 -0
  6. histcmp-0.7.0/tests/performance_ckf.root +0 -0
  7. histcmp-0.7.0/tests/performance_ckf_main.root +0 -0
  8. histcmp-0.7.0/tests/test_root_helper.py +4 -0
  9. histcmp-0.7.0/uv.lock +1016 -0
  10. histcmp-0.6.7/PKG-INFO +0 -28
  11. histcmp-0.6.7/pyproject.toml +0 -41
  12. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/__init__.py +0 -0
  13. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/checks.py +0 -0
  14. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/cli.py +0 -0
  15. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/compare.py +0 -0
  16. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/config.py +0 -0
  17. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/console.py +0 -0
  18. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/github.py +0 -0
  19. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/icons.py +0 -0
  20. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/plot.py +0 -0
  21. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/report.py +0 -0
  22. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/root_helpers.py +0 -0
  23. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/alpinejs.intersect.min.js +0 -0
  24. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/alpinejs.min.js +0 -0
  25. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/css/bulma/bulma-rtl.css +0 -0
  26. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/css/bulma/bulma-rtl.css.map +0 -0
  27. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/css/bulma/bulma-rtl.min.css +0 -0
  28. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/css/bulma/bulma.css +0 -0
  29. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/css/bulma/bulma.css.map +0 -0
  30. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/css/bulma/bulma.min.css +0 -0
  31. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/static/css/main.css +0 -0
  32. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/templates/base.html.j2 +0 -0
  33. {histcmp-0.6.7 → histcmp-0.7.0}/src/histcmp/templates/main.html.j2 +0 -0
@@ -0,0 +1,3 @@
1
+ [*.py]
2
+ indent_style = space
3
+ indent_size = 4
@@ -0,0 +1,11 @@
1
+ *.pyc
2
+ .venv
3
+ .mypy_cache
4
+ .pytest_cache
5
+ .vscode
6
+ .idea
7
+ .tox
8
+ report
9
+ .DS_Store
10
+ .vim/
11
+ Session.vim
histcmp-0.7.0/PKG-INFO ADDED
@@ -0,0 +1,17 @@
1
+ Metadata-Version: 2.3
2
+ Name: histcmp
3
+ Version: 0.7.0
4
+ Summary: Compare histograms
5
+ Author-email: Paul Gessinger <hello@paulgessinger.com>
6
+ License: MIT
7
+ Requires-Python: >=3.10
8
+ Requires-Dist: hist[plot]>=2.8.0
9
+ Requires-Dist: jinja2>=3.1.4
10
+ Requires-Dist: matplotlib>=3.9.2
11
+ Requires-Dist: mplhep>=0.3.55
12
+ Requires-Dist: numpy>=2.1.3
13
+ Requires-Dist: pydantic>=2.10.1
14
+ Requires-Dist: pyyaml>=6.0.2
15
+ Requires-Dist: rich>=13.9.4
16
+ Requires-Dist: scipy>=1.14.1
17
+ Requires-Dist: typer>=0.13.1
@@ -0,0 +1,250 @@
1
+ ╭─────────────────────────────────────────────────────────────── Comparing files: ────────────────────────────────────────────────────────────────╮
2
+ │ Monitored: tests/performance_ckf.root │
3
+ │ Reference: tests/performance_ckf_main.root │
4
+ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
5
+ ╭───────────────────────────────────────────────────────────────── Configuration ─────────────────────────────────────────────────────────────────╮
6
+ │ Config( │
7
+ │ checks={ │
8
+ │ '*': { │
9
+ │ 'Chi2Test': {'threshold': 0.01}, │
10
+ │ 'KolmogorovTest': {'threshold': 0.68}, │
11
+ │ 'RatioCheck': {'threshold': 3}, │
12
+ │ 'ResidualCheck': {'threshold': 1}, │
13
+ │ 'IntegralCheck': {'threshold': 3} │
14
+ │ } │
15
+ │ } │
16
+ │ ) │
17
+ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
18
+ ────────────────────────────────────────────────────── duplicationRate_vs_eta (TEfficiency) ───────────────────────────────────────────────────────
19
+ 🟡 Chi2Test
20
+ ✅ KolmogorovTest 1.0 > 0.68
21
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
22
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
23
+ ✅ IntegralTest Intregal: 14.391633245637966+-2.1795991079862436 vs. 14.391633245637966+-2.1795991079862436: (int_a - int_b) / sqrt(sigma(int_a)^2
24
+ + sigma(int_b)^2) = 0.00 < 3
25
+ ─────────────────────────────────────────────────────── duplicationRate_vs_pT (TEfficiency) ───────────────────────────────────────────────────────
26
+ ✅ Chi2Test 1.0 > 0.01
27
+ ✅ KolmogorovTest 1.0 > 0.68
28
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/33 bins, cf. 5.744562646538029
29
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
30
+ ✅ IntegralTest Intregal: 30.74828367741717+-2.0771797982949978 vs. 30.74828367741717+-2.0771797982949978: (int_a - int_b) / sqrt(sigma(int_a)^2 +
31
+ sigma(int_b)^2) = 0.00 < 3
32
+ ────────────────────────────────────────────────────── duplicationRate_vs_phi (TEfficiency) ───────────────────────────────────────────────────────
33
+ 🟡 Chi2Test
34
+ ✅ KolmogorovTest 1.0 > 0.68
35
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/100 bins, cf. 10.0
36
+ ✅ ResidualCheck pull < 1 in 100/100 bins, cf. 10.0
37
+ ✅ IntegralTest Intregal: 70.64638447881467+-0.08747995604884659 vs. 70.64638447881467+-0.08747995604884659: (int_a - int_b) / sqrt(sigma(int_a)^2
38
+ + sigma(int_b)^2) = 0.00 < 3
39
+ ────────────────────────────────────────────────────────── fakerate_vs_eta (TEfficiency) ──────────────────────────────────────────────────────────
40
+ 🟡 Chi2Test
41
+ 🟡 KolmogorovTest
42
+ 🟡 RatioCheck
43
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
44
+ ✅ IntegralTest Intregal: 0.0+-2.1794496613752004 vs. 0.0+-2.1794496613752004: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 0.00 < 3
45
+ ────────────────────────────────────────────────────────── fakerate_vs_pT (TEfficiency) ───────────────────────────────────────────────────────────
46
+ 🟡 Chi2Test
47
+ 🟡 KolmogorovTest
48
+ 🟡 RatioCheck
49
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
50
+ ✅ IntegralTest Intregal: 0.0+-2.0450880771376485 vs. 0.0+-2.0450880771376485: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 0.00 < 3
51
+ ────────────────────────────────────────────────────────── fakerate_vs_phi (TEfficiency) ──────────────────────────────────────────────────────────
52
+ 🟡 Chi2Test
53
+ 🟡 KolmogorovTest
54
+ 🟡 RatioCheck
55
+ ✅ ResidualCheck pull < 1 in 100/100 bins, cf. 10.0
56
+ ✅ IntegralTest Intregal: 0.0+-0.0033804502047364614 vs. 0.0+-0.0033804502047364614: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 0.00
57
+ < 3
58
+ ────────────────────────────────────────────────────────── nDuplicated_vs_eta (TProfile) ──────────────────────────────────────────────────────────
59
+ ✅ Chi2Test 1.0 > 0.01
60
+ ✅ KolmogorovTest 1.0 > 0.68
61
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
62
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
63
+ ✅ IntegralTest Intregal: 52.618353666609764+-0.19112402761711028 vs. 52.618353666609764+-0.19112402761711028: (int_a - int_b) /
64
+ sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 0.00 < 3
65
+ ────────────────────────────────────────────────────────── nDuplicated_vs_pT (TProfile) ───────────────────────────────────────────────────────────
66
+ ✅ Chi2Test 1.0 > 0.01
67
+ ✅ KolmogorovTest 1.0 > 0.68
68
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/4 bins, cf. 2.0
69
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
70
+ ✅ IntegralTest Intregal: 10.851299761676445+-0.03115642082191491 vs. 10.851299761676445+-0.03115642082191491: (int_a - int_b) /
71
+ sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 0.00 < 3
72
+ ────────────────────────────────────────────────────────── nDuplicated_vs_phi (TProfile) ──────────────────────────────────────────────────────────
73
+ ✅ Chi2Test 1.0 > 0.01
74
+ ✅ KolmogorovTest 1.0 > 0.68
75
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/100 bins, cf. 10.0
76
+ ✅ ResidualCheck pull < 1 in 100/100 bins, cf. 10.0
77
+ ✅ IntegralTest Intregal: 271.97709886286015+-0.6541289612560222 vs. 271.97709886286015+-0.6541289612560222: (int_a - int_b) / sqrt(sigma(int_a)^2
78
+ + sigma(int_b)^2) = 0.00 < 3
79
+ ──────────────────────────────────────────────────────────── nFakeTracks_vs_eta (TH2F) ────────────────────────────────────────────────────────────
80
+ ✅ Chi2Test pX 1.0 > 0.01
81
+ 🟡 Chi2Test pY
82
+ ✅ KolmogorovTest pX 1.0 > 0.68
83
+ ✅ KolmogorovTest pY 1.0 > 0.68
84
+ ✅ RatioCheck pX (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
85
+ ✅ RatioCheck pY (a/b - 1) / sigma(a/b) > 3 for 0/1 bins, cf. 1.0
86
+ ✅ ResidualCheck pX pull < 1 in 40/40 bins, cf. 6.324555320336759
87
+ ✅ ResidualCheck pY pull < 1 in 30/30 bins, cf. 5.477225575051661
88
+ ✅ IntegralTest pX Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
89
+ 0.00 < 3
90
+ ✅ IntegralTest pY Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
91
+ 0.00 < 3
92
+ ──────────────────────────────────────────────────────────── nFakeTracks_vs_pT (TH2F) ─────────────────────────────────────────────────────────────
93
+ ✅ Chi2Test pX 1.0 > 0.01
94
+ 🟡 Chi2Test pY
95
+ ✅ KolmogorovTest pX 1.0 > 0.68
96
+ ✅ KolmogorovTest pY 1.0 > 0.68
97
+ ✅ RatioCheck pX (a/b - 1) / sigma(a/b) > 3 for 0/4 bins, cf. 2.0
98
+ ✅ RatioCheck pY (a/b - 1) / sigma(a/b) > 3 for 0/1 bins, cf. 1.0
99
+ ✅ ResidualCheck pX pull < 1 in 40/40 bins, cf. 6.324555320336759
100
+ ✅ ResidualCheck pY pull < 1 in 30/30 bins, cf. 5.477225575051661
101
+ ✅ IntegralTest pX Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
102
+ 0.00 < 3
103
+ ✅ IntegralTest pY Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
104
+ 0.00 < 3
105
+ ──────────────────────────────────────────────────────────── nHoles_vs_eta (TProfile) ─────────────────────────────────────────────────────────────
106
+ 🟡 Chi2Test
107
+ 🔴 KolmogorovTest ! 0.0007871091401546528 > 0.68
108
+ 🔴 RatioCheck (a/b - 1) / sigma(a/b) > 3 for 20/20 bins, cf. 4.47213595499958
109
+ 🔴 ResidualCheck pull > 1 in 20/40 bins, cf. 6.324555320336759
110
+ 🔴 IntegralTest Intregal: 0.3554393448464666+-0.007885098423841766 vs. 206.87594624744816+-0.04844978842392996: (int_a - int_b) /
111
+ sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 4207.21 >= 3
112
+ ───────────────────────────────────────────────────────────── nHoles_vs_pT (TProfile) ─────────────────────────────────────────────────────────────
113
+ 🟡 Chi2Test
114
+ 🔴 KolmogorovTest ! 0.43368306162666226 > 0.68
115
+ 🔴 RatioCheck (a/b - 1) / sigma(a/b) > 3 for 6/6 bins, cf. 2.449489742783178
116
+ 🔴 ResidualCheck pull > 1 in 20/40 bins, cf. 6.324555320336759
117
+ 🔴 IntegralTest Intregal: 0.5774262235915608+-0.3536504269799031 vs. 176.74621567249142+-7.697400996734046: (int_a - int_b) / sqrt(sigma(int_a)^2 +
118
+ sigma(int_b)^2) = 22.86 >= 3
119
+ ───────────────────────────────────────────────────────── nMeasurements_vs_eta (TProfile) ─────────────────────────────────────────────────────────
120
+ ✅ Chi2Test 1.0 > 0.01
121
+ ✅ KolmogorovTest 1.0 > 0.68
122
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
123
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
124
+ ✅ IntegralTest Intregal: 232.2787219792595+-0.08474681479846635 vs. 232.2787219792595+-0.08474681479846635: (int_a - int_b) / sqrt(sigma(int_a)^2
125
+ + sigma(int_b)^2) = 0.00 < 3
126
+ ───────────────────────────────────────────────────────── nMeasurements_vs_pT (TProfile) ──────────────────────────────────────────────────────────
127
+ ✅ Chi2Test 1.0 > 0.01
128
+ ✅ KolmogorovTest 1.0 > 0.68
129
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
130
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
131
+ ✅ IntegralTest Intregal: 304.7489093057472+-6.600243880107274 vs. 304.7489093057472+-6.600243880107274: (int_a - int_b) / sqrt(sigma(int_a)^2 +
132
+ sigma(int_b)^2) = 0.00 < 3
133
+ ─────────────────────────────────────────────────────────── nOutliers_vs_eta (TProfile) ───────────────────────────────────────────────────────────
134
+ 🟡 Chi2Test
135
+ ✅ KolmogorovTest 1.0 > 0.68
136
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
137
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
138
+ ✅ IntegralTest Intregal: 0.08019829863796357+-0.0031542020844913306 vs. 0.08019829863796357+-0.0031542020844913306: (int_a - int_b) /
139
+ sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 0.00 < 3
140
+ ─────────────────────────────────────────────────────────── nOutliers_vs_pT (TProfile) ────────────────────────────────────────────────────────────
141
+ 🟡 Chi2Test
142
+ ✅ KolmogorovTest 1.0 > 0.68
143
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/7 bins, cf. 2.6457513110645907
144
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
145
+ ✅ IntegralTest Intregal: 0.150190736022491+-0.06016127659358099 vs. 0.150190736022491+-0.06016127659358099: (int_a - int_b) / sqrt(sigma(int_a)^2
146
+ + sigma(int_b)^2) = 0.00 < 3
147
+ ──────────────────────────────────────────────────────────── nRecoTracks_vs_eta (TH2F) ────────────────────────────────────────────────────────────
148
+ ✅ Chi2Test pX 1.0 > 0.01
149
+ ✅ Chi2Test pY 1.0 > 0.01
150
+ ✅ KolmogorovTest pX 1.0 > 0.68
151
+ ✅ KolmogorovTest pY 1.0 > 0.68
152
+ ✅ RatioCheck pX (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
153
+ ✅ RatioCheck pY (a/b - 1) / sigma(a/b) > 3 for 0/22 bins, cf. 4.69041575982343
154
+ ✅ ResidualCheck pX pull < 1 in 40/40 bins, cf. 6.324555320336759
155
+ ✅ ResidualCheck pY pull < 1 in 30/30 bins, cf. 5.477225575051661
156
+ ✅ IntegralTest pX Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
157
+ 0.00 < 3
158
+ ✅ IntegralTest pY Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
159
+ 0.00 < 3
160
+ ──────────────────────────────────────────────────────────── nRecoTracks_vs_pT (TH2F) ─────────────────────────────────────────────────────────────
161
+ ✅ Chi2Test pX 1.0 > 0.01
162
+ ✅ Chi2Test pY 1.0 > 0.01
163
+ ✅ KolmogorovTest pX 1.0 > 0.68
164
+ ✅ KolmogorovTest pY 1.0 > 0.68
165
+ ✅ RatioCheck pX (a/b - 1) / sigma(a/b) > 3 for 0/4 bins, cf. 2.0
166
+ ✅ RatioCheck pY (a/b - 1) / sigma(a/b) > 3 for 0/22 bins, cf. 4.69041575982343
167
+ ✅ ResidualCheck pX pull < 1 in 40/40 bins, cf. 6.324555320336759
168
+ ✅ ResidualCheck pY pull < 1 in 30/30 bins, cf. 5.477225575051661
169
+ ✅ IntegralTest pX Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
170
+ 0.00 < 3
171
+ ✅ IntegralTest pY Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
172
+ 0.00 < 3
173
+ ────────────────────────────────────────────────────────── nSharedHits_vs_eta (TProfile) ──────────────────────────────────────────────────────────
174
+ 🟡 Chi2Test
175
+ 🟡 KolmogorovTest
176
+ 🟡 RatioCheck
177
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
178
+ 🟡 IntegralTest
179
+ ────────────────────────────────────────────────────────── nSharedHits_vs_pT (TProfile) ───────────────────────────────────────────────────────────
180
+ 🟡 Chi2Test
181
+ 🟡 KolmogorovTest
182
+ 🟡 RatioCheck
183
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
184
+ 🟡 IntegralTest
185
+ ──────────────────────────────────────────────────────────── nStates_vs_eta (TProfile) ────────────────────────────────────────────────────────────
186
+ ✅ Chi2Test 1.0 > 0.01
187
+ ✅ KolmogorovTest 1.0 > 0.68
188
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
189
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
190
+ ✅ IntegralTest Intregal: 439.12326130446803+-0.11508984812399417 vs. 439.12326130446803+-0.11508984812399417: (int_a - int_b) /
191
+ sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 0.00 < 3
192
+ ──────────────────────────────────────────────────────────── nStates_vs_pT (TProfile) ─────────────────────────────────────────────────────────────
193
+ ✅ Chi2Test 1.0 > 0.01
194
+ ✅ KolmogorovTest 1.0 > 0.68
195
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/22 bins, cf. 4.69041575982343
196
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
197
+ ✅ IntegralTest Intregal: 481.58900083218475+-13.870709574039887 vs. 481.58900083218475+-13.870709574039887: (int_a - int_b) / sqrt(sigma(int_a)^2
198
+ + sigma(int_b)^2) = 0.00 < 3
199
+ ──────────────────────────────────────────────────────── nTruthMatchedTracks_vs_eta (TH2F) ────────────────────────────────────────────────────────
200
+ ✅ Chi2Test pX 1.0 > 0.01
201
+ ✅ Chi2Test pY 1.0 > 0.01
202
+ ✅ KolmogorovTest pX 1.0 > 0.68
203
+ ✅ KolmogorovTest pY 1.0 > 0.68
204
+ ✅ RatioCheck pX (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
205
+ ✅ RatioCheck pY (a/b - 1) / sigma(a/b) > 3 for 0/22 bins, cf. 4.69041575982343
206
+ ✅ ResidualCheck pX pull < 1 in 40/40 bins, cf. 6.324555320336759
207
+ ✅ ResidualCheck pY pull < 1 in 30/30 bins, cf. 5.477225575051661
208
+ ✅ IntegralTest pX Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
209
+ 0.00 < 3
210
+ ✅ IntegralTest pY Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
211
+ 0.00 < 3
212
+ ──────────────────────────────────────────────────────── nTruthMatchedTracks_vs_pT (TH2F) ─────────────────────────────────────────────────────────
213
+ ✅ Chi2Test pX 1.0 > 0.01
214
+ ✅ Chi2Test pY 1.0 > 0.01
215
+ ✅ KolmogorovTest pX 1.0 > 0.68
216
+ ✅ KolmogorovTest pY 1.0 > 0.68
217
+ ✅ RatioCheck pX (a/b - 1) / sigma(a/b) > 3 for 0/4 bins, cf. 2.0
218
+ ✅ RatioCheck pY (a/b - 1) / sigma(a/b) > 3 for 0/22 bins, cf. 4.69041575982343
219
+ ✅ ResidualCheck pX pull < 1 in 40/40 bins, cf. 6.324555320336759
220
+ ✅ ResidualCheck pY pull < 1 in 30/30 bins, cf. 5.477225575051661
221
+ ✅ IntegralTest pX Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
222
+ 0.00 < 3
223
+ ✅ IntegralTest pY Intregal: 79683.0+-282.28177411940715 vs. 79683.0+-282.28177411940715: (int_a - int_b) / sqrt(sigma(int_a)^2 + sigma(int_b)^2) =
224
+ 0.00 < 3
225
+ ────────────────────────────────────────────────────────── trackeff_vs_eta (TEfficiency) ──────────────────────────────────────────────────────────
226
+ ✅ Chi2Test 1.0 > 0.01
227
+ ✅ KolmogorovTest 1.0 > 0.68
228
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/20 bins, cf. 4.47213595499958
229
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
230
+ ✅ IntegralTest Intregal: 19.989957536652923+-2.179452293231805 vs. 19.989957536652923+-2.179452293231805: (int_a - int_b) / sqrt(sigma(int_a)^2 +
231
+ sigma(int_b)^2) = 0.00 < 3
232
+ ────────────────────────────────────────────────────────── trackeff_vs_pT (TEfficiency) ───────────────────────────────────────────────────────────
233
+ 🟡 Chi2Test
234
+ ✅ KolmogorovTest 1.0 > 0.68
235
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/4 bins, cf. 2.0
236
+ ✅ ResidualCheck pull < 1 in 40/40 bins, cf. 6.324555320336759
237
+ ✅ IntegralTest Intregal: 3.995615428484281+-2.9580399606534193 vs. 3.995615428484281+-2.9580399606534193: (int_a - int_b) / sqrt(sigma(int_a)^2 +
238
+ sigma(int_b)^2) = 0.00 < 3
239
+ ────────────────────────────────────────────────────────── trackeff_vs_phi (TEfficiency) ──────────────────────────────────────────────────────────
240
+ ✅ Chi2Test 1.0 > 0.01
241
+ ✅ KolmogorovTest 1.0 > 0.68
242
+ ✅ RatioCheck (a/b - 1) / sigma(a/b) > 3 for 0/100 bins, cf. 10.0
243
+ ✅ ResidualCheck pull < 1 in 100/100 bins, cf. 10.0
244
+ ✅ IntegralTest Intregal: 98.92470793292954+-0.016590116945826922 vs. 98.92470793292954+-0.016590116945826922: (int_a - int_b) /
245
+ sqrt(sigma(int_a)^2 + sigma(int_b)^2) = 0.00 < 3
246
+ Comparing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
247
+ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
248
+ │ 🔴 FAILURE │
249
+ │ 2 items failed checks out of 28 common items │
250
+ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
@@ -0,0 +1,32 @@
1
+ [project]
2
+ name = "histcmp"
3
+ version = "0.7.0"
4
+ description = "Compare histograms"
5
+ authors = [{name="Paul Gessinger", email="hello@paulgessinger.com"}]
6
+ license = "MIT"
7
+
8
+ requires-python = ">=3.10"
9
+ dependencies = [
10
+ "hist[plot]>=2.8.0",
11
+ "jinja2>=3.1.4",
12
+ "matplotlib>=3.9.2",
13
+ "mplhep>=0.3.55",
14
+ "numpy>=2.1.3",
15
+ "pydantic>=2.10.1",
16
+ "pyyaml>=6.0.2",
17
+ "rich>=13.9.4",
18
+ "scipy>=1.14.1",
19
+ "typer>=0.13.1",
20
+ ]
21
+
22
+ [project.scripts]
23
+ histcmp = 'histcmp.cli:app'
24
+
25
+ [build-system]
26
+ requires = ["hatchling"]
27
+ build-backend = "hatchling.build"
28
+
29
+ [tool.uv]
30
+ dev-dependencies = [
31
+ "nox>=2024.10.9",
32
+ ]
Binary file
@@ -0,0 +1,4 @@
1
+ from histcmp.root_helpers import _process_axis_title
2
+ def test_delta_r():
3
+ res = _process_axis_title("Closest track #DeltaR")
4
+ print(res)