95 """Event method of the module"""
96 tracks = Belle2.PyStoreArray("TrackCands")
97 cdc_hits = Belle2.PyStoreArray("CDCHits")
98 mc_particles = Belle2.PyStoreArray("MCParticles")
100 cdc_hit_lookup = self.cdc_hit_look_up
101 cdc_hit_lookup.fill()
103 mc_matcher_lookup = self.mc_matcher_lookup
105 self.number_of_tracks += tracks.getEntries()
108 # Store all Hit IDs and reset the track
109 hitIDs = track.getHitIDs(Belle2.Const.CDC)
110 # hits = [cdc_hits[i] for i in hitIDs]
113 relation_track_particle = [0] * mc_particles.getEntries()
115 # Now only add those hits which do belong to the track (with MC Info)
117 current_mc_track = cdc_hit_lookup.getMCTrackId(cdc_hits[i])
118 if 0 <= current_mc_track:
119 relation_track_particle[current_mc_track] += 1
121 should_belong_to_track = np.argmax(relation_track_particle)
123 deleted_hits = sum(relation_track_particle) - relation_track_particle[should_belong_to_track]
125 # plane_IDs_of_good_hits = []
126 for i, hitID in enumerate(hitIDs):
127 current_mc_track = cdc_hit_lookup.getMCTrackId(cdc_hits[hitID])
128 if current_mc_track == should_belong_to_track:
129 good_hits.append(hitID)
131 self.number_of_deleted_hits += deleted_hits
132 self.number_of_hits += len(hitIDs)
134 # Set the position and momentum
135 mc_track = mc_matcher_lookup.getAnyChargeMatchedMCRecoTrack(track)
138 mc_trajectory = Belle2.TrackFindingCDC.CDCTrajectory3D(Belle2.TrackFindingCDC.Vector3D(mc_track.getPosSeed()),
139 Belle2.TrackFindingCDC.Vector3D(mc_track.getMomSeed()),
140 mc_track.getChargeSeed())
141 startingPosition = Belle2.TrackFindingCDC.Vector3D(track.getPosSeed().X(), track.getPosSeed().Y(), 0)
142 sStartingPosition = mc_trajectory.calcArcLength2D(startingPosition)
143 zStartingPosition = mc_trajectory.getTrajectorySZ().mapSToZ(sStartingPosition)
144 mc_trajectory.setLocalOrigin(Belle2.TrackFindingCDC.Vector3D(startingPosition.xy(), zStartingPosition))
146 # pos = ROOT.TVector3(
147 # mc_trajectory.getSupport().x(), mc_trajectory.getSupport().y(), mc_trajectory.getSupport().z())
148 # mom = ROOT.TVector3(
149 # mc_trajectory.getMom3DAtSupport().x(),
150 # mc_trajectory.getMom3DAtSupport().y(),
151 # mc_trajectory.getMom3DAtSupport().z())
153 # track.setPosMomSeedAndPdgCode(pos, mom , int(mc_track.getChargeSeed() * 211))
154 track.setPdgCode(int(track.getChargeSeed() * 211))
158 track.setPdgCode(int(track.getChargeSeed() * 211))
161 """Termination signal at the end of the event processing"""
162 print(f"Number of tracks in total: {int(self.number_of_tracks)}")
163 print(f"Number of hits in total: {int(self.number_of_hits)}")
164 print(f"Number of deleted hits: {int(self.number_of_deleted_hits)}")
166 print(f"Number of deleted hits per track: {1.0 * self.number_of_deleted_hits / self.number_of_tracks:f}")
167 print(f"Ratio of deleted hits: {100.0 * self.number_of_deleted_hits / self.number_of_hits:f}")