ATLAS Offline Software
Loading...
Searching...
No Matches
TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 > Class Template Reference

#include <Trigger.h>

Collaboration diagram for TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >:

Classes

struct  Optional

Public Member Functions

 Trigger ()
 Trigger (const ImportData::TrigDef &def)
void setDefinition (const ImportData::TrigDef &def)
template<bool = true>
std::size_t operator() (void) const
std::size_t operator() (unsigned index) const
template<bool = true>
std::size_t operator< (const Trigger &rhs) const
 operator bool () const
bool operator== (const Trigger &rhs) const
template<xAOD::Type::ObjectType obj = object()>
constexpr auto cbegin () const
template<xAOD::Type::ObjectType obj = object()>
constexpr auto cend () const
template<typename Trig1L>
auto hiddenBy (const Trig1L trig) const -> typename std::enable_if< Trig1L::is1L(), bool >::type
template<typename Trig1L>
auto hiddenBy (const std::flat_set< Trig1L > &trigs) const -> typename std::enable_if< Trig1L::is1L(), bool >::type
template<xAOD::Type::ObjectType obj, bool anti = false>
auto side () const -> std::conditional_t< anti ^(CastType1::object()==obj), CastType1, CastType2 >
 Returns a pseudo trigger built only from the legs of flavour 'obj' If anti==true, uses instead only legs with flavours other than 'obj'.
template<typename TrigX>
auto side () const -> decltype(side< TrigX::object()>())
 Returns a pseudo trigger built only from the legs of the same flavour as the trigger 'TrigX'.
template<typename TrigX>
auto antiside () const -> decltype(side< TrigX::object(), true >())
 Complement to the previous function.
CastType1 side1 () const
 Returns a pseudo trigger of type CastType1/2.
CastType2 side2 () const
template<typename Trig1L>
auto addTo (const std::flat_set< Trig1L > &trigs1L) const -> std::enable_if_t< Trig1L::is1L() &&nDistinctLegs(Trig1L::object())==1, std::flat_set< Trig1L > >
template<bool = true>
bool symmetric () const
template<bool = true>
CastType1 to_symmetric () const
template<bool = true>
std::size_t asymLeg () const
template<bool = true>
std::size_t symLeg () const

Static Public Member Functions

static constexpr TriggerType type ()
static constexpr bool mixed ()
static constexpr unsigned nDistinctLegs ()
static constexpr unsigned nDistinctLegs (xAOD::Type::ObjectType obj)
static constexpr xAOD::Type::ObjectType object1 ()
static constexpr xAOD::Type::ObjectType object2 ()
static constexpr xAOD::Type::ObjectType object ()
static bool relevantFor (const Lepton &lepton)
static bool irrelevantFor (const Lepton &lepton)
static constexpr bool is1L ()
static constexpr bool is2Lnomix ()
static constexpr bool is2Lasym ()
static constexpr bool is2Lsym ()
static constexpr bool is3Lsym ()
static constexpr bool is3Lhalfsym ()
static constexpr bool is2Lmix ()
static constexpr bool is3Lmix ()
static constexpr bool is4Lsym ()
template<typename Trig1L>
static auto anonymize (const std::flat_set< Trig1L > &triggers) -> std::enable_if_t< is1L() &&tt==Trig1L::type(), const std::flat_set< std::size_t > & >

Public Attributes

std::array< std::size_t, nDistinctLegs()> legs

Static Private Member Functions

static constexpr bool extraCheck (xAOD::Type::ObjectType obj)

Detailed Description

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
class TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >

Definition at line 126 of file Trigger.h.

Constructor & Destructor Documentation

◆ Trigger() [1/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::Trigger ( )
inlineexplicit

Definition at line 221 of file Trigger.h.

221{ std::fill(legs.begin(), legs.end(), 0); }
std::array< std::size_t, nDistinctLegs()> legs
Definition Trigger.h:219

◆ Trigger() [2/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::Trigger ( const ImportData::TrigDef & def)
inline

Definition at line 223 of file Trigger.h.

224 : Trigger()
225 {
226 TriggerProperties(tt).loadLegs(def, legs);
227 }

Member Function Documentation

◆ addTo()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<typename Trig1L>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::addTo ( const std::flat_set< Trig1L > & trigs1L) const -> std::enable_if_t< Trig1L::is1L() && nDistinctLegs(Trig1L::object())==1, std::flat_set< Trig1L > >
inline

Definition at line 319 of file Trigger.h.

322 {
323 static_assert(mixed(),
324 "this function is not meaningful for this type of trigger, "
325 "hence should not be used.");
327 trigs.insert(side<Trig1L>());
328 return trigs;
329 }
static constexpr bool mixed()
Definition Trigger.h:139
auto side() const -> std::conditional_t< anti ^(CastType1::object()==obj), CastType1, CastType2 >
Returns a pseudo trigger built only from the legs of flavour 'obj' If anti==true, uses instead only l...
Definition Trigger.h:291

◆ anonymize()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<typename Trig1L>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::anonymize ( const std::flat_set< Trig1L > & triggers) -> std::enable_if_t< is1L() &&tt==Trig1L::type(), const std::flat_set< std::size_t > & >
inlinestatic

Definition at line 332 of file Trigger.h.

334 {
335 static_assert(sizeof(Trig1L) == sizeof(std::size_t),
336 "invalid cast if the key sizes differ");
337 return reinterpret_cast<const std::flat_set<std::size_t>&>(triggers);
338 }

◆ antiside()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<typename TrigX>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::antiside ( ) const -> decltype(side< TrigX::object(), true >())
inline

Complement to the previous function.

Definition at line 311 of file Trigger.h.

311 {
313 }

◆ asymLeg()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<bool = true>
std::size_t TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::asymLeg ( ) const
inline

Definition at line 360 of file Trigger.h.

360 {
361 static_assert((tt & TT_MASK_SYMMETRY) == TT_HALFSYM,
362 "this function is not meaningful for this type of trigger, "
363 "hence should not be used.");
364 return legs[0];
365 }

◆ cbegin()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<xAOD::Type::ObjectType obj = object()>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::cbegin ( ) const
inlineconstexpr

Definition at line 259 of file Trigger.h.

259 {
260 return legs.cbegin() + TriggerProperties(tt).cbegin_offset(obj);
261 }

◆ cend()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<xAOD::Type::ObjectType obj = object()>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::cend ( ) const
inlineconstexpr

Definition at line 264 of file Trigger.h.

264 {
265 return legs.cend() + TriggerProperties(tt).cend_offset(obj);
266 }

◆ extraCheck()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::extraCheck ( xAOD::Type::ObjectType obj)
inlinestaticconstexprprivate

Definition at line 130 of file Trigger.h.

130 {
131 return (object() == obj || obj == xAOD::Type::Other);
132 }

◆ hiddenBy() [1/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<typename Trig1L>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::hiddenBy ( const std::flat_set< Trig1L > & trigs) const -> typename std::enable_if< Trig1L::is1L(), bool >::type
inline

Definition at line 279 of file Trigger.h.

280 {
281 static_assert(Trig1L::is1L(),
282 "this function is not meaningful for this type of trigger, "
283 "hence should not be used.");
284 return std::any_of(trigs.cbegin(), trigs.cend(),
285 [&](Trig1L t) -> bool { return hiddenBy(t); });
286 }
constexpr auto cbegin() const
Definition Trigger.h:259
constexpr auto cend() const
Definition Trigger.h:264

◆ hiddenBy() [2/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<typename Trig1L>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::hiddenBy ( const Trig1L trig) const -> typename std::enable_if< Trig1L::is1L(), bool >::type
inline

Definition at line 269 of file Trigger.h.

270 {
271 static_assert(Trig1L::is1L(),
272 "this function is not meaningful for this type of trigger, "
273 "hence should not be used.");
274 constexpr auto obj = Trig1L::object();
275 return std::find(cbegin<obj>(), cend<obj>(), trig()) != cend<obj>();
276 }

◆ irrelevantFor()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::irrelevantFor ( const Lepton & lepton)
inlinestatic

Definition at line 191 of file Trigger.h.

191 {
192 return !relevantFor(lepton);
193 }
static bool relevantFor(const Lepton &lepton)
Definition Trigger.h:188

◆ is1L()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is1L ( )
inlinestaticconstexpr

Definition at line 195 of file Trigger.h.

195{ return (tt & TT_SINGLELEPTON_FLAG); }

◆ is2Lasym()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is2Lasym ( )
inlinestaticconstexpr

Definition at line 199 of file Trigger.h.

199 {
200 return ((tt & TT_MASK_TYPE) == TT_DILEPTON_ASYM);
201 }

◆ is2Lmix()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is2Lmix ( )
inlinestaticconstexpr

Definition at line 211 of file Trigger.h.

211{ return (tt & TT_DILEPTON_FLAG) && mixed(); }

◆ is2Lnomix()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is2Lnomix ( )
inlinestaticconstexpr

Definition at line 196 of file Trigger.h.

196 {
197 return (tt & TT_DILEPTON_FLAG) && !mixed();
198 }

◆ is2Lsym()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is2Lsym ( )
inlinestaticconstexpr

Definition at line 202 of file Trigger.h.

202 {
203 return ((tt & TT_MASK_TYPE) == TT_DILEPTON_SYM);
204 }

◆ is3Lhalfsym()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is3Lhalfsym ( )
inlinestaticconstexpr

Definition at line 208 of file Trigger.h.

208 {
209 return ((tt & TT_MASK_TYPE) == TT_TRILEPTON_HALFSYM) && !mixed();
210 }

◆ is3Lmix()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is3Lmix ( )
inlinestaticconstexpr

Definition at line 212 of file Trigger.h.

212 {
213 return (tt & TT_TRILEPTON_FLAG) && mixed();
214 }

◆ is3Lsym()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is3Lsym ( )
inlinestaticconstexpr

Definition at line 205 of file Trigger.h.

205 {
206 return ((tt & TT_MASK_TYPE) == TT_TRILEPTON_SYM) && !mixed();
207 }

◆ is4Lsym()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::is4Lsym ( )
inlinestaticconstexpr

Definition at line 215 of file Trigger.h.

215 {
216 return ((tt & TT_MASK_TYPE) == TT_TETRALEPTON_SYM);
217 }

◆ mixed()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::mixed ( )
inlinestaticconstexpr

Definition at line 139 of file Trigger.h.

139{ return TriggerProperties(tt).mixed(); }

◆ nDistinctLegs() [1/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr unsigned TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::nDistinctLegs ( )
inlinestaticconstexpr

Definition at line 141 of file Trigger.h.

141 {
143 }
static constexpr unsigned nDistinctLegs()
Definition Trigger.h:141

◆ nDistinctLegs() [2/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr unsigned TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::nDistinctLegs ( xAOD::Type::ObjectType obj)
inlinestaticconstexpr

Definition at line 145 of file Trigger.h.

145 {
147 }

◆ object()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr xAOD::Type::ObjectType TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::object ( )
inlinestaticconstexpr

Definition at line 182 of file Trigger.h.

182 {
183 if (mixed())
184 return xAOD::Type::Other;
185 return object1();
186 }
static constexpr xAOD::Type::ObjectType object1()
Definition Trigger.h:149

◆ object1()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr xAOD::Type::ObjectType TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::object1 ( )
inlinestaticconstexpr

Definition at line 149 of file Trigger.h.

149 {
150 if (!is3Lmix()) {
151 if (tt & TT_ELECTRON_FLAG)
153 if (tt & TT_MUON_FLAG)
154 return xAOD::Type::Muon;
155 if (tt & TT_PHOTON_FLAG)
156 return xAOD::Type::Photon;
157 return xAOD::Type::Other;
158 }
159 if ((tt & TT_ELECTRON_FLAG) && !(tt & TT_X2Y_FLAG))
161 if ((tt & TT_PHOTON_FLAG) && (tt & TT_X2Y_FLAG))
162 return xAOD::Type::Photon;
164 }
static constexpr bool is3Lmix()
Definition Trigger.h:212

◆ object2()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr xAOD::Type::ObjectType TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::object2 ( )
inlinestaticconstexpr

Definition at line 166 of file Trigger.h.

166 {
167 if (is2Lmix()) {
168 if ((tt & TT_ELECTRON_FLAG) && (tt & TT_MUON_FLAG))
169 return xAOD::Type::Muon;
171 return xAOD::Type::Photon;
172 return xAOD::Type::Other;
173 } else if (!is3Lmix())
174 return xAOD::Type::Other;
175 if ((tt & TT_ELECTRON_FLAG) && (tt & TT_X2Y_FLAG))
177 if ((tt & TT_PHOTON_FLAG) && !(tt & TT_X2Y_FLAG))
178 return xAOD::Type::Photon;
180 }
static constexpr bool is2Lmix()
Definition Trigger.h:211

◆ operator bool()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::operator bool ( ) const
inlineexplicit

Definition at line 251 of file Trigger.h.

251 {
252 return std::all_of(legs.cbegin(), legs.cend(),
253 [](std::size_t x) -> bool { return x; });
254 }

◆ operator()() [1/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
std::size_t TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::operator() ( unsigned index) const
inline

Definition at line 241 of file Trigger.h.

241{ return legs[index]; }

◆ operator()() [2/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<bool = true>
std::size_t TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::operator() ( void ) const
inline

Definition at line 234 of file Trigger.h.

234 {
235 static_assert(nDistinctLegs() == 1,
236 "this function is not meaningful for this type of trigger, "
237 "hence should not be used.");
238 return legs[0];
239 }

◆ operator<()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<bool = true>
std::size_t TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::operator< ( const Trigger< tt, CastType1, CastType2 > & rhs) const
inline

Definition at line 244 of file Trigger.h.

244 {
245 static_assert(is1L(),
246 "this function is not meaningful for this type of trigger, "
247 "hence should not be used.");
248 return legs[0] < rhs.legs[0];
249 }
static constexpr bool is1L()
Definition Trigger.h:195

◆ operator==()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::operator== ( const Trigger< tt, CastType1, CastType2 > & rhs) const
inline

Definition at line 256 of file Trigger.h.

256{ return legs == rhs.legs; }

◆ relevantFor()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::relevantFor ( const Lepton & lepton)
inlinestatic

Definition at line 188 of file Trigger.h.

188 {
189 return lepton.type() == object();
190 }
static constexpr TriggerType type()
Definition Trigger.h:137
static constexpr xAOD::Type::ObjectType object()
Definition Trigger.h:182

◆ setDefinition()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
void TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::setDefinition ( const ImportData::TrigDef & def)
inline

Definition at line 229 of file Trigger.h.

229 {
230 TriggerProperties(tt).loadLegs(def, legs);
231 }

◆ side() [1/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<typename TrigX>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::side ( ) const -> decltype(side< TrigX::object()>())
inline

Returns a pseudo trigger built only from the legs of the same flavour as the trigger 'TrigX'.

Definition at line 306 of file Trigger.h.

306 {
307 return side<TrigX::object()>();
308 }

◆ side() [2/2]

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<xAOD::Type::ObjectType obj, bool anti = false>
auto TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::side ( ) const -> std::conditional_t< anti ^(CastType1::object()==obj), CastType1, CastType2 >
inline

Returns a pseudo trigger built only from the legs of flavour 'obj' If anti==true, uses instead only legs with flavours other than 'obj'.

Definition at line 291 of file Trigger.h.

292 {
293 static_assert(mixed(),
294 "this function is not meaningful for this type of trigger, "
295 "hence should not be used.");
296 static_assert(obj != xAOD::Type::Other, "implementation incomplete");
297 using CastType = decltype(side<obj, anti>());
301 return trig;
302 }

◆ side1()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
CastType1 TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::side1 ( ) const
inline

Returns a pseudo trigger of type CastType1/2.

Definition at line 315 of file Trigger.h.

315{ return side<CastType1::object()>(); }

◆ side2()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
CastType2 TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::side2 ( ) const
inline

Definition at line 316 of file Trigger.h.

316{ return side<CastType2::object()>(); }

◆ symLeg()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<bool = true>
std::size_t TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::symLeg ( ) const
inline

Definition at line 368 of file Trigger.h.

368 {
369 static_assert((tt & TT_MASK_SYMMETRY) == TT_HALFSYM,
370 "this function is not meaningful for this type of trigger, "
371 "hence should not be used.");
372 return legs[1];
373 }

◆ symmetric()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<bool = true>
bool TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::symmetric ( ) const
inline

Definition at line 341 of file Trigger.h.

341 {
343 "this function is not meaningful for this type of trigger, "
344 "hence should not be used.");
345 return std::all_of(legs.cbegin() + 1, legs.cend(),
346 [&](std::size_t l) -> bool { return l == legs[0]; });
347 }

◆ to_symmetric()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
template<bool = true>
CastType1 TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::to_symmetric ( ) const
inline

Definition at line 350 of file Trigger.h.

350 {
352 "this function is not meaningful for this type of trigger, "
353 "hence should not be used.");
355 trig.legs[0] = this->legs[0];
356 return trig;
357 }

◆ type()

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
constexpr TriggerType TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::type ( )
inlinestaticconstexpr

Definition at line 137 of file Trigger.h.

137{ return tt; }

Member Data Documentation

◆ legs

template<TriggerType tt, typename CastType1 = UnusedArg, typename CastType2 = UnusedArg>
std::array<std::size_t, nDistinctLegs()> TrigGlobEffCorr::Trigger< tt, CastType1, CastType2 >::legs

Definition at line 219 of file Trigger.h.


The documentation for this class was generated from the following file: