14 <contact>software-tracking@belle2.org</contact>
15 <output>VxdCdcValidationHarvested.root</output>
16 <input>EvtGenSimNoBkg.root</input>
17 <description>This module generates events for the V0 validation.</description>
22 from ROOT
import Belle2
23 from tracking
import add_tracking_reconstruction
30 Generate and reconstruct Generic BBar
31 and evaluate the merger performance
33 basf2.set_random_seed(1337)
34 path = basf2.create_path()
36 rootinput = basf2.register_module(
'RootInput')
37 rootinput.param(
'inputFileName',
"../EvtGenSimNoBkg.root")
38 path.add_module(rootinput)
39 path.add_module(
'Gearbox')
41 add_tracking_reconstruction(path, components=[
"CDC",
"SVD"], pruneTracks=
False, prune_temporary_tracks=
False)
46 mctrackmatcher_vxd = basf2.register_module(
'MCRecoTracksMatcher')
47 mctrackmatcher_vxd.param(
'mcRecoTracksStoreArrayName',
'MCRecoTracks')
48 mctrackmatcher_vxd.param(
'prRecoTracksStoreArrayName',
'SVDRecoTracks')
49 mctrackmatcher_vxd.param(
'UseCDCHits',
False)
50 path.add_module(mctrackmatcher_vxd)
53 mctrackmatcher_cdc = basf2.register_module(
'MCRecoTracksMatcher')
54 mctrackmatcher_cdc.param(
'mcRecoTracksStoreArrayName',
'MCRecoTracks')
55 mctrackmatcher_cdc.param(
'prRecoTracksStoreArrayName',
'CDCRecoTracks')
56 mctrackmatcher_cdc.param(
'UsePXDHits',
False)
57 mctrackmatcher_cdc.param(
'UseSVDHits',
False)
58 path.add_module(mctrackmatcher_cdc)
60 path.add_module(VxdCdcMergerHarvester())
63 print(basf2.statistics)
68 Harvester module to extract useful information from VXD-CDC track merging.
75 HarvestingModule.__init__(self, foreach=
"MCParticles", output_file_name=
"../VxdCdcValidationHarvested.root")
84 def pick(self, mc_particle):
85 """Select the MCParticle if it is related to an MCRecoTrack"""
88 mc_track = mc_particle.getRelatedFrom(
"MCRecoTracks")
94 def peel(self, mc_particle):
96 Extract the information.
101 mc_track = mc_particle.getRelatedFrom(
"MCRecoTracks")
103 mc_nhits = mc_track.getNumberOfTotalHits()
104 mc_pt = mc_particle.getMomentum().Pt()
105 mc_theta = mc_particle.getMomentum().Theta()
109 this_best_track_cdc = self.
mc_track_matcher_cdcmc_track_matcher_cdc.getRelatedPRRecoTrack(mc_track)
110 this_best_track_vxd = self.
mc_track_matcher_vxdmc_track_matcher_vxd.getRelatedPRRecoTrack(mc_track)
115 this_best_track_merged = self.
mc_track_matchermc_track_matcher.getRelatedPRRecoTrack(mc_track)
123 if this_best_track_merged:
124 if this_best_track_cdc:
125 cdc_hits = this_best_track_cdc.getNumberOfTotalHits()
126 if this_best_track_vxd:
127 vxd_hits = this_best_track_vxd.getNumberOfTotalHits()
129 merged_hits = vxd_hits + cdc_hits
130 good_merge = merged_hits == this_best_track_merged.getNumberOfTotalHits()
134 "MC_THETA": mc_theta,
135 "MC_NHITS": mc_nhits,
136 "PR_NHITS": merged_hits,
137 "PR_CDC_NHITS": cdc_hits,
138 "PR_VXD_NHITS": vxd_hits,
139 "GOOD_MERGE": good_merge
144 save_tree = refiners.SaveTreeRefiner()
147 if __name__ ==
'__main__':
Class to provide convenient methods to look up matching information between pattern recognition and M...
mc_track_matcher_vxd
matcher used for the MCTracks from the VXD
mc_track_matcher_cdc
matcher used for the MCTracks from the CDC
def pick(self, mc_particle)
def peel(self, mc_particle)
mc_track_matcher
matcher used for the final MCTrack list