Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:05:21

0001 #include "DataFormats/TrackingRecHit/interface/KfComponentsHolder.h"
0002 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0003 #include "FWCore/Utilities/interface/Exception.h"
0004 #include <typeinfo>
0005 
0006 template <unsigned int D>
0007 void KfComponentsHolder::genericFill_(const TrackingRecHit &hit) {
0008   typedef typename AlgebraicROOTObject<D, 5>::Matrix MatD5;
0009   typedef typename AlgebraicROOTObject<D, D>::SymMatrix SMatDD;
0010   typedef typename AlgebraicROOTObject<D>::Vector VecD;
0011 
0012   params<D>() = asSVector<D>(hit.parameters());
0013   errors<D>() = asSMatrix<D>(hit.parametersError());
0014 
0015   MatD5 &&H = asSMatrix<D, 5>(hit.projectionMatrix());
0016   projFunc<D>().fromH(H);
0017 
0018   measuredParams<D>() = H * (*tsosLocalParameters_);
0019   measuredErrors<D>() = ROOT::Math::Similarity(H, (*tsosLocalErrors_));
0020 }
0021 
0022 void KfComponentsHolder::genericFill(const TrackingRecHit &hit) {
0023   switch (hit.dimension()) {
0024     case 1:
0025       genericFill_<1>(hit);
0026       break;
0027     case 2:
0028       genericFill_<2>(hit);
0029       break;
0030     case 3:
0031       genericFill_<3>(hit);
0032       break;
0033     case 4:
0034       genericFill_<4>(hit);
0035       break;
0036     case 5:
0037       genericFill_<5>(hit);
0038       break;
0039     default:
0040       throw cms::Exception("Rec hit of invalid dimension (not 1,2,3,4,5)")
0041           << "The dimension was " << hit.dimension() << ", type is " << typeid(hit).name() << "\n";
0042   }
0043 }