11 #include <tracking/trackFitting/measurementCreator/measurements/PlanarMomentumMeasurement.h>
12 #include <tracking/vxdMomentumEstimation/VXDMomentumEstimation.h>
13 #include <tracking/vxdMomentumEstimation/VXDMomentumEstimationTools.h>
14 #include <mdst/dataobjects/MCParticle.h>
15 #include <tracking/dataobjects/RecoTrack.h>
26 template <
class HitType>
37 rawHitCoords_.ResizeTo(1);
38 rawHitCov_.ResizeTo(1, 1);
40 setHitId(hit->getArrayIndex());
121 template <
class HitType>
128 TVectorD rawHitCoordinates(1);
129 TMatrixDSym rawHitCovariance(1);
132 const TVector3& statePosition(state.getPos());
133 const TVector3& stateMomentum(state.getMom());
134 short stateCharge = state.getCharge();
138 const TVector3& trackPosition(m_recoTrack->getPositionSeed());
139 const TVector3& trackMomentum(m_recoTrack->getMomentumSeed());
140 short trackCharge = m_recoTrack->getChargeSeed();
143 MCParticle* relatedMCParticle = m_hit->template getRelated<MCParticle>(
"MCParticles");
149 if (relatedMCParticle ==
nullptr) {
150 mcMomentum = trackMomentum;
151 mcPostion = trackPosition;
152 mcCharge = trackCharge;
156 mcCharge = relatedMCParticle->
getCharge();
164 if (m_useThickness) {
166 m_correctionFitParameters);
168 if (m_useTrackingSeeds) {
169 if (m_useMCInformation) {
170 rawHitCoordinates(0) = momentumEstimator.
estimateQOverP(*m_hit, mcMomentum, mcPostion, mcCharge,
172 m_correctionFitParameters);
175 rawHitCoordinates(0) = momentumEstimator.
estimateQOverP(*m_hit, trackMomentum, trackPosition, trackCharge,
177 m_correctionFitParameters);
180 if (m_useMCInformation) {
181 rawHitCoordinates(0) = momentumEstimator.
estimateQOverP(*m_hit, hitMCMomentum, hitMCPosition, stateCharge,
183 m_correctionFitParameters);
185 rawHitCoordinates(0) = momentumEstimator.
estimateQOverP(*m_hit, stateMomentum, statePosition, stateCharge,
187 m_correctionFitParameters);
192 rawHitCovariance(0, 0) = m_sigma;
195 state.getPlane(), state.getRep(), constructHMatrix(state.getRep()));
A Class to store the Monte Carlo particle information.
TVector3 getMomentum() const
Return momentum.
float getCharge() const
Return the particle charge defined in TDatabasePDG.
TVector3 getProductionVertex() const
Return production vertex position.
Measurement class implementing a planar hit geometry (1 or 2D) with only a momentum measurement.
Measurement class implementing a planar hit geometry (1 or 2D) with a momentum measurement based on t...
void setUseTrackingSeeds(bool useTrackingSeeds)
Set whether to use tracking seeds not the current state.
VXDMomentumEstimation< HitType >::CorrectionFitParameters m_correctionFitParameters
Parameters for the correction function.
void setSigma(double sigma)
Set the measurement sigma.
bool m_useMCInformation
Use the seeds of the track finder or the seeds of the MC particles.
void setUseMCInformation(bool useMCInformation)
Set whether to use mc information.
const RecoTrack * m_recoTrack
RecoTrack for which the hit is created.
void setUseThickness(bool useThickness)
Set whether to use the thickness.
void setCorrectionFitParameters(const typename VXDMomentumEstimation< HitType >::CorrectionFitParameters &correctionFitParameters)
Set the correction fit parameters.
virtual genfit::AbsMeasurement * clone() const override
Clone the measurement.
HitType * m_hit
Underlaying hit/cluster.
PlanarVXDMomentumMeasurement(const genfit::PlanarMeasurement &parentElement, HitType *hit, const Belle2::RecoTrack *recoTrack)
Initialize the momentum measurement with a planar measurement as a parent, the corresponding hit and ...
bool m_useTrackingSeeds
Use the tracking seeds in the origin for calculating the path length rather than the current state.
VXDMomentumEstimation< HitType >::FitParameters m_fitParameters
Parameters for the main function.
double m_sigma
Value of the measurement sigma.
bool m_useThickness
Use the thickness of the clusters of the path length for estimating dX.
HitType * getHit() const
Get the underlaying hit (cluster).
void setFitParameters(const typename VXDMomentumEstimation< HitType >::FitParameters &fitParameters)
Set the fit parameters.
int getDetId() const
Return the detector ID.
This is the Reconstruction Event-Data Model Track.
Class doing the momentum estimation from dEdX for SVDClusters and PXDClusters.
double estimateQOverP(const ClusterType &cluster, const TVector3 &momentum, const TVector3 &position, short charge, const FitParameters &fitParameters, const CorrectionFitParameters &correctionFitParameters) const
Main function: Estimate p over q for the given cluster and the path length calculated using the given...
double estimateQOverPWithThickness(const ClusterType &cluster, short charge, const FitParameters &fitParameters, const CorrectionFitParameters &correctionFitParameters) const
Main function: Estimate p over q for the given cluster and the thickness of the cluster with the fit ...
static const VXDMomentumEstimation & getInstance()
Use this class as a singleton.
Contains the measurement and covariance in raw detector coordinates.
Measured coordinates on a plane.
Measurement class implementing a planar hit geometry (1 or 2D).
A state with arbitrary dimension defined in a DetPlane.
virtual std::vector< genfit::MeasurementOnPlane * > constructMeasurementsOnPlane(const genfit::StateOnPlane &state) const override
Construct the measurement on the plane set in the parent element.
Abstract base class for different kinds of events.