13 #include <tracking/trackFitting/measurementCreator/measurements/PlanarMomentumMeasurement.h>
14 #include <tracking/vxdMomentumEstimation/VXDMomentumEstimation.h>
15 #include <tracking/vxdMomentumEstimation/VXDMomentumEstimationTools.h>
16 #include <mdst/dataobjects/MCParticle.h>
17 #include <tracking/dataobjects/RecoTrack.h>
28 template <
class HitType>
29 class PlanarVXDMomentumMeasurement :
public PlanarMomentumMeasurement {
39 rawHitCoords_.ResizeTo(1);
40 rawHitCov_.ResizeTo(1, 1);
42 setHitId(hit->getArrayIndex());
53 void setCorrectionFitParameters(
const typename VXDMomentumEstimation<HitType>::CorrectionFitParameters& correctionFitParameters)
109 HitType*
m_hit =
nullptr;
123 template <
class HitType>
130 TVectorD rawHitCoordinates(1);
131 TMatrixDSym rawHitCovariance(1);
134 const TVector3& statePosition(state.getPos());
135 const TVector3& stateMomentum(state.getMom());
136 short stateCharge = state.getCharge();
140 const TVector3& trackPosition(m_recoTrack->getPositionSeed());
141 const TVector3& trackMomentum(m_recoTrack->getMomentumSeed());
142 short trackCharge = m_recoTrack->getChargeSeed();
145 MCParticle* relatedMCParticle = m_hit->template getRelated<MCParticle>(
"MCParticles");
151 if (relatedMCParticle ==
nullptr) {
152 mcMomentum = trackMomentum;
153 mcPostion = trackPosition;
154 mcCharge = trackCharge;
158 mcCharge = relatedMCParticle->
getCharge();
166 if (m_useThickness) {
168 m_correctionFitParameters);
170 if (m_useTrackingSeeds) {
171 if (m_useMCInformation) {
172 rawHitCoordinates(0) = momentumEstimator.
estimateQOverP(*m_hit, mcMomentum, mcPostion, mcCharge,
174 m_correctionFitParameters);
177 rawHitCoordinates(0) = momentumEstimator.
estimateQOverP(*m_hit, trackMomentum, trackPosition, trackCharge,
179 m_correctionFitParameters);
182 if (m_useMCInformation) {
183 rawHitCoordinates(0) = momentumEstimator.
estimateQOverP(*m_hit, hitMCMomentum, hitMCPosition, stateCharge,
185 m_correctionFitParameters);
187 rawHitCoordinates(0) = momentumEstimator.
estimateQOverP(*m_hit, stateMomentum, statePosition, stateCharge,
189 m_correctionFitParameters);
194 rawHitCovariance(0, 0) = m_sigma;
197 state.getPlane(), state.getRep(), constructHMatrix(state.getRep()));