TopPartner.hh
Go to the documentation of this file.
1 
4 #pragma once
5 
7 #include "boca/Settings.hh"
8 // #define INFORMATION
10 
16 namespace toppartner{
17 
18 using namespace boca;
19 
20 enum class Process
21 {
22  TthLep,
23  TthHad,
24  TT,
25  ttBjj,
26  tthBjj,
27  ttBBjj,
28  ttBB,
29  TTh,
30  ttWWW,
31  ttWWB,
32  ttWBB,
33  ttBBB,
34  TThh,
35  ttWWWW,
36  ttWWWB,
37  ttWWBB,
38  ttWBBB,
39  ttBBBB,
40 };
41 
42 std::string Name(Process process);
43 
45 
46 bool MassDependent(Process process);
47 
52 namespace analysis{
53 
61 template<typename Tagger_>
62 class TopPartner : public boca::Analysis<Tagger_>
63 {
64 public:
65 
67  INFO0;
68 // Settings::set_collider(Collider::lhc);
69  }
70 
71 protected:
72 
73  boca::Mass Mass() const {
74  INFO0;
75  return 8_TeV;
76  return 4_TeV;
77  return 2_TeV;
78  return 1_TeV;
79  return 500_GeV;
80  return 1.5_TeV;
81  return 6_TeV;
82  return 10_TeV;
83  return 1.5_TeV;
84  return 3_TeV;
85  }
86 
87  long TrainNumberMax() const override {
88  INFO0;
89  return 10000;
90  return 1000;
91  return 100;
92  return 10;
93  return 5000;
94  }
95 
96 protected:
97 
98  auto PreCut() const {
99  INFO0;
100  return 0_GeV;
101  return 200_GeV;
102  }
103 
104  auto JetPreCut() const {
105  INFO0;
106  return 0_GeV;
107  return 100_GeV;
108  }
109 
110  auto Crosssection(Process process) const {
111  INFO0;
112  switch (Settings::Collider()) {
113  case Collider::lhc : {
114  switch (process) {
115  case Process::TT :
116  switch (static_cast<int>(Mass() / GeV)) {
117  case 500 : return 0.5156 * 2_pb;
118  case 1000 : return 0.01041 * 2_pb;
119  case 1500 : return 0.0005753 * 2_pb;
120  case 2000 : return 4.787e-05 * 2_pb;
121  case 3000 : return 5.019e-07 * 2_pb;
122  case 4000 : return 7.022e-09 * 2_pb;
123  DEFAULT(Mass(), pb);
124  }
125  case Process::ttBjj : return 0.03024 * 2_pb;
126  case Process::ttBB : return 0.0004068 * 2_pb;
127  DEFAULT(toppartner::Name(process), pb);
128  }
129  }
130  case Collider::future : {
131  switch (process) {
132  case Process::TthLep :
133  switch (static_cast<int>(Mass() / GeV)) {
134  case 1000 : return 0.003087_pb;
135  DEFAULT(Mass(), pb);
136  }
137  case Process::TthHad :
138  switch (static_cast<int>(Mass() / GeV)) {
139  case 500 : return 0.02534_pb;
140  case 1000 : return 0.003087_pb;
141  case 1500 : return 0.0006824_pb;
142  case 2000 : return 0.0002097_pb;
143  DEFAULT(Mass(), pb);
144  }
145  case Process::TT :
146  switch (static_cast<int>(Mass() / GeV)) {
147  case 500 : return 6.726 * 2_pb;
148  case 1000 : return 0.3919 * 2_pb;
149  case 1500 : return 0.05993 * 2_pb;
150  case 2000 : return 0.01468 * 2_pb;
151  case 4000 : return 0.0003704 * 2_pb;
152  case 8000 : return 4.924e-06 * 2_pb;
153  DEFAULT(Mass(), pb);
154  }
155  case Process::ttBjj :
156  switch (static_cast<int>(PreCut() / GeV)) {
157  case 0 : return 1.669 * 2_pb;
158  DEFAULT(Mass(), pb);
159  }
160  case Process::tthBjj :
161  switch (static_cast<int>(PreCut() / GeV)) {
162  case 0 : return 0.02535 * 2_pb;
163  DEFAULT(Mass(), pb);
164  }
165  case Process::TThh :
166  switch (static_cast<int>(Mass() / GeV)) {
167  case 500 : return 0.00365 * 2_pb;
168  case 1000 : return 0.0001594 * 2_pb;
169  case 2000 : return 5.939e-06 * 2_pb;
170  case 4000 : return 1.44e-07 * 2_pb;
171  case 8000 : return 1.489e-09 * 2_pb;
172  DEFAULT(Mass(), pb);
173  }
174  case Process::TTh :
175  switch (static_cast<int>(Mass() / GeV)) {
176  case 500 : return 0.7575 * 2_pb;
177  case 1000 : return 0.02097 * 2_pb;
178  case 2000 : return 0.0003506 * 2_pb;
179  case 4000 : return 3.457e-6 * 2_pb;
180  case 8000 : return 2.801e-8 * 2_pb;
181  DEFAULT(Mass(), pb);
182  }
183  case Process::ttBB : return 0.03206 * 2_pb;
184  case Process::ttBBB : return 0.0003712 * 2_pb;
185  case Process::ttWBB : return 0.0002817 * 2_pb;
186  case Process::ttWWB : return 0.002644 * 2_pb;
187  case Process::ttWWW : return 0.0003265 * 2_pb;
188  case Process::ttWWWW : return 0.24093E-05 * 2_pb;
189  case Process::ttWWWB : return 0.70031E-06 * 2_pb;
190  case Process::ttWWBB : return 0.71735E-06 * 2_pb;
191  case Process::ttWBBB : return 0.32324E-06 * 2_pb;
192  case Process::ttBBBB : return 0.30222E-06 * 2_pb;
193  DEFAULT(toppartner::Name(process), pb);
194  }
195  }
197  }
198  }
199 
200  auto FileName(Process process) const {
201  INFO0;
202 // std::string name = MassDependent(process) ? "pp" : "PP";
203  std::string name = "PP";
204  name += "-" + Name(process) + "-" + boca::Name(Settings::Collider());
205  if (MassDependent(process)) name += "-" + boca::units::Name(Mass());
206  return name;
207  }
208 
209 // void NewFile(Tag tag, Process process) {
210 // INFO0;
211 // this->NewFile(tag, this->FileName(process), this->Crosssection(process), Names(toppartner::Name(process), LatexName(process)), Mass());
212 // }
213 
215  auto file = boca::FileInfo({this->FileName(process)}, Names(toppartner::Name(process), LatexName(process)), this->Crosssection(process), Mass());
216  return file;
217  }
218 
219  void AddSignal(Process process) {
220  INFO0;
221  boca::analysis::Base::AddSignal(File(process));
222  }
223 
224  void AddBackground(Process process) {
225  INFO0;
227  }
228 
229 };
230 
231 }
232 
233 }
std::string Name(Process process)
Definition: TopPartner.cpp:5
Definition: Names.hh:11
void AddSignal(std::string const &file_name, latex::String const &latex_name="", boca::Crosssection const &crosssection=0_b, boca::Mass const &mass=0_eV, std::string const &path="")
Definition: Base.cpp:97
latex::String LatexName(Process process)
Definition: TopPartner.cpp:31
Fermionic top partner.
Definition: Complete.cpp:6
Top partner analysis.
Definition: TopPartner.hh:62
std::string FileName(std::string const &file)
Definition: Debug.cpp:48
static boca::Collider Collider()
Definition: Settings.cpp:45
void AddSignal(Process process)
Definition: TopPartner.hh:219
boca::Mass Mass() const
Definition: TopPartner.hh:73
TopPartner()
Definition: TopPartner.hh:66
std::string Name(Energy const &energy)
Definition: ElectronVolt.cpp:34
provides main analysis loops and logic.
Definition: Analysis.hh:29
Definition: String.hh:45
#define INFO0
Definition: DEBUG_MACROS.hh:98
Boosted Collider Analysis.
Definition: Analysis.hh:15
void AddBackground(Process process)
Definition: TopPartner.hh:224
#define DEFAULT(...)
Definition: DEBUG_MACROS.hh:118
Process
Definition: TopPartner.hh:20
auto PreCut() const
Definition: TopPartner.hh:98
Input file infos.
Definition: FileInfo.hh:22
bool MassDependent(Process process)
Definition: TopPartner.cpp:56
boost::units::quantity< barn::Area > Crosssection
Crosssection measured in barn.
Definition: Barn.hh:36
auto JetPreCut() const
Definition: TopPartner.hh:104
std::string Name(Output output)
Definition: Base.cpp:23
auto FileName(Process process) const
Definition: TopPartner.hh:200
Definition: PreCut.hh:13
void AddBackground(std::string const &file_name, latex::String const &latex_name="", boca::Crosssection const &crosssection=0_b, boca::Mass const &mass=0_eV, std::string const &path="")
Definition: Base.cpp:105
auto Crosssection(Process process) const
Definition: TopPartner.hh:110
Energy Mass
Mass measured in electronvolt.
Definition: ElectronVolt.hh:62
long TrainNumberMax() const override
Definition: TopPartner.hh:87
boca::FileInfo File(Process process)
Definition: TopPartner.hh:214