File indexing completed on 2023-03-17 11:22:55
0001 #ifndef PixelRecoUtilities_H
0002 #define PixelRecoUtilities_H
0003 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0004 #include "MagneticField/Engine/interface/MagneticField.h"
0005
0006
0007
0008
0009
0010 namespace PixelRecoUtilities {
0011
0012
0013
0014 template <typename T>
0015 T bendingRadius(T pt, const MagneticField& field) {
0016 return pt * field.inverseBzAtOriginInGeV();
0017 }
0018
0019
0020
0021
0022 template <typename T>
0023 T curvature(T InversePt, const MagneticField& field) {
0024 return InversePt / field.inverseBzAtOriginInGeV();
0025 }
0026
0027
0028 template <typename T>
0029 T inversePt(T curvature, const MagneticField& field) {
0030 return curvature * field.inverseBzAtOriginInGeV();
0031 }
0032
0033
0034
0035
0036 inline double longitudinalBendingCorrection(double radius, double pt, const MagneticField& field) {
0037 double invCurv = bendingRadius(pt, field);
0038 if (invCurv == 0.)
0039 return 0.;
0040 return radius / 6. * radius * radius / (2. * invCurv * 2. * invCurv);
0041 }
0042
0043 }
0044
0045 #endif