Skip to content
Snippets Groups Projects

First iteration of S3 run summary

Open Wouter Deconinck requested to merge s3-run-summary into main
2 files
+ 74
0
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 42
0
#include <iostream>
#include <string>
#include <ROOT/RDataFrame.hxx>
#include <eicd/ReconstructedParticleData.h>
int s3_run_summary(std::string name)
{
// determine s3https url
auto slash = name.find_first_of("/");
if (slash == std::string::npos) {
std::cout << "Error: No slash in file name" << std::endl;
return -1;
}
std::string url("s3https://dtn01.sdcc.bnl.gov:9000/" + name.substr(slash+1));
std::cout << "Info: url = " << url << std::endl;
// 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;
}
// work on range only
auto d = df.Range(100)
// number of tracks
.Define("n_tracks", [](const std::vector<eic::ReconstructedParticleData> &p) { return (int) p.size(); }, {"ReconstructedParticles"});
auto stats_n_tracks = d.Stats("n_tracks");
if (stats_n_tracks->GetMean() < 1.0) {
std::cout << "Error: too few tracks per events " << std::endl;
stats_n_tracks->Print();
return -1;
}
// success
return 0;
}
Loading