7 #ifndef TRIGGLOBALEFFICIENCYCORRECTION_CALCULATOR_H
8 #define TRIGGLOBALEFFICIENCYCORRECTION_CALCULATOR_H 1
18 #include <boost/container/flat_set.hpp>
19 template<
typename Key>
using flat_set = boost::container::flat_set<Key>;
34 bool addPeriod(
ImportData&
data,
const std::pair<unsigned,unsigned>& boundaries,
const std::string& combination,
35 bool useToys, std::size_t& uniqueElectronLeg, std::size_t& uniquePhotonLeg);
57 -> std::enable_if_t<Trig1L::is1L(), std::size_t>
66 template<
typename Trig1L>
68 -> std::enable_if_t<Trig1L::is1L(),
bool>;
70 template<
typename Trig1L_obj1,
typename Trig1L_obj2>
72 -> std::enable_if_t<Trig1L_obj1::is1L()
73 && Trig1L_obj2::is1L()
77 template<
typename Trig1L>
79 -> std::enable_if_t<Trig1L::is1L(),
bool>;
81 template<
typename Trig1L_obj1,
typename Trig1L_obj2>
83 -> std::enable_if_t<Trig1L_obj1::is1L()
84 && Trig1L_obj2::is1L()
88 template<
typename Trig2Lmix>
90 -> std::enable_if_t<Trig2Lmix::is2Lmix(),
bool>;
92 template<
typename Trig2Lsym>
94 -> std::enable_if_t<Trig2Lsym::is2Lsym(),
bool>;
96 template<
typename Trig2Lasym>
98 -> std::enable_if_t<Trig2Lasym::is2Lasym(),
bool>;
100 template<
typename Trig2Lmix,
typename Trig1L_obj1,
typename Trig1L_obj2>
102 -> std::enable_if_t<Trig2Lmix::is2Lmix()
107 template<
typename Trig2L,
typename Trig1L>
109 -> std::enable_if_t<Trig2L::is2Lnomix()
114 template<
typename Trig2Lsym,
typename Trig1L>
116 -> std::enable_if_t<Trig2Lsym::is2Lsym()
121 template<
typename Trig2Lasym,
typename Trig1L>
123 -> std::enable_if_t<Trig2Lasym::is2Lasym()
128 template<
typename Trig2Lsym,
typename Trig1L>
130 -> std::enable_if_t<Trig2Lsym::is2Lsym()
135 template<
typename Trig2Lasym,
typename Trig2Lsym,
typename Trig1L>
137 -> std::enable_if_t<Trig2Lasym::is2Lasym()
142 template<
typename Trig3Lsym>
144 -> std::enable_if_t<Trig3Lsym::is3Lsym(),
bool>;
146 template<
typename Trig3Lhalfsym>
148 -> std::enable_if_t<Trig3Lhalfsym::is3Lhalfsym(),
bool>;
150 template<
typename Trig2L,
typename Trig2Lmix>
152 -> std::enable_if_t<Trig2L::is2Lnomix()
153 && Trig2Lmix::is2Lmix()
157 template<
typename Trig2L_obj1,
typename Trig2L_obj2,
typename Trig2Lmix>
159 -> std::enable_if_t<Trig2Lmix::is2Lmix()
165 template<
typename Trig2L_obj1,
typename Trig2L_obj2,
typename Trig2Lmix,
typename Trig1L_obj1,
typename Trig1L_obj2>
168 -> std::enable_if_t<Trig2Lmix::is2Lmix()
176 template<
typename Trig2L_obj1,
typename Trig2Lsym_obj1,
typename Trig2L_obj2,
typename Trig2Lsym_obj2,
177 typename Trig2Lmix,
typename Trig1L_obj1,
typename Trig1L_obj2>
178 auto globalEfficiency(
const LeptonList&,
unsigned,
const Trig2L_obj1,
const Trig2Lsym_obj1,
const Trig2L_obj2,
const Trig2Lsym_obj2,
180 -> std::enable_if_t<Trig2Lmix::is2Lmix()
189 template<
typename Trig3Lmix>
191 -> std::enable_if_t<Trig3Lmix::is3Lmix(),
bool>;
193 template<
typename Trig3Lmix1,
typename Trig3Lmix2>
195 -> std::enable_if_t<Trig3Lmix1::is3Lmix()
196 && Trig3Lmix2::is3Lmix()
197 && Trig3Lmix1::object1() == Trig3Lmix2::object2()
198 && Trig3Lmix1::object2() == Trig3Lmix2::object1(),
201 template<
typename Trig4Lsym>
203 -> std::enable_if_t<Trig4Lsym::is4Lsym(),
bool>;
214 Helper(
const std::vector<TrigDef>& defs);
230 template<
typename Param>
auto extract();