CMS 3D CMS Logo

Classes | Namespaces | Typedefs | Functions
MultifitComputations.h File Reference
#include <cmath>
#include <limits>
#include <type_traits>
#include <Eigen/Dense>
#include "FWCore/Utilities/interface/CMSUnrollLoop.h"

Go to the source code of this file.

Classes

struct  calo::multifit::MapMForPM< T >
 
struct  calo::multifit::MapSymM< T, Stride, Order >
 

Namespaces

 calo
 
 calo::multifit
 

Typedefs

template<int NROWS, int NCOLS>
using calo::multifit::ColMajorMatrix = Eigen::Matrix< float, NROWS, NCOLS, Eigen::ColMajor >
 
template<int SIZE, typename T = float>
using calo::multifit::ColumnVector = Eigen::Matrix< T, SIZE, 1 >
 
template<int NROWS, int NCOLS>
using calo::multifit::RowMajorMatrix = Eigen::Matrix< float, NROWS, NCOLS, Eigen::RowMajor >
 
template<int SIZE, typename T = float>
using calo::multifit::RowVector = Eigen::Matrix< T, 1, SIZE >
 

Functions

template<typename MatrixType1 , typename MatrixType2 , typename MatrixType3 , typename MatrixType4 >
EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC void calo::multifit::calculateChiSq (MatrixType1 const &matrixL, MatrixType2 const &pulseMatrixView, MatrixType3 const &resultAmplitudesVector, MatrixType4 const &inputAmplitudesView, float &chi2)
 
template<typename MatrixType1 , typename MatrixType2 >
EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC void calo::multifit::compute_decomposition (MatrixType1 &L, MatrixType2 const &M, int const N)
 
template<typename MatrixType1 , typename MatrixType2 , typename VectorType >
EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC void calo::multifit::compute_decomposition_forwardsubst_with_offsets (MatrixType1 &L, MatrixType2 const &M, float b[MatrixType1::stride], VectorType const &Atb, int const N, ColumnVector< MatrixType1::stride, int > const &pulseOffsets)
 
template<typename MatrixType1 , typename MatrixType2 >
EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC void calo::multifit::compute_decomposition_unrolled (MatrixType1 &L, MatrixType2 const &M)
 
template<typename MatrixType , typename VectorType >
EIGEN_DEVICE_FUNC void calo::multifit::fnnls (MatrixType const &AtA, VectorType const &Atb, VectorType &solution, int &npassive, ColumnVector< VectorType::RowsAtCompileTime, int > &pulseOffsets, MapSymM< float, VectorType::RowsAtCompileTime > &matrixL, double eps, const int maxIterations, const int relaxationPeriod, const int relaxationFactor)
 
template<typename MatrixType1 , typename MatrixType2 , typename MatrixType3 >
EIGEN_DEVICE_FUNC void calo::multifit::solve_forward_subst_matrix (MatrixType1 &A, MatrixType2 const &pulseMatrixView, MatrixType3 const &matrixL)
 
template<typename MatrixType1 , typename MatrixType2 >
EIGEN_DEVICE_FUNC void calo::multifit::solve_forward_subst_vector (float reg_b[MatrixType1::RowsAtCompileTime], MatrixType1 inputAmplitudesView, MatrixType2 matrixL)
 
template<typename MatrixType1 , typename MatrixType2 , typename VectorType >
EIGEN_ALWAYS_INLINE EIGEN_DEVICE_FUNC void calo::multifit::update_decomposition_forwardsubst_with_offsets (MatrixType1 &L, MatrixType2 const &M, float b[MatrixType1::stride], VectorType const &Atb, int const N, ColumnVector< MatrixType1::stride, int > const &pulseOffsets)