Fusion.hh
Go to the documentation of this file.
1 #pragma once
2 
4 #include "boca/fastjet/Sort.hh"
6 
7 namespace heavyhiggs {
8 
9 namespace analysis {
10 
18 template<typename Tagger_>
19 class Fusion : public HeavyHiggs<Tagger_> {
20 
21 public:
22 
23  void SetFiles(Phase const& phase) override {
24  switch (phase.Tag())
25  {
26  case Tag::signal :
27  this->AddSignal(Process::H0);
28  break;
29  case Tag::background :
31  break;
32  }
33  }
34 
35 // std::string ProcessName() const override
36 // {
37 // return "Fusion";
38 // }
39 
40  std::string Name() const final
41  {
42  return "Fusion-" + boca::Name(this->Collider()) + "-" + boca::units::Name(this->PreCut()) + "-" + boca::units::Name(this->Mass());
43  }
44 
45 private:
46 
47  int BackgroundFileNumber() const override {
48  switch (this->Collider()) {
49  case Collider::lhc :
50  switch (static_cast<int>(this->PreCut() / GeV)) {
51  case 0 :
52  return 79;
53  // return 1; // < this must be removed !!
54  case 250 :
55  return 41;
56  }
57  case Collider::future :
58  switch (static_cast<int>(this->PreCut() / GeV)) {
59  case 0 :
60  // return 98;
61  return 1; // < this must be removed !!
62  case 100 :
63  return 15;
64  case 250 :
65  return 15;
66  case 300 :
67  // return 110;
68  return 1; // < this must be removed !!
69  case 1000 :
70  return 32;
71  case 1500 :
72  // return 34;
73  return 1; // < this must be removed !!
74  case 2000 :
75  return 26;
76  case 2500 :
77  // return 11;
78  return 1; // < this must be removed !!
79  }
80  default :
81  return 1;
82  }
83  };
84 
85  Crosssection SignalCrosssection() const
86  {
87  switch (this->Collider()) {
88  case Collider::lhc:
89  switch (this->Mass()) {
90  case 400 : return 1463.1219866990498 * fb;
91  case 500 : return 512.5992335098167 * fb;
92  case 1000 : return 10.942712198242141 * fb;
93  case 2000 : return 0.10283305582403454 * fb;
94  case 3000 : return 0.003583086718061121 * fb;
95  case 4000 : return 0.00020344209136808554 * fb;
96  default:
97 // ERROR("unhandled case");
98  return pb;
99  } ;
100  case Collider::future:
101  switch (this->Mass()) {
102  // tan beta = 2
103  case 400 : return 48385.16604388162 * fb;
104  case 500 : return 21753.261647408788 * fb;
105  case 700 : return 5388.806849750459 * fb;
106  case 800 : return 2987.6531326979493 * fb;
107  case 1000 : return 1062.9847850641604 * fb;
108  case 1500 : return 148.78718745483314 * fb;
109  case 2000 : return 33.76298845204924 * fb;
110  case 3000 : return 3.715444262833449 * fb;
111  case 4000 : return 0.7052693313851425 * fb;
112  case 5000 : return 0.1841745400744028 * fb;
113  case 6000 : return 0.058156868371520024 * fb;
114  case 8000 : return 0.008651760976852958 * fb;
115  case 10000 : return 0.0018198636858628185 * fb;
116  case 12000 : return 0.0004674423191995998 * fb;
117  case 15000 : return 0.000046 * fb;
118  case 20000 : return 0.0000046 * fb;
119  default:
120 // ERROR("unhandled case");
121  return pb;
122  }
123  default:
124 // ERROR("unhandled case");
125  return pb;
126  }
127  }
128 
129  bool PassPreCut(boca::Event const& event) const final
130  {
131  auto particles = event.GenParticles();
132  particles = CopyIfParticle(particles, Id::top);
133  if (particles.size() != 2) {
134 // ERROR("Not enough top quarks", Particles.size());
135  return false;
136  } else {
137  if (particles.at(0).Pt() < this->PreCut()) return false;
138  if (particles.at(1).Pt() < this->PreCut()) return false;
139  }
140  if (event.MissingEt().Pt() < this->MissingEt()) return false;
141  auto leptons = SortedByPt(event.Leptons());
142  if (leptons.empty()) return false;
143  if (leptons.front().Pt() < this->LeptonPt()) return false;
144  auto jets = event.Jets();
145  if (jets.size() < 4) return false;
146  return true;
147  }
148 
149 };
150 
151 }
152 
153 }
Analysis for heavy higgs.
Definition: HeavyHiggs.hh:59
Momentum PreCut() const
Definition: HeavyHiggs.hh:118
void AddSignal(Process process)
Definition: HeavyHiggs.hh:265
Heavy Higgs partner.
Definition: Charged.hh:7
boca::MissingEt MissingEt() const
Missing transverse enenergy.
Definition: Event.cpp:122
Momentum MissingEt() const
Definition: HeavyHiggs.hh:149
Base class for the event Topology.
Definition: Event.hh:53
std::string Name(Energy const &energy)
Definition: ElectronVolt.cpp:34
Momentum LeptonPt() const
Definition: HeavyHiggs.hh:158
void AddBackground(Process process)
Definition: HeavyHiggs.hh:269
void SetFiles(Phase const &phase) override
Definition: Fusion.hh:23
std::string Name() const final
Definition: Fusion.hh:40
Momentum Pt() const
Transverse Momentum.
Definition: PseudoJet.cpp:93
boost::units::quantity< barn::Area > Crosssection
Crosssection measured in barn.
Definition: Barn.hh:36
boca::Collider Collider() const
Definition: HeavyHiggs.hh:113
std::string Name(Output output)
Definition: Base.cpp:23
boca::Mass Mass() const
Definition: HeavyHiggs.hh:68
std::vector< Particle > CopyIfParticle(std::vector< Particle > const &particles, Id id)
Definition: Particles.cpp:117
std::vector< Lepton > Leptons() const
Electrons and muons.
Definition: Event.cpp:82
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
analysis subclass defining the HiggsCPV Analysis
Definition: Fusion.hh:19