187 def peel(self, local_track_cand):
188 """ Extract the information from the segments. """
194 is_background = mc_track_matcher_local.isBackgroundPRRecoTrack(local_track_cand)
195 is_ghost = mc_track_matcher_local.isGhostPRRecoTrack(local_track_cand)
196 is_matched = mc_track_matcher_local.isAnyChargeMatchedPRRecoTrack(local_track_cand)
197 is_clone = mc_track_matcher_local.isAnyChargeClonePRRecoTrack(local_track_cand)
198 is_clone_or_matched = is_matched
or is_clone
199 hit_purity = abs(mc_track_matcher_local.getRelatedPurity(local_track_cand))
202 first_cdc_hit_id = local_track_cand.getHitIDs(Belle2.Const.CDC)[0]
203 first_cdc_hit = cdc_hits[first_cdc_hit_id]
204 is_stereo = first_cdc_hit.getISuperLayer() % 2 == 1
205 superlayer_of_segment = first_cdc_hit.getISuperLayer()
208 hit_purity_of_partner = np.NaN
209 hit_efficiency_of_partner = np.NaN
211 mc_track_dist = np.NaN
212 number_of_new_hits = local_track_cand.getNHits()
213 number_of_hits = local_track_cand.getNHits()
214 number_of_hits_in_same_superlayer = np.NaN
215 partner_has_stereo_information = np.NaN
217 if is_clone_or_matched:
218 related_mc_track_cand = mc_track_matcher_local.getRelatedMCRecoTrack(local_track_cand)
219 has_partner = (mc_track_matcher_legendre.isAnyChargeMatchedMCRecoTrack(related_mc_track_cand)
or
220 mc_track_matcher_legendre.isAnyChargeMergedMCRecoTrack(related_mc_track_cand))
221 mc_track_pt = related_mc_track_cand.getMomSeed().Pt()
222 mc_track_dist = related_mc_track_cand.getPosSeed().Mag()
224 partner_legendre_track_cand = mc_track_matcher_legendre.getRelatedPRRecoTrack(related_mc_track_cand)
225 hit_purity_of_partner = abs(mc_track_matcher_legendre.getRelatedPurity(partner_legendre_track_cand))
226 hit_efficiency_of_partner = abs(mc_track_matcher_legendre.getRelatedEfficiency(related_mc_track_cand))
229 legendre_hits = set(list(partner_legendre_track_cand.getHitIDs()))
230 local_hits = set(list(local_track_cand.getHitIDs()))
232 local_hits_new = local_hits - legendre_hits
233 number_of_new_hits = len(local_hits_new)
236 partner_has_stereo_information = 0
237 number_of_hits_in_same_superlayer = 0
238 for cdc_hit_ID
in legendre_hits:
239 cdc_hit = cdc_hits[cdc_hit_ID]
240 if cdc_hit.getISuperLayer() == superlayer_of_segment:
241 number_of_hits_in_same_superlayer += 1
243 if cdc_hit.getISuperLayer() % 2 == 1:
244 partner_has_stereo_information = 1
246 return dict(superlayer_of_segment=superlayer_of_segment,
247 mc_track_dist=mc_track_dist,
248 is_background=is_background,
250 is_matched=is_matched,
252 is_clone_or_matched=is_clone_or_matched,
254 mc_track_pt=mc_track_pt,
255 hit_purity=hit_purity,
256 has_partner=has_partner,
257 hit_purity_of_partner=hit_purity_of_partner,
258 hit_efficiency_of_partner=hit_efficiency_of_partner,
259 number_of_new_hits=number_of_new_hits,
260 number_of_hits=number_of_hits,
261 number_of_hits_in_same_superlayer=number_of_hits_in_same_superlayer,
262 partner_has_stereo_information=partner_has_stereo_information)