#include <TrackingTools/MaterialEffects/interface/VolumeMaterialEffectsUpdator.h>
Public Types | |
typedef VolumeMaterialEffectsEstimate | Estimate |
typedef std::vector< const VolumeMaterialEffectsEstimate * > | EstimateContainer |
Public Member Functions | |
TrajectoryStateOnSurface | updateState (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir, const EstimateContainer &estimates) const |
Updates TrajectoryStateOnSurface with several material effects (momentum and covariance matrix are potentially affected. | |
TrajectoryStateOnSurface | updateState (const TrajectoryStateOnSurface &TSoS, const PropagationDirection propDir, const Estimate &estimate) const |
Updates TrajectoryStateOnSurface with material effects (momentum and covariance matrix are potentially affected. | |
VolumeMaterialEffectsUpdator () |
Definition at line 16 of file VolumeMaterialEffectsUpdator.h.
Definition at line 19 of file VolumeMaterialEffectsUpdator.h.
typedef std::vector<const VolumeMaterialEffectsEstimate*> VolumeMaterialEffectsUpdator::EstimateContainer |
Definition at line 20 of file VolumeMaterialEffectsUpdator.h.
VolumeMaterialEffectsUpdator::VolumeMaterialEffectsUpdator | ( | ) | [inline] |
TrajectoryStateOnSurface VolumeMaterialEffectsUpdator::updateState | ( | const TrajectoryStateOnSurface & | TSoS, | |
const PropagationDirection | propDir, | |||
const EstimateContainer & | estimates | |||
) | const |
Updates TrajectoryStateOnSurface with several material effects (momentum and covariance matrix are potentially affected.
Definition at line 20 of file VolumeMaterialEffectsUpdator.cc.
References alongMomentum, anyDirection, TrajectoryStateOnSurface::charge(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalParameters(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::hasError(), i, TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), lp, GlobalTrajectoryParameters::magneticField(), TrajectoryStateOnSurface::magneticField(), LocalTrajectoryError::matrix(), TrajectoryStateOnSurface::surface(), TrajectoryStateOnSurface::surfaceSide(), and LocalTrajectoryParameters::updateP().
00023 { 00024 // Sanity check on propagation direction 00025 if ( propDir==anyDirection ) return TrajectoryStateOnSurface(); 00026 // 00027 // Update momentum. In case of failure: return invalid state 00028 // 00029 double dpSum(0.); 00030 for ( EstimateContainer::const_iterator i=estimates.begin(); 00031 i!=estimates.end(); ++i ) { 00032 double dp = (**i).deltaP(); 00033 if ( propDir==alongMomentum ) dpSum += dp; 00034 else dpSum -= dp; 00035 } 00036 LocalTrajectoryParameters lp = tsos.localParameters(); 00037 if ( !lp.updateP(dpSum) ) return TrajectoryStateOnSurface(); 00038 // 00039 // Update covariance matrix? 00040 // 00041 if ( tsos.hasError() ) { 00042 // AlgebraicSymMatrix55 eloc(tsos.localError().matrix()); 00043 AlgebraicSymMatrix55 matCov; 00044 for ( EstimateContainer::const_iterator i=estimates.begin(); 00045 i!=estimates.end(); ++i ) { 00046 matCov += (**i).deltaLocalError(); 00047 } 00048 // 00049 // transform to local system of trackfor the time being: brute force 00050 // could / should try to construct the matrix in curvilinear 00051 // 00052 // Plane consistent with material effects estimate (perp. to track at ref. pos.) 00053 ReferenceCountingPointer<BoundPlane> 00054 perpPlane(PerpendicularBoundPlaneBuilder()(tsos.globalPosition(), 00055 tsos.globalMomentum())); 00056 // Parameters need to construct Jacobian (ref. point and ref. direction) 00057 LocalTrajectoryParameters perpPars(LocalPoint(0.,0.,0.), 00058 LocalVector(0.,0.,1.), 00059 tsos.charge()); 00060 // Jacobian to go from perpendicular plane to curvilinear 00061 JacobianLocalToCurvilinear jacLocToCurv(*perpPlane,perpPars,*tsos.magneticField()); 00062 // Jacobian to go from curvilinear to local frame of the reference tsos 00063 JacobianCurvilinearToLocal jacCurvToLoc(tsos.surface(),tsos.localParameters(), 00064 *tsos.magneticField()); 00065 // Combined Jacobian 00066 AlgebraicMatrix55 jac(jacLocToCurv.jacobian()*jacCurvToLoc.jacobian()); 00067 // Add transformed material effects error matrix to the one from the TSOS 00068 AlgebraicSymMatrix55 eloc(tsos.localError().matrix()); 00069 eloc += ROOT::Math::Similarity(jac,matCov); 00070 return TrajectoryStateOnSurface(lp,LocalTrajectoryError(eloc),tsos.surface(), 00071 &(tsos.globalParameters().magneticField()), 00072 tsos.surfaceSide()); 00073 } 00074 else { 00075 return TrajectoryStateOnSurface(lp,tsos.surface(), 00076 &(tsos.globalParameters().magneticField()), 00077 tsos.surfaceSide()); 00078 } 00079 }
TrajectoryStateOnSurface VolumeMaterialEffectsUpdator::updateState | ( | const TrajectoryStateOnSurface & | TSoS, | |
const PropagationDirection | propDir, | |||
const Estimate & | estimate | |||
) | const |
Updates TrajectoryStateOnSurface with material effects (momentum and covariance matrix are potentially affected.
Definition at line 12 of file VolumeMaterialEffectsUpdator.cc.
00015 { 00016 return updateState(tsos,propDir,EstimateContainer(1,&estimate)); 00017 }