Belle II Software development
testVXDTF2.py
1#!/usr/bin/env python3
2
3
10
11
20
21
22import basf2 as b2
23import argparse
24# Import custom module chain for VXDTF2
25from setup_modules import setup_VXDTF2
26import sys
27
28
29# ---------------------------------------------------------------------------------------
30# Argument parser for input of trained Sector Map.
31arg_parser = argparse.ArgumentParser(description='VXDTF2 application:\
32 Applies trained SecMap on provided data and returns RecoTrackCands.\n\
33 Usage: basf2 testVXDTF2.py -i <inputFileName> -o <outputFileName> -- --secmap <secmapFile>')
34
35arg_parser.add_argument('--secmap', '-s', type=str,
36 help='Inclusion of the root file containing the trained SecMap for the application of the VXDTF2.')
37
38arguments = arg_parser.parse_args(sys.argv[1:])
39secmap_name = arguments.secmap
40
41
42# ---------------------------------------------------------------------------------------
43# Settings
44usePXD = False
45useDisplay = False
46
47performFit = False
48generateTimeSeedAfterFit = False
49
50# Logging and Debug Levels
51b2.set_log_level(b2.LogLevel.ERROR)
52b2.log_to_file('logVXDTF2Execution.log', append=False)
53
54
55# ---------------------------------------------------------------------------------------
56path = b2.create_path()
57
58# Input
59rootInput = b2.register_module('RootInput')
60path.add_module(rootInput)
61
62# Event Info Module
63eventinfoprinter = b2.register_module('EventInfoPrinter')
64path.add_module(eventinfoprinter)
65
66# Gearbox
67gearbox = b2.register_module('Gearbox')
68path.add_module(gearbox)
69
70# Geometry
71geometry = b2.register_module('Geometry')
72geometry.param('components', ['BeamPipe',
73 'MagneticFieldConstant4LimitedRSVD',
74 'PXD',
75 'SVD'])
76path.add_module(geometry)
77
78
79# VXDTF2: Including actual VXDTF2 Modul Chain
80setup_VXDTF2(path=path,
81 use_pxd=usePXD,
82 sec_map_file=secmap_name,
83 overlap_filter='hopfield',
84 quality_estimator='circleFit')
85
86
87if performFit:
88 # This is required for RecoFitter
89 genFitExtrapolation = b2.register_module('SetupGenfitExtrapolation')
90 path.add_module(genFitExtrapolation)
91
92 if not generateTimeSeedAfterFit:
93 timeSeed = b2.register_module('IPTrackTimeEstimator')
94 timeSeed.param('useFittedInformation', False)
95 path.add_module(timeSeed)
96
97 fitter = b2.register_module('DAFRecoFitter')
98 path.add_module(fitter)
99
100 if generateTimeSeedAfterFit:
101 timeSeedAfterFit = b2.register_module('IPTrackTimeEstimator')
102 timeSeedAfterFit.param('useFittedInformation', True)
103 path.add_module(timeSeedAfterFit)
104
105
106output = b2.register_module('RootOutput')
107path.add_module(output)
108
109
110if useDisplay:
111 display = b2.register_module('Display')
112 display.param('showAllPrimaries', True)
113 path.add_module(display)
114
115path.add_module('Progress')
116b2.process(path)
117print(b2.statistics)