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 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 flat_set< Trig1L > &trigs1L) const -> std::enable_if_t< Trig1L::is1L() &&nDistinctLegs(Trig1L::object())==1, 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 flat_set< Trig1L > &triggers) -> std::enable_if_t< is1L() &&tt==Trig1L::type(), const 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 128 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 223 of file Trigger.h.

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

◆ 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 225 of file Trigger.h.

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

Member Function Documentation

◆ addTo()

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

Definition at line 321 of file Trigger.h.

324 {
325 static_assert(mixed(),
326 "this function is not meaningful for this type of trigger, "
327 "hence should not be used.");
329 trigs.insert(side<Trig1L>());
330 return trigs;
331 }
static constexpr bool mixed()
Definition Trigger.h:141
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:293

◆ anonymize()

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

Definition at line 334 of file Trigger.h.

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

◆ 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 313 of file Trigger.h.

313 {
315 }

◆ 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 362 of file Trigger.h.

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

◆ 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 261 of file Trigger.h.

261 {
262 return legs.cbegin() + TriggerProperties(tt).cbegin_offset(obj);
263 }

◆ 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 266 of file Trigger.h.

266 {
267 return legs.cend() + TriggerProperties(tt).cend_offset(obj);
268 }

◆ 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 132 of file Trigger.h.

132 {
133 return (object() == obj || obj == xAOD::Type::Other);
134 }

◆ hiddenBy() [1/2]

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

Definition at line 281 of file Trigger.h.

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

◆ 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 271 of file Trigger.h.

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

◆ irrelevantFor()

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

Definition at line 193 of file Trigger.h.

193 {
194 return !relevantFor(lepton);
195 }
static bool relevantFor(const Lepton &lepton)
Definition Trigger.h:190

◆ is1L()

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

Definition at line 197 of file Trigger.h.

197{ 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 201 of file Trigger.h.

201 {
202 return ((tt & TT_MASK_TYPE) == TT_DILEPTON_ASYM);
203 }

◆ is2Lmix()

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

Definition at line 213 of file Trigger.h.

213{ 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 198 of file Trigger.h.

198 {
199 return (tt & TT_DILEPTON_FLAG) && !mixed();
200 }

◆ is2Lsym()

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

Definition at line 204 of file Trigger.h.

204 {
205 return ((tt & TT_MASK_TYPE) == TT_DILEPTON_SYM);
206 }

◆ is3Lhalfsym()

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

Definition at line 210 of file Trigger.h.

210 {
211 return ((tt & TT_MASK_TYPE) == TT_TRILEPTON_HALFSYM) && !mixed();
212 }

◆ is3Lmix()

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

Definition at line 214 of file Trigger.h.

214 {
215 return (tt & TT_TRILEPTON_FLAG) && mixed();
216 }

◆ is3Lsym()

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

Definition at line 207 of file Trigger.h.

207 {
208 return ((tt & TT_MASK_TYPE) == TT_TRILEPTON_SYM) && !mixed();
209 }

◆ is4Lsym()

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

Definition at line 217 of file Trigger.h.

217 {
218 return ((tt & TT_MASK_TYPE) == TT_TETRALEPTON_SYM);
219 }

◆ mixed()

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

Definition at line 141 of file Trigger.h.

141{ 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 143 of file Trigger.h.

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

◆ 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 147 of file Trigger.h.

147 {
149 }

◆ object()

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

Definition at line 184 of file Trigger.h.

184 {
185 if (mixed())
186 return xAOD::Type::Other;
187 return object1();
188 }
static constexpr xAOD::Type::ObjectType object1()
Definition Trigger.h:151

◆ object1()

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

Definition at line 151 of file Trigger.h.

151 {
152 if (!is3Lmix()) {
153 if (tt & TT_ELECTRON_FLAG)
155 if (tt & TT_MUON_FLAG)
156 return xAOD::Type::Muon;
157 if (tt & TT_PHOTON_FLAG)
158 return xAOD::Type::Photon;
159 return xAOD::Type::Other;
160 }
161 if ((tt & TT_ELECTRON_FLAG) && !(tt & TT_X2Y_FLAG))
163 if ((tt & TT_PHOTON_FLAG) && (tt & TT_X2Y_FLAG))
164 return xAOD::Type::Photon;
166 }
static constexpr bool is3Lmix()
Definition Trigger.h:214

◆ object2()

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

Definition at line 168 of file Trigger.h.

168 {
169 if (is2Lmix()) {
170 if ((tt & TT_ELECTRON_FLAG) && (tt & TT_MUON_FLAG))
171 return xAOD::Type::Muon;
173 return xAOD::Type::Photon;
174 return xAOD::Type::Other;
175 } else if (!is3Lmix())
176 return xAOD::Type::Other;
177 if ((tt & TT_ELECTRON_FLAG) && (tt & TT_X2Y_FLAG))
179 if ((tt & TT_PHOTON_FLAG) && !(tt & TT_X2Y_FLAG))
180 return xAOD::Type::Photon;
182 }
static constexpr bool is2Lmix()
Definition Trigger.h:213

◆ operator bool()

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

Definition at line 253 of file Trigger.h.

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

◆ 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 243 of file Trigger.h.

243{ 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 236 of file Trigger.h.

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

◆ 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 246 of file Trigger.h.

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

◆ 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 258 of file Trigger.h.

258{ 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 190 of file Trigger.h.

190 {
191 return lepton.type() == object();
192 }
static constexpr TriggerType type()
Definition Trigger.h:139
static constexpr xAOD::Type::ObjectType object()
Definition Trigger.h:184

◆ 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 231 of file Trigger.h.

231 {
232 TriggerProperties(tt).loadLegs(def, legs);
233 }

◆ 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 308 of file Trigger.h.

308 {
309 return side<TrigX::object()>();
310 }

◆ 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 293 of file Trigger.h.

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

◆ 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 317 of file Trigger.h.

317{ 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 318 of file Trigger.h.

318{ 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 370 of file Trigger.h.

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

◆ 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 343 of file Trigger.h.

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

◆ 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 352 of file Trigger.h.

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

◆ type()

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

Definition at line 139 of file Trigger.h.

139{ 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 221 of file Trigger.h.


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