const auto nEntries = 3; ROOT::RDataFrame _df(nEntries); auto df = _df.Define("one", [] { return 1; }).Define("two", [] { return 2; }); auto isOne = [] (int a) { return a == 1; }; auto isNotOne = ROOT::RDF::Not(isOne); auto c1 = df.Filter(isOne, {"one"}).Count(); auto c2 = df.Filter(isNotOne, {"two"}).Count(); R__ASSERT(*c1 == nEntries); R__ASSERT(*c2 == nEntries); auto checkOneTwo = [] (const std::vector &v) { return v.size() == 2 && v[0] == 1 && v[1] == 2; }; auto c3 = df.Filter(ROOT::RDF::PassAsVec<2, int>(checkOneTwo), {"one", "two"}).Count(); R__ASSERT(*c3 == nEntries); gROOT->GetListOfCanvases()->Draw()