6 <contact>software-tracking@belle2.org</contact>
7 <output>VxdCdcValidationHarvested.root</output>
8 <input>EvtGenSimNoBkg.root</input>
9 <description>This module generates events for the V0 validation.</description>
14 from ROOT
import Belle2
15 from simulation
import add_simulation
16 from tracking
import add_tracking_reconstruction
25 Generate and reconstruct Generic BBar
26 and evaluate the merger performance
28 basf2.set_random_seed(1337)
29 path = basf2.create_path()
31 rootinput = basf2.register_module(
'RootInput')
32 rootinput.param(
'inputFileName',
"../EvtGenSimNoBkg.root")
33 path.add_module(rootinput)
34 path.add_module(
'Gearbox')
36 add_tracking_reconstruction(path, components=[
"CDC",
"SVD"], pruneTracks=
False, prune_temporary_tracks=
False)
41 mctrackmatcher_vxd = basf2.register_module(
'MCRecoTracksMatcher')
42 mctrackmatcher_vxd.param(
'mcRecoTracksStoreArrayName',
'MCRecoTracks')
43 mctrackmatcher_vxd.param(
'prRecoTracksStoreArrayName',
'SVDRecoTracks')
44 mctrackmatcher_vxd.param(
'UseCDCHits',
False)
45 path.add_module(mctrackmatcher_vxd)
48 mctrackmatcher_cdc = basf2.register_module(
'MCRecoTracksMatcher')
49 mctrackmatcher_cdc.param(
'mcRecoTracksStoreArrayName',
'MCRecoTracks')
50 mctrackmatcher_cdc.param(
'prRecoTracksStoreArrayName',
'CDCRecoTracks')
51 mctrackmatcher_cdc.param(
'UsePXDHits',
False)
52 mctrackmatcher_cdc.param(
'UseSVDHits',
False)
53 path.add_module(mctrackmatcher_cdc)
55 path.add_module(VxdCdcMergerHarvester())
58 print(basf2.statistics)
63 Harvester module to extract useful information from VXD-CDC track merging.
70 HarvestingModule.__init__(self, foreach=
"MCParticles", output_file_name=
"../VxdCdcValidationHarvested.root")
79 def pick(self, mc_particle):
80 """Select the MCParticle if it is related to an MCRecoTrack"""
83 mc_track = mc_particle.getRelatedFrom(
"MCRecoTracks")
89 def peel(self, mc_particle):
91 Extract the information.
96 mc_track = mc_particle.getRelatedFrom(
"MCRecoTracks")
98 mc_nhits = mc_track.getNumberOfTotalHits()
99 mc_pt = mc_particle.getMomentum().Pt()
100 mc_theta = mc_particle.getMomentum().Theta()
110 this_best_track_merged = self.
mc_track_matcher.getRelatedPRRecoTrack(mc_track)
118 if this_best_track_merged:
119 if this_best_track_cdc:
120 cdc_hits = this_best_track_cdc.getNumberOfTotalHits()
121 if this_best_track_vxd:
122 vxd_hits = this_best_track_vxd.getNumberOfTotalHits()
124 merged_hits = vxd_hits + cdc_hits
125 good_merge = merged_hits == this_best_track_merged.getNumberOfTotalHits()
129 "MC_THETA": mc_theta,
130 "MC_NHITS": mc_nhits,
131 "PR_NHITS": merged_hits,
132 "PR_CDC_NHITS": cdc_hits,
133 "PR_VXD_NHITS": vxd_hits,
134 "GOOD_MERGE": good_merge
139 save_tree = refiners.SaveTreeRefiner()
142 if __name__ ==
'__main__':