Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
JTOOLS::JCombinatorics Class Reference

Auxiliary class to convert pair of indices to unique index and back. More...

#include <JCombinatorics.hh>

Inheritance diagram for JTOOLS::JCombinatorics:
JCALIBRATE::JFitK40

Public Types

typedef std::pair< int, int > pair_type
 Data structure for a pair of indices. More...
 

Public Member Functions

 JCombinatorics ()
 Default constructor. More...
 
 JCombinatorics (const int numberOfIndices)
 Constructor. More...
 
void configure (const int numberOfIndices)
 Configure. More...
 
unsigned int getNumberOfIndices () const
 Get number of indices. More...
 
unsigned int getNumberOfPairs () const
 Get number of pairs. More...
 
int getIndex (const int first, const int second) const
 Get index of pair of indices. More...
 
const pair_typegetPair (const int index) const
 Get pair of indices for given index. More...
 
template<class JComparator_t >
void sort (JComparator_t comparator)
 Sort address pairs. More...
 

Static Public Member Functions

static int getSign (const int first, const int second)
 Sign of pair of indices. More...
 
static int getSign (const pair_type &pair)
 Sign of pair of indices. More...
 

Protected Attributes

std::vector< pair_typezbuf1D
 
std::vector< std::vector< int > > zbuf2D
 

Detailed Description

Auxiliary class to convert pair of indices to unique index and back.

Definition at line 22 of file JCombinatorics.hh.

Member Typedef Documentation

Data structure for a pair of indices.

Definition at line 28 of file JCombinatorics.hh.

Constructor & Destructor Documentation

JTOOLS::JCombinatorics::JCombinatorics ( )
inline

Default constructor.

Definition at line 34 of file JCombinatorics.hh.

35  {}
JTOOLS::JCombinatorics::JCombinatorics ( const int  numberOfIndices)
inline

Constructor.

Parameters
numberOfIndicesnumber of indices

Definition at line 43 of file JCombinatorics.hh.

44  {
45  configure(numberOfIndices);
46  }
void configure(const int numberOfIndices)
Configure.

Member Function Documentation

void JTOOLS::JCombinatorics::configure ( const int  numberOfIndices)
inline

Configure.

Parameters
numberOfIndicesnumber of indices

Definition at line 54 of file JCombinatorics.hh.

55  {
56  zbuf1D.clear();
57 
58  zbuf2D.resize(numberOfIndices);
59 
60  for (int i = 0; i != numberOfIndices; ++i) {
61  zbuf2D[i].resize(numberOfIndices);
62  }
63 
64  for (int i = 0; i != numberOfIndices; ++i) {
65 
66  zbuf2D[i][i] = -1;
67 
68  for (int j = i; ++j != numberOfIndices; ) {
69 
70  zbuf2D[i][j] = zbuf1D.size();
71  zbuf2D[j][i] = zbuf1D.size();
72 
73  zbuf1D.push_back(pair_type(i,j));
74  }
75  }
76  }
std::vector< std::vector< int > > zbuf2D
std::pair< int, int > pair_type
Data structure for a pair of indices.
std::vector< pair_type > zbuf1D
unsigned int JTOOLS::JCombinatorics::getNumberOfIndices ( ) const
inline

Get number of indices.

Returns
number of indices

Definition at line 84 of file JCombinatorics.hh.

85  {
86  return zbuf2D.size();
87  }
std::vector< std::vector< int > > zbuf2D
unsigned int JTOOLS::JCombinatorics::getNumberOfPairs ( ) const
inline

Get number of pairs.

Returns
number of pairs

Definition at line 95 of file JCombinatorics.hh.

96  {
97  return zbuf1D.size();
98  }
std::vector< pair_type > zbuf1D
int JTOOLS::JCombinatorics::getIndex ( const int  first,
const int  second 
) const
inline

Get index of pair of indices.

Parameters
firstfirst address
secondsecond address
Returns
index (-1 if first and second address are equal)

Definition at line 108 of file JCombinatorics.hh.

109  {
110  return zbuf2D[first][second];
111  }
std::vector< std::vector< int > > zbuf2D
const pair_type& JTOOLS::JCombinatorics::getPair ( const int  index) const
inline

Get pair of indices for given index.

Parameters
indexindex
Returns
pair of indices

Definition at line 120 of file JCombinatorics.hh.

121  {
122  return zbuf1D[index];
123  }
std::vector< pair_type > zbuf1D
template<class JComparator_t >
void JTOOLS::JCombinatorics::sort ( JComparator_t  comparator)
inline

Sort address pairs.

Parameters
comparatorcomparator for pairs

Definition at line 132 of file JCombinatorics.hh.

133  {
134  std::stable_sort(zbuf1D.begin(), zbuf1D.end(), comparator);
135 
136  for (int i = 0; i != (int) zbuf1D.size(); ++i) {
137 
138  const pair_type pair = zbuf1D[i];
139 
140  zbuf2D[pair.first][pair.second] = i;
141  zbuf2D[pair.second][pair.first] = i;
142  }
143 
144  for (int i = 0; i != (int) zbuf2D.size(); ++i) {
145  zbuf2D[i][i] = -1;
146  }
147  }
std::vector< std::vector< int > > zbuf2D
std::pair< int, int > pair_type
Data structure for a pair of indices.
std::vector< pair_type > zbuf1D
static int JTOOLS::JCombinatorics::getSign ( const int  first,
const int  second 
)
inlinestatic

Sign of pair of indices.

Parameters
firstfirst address
secondsecond address
Returns
+1 if second >= first; else -1

Definition at line 157 of file JCombinatorics.hh.

158  {
159  return (second >= first ? +1 : -1);
160  }
static int JTOOLS::JCombinatorics::getSign ( const pair_type pair)
inlinestatic

Sign of pair of indices.

Parameters
pairpair of indices
Returns
+1 if second >= first; else -1

Definition at line 169 of file JCombinatorics.hh.

170  {
171  return getSign(pair.first, pair.second);
172  }
static int getSign(const int first, const int second)
Sign of pair of indices.

Member Data Documentation

std::vector<pair_type> JTOOLS::JCombinatorics::zbuf1D
protected

Definition at line 176 of file JCombinatorics.hh.

std::vector<std::vector<int> > JTOOLS::JCombinatorics::zbuf2D
protected

Definition at line 177 of file JCombinatorics.hh.


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