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