1 #ifndef RecoTracker_MkFitCore_src_MkFinder_h 2 #define RecoTracker_MkFitCore_src_MkFinder_h 23 class IterationParams;
24 class IterationLayerConfig;
44 using MPlexHitIdx = Matriplex::Matriplex<int, MPlexHitIdxMax, 1, NN>;
45 using MPlexQHoT = Matriplex::Matriplex<HitOnTrack, 1, 1, NN>;
56 const std::vector<bool> *ihm,
71 const std::vector<int> &idxs,
85 const std::vector<UpdateIndices> &idxs,
92 const std::vector<std::pair<int, IdxChi2List>> &idxs,
100 std::vector<Track> &
tracks,
const std::vector<int> &idxs,
int beg,
int end,
bool outputProp)
const;
103 const int iO = outputProp ?
iP :
iC;
108 std::vector<Track> &
tracks,
const std::vector<int> &idxs,
int beg,
int end,
bool outputProp)
const {
109 const int iO = outputProp ?
iP :
iC;
110 for (
int i = beg, imp = 0;
i <
end; ++
i, ++imp) {
124 const float invpt,
const float theta,
float &min_dq,
float &max_dq,
float &min_dphi,
float &max_dphi);
136 std::vector<std::vector<TrackCand>> &tmp_candidates,
153 void copyOutParErr(std::vector<CombCandidate> &seed_cand_vec,
int N_proc,
bool outputProp)
const;
167 bool chiDebug =
false);
172 bool chiDebug =
false);
180 m_Err[tslot].copyIn(mslot,
trk.errors().Array());
181 m_Par[tslot].copyIn(mslot,
trk.parameters().Array());
197 m_Err[tslot].copyOut(mslot,
trk.errors_nc().Array());
198 m_Par[tslot].copyOut(mslot,
trk.parameters_nc().Array());
209 m_Err[tslot].copyIn(mslot,
trk.errors().Array());
210 m_Par[tslot].copyIn(mslot,
trk.parameters().Array());
229 m_Err[tslot].copyOut(mslot,
trk.errors_nc().Array());
230 m_Par[tslot].copyOut(mslot,
trk.parameters_nc().Array());
253 int &n_tot_hits =
m_NHits(mslot, 0, 0);
262 }
else if (
index == -1) {
274 }
else if (
index == -2) {
void copy_in(const Track &trk, const int mslot, const int tslot)
static constexpr int MPlexHitIdxMax
const IterationLayerConfig * m_iteration_layer_config
void chi2OfLoadedHit(int N_proc, const FindingFoos &fnd_foos)
const HitOnTrack * m_HoTArr[NN]
void inputOverlapHits(const LayerOfHits &layer_of_hits, const std::vector< UpdateIndices > &idxs, int beg, int end)
void copy_out(Track &trk, const int mslot, const int tslot) const
void packModuleNormDirPnt(const LayerOfHits &layer_of_hits, int hit_cnt, MPlexHV &norm, MPlexHV &dir, MPlexHV &pnt, int N_proc) const
void outputTracksAndHitIdx(std::vector< Track > &tracks, int beg, int end, bool outputProp) const
HitOnTrack m_HoTArrs[NN][Config::nMaxTrkHits]
void inputTracksAndHitIdx(const std::vector< Track > &tracks, int beg, int end, bool inputProp)
void bkFitInputTracks(TrackVec &cands, int beg, int end)
Matriplex::Matriplex< float, HH, 1, NN > MPlexHV
void selectHitIndices(const LayerOfHits &layer_of_hits, const int N_proc, bool fill_binsearch_only=false)
void setup(const PropagationConfig &pc, const IterationConfig &ic, const IterationParams &ip, const IterationLayerConfig &ilc, const SteeringParams &sp, const std::vector< bool > *ihm, const Event *ev, int region, bool infwd)
void bkFitPropTracksToPCA(const int N_proc)
const IterationConfig * m_iteration_config
void inputTracksAndHits(const std::vector< CombCandidate > &tracks, const LayerOfHits &layer_of_hits, const std::vector< UpdateIndices > &idxs, int beg, int end, bool inputProp)
void add_hit(const int mslot, int index, int layer)
UpdateIndices(int si, int ci, int hi, int oi)
void copy_out(TrackCand &trk, const int mslot, const int tslot) const
const IterationParams * m_iteration_params
void findCandidates(const LayerOfHits &layer_of_hits, std::vector< std::vector< TrackCand >> &tmp_candidates, const int offset, const int N_proc, const FindingFoos &fnd_foos)
const PropagationConfig * m_prop_config
int num_all_minus_one_hits(const int mslot) const
void outputNonStoppedTracksAndHitIdx(std::vector< Track > &tracks, const std::vector< int > &idxs, int beg, int end, bool outputProp) const
constexpr Matriplex::idx_t NN
TrackBase::Status m_TrkStatus[NN]
void setup_bkfit(const PropagationConfig &pc, const SteeringParams &sp, const Event *ev)
LH
angular window limits for traco
Matriplex::Matriplex< int, MPlexHitIdxMax, 1, NN > MPlexHitIdx
MPlexQI m_NTailMinusOneHits
void begin_layer(const LayerOfHits &layer_of_hits)
Matriplex::Matriplex< int, 1, 1, NN > MPlexQI
TrackCand * m_TrkCand[NN]
void updateWithLoadedHit(int N_proc, const LayerOfHits &layer_of_hits, const FindingFoos &fnd_foos)
void selectHitIndicesV2(const LayerOfHits &layer_of_hits, const int N_proc)
std::vector< Track > TrackVec
CombCandidate * m_CombCand[NN]
Matriplex::Matriplex< float, 1, 1, NN > MPlexQF
void bkFitFitTracks(const EventOfHits &eventofhits, const SteeringParams &st_par, const int N_proc, bool chiDebug=false)
const SteeringParams * m_steering_params
Matriplex::MatriplexSym< float, HH, NN > MPlexHS
void bkFitOutputTracks(TrackVec &cands, int beg, int end, bool outputProp)
void bkFitFitTracksBH(const EventOfHits &eventofhits, const SteeringParams &st_par, const int N_proc, bool chiDebug=false)
void copyOutParErr(std::vector< CombCandidate > &seed_cand_vec, int N_proc, bool outputProp) const
int num_inside_minus_one_hits(const int mslot) const
void findCandidatesCloneEngine(const LayerOfHits &layer_of_hits, CandCloner &cloner, const int offset, const int N_proc, const FindingFoos &fnd_foos)
void copy_in(const TrackCand &trk, const int mslot, const int tslot)
MPlexQI m_NInsideMinusOneHits
HitOnTrack bestHitLastHoT(int itrack) const
const std::vector< bool > * m_iteration_hit_mask
Matriplex::Matriplex< HitOnTrack, 1, 1, NN > MPlexQHoT
float getHitSelDynamicChi2Cut(const int itrk, const int ipar)
const HoTNode * m_HoTNodeArr[NN]
WSR_Result m_XWsrResult[NN]
void getHitSelDynamicWindows(const float invpt, const float theta, float &min_dq, float &max_dq, float &min_dphi, float &max_dphi)
constexpr int nMaxTrkHits
void outputTrackAndHitIdx(Track &track, int itrack, bool outputProp) const
void print_par_err(int corp, int mslot) const
void addBestHit(const LayerOfHits &layer_of_hits, const int N_proc, const FindingFoos &fnd_foos)