23 return logging.getLogger(__name__)
27 """ Apply tracking to presimulated events or events generated on the fly """
30 description =
"Apply tracking to presimulated events or events generated on the fly."
40 'UseOnlyAxialCDCHits':
False,
41 'UseOnlyBeforeTOP':
True,
42 'UseReassignedHits':
True,
51 """Convert command-line arguments to basf2 argument list"""
54 tracking_argument_group = argument_parser.add_argument_group(
"Tracking setup arguments")
56 tracking_argument_group.add_argument(
62 help=
'Name of the finder module to be evaluated.',)
64 tracking_argument_group.add_argument(
69 help=
'Apply the fitting to the found tracks'
72 return argument_parser
75 """Sets up a path that plays back pregenerated events or generates events
76 based on the properties in the base class."""
82 if 'SetupGenfitExtrapolation' not in path:
84 path.add_module(
'SetupGenfitExtrapolation')
88 utilities.extend_path(path,
90 finder_modules_by_short_name,
91 allow_function_import=
True)
96 matching_coverage = {key: value
for key, value
in tracking_coverage.items()
97 if key
in (
'UsePXDHits',
'UseSVDHits',
'UseCDCHits',
'MinimalEfficiency',
'MinimalPurity')}
99 if "MinimalEfficiency" in tracking_coverage:
100 tracking_coverage.pop(
"MinimalEfficiency")
101 if "MinimalPurity" in tracking_coverage:
102 tracking_coverage.pop(
"MinimalPurity")
105 if 'MCRecoTracksMatcher' not in path:
107 track_finder_mc_truth_module = basf2.register_module(
'TrackFinderMCTruthRecoTracks')
110 mc_track_matcher_module = basf2.register_module(
'MCRecoTracksMatcher')
117 for module
in path.modules():
118 if 'MCRecoTracksMatcher' in module.name():
120 'mcRecoTracksStoreArrayName':
'MCRecoTracks',
121 'MinimalPurity': 0.66,
122 'prRecoTracksStoreArrayName':
"RecoTracks",
125 if 'TrackFinderMCTruthRecoTracks' in module.name():
127 'RecoTracksStoreArrayName':
'MCRecoTracks',
133 gen_fitter_module = basf2.register_module(
'DAFRecoFitter')
134 gen_fitter_module.param({
'pdgCodesToUseForFitting': [13]})
135 path.add_module(gen_fitter_module)
136 trackbuilder = basf2.register_module(
'TrackCreator', pdgCodes=[13])
137 path.add_module(trackbuilder)
142 def add_standard_finder(path):
143 """adds the standard track finding to the path"""
147 for module
in path.modules():
148 if module.type() ==
"Geometry":
149 components = utilities.get_module_param(module,
"components")
153 if 'SetupGenfitExtrapolation' not in path:
154 path.add_module(
'SetupGenfitExtrapolation', energyLossBrems=
False, noiseBrems=
False)
159 def add_cosmics_finder(path):
162 for module
in path.modules():
163 if module.type() ==
"Geometry":
164 components = utilities.get_module_param(module,
"components")
168 if 'SetupGenfitExtrapolation' not in path:
169 path.add_module(
'SetupGenfitExtrapolation', energyLossBrems=
False, noiseBrems=
False)
174 def add_standard_reconstruction(path):
175 import reconstruction
177 for module
in path.modules():
178 if module.type() ==
"Geometry":
179 components = utilities.get_module_param(module,
"components")
185 def add_cosmics_reconstruction(path):
186 import reconstruction
188 for module
in path.modules():
189 if module.type() ==
"Geometry":
190 components = utilities.get_module_param(module,
"components")
196 finder_modules_by_short_name = {
197 'MC':
'TrackFinderMCTruthRecoTracks',
198 'Reconstruction': add_standard_reconstruction,
199 'CosmicsReconstruction': add_cosmics_reconstruction,
200 'TrackFinder': add_standard_finder,
201 'CosmicsTrackFinder': add_cosmics_finder,
202 'TrackFinderVXD': tracking.add_vxd_track_finding_vxdtf2,
203 'TFCDC':
lambda path: tracking.add_cdc_track_finding(path, with_ca=
True),
204 'TFCDC_Cosmics':
lambda path: tracking.add_cdc_cr_track_finding(path),
205 'TFCDC_Global': tracking.add_cdc_track_finding,
206 'TFCDC_Ca':
lambda path: (path.add_module(
'TFCDC_WireHitPreparer',
207 flightTimeEstimation=
"outwards"),
208 path.add_module(
'TFCDC_ClusterPreparer',
209 SuperClusterDegree=3,
210 SuperClusterExpandOverApogeeGap=
True),
211 path.add_module(
'TFCDC_SegmentFinderFacetAutomaton'),
212 path.add_module(
"TFCDC_TrackFinderSegmentPairAutomaton"),
213 path.add_module(
"TFCDC_TrackCreatorSingleSegments",
214 MinimalHitsBySuperLayerId={0: 15}),
215 path.add_module(
'TFCDC_TrackExporter')),
216 'TFCDC_Axial':
lambda path: (path.add_module(
'TFCDC_WireHitPreparer',
217 flightTimeEstimation=
"outwards"),
218 path.add_module(
'TFCDC_ClusterPreparer'),
219 path.add_module(
'TFCDC_AxialTrackFinderLegendre'),
220 path.add_module(
'TFCDC_TrackExporter')),
221 'TFCDC_Segments':
lambda path: (path.add_module(
'TFCDC_WireHitPreparer',
222 flightTimeEstimation=
"outwards"),
223 path.add_module(
'TFCDC_ClusterPreparer'),
224 path.add_module(
'TFCDC_SegmentFinderFacetAutomaton'),
225 path.add_module(
'TFCDC_TrackCreatorSingleSegments',
226 MinimalHitsBySuperLayerId={sl_id: 0
for sl_id
in range(9)}),
227 path.add_module(
'TFCDC_TrackExporter')),
228 'TFCDC_MCSegments':
lambda path: (path.add_module(
'TFCDC_WireHitPreparer',
229 flightTimeEstimation=
"outwards"),
230 path.add_module(
'TFCDC_SegmentCreatorMCTruth'),
231 path.add_module(
'TFCDC_SegmentLinker',
232 segments=
"CDCSegment2DVector",
234 path.add_module(
'TFCDC_TrackCreatorSingleSegments',
235 MinimalHitsBySuperLayerId={sl_id: 0
for sl_id
in range(9)}),
236 path.add_module(
'TFCDC_TrackExporter')),
237 'FirstLoop':
lambda path: path.add_module(
'TFCDC_WireHitPreparer', UseNLoops=1.0),
242 """Generate, simulate and reconstruct events"""
244 generator_module =
'EvtGenInput'
247 """Add track reconstruction to the basf2 path"""
components
By default, do specific components.
def create_argument_parser(self, **kwds)
finder_module
Name of the finder module to be used - can be everything that is accepted by tracking....
dictionary tracking_coverage
States which detectors the finder module covers like as a dictionary like.
bool fit_tracks
By default, do not add the track fitting to the execution.
def add_reconstruction(path, components=None, pruneTracks=True, add_trigger_calculation=True, skipGeometryAdding=False, trackFitHypotheses=None, addClusterExpertModules=True, use_second_cdc_hits=False, add_muid_hits=False, reconstruct_cdst=None, event_abort=default_event_abort, use_random_numbers_for_hlt_prescale=True)
def add_cosmics_reconstruction(path, components=None, pruneTracks=True, skipGeometryAdding=False, eventTimingExtraction=True, addClusterExpertModules=True, merge_tracks=True, use_second_cdc_hits=False, add_muid_hits=False, reconstruct_cdst=False, posttracking=True)
def add_track_finding(path, components=None, reco_tracks="RecoTracks", prune_temporary_tracks=True, use_second_cdc_hits=False, use_mc_truth=False, svd_ckf_mode="VXDTF2_after", add_both_directions=True, use_svd_to_cdc_ckf=True, use_ecl_to_cdc_ckf=False, add_cdcTrack_QI=True, add_vxdTrack_QI=False)
def add_cr_tracking_reconstruction(path, components=None, prune_tracks=False, skip_geometry_adding=False, event_time_extraction=True, merge_tracks=True, use_second_cdc_hits=False)
def add_tracking_reconstruction(path, components=None, pruneTracks=False, skipGeometryAdding=False, mcTrackFinding=False, trackFitHypotheses=None, reco_tracks="RecoTracks", prune_temporary_tracks=True, fit_tracks=True, use_second_cdc_hits=False, skipHitPreparerAdding=False, use_svd_to_cdc_ckf=True, use_ecl_to_cdc_ckf=False, add_cdcTrack_QI=True, add_vxdTrack_QI=False, add_recoTrack_QI=False)