int SignatureLeptonTagger::Train(Event const& event, boca::PreCuts const&, Tag tag) { INFO0; std::vector<Lepton> leptons = event.Leptons().leptons(); if (leptons.size() < 2) return 0; std::vector<Particle> particles = event.Partons().GenParticles(); std::vector<Particle> lepton_particle = CopyIfParticles(particles, {Id::electron, Id::muon}); // ERROR(lepton_particle); lepton_particle = CopyIfGrandMother(lepton_particle, Id::top); // ERROR(lepton_particle); std::vector<Lepton> final_leptons = CopyIfClose(leptons, lepton_particle); // ERROR(final_leptons); std::vector<Doublet> doublets = higgs_reader_.Multiplets(event); std::vector<Particle> higgses = CopyIfParticles(particles, {Id::higgs, Id::CP_violating_higgs}); std::vector<Doublet> final_doublets = BestMatches(doublets, higgses, tag); std::vector<MultipletSignature<Quartet211>> quartets = Triples(final_leptons, final_doublets, [&](Singlet const& singlet_1, Singlet const& singlet_2, Doublet const& doublet) { MultipletSignature<Quartet211> quartet = Signature(doublet, singlet_1, singlet_2); quartet.SetTag(tag); return quartet; }); DEBUG(quartets.size()); if (tag == Tag::signal) quartets = ReduceResult(quartets, 1); DEBUG(quartets.size()); return SaveEntries(quartets); }
std::vector<EventMultiplet<Decuplet532>> EventSingleLeptonicTagger::Multiplets(boca::Event const& event, boca::PreCuts const&, TMVA::Reader const& reader) { INFO0; return ReduceResult(Events(event, [&](EventMultiplet<Decuplet532>& multiplet_event) { multiplet_event.SetBdt(Bdt(multiplet_event, reader)); return multiplet_event; }), 1); }
std::vector<Quattuordecuplet554> SignatureEffectiveTagger::Multiplets(Event const& event, boca::PreCuts const&, TMVA::Reader const& reader) { INFO0; return ReduceResult(Quattuordecuplets(event, [&](Quattuordecuplet554 & quattuordecuplet) { quattuordecuplet.SetBdt(Bdt(quattuordecuplet, reader)); return quattuordecuplet; }), 1); }
std::vector<EventMultiplet<Octet332>> EventT::Multiplets(boca::Event const& event, PreCuts const&, TMVA::Reader const& reader) { INFO0; auto jets = bottom_reader_.Jets(event); auto octets = signature_reader_.Multiplets(event); std::vector<EventMultiplet<Octet332>> multiplet_events; for (auto const & octet : octets) { EventMultiplet<Octet332> multiplet_event(octet.Multiplet(), event, jets); multiplet_event.SetBdt(Bdt(multiplet_event, reader)); //FIXME reanble this multiplet_events.emplace_back(multiplet_event); } return ReduceResult(multiplet_events,1); //FIXME reanble this }
std::vector<MultipletSignature<Quartet211>> SignatureLeptonTagger::Multiplets(Event const& event, PreCuts const&, TMVA::Reader const& reader) { INFO0; std::vector<Lepton> leptons = event.Leptons().leptons(); if (leptons.size() < 2) return {}; std::vector<Doublet> doublets = higgs_reader_.Multiplets(event); INFO(doublets.size()); std::vector<MultipletSignature<Quartet211>> quartets = Triples(leptons, doublets, [&](Singlet const& singlet_1, Singlet const& singlet_2, Doublet const& doublet) { MultipletSignature<Quartet211> quartet = Signature(doublet, singlet_1, singlet_2); quartet.SetBdt(Bdt(quartet, reader)); return quartet; }); return ReduceResult(quartets); }