CMS 3D CMS Logo

PropagationMPlex.h
Go to the documentation of this file.
1 #ifndef RecoTracker_MkFitCore_src_PropagationMPlex_h
2 #define RecoTracker_MkFitCore_src_PropagationMPlex_h
3 
4 #include "Matrix.h"
5 
6 namespace mkfit {
7 
8  inline void squashPhiMPlex(MPlexLV& par, const int N_proc) {
9 #pragma omp simd
10  for (int n = 0; n < NN; ++n) {
11  if (par(n, 4, 0) >= Const::PI)
12  par(n, 4, 0) -= Const::TwoPI;
13  if (par(n, 4, 0) < -Const::PI)
14  par(n, 4, 0) += Const::TwoPI;
15  }
16  }
17 
18  inline void squashPhiMPlexGeneral(MPlexLV& par, const int N_proc) {
19 #pragma omp simd
20  for (int n = 0; n < NN; ++n) {
21  par(n, 4, 0) -= std::floor(0.5f * Const::InvPI * (par(n, 4, 0) + Const::PI)) * Const::TwoPI;
22  }
23  }
24 
25  void propagateLineToRMPlex(const MPlexLS& psErr,
26  const MPlexLV& psPar,
27  const MPlexHS& msErr,
28  const MPlexHV& msPar,
29  MPlexLS& outErr,
30  MPlexLV& outPar,
31  const int N_proc);
32 
33  void propagateHelixToRMPlex(const MPlexLS& inErr,
34  const MPlexLV& inPar,
35  const MPlexQI& inChg,
36  const MPlexQF& msRad,
37  MPlexLS& outErr,
38  MPlexLV& outPar,
39  const int N_proc,
40  const PropagationFlags pflags,
41  const MPlexQI* noMatEffPtr = nullptr);
42 
43  void helixAtRFromIterativeCCSFullJac(const MPlexLV& inPar,
44  const MPlexQI& inChg,
45  const MPlexQF& msRad,
46  MPlexLV& outPar,
47  MPlexLL& errorProp,
48  const int N_proc);
49 
50  void helixAtRFromIterativeCCS(const MPlexLV& inPar,
51  const MPlexQI& inChg,
52  const MPlexQF& msRad,
53  MPlexLV& outPar,
54  MPlexLL& errorProp,
55  MPlexQI& outFailFlag,
56  const int N_proc,
57  const PropagationFlags pflags);
58 
59  void propagateHelixToZMPlex(const MPlexLS& inErr,
60  const MPlexLV& inPar,
61  const MPlexQI& inChg,
62  const MPlexQF& msZ,
63  MPlexLS& outErr,
64  MPlexLV& outPar,
65  const int N_proc,
66  const PropagationFlags pflags,
67  const MPlexQI* noMatEffPtr = nullptr);
68 
69  void helixAtZ(const MPlexLV& inPar,
70  const MPlexQI& inChg,
71  const MPlexQF& msZ,
72  MPlexLV& outPar,
73  MPlexLL& errorProp,
74  const int N_proc,
75  const PropagationFlags pflags);
76 
77  void applyMaterialEffects(const MPlexQF& hitsRl,
78  const MPlexQF& hitsXi,
79  const MPlexQF& propSign,
80  MPlexLS& outErr,
81  MPlexLV& outPar,
82  const int N_proc,
83  const bool isBarrel);
84 
85 } // end namespace mkfit
86 #endif
Matriplex::Matriplex< float, LL, LL, NN > MPlexLL
Definition: Matrix.h:48
Matriplex::Matriplex< float, HH, 1, NN > MPlexHV
Definition: Matrix.h:53
void propagateLineToRMPlex(const MPlexLS &psErr, const MPlexLV &psPar, const MPlexHS &msErr, const MPlexHV &msPar, MPlexLS &outErr, MPlexLV &outPar, const int N_proc)
void propagateHelixToRMPlex(const MPlexLS &inErr, const MPlexLV &inPar, const MPlexQI &inChg, const MPlexQF &msRad, MPlexLS &outErr, MPlexLV &outPar, const int N_proc, const PropagationFlags pflags, const MPlexQI *noMatEffPtr)
Matriplex::Matriplex< float, LL, 1, NN > MPlexLV
Definition: Matrix.h:49
constexpr float TwoPI
Definition: Config.h:43
void squashPhiMPlex(MPlexLV &par, const int N_proc)
constexpr float PI
Definition: Config.h:42
constexpr Matriplex::idx_t NN
Definition: Matrix.h:43
void helixAtRFromIterativeCCSFullJac(const MPlexLV &inPar, const MPlexQI &inChg, const MPlexQF &msRad, MPlexLV &outPar, MPlexLL &errorProp, const int N_proc)
double f[11][100]
void propagateHelixToZMPlex(const MPlexLS &inErr, const MPlexLV &inPar, const MPlexQI &inChg, const MPlexQF &msZ, MPlexLS &outErr, MPlexLV &outPar, const int N_proc, const PropagationFlags pflags, const MPlexQI *noMatEffPtr)
Matriplex::Matriplex< int, 1, 1, NN > MPlexQI
Definition: Matrix.h:66
Matriplex::Matriplex< float, 1, 1, NN > MPlexQF
Definition: Matrix.h:65
void squashPhiMPlexGeneral(MPlexLV &par, const int N_proc)
void applyMaterialEffects(const MPlexQF &hitsRl, const MPlexQF &hitsXi, const MPlexQF &propSign, MPlexLS &outErr, MPlexLV &outPar, const int N_proc, const bool isBarrel)
Matriplex::MatriplexSym< float, HH, NN > MPlexHS
Definition: Matrix.h:54
Matriplex::MatriplexSym< float, LL, NN > MPlexLS
Definition: Matrix.h:50
void helixAtRFromIterativeCCS(const MPlexLV &inPar, const MPlexQI &inChg, const MPlexQF &msRad, MPlexLV &outPar, MPlexLL &errorProp, MPlexQI &outFailFlag, const int N_proc, const PropagationFlags pflags)
constexpr float InvPI
Definition: Config.h:47
void helixAtZ(const MPlexLV &inPar, const MPlexQI &inChg, const MPlexQF &msZ, MPlexLV &outPar, MPlexLL &errorProp, const int N_proc, const PropagationFlags pflags)