File indexing completed on 2022-02-21 23:14:20
0001 #ifndef RecoTracker_MkFitCore_src_PropagationMPlex_h
0002 #define RecoTracker_MkFitCore_src_PropagationMPlex_h
0003
0004 #include "Matrix.h"
0005
0006 namespace mkfit {
0007
0008 inline void squashPhiMPlex(MPlexLV& par, const int N_proc) {
0009 #pragma omp simd
0010 for (int n = 0; n < NN; ++n) {
0011 if (par(n, 4, 0) >= Const::PI)
0012 par(n, 4, 0) -= Const::TwoPI;
0013 if (par(n, 4, 0) < -Const::PI)
0014 par(n, 4, 0) += Const::TwoPI;
0015 }
0016 }
0017
0018 inline void squashPhiMPlexGeneral(MPlexLV& par, const int N_proc) {
0019 #pragma omp simd
0020 for (int n = 0; n < NN; ++n) {
0021 par(n, 4, 0) -= std::floor(0.5f * Const::InvPI * (par(n, 4, 0) + Const::PI)) * Const::TwoPI;
0022 }
0023 }
0024
0025 void propagateLineToRMPlex(const MPlexLS& psErr,
0026 const MPlexLV& psPar,
0027 const MPlexHS& msErr,
0028 const MPlexHV& msPar,
0029 MPlexLS& outErr,
0030 MPlexLV& outPar,
0031 const int N_proc);
0032
0033 void propagateHelixToRMPlex(const MPlexLS& inErr,
0034 const MPlexLV& inPar,
0035 const MPlexQI& inChg,
0036 const MPlexQF& msRad,
0037 MPlexLS& outErr,
0038 MPlexLV& outPar,
0039 const int N_proc,
0040 const PropagationFlags pflags,
0041 const MPlexQI* noMatEffPtr = nullptr);
0042
0043 void helixAtRFromIterativeCCSFullJac(const MPlexLV& inPar,
0044 const MPlexQI& inChg,
0045 const MPlexQF& msRad,
0046 MPlexLV& outPar,
0047 MPlexLL& errorProp,
0048 const int N_proc);
0049
0050 void helixAtRFromIterativeCCS(const MPlexLV& inPar,
0051 const MPlexQI& inChg,
0052 const MPlexQF& msRad,
0053 MPlexLV& outPar,
0054 MPlexLL& errorProp,
0055 MPlexQI& outFailFlag,
0056 const int N_proc,
0057 const PropagationFlags pflags);
0058
0059 void propagateHelixToZMPlex(const MPlexLS& inErr,
0060 const MPlexLV& inPar,
0061 const MPlexQI& inChg,
0062 const MPlexQF& msZ,
0063 MPlexLS& outErr,
0064 MPlexLV& outPar,
0065 const int N_proc,
0066 const PropagationFlags pflags,
0067 const MPlexQI* noMatEffPtr = nullptr);
0068
0069 void helixAtZ(const MPlexLV& inPar,
0070 const MPlexQI& inChg,
0071 const MPlexQF& msZ,
0072 MPlexLV& outPar,
0073 MPlexLL& errorProp,
0074 const int N_proc,
0075 const PropagationFlags pflags);
0076
0077 void applyMaterialEffects(const MPlexQF& hitsRl,
0078 const MPlexQF& hitsXi,
0079 const MPlexQF& propSign,
0080 MPlexLS& outErr,
0081 MPlexLV& outPar,
0082 const int N_proc,
0083 const bool isBarrel);
0084
0085 }
0086 #endif