79 EVENT::LCCollection* u_vtx_candidates =
nullptr;
80 EVENT::LCCollection* u_vtxs =
nullptr;
88 for (
int ivtx = 0 ; ivtx < u_vtxs->getNumberOfElements(); ++ivtx) {
97 EVENT::LCCollection* u_vtx_candidates_r =
nullptr;
98 EVENT::LCCollection* u_vtxs_r =
nullptr;
101 u_vtx_candidates_r =
event->getLCCollection(
"UnconstrainedV0Candidates_refit");
103 u_vtxs_r =
event->getLCCollection(
"UnconstrainedV0Vertices_refit");
105 for (
int ivtx = 0 ; ivtx < u_vtxs_r->getNumberOfElements(); ++ivtx) {
115 std::map <int, std::vector<int> > SharedHits;
117 std::map <int, bool> SharedHitsLy0;
118 std::map <int, bool> SharedHitsLy1;
120 for (
int itrack = 0; itrack < tracks->getNumberOfElements();++itrack) {
121 SharedHits[itrack] = {};
122 SharedHitsLy0[itrack] =
false;
123 SharedHitsLy1[itrack] =
false;
129 for (
int itrack = 0; itrack < tracks->getNumberOfElements(); ++itrack) {
132 EVENT::Track* lc_track =
static_cast<EVENT::Track*
>(tracks->getElementAt(itrack));
135 EVENT::LCCollection* gbl_kink_data =
147 EVENT::LCCollection* refitted_tracks_rel =
148 static_cast<EVENT::LCCollection*
>(
event->getLCCollection(
"GBLTrackToGBLTrackRefitRelations"));
151 UTIL::LCRelationNavigator* refitted_tracks_nav =
new UTIL::LCRelationNavigator(refitted_tracks_rel);
155 EVENT::LCObjectVec refitted_tracks_list = refitted_tracks_nav -> getRelatedToObjects(lc_track);
163 EVENT::TrackerHitVec lc_tracker_hits = lc_track->getTrackerHits();
167 for (
int ith = 0; ith<lc_tracker_hits.size();ith++) {
168 IMPL::TrackerHitImpl* lc_th =
static_cast<IMPL::TrackerHitImpl*
>(lc_tracker_hits.at(ith));
177 for (
int jtrack = itrack+1; jtrack < tracks->getNumberOfElements(); ++jtrack) {
179 EVENT::Track* j_lc_track =
static_cast<EVENT::Track*
>(tracks->getElementAt(jtrack));
182 if (std::find(SharedHits[itrack].begin(), SharedHits[itrack].end(),th->
getID()) == SharedHits[itrack].end()) {
183 SharedHits[itrack].push_back(th->
getID());
185 SharedHitsLy0[itrack] =
true;
187 SharedHitsLy1[itrack] =
true;
189 if (std::find(SharedHits[jtrack].begin(), SharedHits[jtrack].end(),th->
getID()) == SharedHits[jtrack].end()) {
190 SharedHits[jtrack].push_back(th->
getID());
192 SharedHitsLy0[jtrack] =
true;
194 SharedHitsLy1[jtrack] =
true;
201 track->setNShared(SharedHits[itrack].size());
202 track->setSharedLy0(SharedHitsLy0[itrack]);
203 track->setSharedLy1(SharedHitsLy1[itrack]);
211 if (refitted_tracks_list.size() < 1)
216 int bestX2index = -999;
218 for (
int irtrk = 0; irtrk<refitted_tracks_list.size(); irtrk++) {
219 EVENT::Track* lc_rfit_track =
static_cast<EVENT::Track*
>(refitted_tracks_list.at(irtrk));
221 bestX2 = (lc_rfit_track->getChi2() / lc_rfit_track->getNdf());
225 if ((lc_rfit_track->getChi2() / lc_rfit_track->getNdf()) < bestX2) {
226 bestX2 = (lc_rfit_track->getChi2() / lc_rfit_track->getNdf());
235 for (
int irtrk = 0; irtrk < refitted_tracks_list.size(); irtrk++) {
237 if (irtrk != bestX2index)
240 EVENT::Track* lc_rfit_track =
static_cast<EVENT::Track*
>(refitted_tracks_list.at(irtrk));
244 EVENT::LCCollection* rfit_gbl_kink_data =
245 static_cast<EVENT::LCCollection*
>(
event->getLCCollection(
"GBLKinkDataRelations_refit"));
247 EVENT::LCCollection* rfit_track_data =
nullptr;
249 EVENT::TrackerHitVec lc_rf_tracker_hits = lc_rfit_track->getTrackerHits();
254 for (
auto lc_rf_tracker_hit : lc_rf_tracker_hits) {
255 mean += lc_rf_tracker_hit->getTime();
257 rfit_track->
setTrackTime(mean / lc_rf_tracker_hits.size());
271 if (fabs(rfit_track->
getZ0()) < fabs(track->getZ0())) {
276 if (rfit_track->
getChi2Ndf() < track->getChi2Ndf()) {