Charged.hh
Go to the documentation of this file.
1 #pragma once
2 
4 #include "boca/fastjet/Sort.hh"
6 
7 namespace heavyhiggs
8 {
9 
10 namespace analysis
11 {
12 
20 template<typename Tagger_>
21 class Charged : public HeavyHiggs<Tagger_>
22 {
23 
24 public:
25 
26  void SetFiles(Phase const& phase) override {
27  switch (phase.Tag()) {
28  case Tag::signal :
29  this->AddSignal(Process::Htb);
30  break;
31  case Tag::background :
33  break;
34  }
35  }
36 
37  std::string Name() const override {
38  return "Charged-" + boca::Name(this->Collider()) + "-" + boca::units::Name(this->PreCut()) + "-" + boca::units::Name(this->Mass());
39  }
40 
41 private:
42 
43  Crosssection SignalCrosssection() const {
44  switch (this->Collider()) {
46  switch (this->Mass()) {
47  case 500 : return 3.0495761279999996 * fb;
48  case 1000 : return 0.22623192864 * fb;
49  case 2000 : return 0.005720855039999999 * fb;
50  case 3000 : return 0.0003035467008 * fb;
51  case 4000 : return 0.000020556093312 * fb;
52  default:
53 // ERROR("Signal Crosssection", "unhandled case");
54  return fb;
55  } ;
57  switch (this->Mass()) {
58  case 500 : return 247.86995327999998 * fb;
59  case 700 : return 109.26120959999999 * fb;
60  case 1000 : return 39.81212064 * fb;
61  case 1500 : return 10.639675008 * fb;
62  case 2000 : return 3.8189750399999998 * fb;
63  case 3000 : return 0.7737415487999998 * fb;
64  case 4000 : return 0.22421177856 * fb;
65  case 5000 : return 0.07985005056 * fb;
66  case 6000 : return 0.03297554496 * fb;
67  case 8000 : return 0.007364981375999998 * fb;
68  case 10000 : return 0.0020553163775999996 * fb;
69  case 12000 : return 0.0006632091647999999 * fb;
70  case 15000 : return 0.00014951794176 * fb;
71  case 20000 : return 0.000016388469792 * fb;
72  default:
73 // ERROR("Signal Crosssection", "unhandled case");
74  return fb;
75  }
76  default:
77 // ERROR("Signal Crosssection", "unhandled case");
78  return fb;
79  }
80  }
81 
82  bool PassPreCut(boca::Event const& event) const override {
83 // INFO("pass pre cut");
84  auto particles = event.GenParticles();
85  auto quarks = SortedByPt(CopyIf5Quark(particles));
86  quarks = SortedByPt(RemoveIfMother(quarks, Id::top));
87  if (quarks.empty()) {
88  // if (Tag == Tag::signal && PreCut() > 0 && !(Tagger == tagger::Bottom || Tagger == HBottomReader))
89  // if (PreCut() > 0)
90 // ERROR("Not enough bottom quarks", Quarks.size());
91  return false;
92  } else if (quarks.front().Pt() < this->PreCut()) return false;
93  auto TopQuarks = SortedByPt(CopyIfParticle(particles, Id::top));
94  if (TopQuarks.size() != 2) {
95 // ERROR("Not enough top quarks", TopQuarks.size());
96  return false;
97  } else if (TopQuarks.front().Pt() < this->PreCut()) return false;
98  if (event.MissingEt().Pt() < this->MissingEt()) return false;
99  auto leptons = SortedByPt(event.Leptons());
100  if (leptons.empty()) return false;
101  if (leptons.front().Pt() < this->LeptonPt()) return false;
102  auto jets = event.Jets();
103  if (jets.size() < 4) return false;
104  return true;
105  }
106 
107  int BackgroundFileNumber() const override {
108  switch (this->Collider()) {
109  case boca::Collider::lhc :
110  switch (static_cast<int>(this->PreCut() / GeV)) {
111  case 0 :
112  // return 1;
113  return 79; // < should be switched on
114  case 250 :
115  return 58; // < should be switched on
116  default :
117  return 1;
118  }
120  switch (static_cast<int>(this->PreCut() / GeV)) {
121  case 2500 :
122  return 28;
123  case 2000 :
124  return 16;
125  case 1500 :
126  return 19;
127  case 300 :
128  return 61; // < should be switched on
129  // return 1;
130  case 0 :
131  return 118; // < should be switched on
132  // return 1;
133  default :
134  return 1;
135  }
136  default :
137  return 1;
138  }
139  }
140 
141  Crosssection BackgroundCrosssection(Process) const {
142  switch (this->Collider()) {
143  case boca::Collider::lhc :
144  switch (this->PreCut()) {
145  case 0 : return 97.54 * 2 * fb;
146  case 250 : return 4.206 * 2 * fb;
147  }
148  case boca::Collider::future: {
149  switch (this->PreCut()) {
150  case 0 : return 3564. * 2 * fb;
151  case 300 : return 187.3 * 2 * fb;
152  case 1500 : return 0.447 * 2 * fb;
153  case 2500 : return 0.0442 * 2 * fb;
154  }
155  }
156  default :
157 // ERROR("unhandled case");
158  return fb;
159  }
160  }
161 
162 };
163 
164 }
165 
166 }
Analysis for heavy higgs.
Definition: HeavyHiggs.hh:59
std::vector< Particle > RemoveIfMother(std::vector< Particle > const &particles, Id mother_id)
Definition: Particles.cpp:190
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
analysis subclass defining the HiggsCPV Analysis
Definition: Charged.hh:21
void SetFiles(Phase const &phase) override
Definition: Charged.hh:26
Momentum MissingEt() const
Definition: HeavyHiggs.hh:149
std::string Name() const override
Definition: Charged.hh:37
Base class for the event Topology.
Definition: Event.hh:53
std::string Name(Energy const &energy)
Definition: ElectronVolt.cpp:34
std::vector< Particle > CopyIf5Quark(std::vector< Particle > const &particles)
Definition: Particles.cpp:246
Momentum LeptonPt() const
Definition: HeavyHiggs.hh:158
default detector for a 100TeV collider
void AddBackground(Process process)
Definition: HeavyHiggs.hh:269
Momentum Pt() const
Transverse Momentum.
Definition: PseudoJet.cpp:93
boost::units::quantity< barn::Area > Crosssection
Crosssection measured in barn.
Definition: Barn.hh:36
Process
Definition: HeavyHiggs.hh:18
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
default LHC detector