00001 #include "DataFormats/TrackReco/interface/TrackExtra.h" 00002 #include "DataFormats/TrackReco/interface/fillCovariance.h" 00003 using namespace reco; 00004 00005 TrackExtra::TrackExtra( const Point & outerPosition, const Vector & outerMomentum, bool ok , 00006 const Point & innerPosition, const Vector & innerMomentum, bool iok, 00007 const CovarianceMatrix& outerCov, unsigned int outerId, 00008 const CovarianceMatrix& innerCov, unsigned int innerId, 00009 PropagationDirection seedDir, 00010 edm::RefToBase<TrajectorySeed> seedRef): 00011 TrackExtraBase(), 00012 outerPosition_( outerPosition ), outerMomentum_( outerMomentum ), outerOk_( ok ), 00013 outerDetId_( outerId ), 00014 innerPosition_( innerPosition ), innerMomentum_( innerMomentum ), innerOk_( iok ), 00015 innerDetId_( innerId ), seedDir_(seedDir), seedRef_(seedRef) { 00016 index idx = 0; 00017 for( index i = 0; i < dimension; ++ i ) { 00018 for( index j = 0; j <= i; ++ j ) { 00019 outerCovariance_[ idx ] = outerCov( i, j ); 00020 innerCovariance_[ idx ] = innerCov( i, j ); 00021 ++idx; 00022 } 00023 } 00024 } 00025 00026 TrackExtra::CovarianceMatrix TrackExtra::outerStateCovariance() const { 00027 CovarianceMatrix v; fillCovariance( v, outerCovariance_ ); return v; 00028 } 00029 00030 TrackExtra::CovarianceMatrix TrackExtra::innerStateCovariance() const { 00031 CovarianceMatrix v; fillCovariance( v, innerCovariance_ ); return v; 00032 } 00033 00034 TrackExtra::CovarianceMatrix & TrackExtra::fillOuter( CovarianceMatrix & v ) const { 00035 return fillCovariance( v, outerCovariance_ ); 00036 } 00037 00038 TrackExtra::CovarianceMatrix & TrackExtra::fillInner( CovarianceMatrix & v ) const { 00039 return fillCovariance( v, innerCovariance_ ); 00040 } 00041