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  MPlexQI& outFailFlag,
40  const int N_proc,
41  const PropagationFlags pflags,
42  const MPlexQI* noMatEffPtr = nullptr);
43 
44  void helixAtRFromIterativeCCSFullJac(const MPlexLV& inPar,
45  const MPlexQI& inChg,
46  const MPlexQF& msRad,
47  MPlexLV& outPar,
48  MPlexLL& errorProp,
49  MPlexQI& outFailFlag,
50  const int N_proc);
51 
52  void helixAtRFromIterativeCCS(const MPlexLV& inPar,
53  const MPlexQI& inChg,
54  const MPlexQF& msRad,
55  MPlexLV& outPar,
56  MPlexLL& errorProp,
57  MPlexQI& outFailFlag,
58  const int N_proc,
59  const PropagationFlags pflags);
60 
61  void propagateHelixToZMPlex(const MPlexLS& inErr,
62  const MPlexLV& inPar,
63  const MPlexQI& inChg,
64  const MPlexQF& msZ,
65  MPlexLS& outErr,
66  MPlexLV& outPar,
67  MPlexQI& outFailFlag,
68  const int N_proc,
69  const PropagationFlags pflags,
70  const MPlexQI* noMatEffPtr = nullptr);
71 
72  void helixAtZ(const MPlexLV& inPar,
73  const MPlexQI& inChg,
74  const MPlexQF& msZ,
75  MPlexLV& outPar,
76  MPlexLL& errorProp,
77  MPlexQI& outFailFlag,
78  const int N_proc,
79  const PropagationFlags pflags);
80 
81  void applyMaterialEffects(const MPlexQF& hitsRl,
82  const MPlexQF& hitsXi,
83  const MPlexQF& propSign,
84  MPlexLS& outErr,
85  MPlexLV& outPar,
86  const int N_proc,
87  const bool isBarrel);
88 
89 } // end namespace mkfit
90 #endif
Matriplex::Matriplex< float, LL, LL, NN > MPlexLL
Definition: Matrix.h:48
Matriplex::Matriplex< float, HH, 1, NN > MPlexHV
Definition: Matrix.h:53
void propagateHelixToZMPlex(const MPlexLS &inErr, const MPlexLV &inPar, const MPlexQI &inChg, const MPlexQF &msZ, MPlexLS &outErr, MPlexLV &outPar, MPlexQI &outFailFlag, const int N_proc, const PropagationFlags pflags, const MPlexQI *noMatEffPtr)
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, MPlexQI &outFailFlag, 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:51
void squashPhiMPlex(MPlexLV &par, const int N_proc)
constexpr float PI
Definition: Config.h:50
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 helixAtZ(const MPlexLV &inPar, const MPlexQI &inChg, const MPlexQF &msZ, MPlexLV &outPar, MPlexLL &errorProp, MPlexQI &outFailFlag, const int N_proc, const PropagationFlags pflags)
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:55