564def runDataPrepChain():
565 from AthenaConfiguration.AllConfigFlags import initConfigFlags
566 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
567
568 FinalDataPrepTrackChainxAODTracksKeyPrefix="FPGA"
569
570 flags = initConfigFlags()
571 from InDetConfig.ConfigurationHelpers import OnlyTrackingPreInclude
572 OnlyTrackingPreInclude(flags)
573
574
575 flags.Concurrency.NumThreads=1
576 flags.Concurrency.NumConcurrentEvents=1
577 flags.Concurrency.NumProcs=0
578 flags.Scheduler.ShowDataDeps=False
579 flags.Scheduler.CheckDependencies=True
580 flags.Debug.DumpEvtStore=False
581
582 from AthenaConfiguration.TestDefaults import defaultConditionsTags
583 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
584
585
586
587 flags.fillFromArgs()
588 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
589 log.info("wrapperFile is string, converting to list")
590 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
591 flags.Input.Files = lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
592
593 flags.Tracking.writeExtendedSi_PRDInfo = not flags.Trigger.FPGATrackSim.writeOfflPRDInfo
594
595
596 flags = FPGATrackSimRegionFlagCfg(flags)
597
598 flags.lock()
599 flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Tracking.ITkActsPass", keepOriginal=True)
600
601 acc=MainServicesCfg(flags)
602 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
603 acc.addService(CompFactory.THistSvc(Output = [f"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
604 acc.addService(CompFactory.THistSvc(Output = ["FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
605
606
607 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometrySvcCfg
608 acc.merge(ActsTrackingGeometrySvcCfg(flags))
609 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
610 acc.merge(ActsGeometryContextAlgCfg(flags))
611
612 acc.merge(FPGATrackSimDataPrepSetup(flags))
613
614
615 acc.merge(FPGATrackSimDataPrepAlgCfg(flags))
616
617 if flags.Trigger.FPGATrackSim.doEDMConversion:
618 acc.merge(FPGAConversionAlgCfg(flags, name = 'FPGAConversionAlg', stage = '_1st', doActsTrk=False, doSP = False))
619
620
621 from ActsConfig.ActsSpacePointFormationConfig import ActsPixelSpacePointFormationAlgCfg
622 acc.merge(ActsPixelSpacePointFormationAlgCfg(flags,name="FPGAActsPixelSpacePointFormationAlg",
623 **{'PixelClusters':"xAODPixelClustersFromFPGACluster",
624 'PixelSpacePoints':"xAODPixelSpacePointsFromFPGA"}))
625
626 if flags.Trigger.FPGATrackSim.writeToAOD:
627 acc.merge(WriteToAOD(flags,
628 stage = '_1st',
629 finalTrackParticles=f"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
630
631
632 from FPGATrackSimReporting.FPGATrackSimReportingConfig import FPGATrackSimReportingCfg
633 acc.merge(FPGATrackSimReportingCfg(flags,stage="_1st",
634 perEventReports = (flags.Trigger.FPGATrackSim.sampleType != 'skipTruth'),
635 isDataPrep=True))
636
637
638 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
639 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig import FPGAOutputValidationCfg
640 acc.merge(FPGAOutputValidationCfg(flags, **{'pixelKeys' : ["xAODPixelClustersFromFPGACluster","ITkPixelClusters"],
641 'stripKeys':["xAODStripClustersFromFPGACluster","ITkStripClusters"],
642 'doDiffHistograms':True,
643 'matchByID' : True}))
644
645 acc.store(open('AnalysisConfig.pkl','wb'))
646
647 statusCode = acc.run(flags.Exec.MaxEvents)
648 assert statusCode.isSuccess() is True, "Application execution did not succeed"
649
650