CMS 3D CMS Logo

TensorIndex< d1, d2, d3, d4 > Class Template Reference

Credit: Utility class from. More...

#include <CondFormats/Calibration/interface/TensorIndex.h>

List of all members.

Public Types

enum  { SIZE = d1*d2*d3*d4 }
enum  { LEN1 = d1 }
enum  { LEN2 = d2 }
enum  { LEN3 = d3 }
enum  { LEN4 = d4 }

Static Public Member Functions

static int indexOf (const int i, const int j, const int k, const int l)
static int indexOf (const int i, const int j, const int k)
static int indexOf (const int i, const int j)
static int indexOf (const int i)


Detailed Description

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
class TensorIndex< d1, d2, d3, d4 >

Credit: Utility class from.

https://www.sitmo.com/doc/A_Simple_and_Extremely_Fast_CPP_Template_for_Matrices_and_Tensors

Usage:

The template below offers a simple and efficient solution for handling matrices and tensors in C++. The idea is to store the matrix (or tensor) in a standard vector by translating the multidimensional index to a one dimensional index.

The only thing we need to do is to convert two dimensional indices (r,c) into a one dimensional index. Using template we can do this very efficiently compile time, minimizing the runtime overhead.

Definition at line 16 of file TensorIndex.h.


Member Enumeration Documentation

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
anonymous enum

Enumerator:
SIZE 

Definition at line 18 of file TensorIndex.h.

00018 {SIZE = d1*d2*d3*d4 };

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
anonymous enum

Enumerator:
LEN1 

Definition at line 19 of file TensorIndex.h.

00019 {LEN1 = d1 };

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
anonymous enum

Enumerator:
LEN2 

Definition at line 20 of file TensorIndex.h.

00020 {LEN2 = d2 };

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
anonymous enum

Enumerator:
LEN3 

Definition at line 21 of file TensorIndex.h.

00021 {LEN3 = d3 };

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
anonymous enum

Enumerator:
LEN4 

Definition at line 22 of file TensorIndex.h.

00022 {LEN4 = d4 };


Member Function Documentation

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
static int TensorIndex< d1, d2, d3, d4 >::indexOf ( const int  i,
const int  j,
const int  k,
const int  l 
) [inline, static]

Definition at line 33 of file TensorIndex.h.

References d1, d2, and d3.

00033                                                                          {
00034       return ((l*d3 + k)*d2 + j)*d1 + i;
00035     }

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
static int TensorIndex< d1, d2, d3, d4 >::indexOf ( const int  i,
const int  j,
const int  k 
) [inline, static]

Definition at line 30 of file TensorIndex.h.

References d1, and d2.

00030                                                              {
00031       return (k*d2 + j)*d1 + i;
00032     }

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
static int TensorIndex< d1, d2, d3, d4 >::indexOf ( const int  i,
const int  j 
) [inline, static]

Definition at line 27 of file TensorIndex.h.

References d1.

00027                                                 {
00028       return j*d1 + i;
00029     }

template<int d1, int d2 = 1, int d3 = 1, int d4 = 1>
static int TensorIndex< d1, d2, d3, d4 >::indexOf ( const int  i  )  [inline, static]

Definition at line 24 of file TensorIndex.h.

Referenced by big::bigStore::fill(), and big::bigEntry::fill().

00024                                     {
00025       return i;
00026     }


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:33:18 2009 for CMSSW by  doxygen 1.5.4