Bottom.hh
Go to the documentation of this file.
1 
4 #pragma once
5 
6 #include "boca/fastjet/Sort.hh"
9 #include "boca/event/Event.hh"
10 
11 namespace standardmodel
12 {
13 
14 namespace analysis
15 {
16 
24 template<typename Tagger_>
25 class Bottom : public StandardModel<Tagger_>
26 {
27 
28 public:
29 
31  {
32  this->PreCuts().PtLowerCut().Set(Id::bottom, this->LowerPtCut());
33  this->PreCuts().PtUpperCut().Set(Id::bottom, this->UpperPtCut());
34  this->PreCuts().TrackerMaxEta().Set(Id::bottom, Settings::TrackerEtaMax());
35  this->PreCuts().ConsiderBuildingBlock().Set(Id::bottom, false);
36  }
37 
38 private:
39 
40  std::string Name() const override
41  {
42  return boca::Name(this->Collider()) + "-" + boca::units::Name(this->LowerPtCut()) + "-delete-2";
43 // return Name(production_channel()) + "_" + boca::Name(this->Collider()) + "_" + boca::units::Name(this->LowerPtCut()) + "-large-new";
44  }
45 
46 // Production production_channel() const {
47 // return Production::DYP;
48 // // return Production::VBF;
49 // // return Production::Associated;
50 // }
51 
52  void SetFiles(Phase const &phase) override
53  {
54  switch (phase.Tag()) {
55  case Tag::signal :
56  this->AddSignal(Process::bb);
57  break;
58  case Tag::background :
62  if (phase.Stage() == Stage::reader) {
65 // this->AddBackground(Process::hh_bb);
66  }
69  break;
70  }
71  }
72 
73  bool PassPreCut(boca::Event const &event) const override
74  {
75 // Debug("muons: ", event.Muons().size());
76  auto particles = SortedByPt(event.GenParticles());
77  particles = CopyIfDrellYan(particles);
78  particles = RemoveIfOutsidePtWindow(particles, this->LowerPtCut(), this->UpperPtCut());
79  if (particles.size() != 1) return false;
80  return true;
81  auto jets = event.Jets();
82  jets = RemoveIfOutsidePtWindow(jets, this->LowerPtCut(), this->UpperPtCut());
83  return jets.size() > 0 ? true : false;
84  }
85 
86 };
87 
88 }
89 
90 }
void AddSignal(Process process)
Definition: StandardModel.hh:106
PreCut< Angle > & TrackerMaxEta()
Definition: PreCuts.cpp:39
boca::Collider Collider() const
Definition: StandardModel.hh:82
void Set(Id id, Value value)
Definition: PreCut.hh:18
PreCut< Momentum > & PtLowerCut()
Definition: PreCuts.cpp:23
void AddBackground(Process process)
Definition: StandardModel.hh:110
boca::PreCuts PreCuts() const
Definition: Base.cpp:130
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
PreCut< bool > & ConsiderBuildingBlock()
Definition: PreCuts.cpp:43
Bottom()
Definition: Bottom.hh:30
std::vector< Particle > CopyIfDrellYan(std::vector< Particle > const &particles)
Copy the two particles which are on the DY position.
Definition: Particles.cpp:327
Momentum LowerPtCut() const
Definition: StandardModel.hh:65
boca::Stage Stage() const
The stage of the multivariant tagging process.
Definition: Phase.cpp:13
Momentum UpperPtCut() const
Definition: StandardModel.hh:87
Standard model analysis base.
Definition: StandardModel.hh:54
PreCut< Momentum > & PtUpperCut()
Definition: PreCuts.cpp:27
Standard Model.
Definition: StandardModel.cpp:4
static Angle TrackerEtaMax()
Definition: Settings.cpp:83
Bottom Tagger Analysis.
Definition: Bottom.hh:25
std::string Name(Output output)
Definition: Base.cpp:23
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