Event.hh
Go to the documentation of this file.
1 #pragma once
2 
4 #include "boca/branch/Event.hh"
6 
7 namespace standardmodel
8 {
9 
10 namespace tagger
11 {
12 
18 template<typename Signature_, typename Multiplet_, typename Branch_>
19 class Event : public Tagger<EventMultiplet<Multiplet_>, Branch_>
20 {
21 
23 
24 public:
25 
26  int Train(boca::Event const& event, PreCuts const& , Tag tag) override {
27  return Tagger_::SaveEntries(Events(event, [&](boca::EventMultiplet<Multiplet_>& event_multiplet) {
28  event_multiplet.SetTag(tag);
29  return event_multiplet;
30  }), tag);
31  }
32 
33  std::vector<EventMultiplet<Multiplet_>> Multiplets(boca::Event const& event, PreCuts const& , TMVA::Reader const& reader) override {
34  return Tagger_::ReduceResult(Events(event, [&](boca::EventMultiplet<Multiplet_>& event_multiplet) {
35  event_multiplet.SetBdt(Tagger_::Bdt(event_multiplet, reader));
36  return event_multiplet;
37  }), 1);
38  }
39 
40  std::string Name() const override {
41  return "Event";
42  }
43 
44 protected:
45 
46  std::vector<EventMultiplet<Multiplet_>> Events(boca::Event const& event, std::function<EventMultiplet<Multiplet_>(boca::EventMultiplet<Multiplet_> &)> const& function) {
47  auto global = global_reader_.Multiplets(event).front();
48  std::vector<EventMultiplet<Multiplet_>> events;
49  for (auto const & signature : signature_reader_.Multiplets(event)) {
50  EventMultiplet<Multiplet_> event_multiplet(signature, global);
51  events.emplace_back(function(event_multiplet));
52  }
53  return events;
54  }
55 
56 private:
57 
58  Reader<Signature_> signature_reader_;
59 
60  Reader<tagger::Global> global_reader_;
61 
62 };
63 
64 }
65 
66 }
An event composed of a multiplet an a singlet made up from the remaining jets.
Definition: EventMultiplet.hh:17
std::vector< Multiplet_2_ > ReduceResult(std::vector< Multiplet_2_ > multiplets, std::size_t max=4) const
Definition: Tagger.hh:72
Definition: PreCuts.hh:14
auto Multiplets(Input_ const &input, std::size_t number=4)
Definition: Reader.hh:85
Tag
The Tag distinguishes between signal and background events.
Definition: Tag.hh:14
void SetTag(boca::Tag tag)
Definition: Identification.cpp:32
Base class for the event Topology.
Definition: Event.hh:53
std::string Name() const override
Definition: Event.hh:40
std::vector< EventMultiplet< Multiplet_ > > Multiplets(boca::Event const &event, PreCuts const &, TMVA::Reader const &reader) override
Definition: Event.hh:33
Standard Model.
Definition: StandardModel.cpp:4
int Train(boca::Event const &event, PreCuts const &, Tag tag) override
Definition: Event.hh:26
double Bdt(EventMultiplet< Multiplet_ >const &multiplet, TMVA::Reader const &reader)
Definition: Tagger.hh:28
Tagger base class using Branch template
Definition: Tagger.hh:23
int SaveEntries(std::vector< EventMultiplet< Multiplet_ > > multiplets, int max=std::numeric_limits< int >::max())
Definition: Tagger.hh:142
virtual void SetBdt(double bdt)
Definition: Identification.cpp:17
event BDT for semi leptonic heavy higgs
Definition: Event.hh:19
std::vector< EventMultiplet< Multiplet_ > > Events(boca::Event const &event, std::function< EventMultiplet< Multiplet_ >(boca::EventMultiplet< Multiplet_ > &)> const &function)
Definition: Event.hh:46