Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 23:30:34

0001 #ifndef RecoLocalCalo_EcalRecProducers_plugins_EigenMatrixTypes_gpu_h
0002 #define RecoLocalCalo_EcalRecProducers_plugins_EigenMatrixTypes_gpu_h
0003 
0004 #include <array>
0005 
0006 #include <Eigen/Dense>
0007 
0008 #include "CUDADataFormats/EcalRecHitSoA/interface/RecoTypes.h"
0009 
0010 namespace ecal {
0011   namespace multifit {
0012 
0013     constexpr int SampleVectorSize = 10;
0014     constexpr int FullSampleVectorSize = 19;
0015     constexpr int PulseVectorSize = 12;
0016     constexpr int NGains = 3;
0017 
0018     using data_type = ::ecal::reco::ComputationScalarType;
0019 
0020     typedef Eigen::Matrix<data_type, SampleVectorSize, SampleVectorSize> PulseMatrixType;
0021     typedef Eigen::Matrix<char, SampleVectorSize, 1> BXVectorType;
0022     using SampleMatrixD = Eigen::Matrix<double, SampleVectorSize, SampleVectorSize>;
0023 
0024     typedef Eigen::Matrix<data_type, SampleVectorSize, 1> SampleVector;
0025     typedef Eigen::Matrix<data_type, FullSampleVectorSize, 1> FullSampleVector;
0026     typedef Eigen::Matrix<data_type, Eigen::Dynamic, 1, 0, PulseVectorSize, 1> PulseVector;
0027     typedef Eigen::Matrix<char, Eigen::Dynamic, 1, 0, PulseVectorSize, 1> BXVector;
0028     typedef Eigen::Matrix<char, SampleVectorSize, 1> SampleGainVector;
0029     typedef Eigen::Matrix<data_type, SampleVectorSize, SampleVectorSize> SampleMatrix;
0030     typedef Eigen::Matrix<data_type, FullSampleVectorSize, FullSampleVectorSize> FullSampleMatrix;
0031     typedef Eigen::Matrix<data_type, Eigen::Dynamic, Eigen::Dynamic, 0, PulseVectorSize, PulseVectorSize> PulseMatrix;
0032     typedef Eigen::Matrix<data_type, SampleVectorSize, Eigen::Dynamic, 0, SampleVectorSize, PulseVectorSize>
0033         SamplePulseMatrix;
0034     typedef Eigen::LLT<SampleMatrix> SampleDecompLLT;
0035     typedef Eigen::LLT<SampleMatrixD> SampleDecompLLTD;
0036     typedef Eigen::LLT<PulseMatrix> PulseDecompLLT;
0037     typedef Eigen::LDLT<PulseMatrix> PulseDecompLDLT;
0038 
0039     typedef Eigen::Matrix<data_type, 1, 1> SingleMatrix;
0040     typedef Eigen::Matrix<data_type, 1, 1> SingleVector;
0041 
0042     typedef std::array<SampleMatrixD, NGains> SampleMatrixGainArray;
0043 
0044     using PermutationMatrix = Eigen::PermutationMatrix<SampleMatrix::RowsAtCompileTime>;
0045 
0046   }  // namespace multifit
0047 }  // namespace ecal
0048 
0049 #endif  // RecoLocalCalo_EcalRecProducers_plugins_EigenMatrixTypes_gpu_h