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  class PropagationFlags;
9 
10  inline void squashPhiMPlex(MPlexLV& par, const int N_proc) {
11 #pragma omp simd
12  for (int n = 0; n < NN; ++n) {
13  if (n < N_proc) {
14  if (par(n, 4, 0) >= Const::PI)
15  par(n, 4, 0) -= Const::TwoPI;
16  if (par(n, 4, 0) < -Const::PI)
17  par(n, 4, 0) += Const::TwoPI;
18  }
19  }
20  }
21 
22  inline void squashPhiMPlexGeneral(MPlexLV& par, const int N_proc) {
23 #pragma omp simd
24  for (int n = 0; n < NN; ++n) {
25  par(n, 4, 0) -= std::floor(0.5f * Const::InvPI * (par(n, 4, 0) + Const::PI)) * Const::TwoPI;
26  }
27  }
28 
29  void propagateLineToRMPlex(const MPlexLS& psErr,
30  const MPlexLV& psPar,
31  const MPlexHS& msErr,
32  const MPlexHV& msPar,
33  MPlexLS& outErr,
34  MPlexLV& outPar,
35  const int N_proc);
36 
37  void propagateHelixToRMPlex(const MPlexLS& inErr,
38  const MPlexLV& inPar,
39  const MPlexQI& inChg,
40  const MPlexQF& msRad,
41  MPlexLS& outErr,
42  MPlexLV& outPar,
43  MPlexQI& outFailFlag,
44  const int N_proc,
45  const PropagationFlags& pflags,
46  const MPlexQI* noMatEffPtr = nullptr);
47 
48  void helixAtRFromIterativeCCSFullJac(const MPlexLV& inPar,
49  const MPlexQI& inChg,
50  const MPlexQF& msRad,
51  MPlexLV& outPar,
52  MPlexLL& errorProp,
53  MPlexQI& outFailFlag,
54  const int N_proc);
55 
56  void helixAtRFromIterativeCCS(const MPlexLV& inPar,
57  const MPlexQI& inChg,
58  const MPlexQF& msRad,
59  MPlexLV& outPar,
60  MPlexLL& errorProp,
61  MPlexQI& outFailFlag,
62  const int N_proc,
63  const PropagationFlags& pflags);
64 
65  void propagateHelixToZMPlex(const MPlexLS& inErr,
66  const MPlexLV& inPar,
67  const MPlexQI& inChg,
68  const MPlexQF& msZ,
69  MPlexLS& outErr,
70  MPlexLV& outPar,
71  MPlexQI& outFailFlag,
72  const int N_proc,
73  const PropagationFlags& pflags,
74  const MPlexQI* noMatEffPtr = nullptr);
75 
76  void helixAtZ(const MPlexLV& inPar,
77  const MPlexQI& inChg,
78  const MPlexQF& msZ,
79  MPlexLV& outPar,
80  MPlexLL& errorProp,
81  MPlexQI& outFailFlag,
82  const int N_proc,
83  const PropagationFlags& pflags);
84 
85  void helixAtPlane(const MPlexLV& inPar,
86  const MPlexQI& inChg,
87  const MPlexHV& plPnt,
88  const MPlexHV& plNrm,
89  MPlexQF& pathL,
90  MPlexLV& outPar,
91  MPlexLL& errorProp,
92  MPlexQI& outFailFlag,
93  const int N_proc,
94  const PropagationFlags& pflags);
95 
96  void propagateHelixToPlaneMPlex(const MPlexLS& inErr,
97  const MPlexLV& inPar,
98  const MPlexQI& inChg,
99  const MPlexHV& plPnt,
100  const MPlexHV& plNrm,
101  MPlexLS& outErr,
102  MPlexLV& outPar,
103  MPlexQI& outFailFlag,
104  const int N_proc,
105  const PropagationFlags& pflags,
106  const MPlexQI* noMatEffPtr = nullptr);
107 
108  void applyMaterialEffects(const MPlexQF& hitsRl,
109  const MPlexQF& hitsXi,
110  const MPlexQF& propSign,
111  const MPlexHV& plNrm,
112  MPlexLS& outErr,
113  MPlexLV& outPar,
114  const int N_proc);
115 } // end namespace mkfit
116 #endif
void propagateHelixToPlaneMPlex(const MPlexLS &inErr, const MPlexLV &inPar, const MPlexQI &inChg, const MPlexHV &plPnt, const MPlexHV &plNrm, MPlexLS &outErr, MPlexLV &outPar, MPlexQI &outFailFlag, const int N_proc, const PropagationFlags &pflags, const MPlexQI *noMatEffPtr)
Matriplex::Matriplex< float, LL, LL, NN > MPlexLL
Definition: Matrix.h:48
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, 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 applyMaterialEffects(const MPlexQF &hitsRl, const MPlexQF &hitsXi, const MPlexQF &propSign, const MPlexHV &plNrm, MPlexLS &outErr, MPlexLV &outPar, const int N_proc)
Matriplex::Matriplex< float, LL, 1, NN > MPlexLV
Definition: Matrix.h:49
constexpr float TwoPI
Definition: Config.h:8
void squashPhiMPlex(MPlexLV &par, const int N_proc)
constexpr float PI
Definition: Config.h:7
void helixAtZ(const MPlexLV &inPar, const MPlexQI &inChg, const MPlexQF &msZ, MPlexLV &outPar, MPlexLL &errorProp, MPlexQI &outFailFlag, const int N_proc, const PropagationFlags &pflags)
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]
Matriplex::Matriplex< int, 1, 1, NN > MPlexQI
Definition: Matrix.h:72
Matriplex::Matriplex< float, 1, 1, NN > MPlexQF
Definition: Matrix.h:71
void squashPhiMPlexGeneral(MPlexLV &par, const int N_proc)
void helixAtPlane(const MPlexLV &inPar, const MPlexQI &inChg, const MPlexHV &plPnt, const MPlexHV &plNrm, MPlexQF &pathL, MPlexLV &outPar, MPlexLL &errorProp, MPlexQI &outFailFlag, const int N_proc, const PropagationFlags &pflags)
Matriplex::MatriplexSym< float, HH, NN > MPlexHS
Definition: Matrix.h:54
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)
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:12