14 printf(
"MkFitter alignment check:\n");
24 for (
int i = 0;
i <
NN; ++
i) {
31 for (
int hi = 0;
hi < end_hit; ++
hi) {
40 for (
int hi = 0;
hi < end_hit; ++
hi) {
51 const std::vector<HitVec>& layerHits,
61 for (
int i = beg;
i < end; ++
i, ++itrack) {
64 m_Err[
iC].copyIn(itrack,
trk.errors().Array());
65 m_Par[
iC].copyIn(itrack,
trk.parameters().Array());
75 const int hidx =
trk.getHitIdx(
hi);
79 const Hit&
hit = layerHits[
hi][hidx];
87 const std::vector<LayerOfHits>& layerHits,
97 for (
int i = beg;
i < end; ++
i) {
103 m_Err[
iC].copyIn(itrack,
trk.errors().Array());
104 m_Par[
iC].copyIn(itrack,
trk.parameters().Array());
111 const int hidx =
trk.getHitIdx(
hi);
112 const int hlyr =
trk.getHitLyr(
hi);
113 const Hit&
hit = layerHits[hlyr].refHit(hidx);
124 const std::vector<HitVec>& layerHits,
134 for (
int i = beg;
i < end; ++
i) {
135 int itrack =
i - beg;
152 for (
int i = beg;
i < end; ++
i) {
153 const int hidx =
tracks[
i].getHitIdx(
hi);
154 const Hit&
hit = layerHits[
hi][hidx];
171 const int iI = inputProp ?
iP :
iC;
174 for (
int i = beg;
i < end; ++
i, ++itrack) {
177 m_Err[iI].copyIn(itrack,
trk.errors().Array());
178 m_Par[iI].copyIn(itrack,
trk.parameters().Array());
200 const int iI = inputProp ?
iP :
iC;
203 for (
int i = beg;
i < end; ++
i, ++itrack) {
210 m_Err[iI].copyIn(itrack,
trk.errors().Array());
211 m_Par[iI].copyIn(itrack,
trk.parameters().Array());
223 const std::vector<Track>&
tracks,
224 const std::vector<HitVec>& layerHits,
233 for (
int i = beg;
i < end; ++
i) {
254 const int hidx =
trk.getHitIdx(
hi);
258 const Hit&
hit = layerHits[
hi][hidx];
284 for (
int i = beg;
i < end; ++
i, ++itrack) {
317 for (
int i = 0;
i < N_proc; ++
i) {
326 if (hidx < 0 || hlyr < 0) {
329 mhp.
addInput(layersohits[hlyr][hidx]);
350 for (
int i = beg;
i < end; ++
i, ++itrack) {
366 const int iO = outputProp ?
iP :
iC;
369 for (
int i = beg;
i < end; ++
i, ++itrack) {
const SVector6 & parameters() const
MPlex< T, D1, D2, N > hypot(const MPlex< T, D1, D2, N > &a, const MPlex< T, D1, D2, N > &b)
void addInput(const D &item)
void outputTracks(std::vector< Track > &tracks, int beg, int end, int iCP) const
MPlexHV m_msPar[Config::nMaxTrkHits]
void kalmanUpdate(const MPlexLS &psErr, const MPlexLV &psPar, const MPlexHS &msErr, const MPlexHV &msPar, MPlexLS &outErr, MPlexLV &outPar, const int N_proc)
void addInput(const T &item)
int countInvalidHits(int itrack, int end_hit) const
void inputSeedsTracksAndHits(const std::vector< Track > &seeds, const std::vector< Track > &tracks, const std::vector< HitVec > &layerHits, int beg, int end)
void fitTracksWithInterSlurp(const std::vector< HitVec > &layersohits, const PropagationFlags &pflags, int N_proc)
void inputTracksAndHitIdx(const std::vector< Track > &tracks, int beg, int end, bool inputProp)
const SMatrixSym66 & errors() const
void inputTracksForFit(const std::vector< Track > &tracks, int beg, int end)
void slurpInTracksAndHits(const std::vector< Track > &tracks, const std::vector< HitVec > &layerHits, int beg, int end)
void align_check(const char *pref, void *adr)
void outputFittedTracksAndHitIdx(std::vector< Track > &tracks, int beg, int end, bool outputProp) const
void pack(TM &mplex, int base_offset)
constexpr Matriplex::idx_t NN
void propagateTracksToHitR(const MPlexHV &par, const int N_proc, const PropagationFlags &pf, const MPlexQI *noMatEffPtr=nullptr)
int countValidHits(int itrack, int end_hit) const
portabletest::Array Array
void pack(TMerr &err, TMpar &par)
MPlexQHoT m_HoTArr[Config::nMaxTrkHits]
char data[epos_bytes_allocation]
MPlexHS m_msErr[Config::nMaxTrkHits]
void inputTracksAndHits(const std::vector< Track > &tracks, const std::vector< HitVec > &layerHits, int beg, int end)