12 #include <tracking/vxdMomentumEstimation/VXDMomentumEstimationTools.h>
28 template <
class ClusterType>
29 class VXDMomentumEstimation {
41 struct FitParameters {
43 double aE = 1.56173140e+07;
45 double bE = -9.89192780e+03;
47 double cE = 2.42177970e-02;
49 double dE = 2.65702553e-08;
74 double estimateQOverP(
const ClusterType& cluster,
const TVector3& momentum,
const TVector3& position,
short charge,
75 const FitParameters& fitParameters,
const CorrectionFitParameters& correctionFitParameters)
const
79 const double dEdX = tools.
getDEDX(cluster, momentum, position, charge);
80 const double momentumEstimation =
convertDEDXToMomentum(dEdX, fitParameters, correctionFitParameters);
81 const double QOverP = charge / momentumEstimation;
89 const CorrectionFitParameters& correctionFitParameters)
const
94 const double momentumEstimation =
convertDEDXToMomentum(dEdX, fitParameters, correctionFitParameters);
95 const double QOverP = charge / momentumEstimation;
103 const CorrectionFitParameters& correctionFitParameters)
const
105 const double firstPart = fitParameters.aE / (dEdX - fitParameters.bE) / (dEdX - fitParameters.bE);
106 const double lastPart = fitParameters.cE + fitParameters.dE * dEdX;
107 const double estimation = firstPart + lastPart;
109 const double quadPart = correctionFitParameters.aM * estimation * estimation;
110 const double linearPart = correctionFitParameters.bM * estimation;
111 const double constantPart = correctionFitParameters.cM;
112 const double cubicPart = correctionFitParameters.dM * estimation * estimation * estimation;
113 const double mediumCorrection = cubicPart + quadPart + linearPart + constantPart;
115 const double estimationWithMediumCalibration = estimation - mediumCorrection;
116 return estimationWithMediumCalibration;