Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:41

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