std::vector<Quintet> VetoTopPartnerLeptonic::Quintets(boca::Event const& event, std::function<Quintet(Quintet&)> const& function) { INFO0; auto quintets = partner_reader_.Multiplets(event); auto triplets = top_reader_.Multiplets(event); std::vector<Quintet> vetos; for (auto const & doublet : higgs_reader_.Multiplets(event,6)) { for (auto const & triplet : triplets) { Quintet veto(triplet, doublet); if (veto.Overlap()) continue; for (auto const & quintet : quintets) { Decuplet55 decuplet(quintet, veto); if (decuplet.Overlap()) continue; vetos.emplace_back(function(veto)); break; } } } return vetos; }
std::vector<Quattuordecuplet554> SignatureEffectiveTagger::Quattuordecuplets(boca::Event const& event, std::function< Quattuordecuplet554(Quattuordecuplet554&)> const& function) { INFO0; auto hadronic = top_partner_hadronic_reader_.Multiplets(event, 8); auto leptonic = top_partner_leptonic_reader_.Multiplets(event, 8); auto higgs_pairs = higgs_pair_reader_.Multiplets(event, 8); auto signatures = Triples(hadronic, leptonic, higgs_pairs, [&](Quintet const & quintet_1, Quintet const & quintet_2) { Decuplet55 decuplet(quintet_1, quintet_2); if (decuplet.Overlap()) throw Overlap(); return decuplet; }, [&](Decuplet55 const & decuplet, Quartet22 const & quartet) { Quattuordecuplet554 quattuordecuplet; quattuordecuplet.SetMultiplets12(decuplet, quartet); if (quattuordecuplet.Overlap()) throw Overlap(); return function(quattuordecuplet); }); // static int sig = 0; // static int eve = 0; // ++eve; // if (!signatures.empty()) ++sig; // double fraction = double(sig) / eve; // ERROR(signatures.size(), hadronic.size(), leptonic.size(), higgs_pairs.size(), fraction); return signatures; }