FairShip
Loading...
Searching...
No Matches
experimental.compare_histograms Namespace Reference

Functions

bool compare_histograms (ROOT.TH1 hist1, ROOT.TH1 hist2, bool use_ks_test=False, float significance_threshold=0.05)
 
None main (str file1_path, str file2_path, bool use_ks_test, float significance_threshold)
 

Variables

argparse parser = argparse.ArgumentParser(description="Compare histograms in two ROOT files.")
 
 help
 
 action
 
 type
 
 default
 
argparse args = parser.parse_args()
 

Detailed Description

Compare histograms for exact or statistical equality.

Function Documentation

◆ compare_histograms()

bool experimental.compare_histograms.compare_histograms ( ROOT.TH1  hist1,
ROOT.TH1  hist2,
bool   use_ks_test = False,
float   significance_threshold = 0.05 
)
Compare two histograms for equality or statistical compatibility.

Definition at line 11 of file compare_histograms.py.

13) -> bool:
14 """Compare two histograms for equality or statistical compatibility."""
15 name = hist1.GetName()
16
17 if not hist1.IsEqual(hist2):
18 print(f"Histograms '{name}' are different in terms of bin contents or errors.")
19
20 if use_ks_test:
21 p_value = hist1.KolmogorovTest(hist2)
22 print(f"KS p-value: {p_value}")
23 if p_value < significance_threshold:
24 print(f"Histograms '{name}' are statistically different (p < {significance_threshold}).")
25 else:
26 print(f"Histograms '{name}' are statistically compatible (p >= {significance_threshold}).")
27 return False
28
29 print(f"Histograms '{name}' are equal.")
30 return True
31
32

◆ main()

None experimental.compare_histograms.main ( str  file1_path,
str  file2_path,
bool  use_ks_test,
float  significance_threshold 
)
Compare histograms in two ROOT files.

Definition at line 33 of file compare_histograms.py.

33def main(file1_path: str, file2_path: str, use_ks_test: bool, significance_threshold: float) -> None:
34 """Compare histograms in two ROOT files."""
35 file1 = ROOT.TFile.Open(file1_path)
36 file2 = ROOT.TFile.Open(file2_path)
37
38 histograms1 = {}
39 for key in file1.GetListOfKeys():
40 if ROOT.TClass.GetClass(key.GetClassName()).InheritsFrom("TH1"):
41 histograms1[key.GetName()] = file1.Get(key.GetName())
42
43 histograms2 = {}
44 for key in file2.GetListOfKeys():
45 if ROOT.TClass.GetClass(key.GetClassName()).InheritsFrom("TH1"):
46 histograms2[key.GetName()] = file2.Get(key.GetName())
47
48 for hist_name in histograms1:
49 if hist_name in histograms2:
50 compare_histograms(histograms1[hist_name], histograms2[hist_name], use_ks_test, significance_threshold)
51 else:
52 print(f"Histogram '{hist_name}' not found in file2.")
53
54 for hist_name in histograms2:
55 if hist_name not in histograms1:
56 print(f"Histogram '{hist_name}' not found in file1.")
57
58
void main()
Definition: example_test.cpp:1

Variable Documentation

◆ action

experimental.compare_histograms.action

Definition at line 65 of file compare_histograms.py.

◆ args

argparse experimental.compare_histograms.args = parser.parse_args()

Definition at line 75 of file compare_histograms.py.

◆ default

experimental.compare_histograms.default

Definition at line 71 of file compare_histograms.py.

◆ help

experimental.compare_histograms.help

Definition at line 61 of file compare_histograms.py.

◆ parser

argparse experimental.compare_histograms.parser = argparse.ArgumentParser(description="Compare histograms in two ROOT files.")

Definition at line 60 of file compare_histograms.py.

◆ type

experimental.compare_histograms.type

Definition at line 70 of file compare_histograms.py.