ATLAS Offline Software
Loading...
Searching...
No Matches
TrkDriftCircleMath::ResolvedCollection< Data, IsSubset > Class Template Reference

#include <ResolvedCollection.h>

Collaboration diagram for TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >:

Public Types

enum  SubsetState { SubSet = 0 , SuperSet = 1 , Different = 2 }
typedef std::vector< DataDataVec

Public Member Functions

const DataVecdata () const
DataVecdata ()
void clear ()
void set (DataVec &data)
bool insert (const Data &data)

Private Attributes

std::vector< Datam_data {}

Detailed Description

template<class Data, class IsSubset>
class TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >

Definition at line 13 of file ResolvedCollection.h.

Member Typedef Documentation

◆ DataVec

template<class Data, class IsSubset>
typedef std::vector<Data> TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >::DataVec

Definition at line 15 of file ResolvedCollection.h.

Member Enumeration Documentation

◆ SubsetState

Member Function Documentation

◆ clear()

template<class Data, class IsSubset>
void TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >::clear ( )
inline

Definition at line 22 of file ResolvedCollection.h.

22{ m_data.clear(); }

◆ data() [1/2]

template<class Data, class IsSubset>
DataVec & TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >::data ( )
inline

Definition at line 20 of file ResolvedCollection.h.

20{ return m_data; }

◆ data() [2/2]

template<class Data, class IsSubset>
const DataVec & TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >::data ( ) const
inline

Definition at line 19 of file ResolvedCollection.h.

19{ return m_data; }

◆ insert()

template<class Data, class IsSubset>
bool TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >::insert ( const Data & data)
inline

Definition at line 26 of file ResolvedCollection.h.

26 {
27 // add data if collection is empty
28 if (m_data.empty()) {
29 m_data.push_back(data);
30 return true;
31 }
32
34
35 bool inserted(false);
36
37 // loop over data vector compare new element with existing ones
38 for (unsigned int i = 0; i < m_data.size(); ++i) {
39 // get subset state
40 int state = isSubset(data, m_data[i]);
41
42
43 // do nothing in case the new element is a subset of an already inserted element
44 if (state == SubSet) {
45 return false;
46
47 // if the new element is a super set of an existing on replace it
48 // check all existing elements and keep track of number of replaces
49 } else if (state == SuperSet) {
50 // if not inserted yet replace the subset
51 if (!inserted) {
52 inserted = true;
53 m_data[i] = data;
54 } else {
55 // replace current element with last and restart loop
56 if (i == m_data.size() - 1) {
57 m_data.pop_back();
58 } else {
59 m_data[i] = m_data.back();
60 m_data.pop_back();
61 --i; // here we go back to also check the copied element
62 }
63 }
64 }
65 }
66
67 // check if new element was SuperSet of existing one
68 if (!inserted) {
69 // insert new element
70 m_data.push_back(data);
71 }
72 return true;
73 }

◆ set()

template<class Data, class IsSubset>
void TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >::set ( DataVec & data)
inline

Definition at line 24 of file ResolvedCollection.h.

24{ m_data.swap(data); }

Member Data Documentation

◆ m_data

template<class Data, class IsSubset>
std::vector<Data> TrkDriftCircleMath::ResolvedCollection< Data, IsSubset >::m_data {}
private

Definition at line 76 of file ResolvedCollection.h.

76{};

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