This tutorial shows how to get information about the efficiency of the filters applied.
using FourVectors = std::vector<FourVector>;
void fill_tree(const char *treeName, const char *fileName)
{
int i(0);
d.Define(
"b1", [&i]() {
return (
double)i; })
.Define("b2",
[&i]() {
auto j = i * i;
++i;
return j;
})
.Snapshot(treeName, fileName);
}
{
auto fileName = "df004_cutFlowReport.root";
auto treeName = "myTree";
fill_tree(treeName, fileName);
auto cut1 = [](double b1) { return b1 > 25.; };
auto cut2 = [](int b2) { return 0 == b2 % 2; };
auto filtered1 =
d.Filter(cut1, {
"b1"},
"Cut1");
auto filtered2 =
d.Filter(cut2, {
"b2"},
"Cut2");
auto augmented1 = filtered2.Define("b3", [](double b1, int b2) { return b1 / b2; });
auto cut3 = [](
double x) {
return x < .5; };
auto filtered3 = augmented1.Filter(cut3, {"b3"}, "Cut3");
std::cout << "Cut3 stats:" << std::endl;
filtered3.Report()->Print();
std::cout << "All stats:" << std::endl;
auto allCutsReport =
d.Report();
allCutsReport->Print();
std::cout << "Name\tAll\tPass\tEfficiency" << std::endl;
for (auto &&cutInfo : allCutsReport) {
std::cout << cutInfo.GetName() << "\t" << cutInfo.GetAll() << "\t" << cutInfo.GetPass() << "\t"
<< cutInfo.GetEff() << " %" << std::endl;
}
auto cutName = "Cut1";
auto cut = allCutsReport->At("Cut1");
std::cout << cutName << " efficiency is " << cut.GetEff() << " %" << std::endl;
}
- Date
- December 2016
- Author
- Danilo Piparo
Definition in file df004_cutFlowReport.C.