6 from ROOT
import Belle2
17 Harvester retrieving event level information of reconstructed recorded data.
22 pxd_clusters_name='PXDClusters',
23 pxd_spacepoints_name="PXDSpacePoints",
24 svd_clusters_name="SVDClusters",
25 svd_spacepoints_name="SVDSpacePoints",
26 cdc_hits_name="CDCHits",
27 reco_tracks_name="RecoTracks",
28 cdc_reco_tracks_name="CDCRecoTracks",
29 svd_cdc_reco_tracks_name="SVDCDCRecoTracks",
30 svd_reco_tracks_name="SVDRecoTracks",
31 pxd_reco_tracks_name="PXDRecoTracks"
33 """Expecting a name for the output file"""
34 super(EventInfoHarvester, self).
__init__(foreach=
'EventMetaData',
35 output_file_name=output_file_name,
60 def peel(self, event_meta_data):
61 """Extract and store counts of *RecoTracks' and hits, clusters, spacepoints"""
63 event_crops = peelers.peel_event_info(event_meta_data)
66 event_level_tracking_info_crops = peelers.peel_event_level_tracking_info(event_level_tracking_info)
68 number_of_hits = dict(
76 number_of_tracks = dict(
84 module_list = [
"SegmentNetworkProducer",
"TrackFinderVXDCellOMat"]
85 module_stats = peelers.peel_module_statistics(module_list)
87 return dict(**event_crops,
88 **event_level_tracking_info_crops,
95 save_tree = refiners.SaveTreeRefiner()
100 Harvester retrieving track level information of reconstructed recorded data.
104 reco_tracks_name="RecoTracks",
105 svd_cdc_reco_tracks_name="SVDCDCRecoTracks",
106 svd_reco_tracks_name="SVDRecoTracks",
107 sp_track_cands_name="SPTrackCands"
109 """Expecting a name for the output file and the name of the RecoTracks StoreArray
110 to operate on. The latter defaults to 'RecoTracks'"""
111 super(TrackInfoHarvester, self).
__init__(foreach=reco_tracks_name,
112 output_file_name=output_file_name)
122 """Extract and store information about each RecoTrack"""
125 event_crops = peelers.peel_event_info(event_meta_data)
128 store_array_info = peelers.peel_store_array_info(reco_track)
131 reco_track_hit_content = peelers.peel_reco_track_hit_content(reco_track)
132 reco_track_seed = peelers.peel_reco_track_seed(reco_track)
133 fit_status = peelers.peel_fit_status(reco_track)
136 related_belle2_track = reco_track.getRelated(
"Tracks")
137 if related_belle2_track:
138 track_fit_status = peelers.peel_track_fit_result(
139 related_belle2_track.getTrackFitResultWithClosestMass(Belle2.Const.pion))
141 track_fit_status = peelers.peel_track_fit_result(
None)
143 vxdtf2_was_involved =
False
145 if svd_cdc_reco_track:
150 vxdtf2_was_involved =
True
152 return dict(**reco_track_hit_content,
157 vxdtf2_was_involved=vxdtf2_was_involved,
162 save_tree = refiners.SaveTreeRefiner()
167 Harvester retrieving hit level information of reconstructed recorded data.
170 def __init__(self, output_file_name, reco_tracks_name="RecoTracks"):
171 """Expecting a name for the output file and the name of the RecoTracks StoreArray
172 to operate on. The latter dafaults to 'RecoTracks'"""
173 super(HitInfoHarvester, self).
__init__(foreach=reco_tracks_name,
174 output_file_name=output_file_name)
177 """Extract and store information about each RecoTrack's hits"""
181 event_crops = peelers.peel_event_info(event_meta_data)
184 store_array_info = peelers.peel_store_array_info(reco_track)
187 for hit_info
in reco_track.getRelationsWith(
"RecoHitInformations"):
188 layer = np.float(
"nan")
189 if hit_info.getTrackingDetector() == Belle2.RecoHitInformation.c_SVD:
190 hit = hit_info.getRelated(
"SVDClusters")
191 layer = hit.getSensorID().getLayerNumber()
192 if hit_info.getTrackingDetector() == Belle2.RecoHitInformation.c_PXD:
193 hit = hit_info.getRelated(
"PXDClusters")
194 layer = hit.getSensorID().getLayerNumber()
195 if hit_info.getTrackingDetector() == Belle2.RecoHitInformation.c_CDC:
196 hit = hit_info.getRelated(
"CDCHits")
197 layer = hit.getISuperLayer()
199 if hit_info.useInFit()
and reco_track.hasTrackFitStatus():
200 track_point = reco_track.getCreatedTrackPoint(hit_info)
201 fitted_state = track_point.getFitterInfo()
204 res_info = fitted_state.getResidual()
205 res = np.sqrt(res_info.getState().Norm2Sqr())
207 yield dict(**store_array_info,
210 tracking_detector=hit_info.getTrackingDetector(),
211 use_in_fit=hit_info.useInFit(),
214 except BaseException:
218 save_tree = refiners.SaveTreeRefiner()