From d04cf57b6997d99f5ea8f840970f830f5e1f4b64 Mon Sep 17 00:00:00 2001
From: Wouter Deconinck <wouter.deconinck@umanitoba.ca>
Date: Thu, 16 Sep 2021 19:57:01 +0000
Subject: [PATCH] Use rdataframe tests
---
benchmarks/single/analyze.cxx | 38 +++++++++++++++++++++++++++++++++++
benchmarks/single/single.sh | 2 +-
2 files changed, 39 insertions(+), 1 deletion(-)
create mode 100644 benchmarks/single/analyze.cxx
diff --git a/benchmarks/single/analyze.cxx b/benchmarks/single/analyze.cxx
new file mode 100644
index 00000000..c99e15f1
--- /dev/null
+++ b/benchmarks/single/analyze.cxx
@@ -0,0 +1,38 @@
+#include <iostream>
+#include <string>
+
+#include <ROOT/RDataFrame.hxx>
+
+#include <eicd/ReconstructedParticleData.h>
+
+int analyze(std::string name)
+{
+ // open dataframe
+ ROOT::RDataFrame df("events", url, {"mcparticles2", "GeneratedParticles", "ReconstructedParticles"});
+ // count total events
+ auto count = df.Count();
+ if (count == 0) {
+ std::cout << "Error: No events found" << std::endl;
+ return -1;
+ }
+
+ auto n_tracks = [](const std::vector<eic::ReconstructedParticleData> &p) { return (int) p.size(); };
+
+ auto d = df
+ .Define("n_tracks_gen", n_tracks, {"GeneratedParticles"})
+ .Define("n_tracks_rec", n_tracks, {"ReconstructedParticles"})
+ ;
+
+ auto stats_n_tracks_gen = d.Stats("n_tracks_gen");
+ auto stats_n_tracks_rec = d.Stats("n_tracks_rec");
+ if (stats_n_tracks_gen->GetMean() < 1.0
+ || stats_n_tracks_rec->GetMean()) {
+ std::cout << "Error: too few tracks per events " << std::endl;
+ stats_n_tracks_gen->Print();
+ stats_n_tracks_rec->Print();
+ return -1;
+ }
+
+ // success
+ return 0;
+}
diff --git a/benchmarks/single/single.sh b/benchmarks/single/single.sh
index 3f475aba..cb153366 100644
--- a/benchmarks/single/single.sh
+++ b/benchmarks/single/single.sh
@@ -31,7 +31,7 @@ if [[ "$?" -ne "0" ]] ; then
fi
# Analysis
-root -l -b -q ${JUGGLER_REC_FILE} -e 'events->Scan("@ReconstructedParticles.size()","","",10)'
+root -l -b -q "benchmarks/single/analyze.cxx+(\"${JUGGLER_REC_FILE}\")"
if [[ "$?" -ne "0" ]] ; then
echo "ERROR analysis failed"
exit 1
--
GitLab