Jpp  15.0.0
the software that should make you happy
 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_t< JNullType >

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...
 
size_t getNumberOfIndices () const
 Get number of indices. More...
 
size_t 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
int j
Definition: JPolint.hh:666
size_t 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
size_t 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  }
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
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  }
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
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: