Top.hh
Go to the documentation of this file.
1 #pragma once
2 
4 
8 
9 namespace standardmodel
10 {
11 
12 enum class TopTagger
13 {
14  boca,
15  hep,
16  hep2
17 };
18 
19 std::string Name(TopTagger top_tagger);
20 
21 namespace analysis
22 {
23 
31 template<typename Tagger_>
32 class Top : public StandardModel<Tagger_>
33 {
34 
35 public:
36 
37  Top() {
38  this->PreCuts().PtLowerCut().Set(Id::top, this->LowerPtCut());
39  this->PreCuts().PtUpperCut().Set(Id::top, this->UpperPtCut());
40  this->PreCuts().TrackerMaxEta().Set(Id::top, Settings::TrackerEtaMax());
41  }
42 
43  static Decay TopDecay() {
44  return Decay::hadronic;
45  return Decay::leptonic;
46  }
47 
52  }
53 
54 private:
55 
56  std::string Name() const override {
57  return boca::Name(this->Collider()) + "-" + boca::units::Name(this->LowerPtCut()) + "-" + boca::Name(TopDecay()) + (TopDecay() == Decay::hadronic ? "-" + standardmodel::Name(TopTagger()) : "") + "new-est";
58  }
59 
60  void SetFiles(Phase const& phase) override {
61  switch (phase.Tag()) {
62  case Tag::signal :
63  if (TopDecay() == Decay::hadronic || this->template TaggerIs<tagger::Bottom>()) this->AddSignal(Process::tt_had);
64  if (this->template TaggerIs<tagger::Bottom>()) this->AddSignal(Process::hh);
65  if (this->template TaggerIs<tagger::Bottom>()) this->AddSignal(Process::bb);
66  if (TopDecay() == Decay::leptonic || this->template TaggerIs<tagger::Bottom>()) this->AddSignal(Process::tt_lep);
67  if (this->template TaggerIs<tagger::WHadronic>() || this->template TaggerIs<tagger::WLeptonic>()) this->AddSignal(Process::ww);
68  break;
69  case Tag::background :
70  if (TopDecay() == Decay::leptonic && !this->template TaggerIs<tagger::Bottom>()) this->AddBackground(Process::tt_had);
71  if (!this->template TaggerIs<tagger::Bottom>()) this->AddBackground(Process::hh);
72  if (!this->template TaggerIs<tagger::Bottom>()) this->AddBackground(Process::bb);
73  this->AddBackground(Process::cc);
74  this->AddBackground(Process::gg);
75  if (!this->template TaggerIs<tagger::WLeptonic>()) this->AddBackground(Process::qq);
76  if ((TopDecay() == Decay::hadronic) && !this->template TaggerIs<tagger::Bottom>()) this->AddBackground(Process::tt_lep);
77  this->AddBackground(Process::zz);
78  if (!this->template TaggerIs<tagger::WHadronic>() && !this->template TaggerIs<tagger::WLeptonic>()) this->AddBackground(Process::ww);
79  break;
80  }
81  }
82 
83  bool PassPreCut(boca::Event const& event) const override {
84  auto particles = SortedByPt(event.GenParticles());
85  particles = CopyIfDrellYan(particles);
86  particles = RemoveIfOutsidePtWindow(particles, this->LowerPtCut(), this->UpperPtCut());
87 // std::cout << "pre cut " << particles.size() << '\n';
88  return particles.size() == 1 ? true : false;
89  }
90 
91 };
92 
93 }
94 
95 }
TopTagger
Definition: Top.hh:12
PreCut< Angle > & TrackerMaxEta()
Definition: PreCuts.cpp:39
static Decay TopDecay()
Definition: Top.hh:43
void Set(Id id, Value value)
Definition: PreCut.hh:18
Definition: PreCuts.hh:14
PreCut< Momentum > & PtLowerCut()
Definition: PreCuts.cpp:23
Top()
Definition: Top.hh:37
std::vector< Multiplet_ > RemoveIfOutsidePtWindow(std::vector< Multiplet_ > jets, Momentum const &lower_cut, Momentum const &upper_cut)
Definition: Vector.hh:24
Base class for the event Topology.
Definition: Event.hh:53
std::string Name(Energy const &energy)
Definition: ElectronVolt.cpp:34
std::vector< Particle > CopyIfDrellYan(std::vector< Particle > const &particles)
Copy the two particles which are on the DY position.
Definition: Particles.cpp:327
Top Tagger ananlysis.
Definition: Top.hh:32
Standard model analysis base.
Definition: StandardModel.hh:54
static standardmodel::TopTagger TopTagger()
Definition: Top.hh:48
PreCut< Momentum > & PtUpperCut()
Definition: PreCuts.cpp:27
Standard Model.
Definition: StandardModel.cpp:4
static Angle TrackerEtaMax()
Definition: Settings.cpp:83
std::string Name(Output output)
Definition: Base.cpp:23
std::string Name(TopTagger top_tagger)
Definition: Top.cpp:7
Collider
Detector type indicates which kind of detector geometry is going to be used.
Definition: Settings.hh:30
Decay
Definition: Event.hh:31
std::vector< Multiplet > SortedByPt(std::vector< Multiplet > multiplets)
Definition: Sort.hh:53
The phases of the multivariant tagging process.
Definition: Phase.hh:16
boca::Tag Tag() const
The Tag of the multivariant tagging process.
Definition: Phase.cpp:18
std::vector< Particle > GenParticles() const
Generator level Particles.
Definition: Event.cpp:56