447def FPGATrackSimDataPrepConnectToFastTracking(flagsIn,FinalTracks="F100-", **kwargs):
448
449 flags = flagsIn.clone()
450
451
452 from ActsConfig.ActsCIFlags import actsWorkflowFlags
453 actsWorkflowFlags(flags)
454
455 flags.Tracking.ActiveConfig.extension=FinalTracks
456 flags.lock()
457
458 flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.ITkMainPass")
459 prefix=flags.Tracking.ActiveConfig.extension
460
461 result = ComponentAccumulator()
462
463
464
465 from ActsConfig.ActsUtilities import extractChildKwargs
466
467
470 kwargs.setdefault('PixelSeedingAlg.InputSpacePoints',['ITkPixelSpacePoints'])
471 kwargs.setdefault('StripSeedingAlg.InputSpacePoints',['ITkStripSpacePoints'])
472
473
474 kwargs.setdefault('TrackFindingAlg.UncalibratedMeasurementContainerKeys',['ITkPixelClusters','ITkStripClusters'])
475
476
477 kwargs.setdefault('PixelClusterToTruthAssociationAlg.Measurements','ITkPixelClusters')
478 kwargs.setdefault('StripClusterToTruthAssociationAlg.Measurements','ITkStripClusters')
479
480
482 from ActsConfig.ActsSeedingConfig import ActsSeedingCfg
483 result.merge(ActsSeedingCfg(flags, **kwargs))
484
485
486 from ActsConfig.ActsTrackFindingConfig import ActsTrackFindingCfg,ActsAmbiguityResolutionCfg
487 result.merge(ActsTrackFindingCfg(flags,**extractChildKwargs(prefix='TrackFindingAlg.', **kwargs)))
488
489
490 if flags.Acts.doAmbiguityResolution:
491 result.merge(ActsAmbiguityResolutionCfg(flags,**extractChildKwargs(prefix='AmbiguityResolutionAlg.',**kwargs)))
492
493
494 acts_tracks=f"{prefix}Tracks" if not flags.Acts.doAmbiguityResolution else f"{prefix}ResolvedTracks"
495
496
498 if(flags.ITk.doTruth):
499 from ActsConfig.ActsTruthConfig import ActsTruthParticleHitCountAlgCfg, ActsPixelClusterToTruthAssociationAlgCfg,ActsStripClusterToTruthAssociationAlgCfg
500 result.merge(ActsPixelClusterToTruthAssociationAlgCfg(flags,
501 name=f"{prefix}PixelClusterToTruthAssociationAlg",
502 InputTruthParticleLinks="xAODTruthLinks",
503 AssociationMapOut=f"{prefix}ITkPixelClustersToTruthParticles",
504 Measurements=kwargs.get('PixelClusterToTruthAssociationAlg.Measurements')))
505
506 result.merge(ActsStripClusterToTruthAssociationAlgCfg(flags,
507 name=f"{prefix}StripClusterToTruthAssociationAlg",
508 InputTruthParticleLinks="xAODTruthLinks",
509 AssociationMapOut=f"{prefix}ITkStripClustersToTruthParticles",
510 Measurements=kwargs.get('StripClusterToTruthAssociationAlg.Measurements')))
511
512 result.merge(ActsTruthParticleHitCountAlgCfg(flags,
513 name=f"{prefix}TruthParticleHitCountAlg",
514 PixelClustersToTruthAssociationMap=f"{prefix}ITkPixelClustersToTruthParticles",
515 StripClustersToTruthAssociationMap=f"{prefix}ITkStripClustersToTruthParticles",
516 TruthParticleHitCountsOut=f"{prefix}TruthParticleHitCounts"))
517
518 from ActsConfig.ActsTruthConfig import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
519 result.merge(ActsTrackToTruthAssociationAlgCfg(flags,
520 name=f"{prefix}TrackToTruthAssociationAlg",
521 PixelClustersToTruthAssociationMap=f"{prefix}ITkPixelClustersToTruthParticles",
522 StripClustersToTruthAssociationMap=f"{prefix}ITkStripClustersToTruthParticles",
523 ACTSTracksLocation=acts_tracks,
524 AssociationMapOut=f"{acts_tracks}ToTruthParticleAssociation"))
525
526 result.merge(ActsTrackFindingValidationAlgCfg(flags,
527 name=f"{prefix}TrackFindingValidationAlg",
528 TrackToTruthAssociationMap=f"{acts_tracks}ToTruthParticleAssociation",
529 TruthParticleHitCounts=f"{prefix}TruthParticleHitCounts"
530 ))
531
533 from ActsConfig.ActsTrackFindingConfig import ActsTrackToTrackParticleCnvAlgCfg
534 result.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, name=f"{prefix}TrackToTrackParticleCnvAlg",
535 ACTSTracksLocation=[acts_tracks],
536 TrackParticlesOutKey=f"{prefix}TrackParticles"))
537 if(flags.ITk.doTruth):
538 from ActsConfig.ActsTruthConfig import ActsTrackParticleTruthDecorationAlgCfg
539 result.merge(ActsTrackParticleTruthDecorationAlgCfg(flags, name=f"{prefix}TrackParticleTruthDecorationAlg",
540 TrackToTruthAssociationMaps=[f"{acts_tracks}ToTruthParticleAssociation"],
541 TrackParticleContainerName=f"{FinalTracks}TrackParticles",
542 TruthParticleHitCounts=f"{prefix}TruthParticleHitCounts",
543 ComputeTrackRecoEfficiency=True))
544
545
546 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
547 from InDetConfig.InDetPrepRawDataToxAODConfig import ITkActsPrepDataToxAODCfg
548 result.merge( ITkActsPrepDataToxAODCfg( flags,
549 PixelMeasurementContainer = "ITkPixelMeasurements_offl",
550 StripMeasurementContainer = "ITkStripMeasurements_offl" ) )
551
552 return result
553