15from ROOT
import Belle2
18def load_csv_as_numpy(filename: str) -> np.ndarray:
20 Load a CSV with possibly trailing commas and spaces into a flat numpy array of floats.
21 Ensures exactly 7200 values are read.
24 with open(filename)
as f:
27 numbers = [float(x)
for x
in line.strip().split(
",")
if x.strip() !=
""]
28 values.extend(numbers)
30 values = np.array(values, dtype=np.float64)
31 if values.size != 7200:
32 raise ValueError(f
"Expected 7200 values, but got {values.size}")
36def numpy_to_std_vector(array: np.ndarray) -> Any:
38 Convert a 1D numpy array of floats into a ROOT std::vector<double>.
40 vec = ROOT.std.vector(
"double")()
41 vec.reserve(len(array))
43 vec.push_back(float(val))
47if __name__ ==
"__main__":
49 print(f
"Usage: {sys.argv[0]} data.csv")
52 filename = sys.argv[1]
55 values = load_csv_as_numpy(filename)
58 vectors = values.reshape(6, 1200)
59 pi0ProbsFWD, pi0ProbsBRL, pi0ProbsBWD, etaProbsFWD, etaProbsBRL, etaProbsBWD = vectors
62 vec_pi0ProbsFWD = numpy_to_std_vector(pi0ProbsFWD)
63 vec_pi0ProbsBRL = numpy_to_std_vector(pi0ProbsBRL)
64 vec_pi0ProbsBWD = numpy_to_std_vector(pi0ProbsBWD)
65 vec_etaProbsFWD = numpy_to_std_vector(etaProbsFWD)
66 vec_etaProbsBRL = numpy_to_std_vector(etaProbsBRL)
67 vec_etaProbsBWD = numpy_to_std_vector(etaProbsBWD)
82 db.storeData(
"BellePi0EtaProbParameters", params, iov)
84 print(
"Successfully loaded parameters and added to DB")
Class for handling the payloads with lookup tables for Belle pi0 and eta probabilities.
static IntervalOfValidity always()
Function that returns an interval of validity that is always valid, c.f.
static Database & Instance()
Instance of a singleton Database.