ATLAS Offline Software
Loading...
Searching...
No Matches
Combinations.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRIGCOMPOSITEUTILS_COMBINATIONS_H
6#define TRIGCOMPOSITEUTILS_COMBINATIONS_H
7
11#include <functional>
12#include <vector>
13
14namespace TrigCompositeUtils
15{
16
18 {
19 public:
20 using VecLInfo_t = std::vector<LinkInfo<xAOD::IParticleContainer>>;
22 const std::vector<std::size_t> &legMultiplicities,
23 const std::vector<VecLInfo_t> &legFeatures,
24 const std::function<bool(const VecLInfo_t &)> &filter);
25
27 const std::vector<std::size_t> &legMultiplicities,
28 const std::vector<VecLInfo_t> &legFeatures,
30
31 Combinations(const std::function<bool(const VecLInfo_t &)> &filter);
32
34
35 void reserve(std::size_t capacity);
36
37 bool empty() const;
38
39 std::size_t size() const;
40
41 void addLeg(std::size_t multiplicity, const VecLInfo_t &features);
42 void addLeg(std::size_t multiplicity, VecLInfo_t&& features);
43 void addLeg(const VecLInfo_t &features);
44 void addLeg(VecLInfo_t&& features);
45
46 IPartCombItr begin() const;
47 IPartCombItr end() const;
48
49 private:
50 std::function<bool(const VecLInfo_t &)> m_filter;
51 std::vector<std::size_t> m_legMultiplicities;
52 std::vector<VecLInfo_t> m_legFeatures;
53 }; //> end class Combinations
54} // namespace TrigCompositeUtils
55
56#endif //> TRIGCOMPOSITEUTILS_COMBINATIONS_H
void reserve(std::size_t capacity)
Combinations(const std::vector< std::size_t > &legMultiplicities, const std::vector< VecLInfo_t > &legFeatures, const std::function< bool(const VecLInfo_t &)> &filter)
void addLeg(std::size_t multiplicity, const VecLInfo_t &features)
std::vector< VecLInfo_t > m_legFeatures
std::function< bool(const VecLInfo_t &)> m_filter
std::vector< LinkInfo< xAOD::IParticleContainer > > VecLInfo_t
std::vector< std::size_t > m_legMultiplicities
@ UniqueObjects
Do not allow any repeated objects.