Belle II Software development
VXDMomentumEstimation.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10#include <tracking/vxdMomentumEstimation/VXDMomentumEstimationTools.h>
11
12
13namespace Belle2 {
26 template <class ClusterType>
28
29 private:
36
37 public:
41 double aE = 1.56173140e+07;
43 double bE = -9.89192780e+03;
45 double cE = 2.42177970e-02;
47 double dE = 2.65702553e-08;
48 };
49
54 double aM = 0;
56 double bM = 0;
58 double cM = 0;
60 double dM = 0;
61 };
62
65 {
66 static VXDMomentumEstimation instance;
67 return instance;
68 }
69
72 static double estimateQOverP(const ClusterType& cluster, const ROOT::Math::XYZVector& momentum,
73 const ROOT::Math::XYZVector& position,
74 short charge,
75 const FitParameters& fitParameters, const CorrectionFitParameters& correctionFitParameters)
76 {
78
79 const double dEdX = tools.getDEDX(cluster, momentum, position, charge);
80 const double momentumEstimation = convertDEDXToMomentum(dEdX, fitParameters, correctionFitParameters);
81 const double QOverP = charge / momentumEstimation;
82
83 return QOverP;
84 }
85
88 static double estimateQOverPWithThickness(const ClusterType& cluster, short charge, const FitParameters& fitParameters,
89 const CorrectionFitParameters& correctionFitParameters)
90 {
92
93 const double dEdX = tools.getDEDXWithThickness(cluster);
94 const double momentumEstimation = convertDEDXToMomentum(dEdX, fitParameters, correctionFitParameters);
95 const double QOverP = charge / momentumEstimation;
96
97 return QOverP;
98 }
99
102 static double convertDEDXToMomentum(double dEdX, const FitParameters& fitParameters,
103 const CorrectionFitParameters& correctionFitParameters)
104 {
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;
108
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;
114
115 const double estimationWithMediumCalibration = estimation - mediumCorrection;
116 return estimationWithMediumCalibration;
117 }
118
119 };
120
121}
Tools needed for the VXD momentum estimation to, e.g.
static const VXDMomentumEstimationTools & getInstance()
Use this class as singleton.
VXDMomentumEstimation(const VXDMomentumEstimation &)
Do not copy or create.
static double estimateQOverPWithThickness(const ClusterType &cluster, short charge, const FitParameters &fitParameters, const CorrectionFitParameters &correctionFitParameters)
Main function: Estimate p over q for the given cluster and the thickness of the cluster with the fit ...
VXDMomentumEstimation & operator=(const VXDMomentumEstimation &)
Do not copy or create.
static double estimateQOverP(const ClusterType &cluster, const ROOT::Math::XYZVector &momentum, const ROOT::Math::XYZVector &position, short charge, const FitParameters &fitParameters, const CorrectionFitParameters &correctionFitParameters)
Main function: Estimate p over q for the given cluster and the path length calculated using the given...
static const VXDMomentumEstimation & getInstance()
Use this class as a singleton.
static double convertDEDXToMomentum(double dEdX, const FitParameters &fitParameters, const CorrectionFitParameters &correctionFitParameters)
After calculating dEdX we need to map this to p using a predefined function and parameters that were ...
VXDMomentumEstimation()
Do not copy or create.
Abstract base class for different kinds of events.
Struct holding the parameters of the correction function to map them median of the estimation functio...
Struct holding the parameters of the estimation function which maps dEdX to p.