diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py index 5d64658e51e1f5003e97685aaa801c683140d07e..51d8b9090763ace63a9d5d95fd00a48863c7dc9c 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py @@ -5,6 +5,8 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from TrigEDMConfig.TriggerEDMRun3 import recordable +from InDetRecExample.InDetKeys import InDetKeys + def RungeKuttaPropagatorCfg(flags, **kwargs): acc = ComponentAccumulator() @@ -260,20 +262,18 @@ def InDetIDCCacheCreatorCfg(): return acc - - -#Set up conditions algorithms -def TrigInDetCondCfg( flags ): - +def geoModelCfg(flags): acc = ComponentAccumulator() from BeamPipeGeoModel.BeamPipeGMConfig import BeamPipeGeometryCfg acc.merge( BeamPipeGeometryCfg( flags ) ) from AtlasGeoModel.InDetGMConfig import InDetGeometryCfg acc.merge( InDetGeometryCfg( flags ) ) - #acc.merge(InDetGMConfig(flags)) + return acc +def sctCondCfg(flags): + acc = ComponentAccumulator() from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline, addFolders acc.merge(addFoldersSplitOnline(flags, "INDET","/Indet/Onl/AlignL1/ID","/Indet/AlignL1/ID",className="CondAttrListCollection")) acc.merge(addFoldersSplitOnline(flags, "INDET","/Indet/Onl/AlignL2/PIX","/Indet/AlignL2/PIX",className="CondAttrListCollection")) @@ -300,18 +300,11 @@ def TrigInDetCondCfg( flags ): ReadKeyMur = murFolder)) acc.merge(addFolders(flags, [channelFolder, moduleFolder, murFolder], "SCT", className="CondAttrListVec")) - - from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleCfg - SCTLorentzAngleTool = acc.popToolsAndMerge( SCT_LorentzAngleCfg( flags ) ) - acc.addPublicTool(SCTLorentzAngleTool) - - acc.merge(addFoldersSplitOnline(flags, "INDET", "/Indet/Onl/Beampos", "/Indet/Beampos", className="AthenaAttributeList")) - acc.merge(addFolders(flags, "/TRT/Onl/ROD/Compress","TRT_ONL", className='CondAttrListCollection')) - acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Calib/RT","/TRT/Calib/RT",className="TRTCond::RtRelationMultChanContainer")) - acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Calib/T0","/TRT/Calib/T0",className="TRTCond::StrawT0MultChanContainer")) - acc.merge(addFoldersSplitOnline (flags, "TRT","/TRT/Onl/Calib/errors","/TRT/Calib/errors",className="TRTCond::RtRelationMultChanContainer")) + return acc +def pixelCondCfg(flags): + acc = ComponentAccumulator() ############### # Pixel setup # ############### @@ -357,152 +350,143 @@ def TrigInDetCondCfg( flags ): acc.popToolsAndMerge(PixelLorentzAngleCfg(flags)) acc.merge(PixelCablingSvcCfg(flags)) + return acc - BeamSpotCondAlg=CompFactory.BeamSpotCondAlg - acc.addCondAlgo(BeamSpotCondAlg( "BeamSpotCondAlg" )) - +def trtCondCfg(flags): + acc = ComponentAccumulator() + from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline, addFolders + acc.merge(addFolders(flags, "/TRT/Onl/ROD/Compress","TRT_ONL", className='CondAttrListCollection')) + acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Calib/RT","/TRT/Calib/RT",className="TRTCond::RtRelationMultChanContainer")) + acc.merge(addFoldersSplitOnline(flags, "TRT","/TRT/Onl/Calib/T0","/TRT/Calib/T0",className="TRTCond::StrawT0MultChanContainer")) + acc.merge(addFoldersSplitOnline (flags, "TRT","/TRT/Onl/Calib/errors","/TRT/Calib/errors",className="TRTCond::RtRelationMultChanContainer")) - from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg - mfsc = MagneticFieldSvcCfg(flags) - acc.merge( mfsc ) return acc -def trigInDetCfg( inflags, roisKey="EMRoIs", signatureName='' ): - - # redirect InDet.Tracking flags to point to a specific trigger setting - flags = inflags.cloneAndReplace("InDet.Tracking", "Trigger.InDetTracking."+signatureName) +def beamposCondCfg(flags): + acc = ComponentAccumulator() + from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline + acc.merge(addFoldersSplitOnline(flags, "INDET", "/Indet/Onl/Beampos", "/Indet/Beampos", className="AthenaAttributeList")) + BeamSpotCondAlg=CompFactory.BeamSpotCondAlg + acc.addCondAlgo(BeamSpotCondAlg( "BeamSpotCondAlg" )) - #If signature specified add suffix to the name of each algorithms - signature = ("_" + signatureName if signatureName else '').lower() + return acc +def magFieldCfgCfg(flags): acc = ComponentAccumulator() - acc.merge(TrigInDetCondCfg(flags)) - from InDetRecExample.InDetKeys import InDetKeys + acc.merge(geoModelCfg(flags)) + from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg + acc.merge( MagneticFieldSvcCfg(flags) ) + + return acc - # Region selector tools for Pixel, SCT and TRT +def pixelDataPrepCfg(flags, roisKey, signature): + acc = ComponentAccumulator() + acc.merge(pixelCondCfg(flags)) from RegionSelector.RegSelToolConfig import regSelTool_Pixel_Cfg RegSelTool_Pixel = acc.popToolsAndMerge(regSelTool_Pixel_Cfg(flags)) - from RegionSelector.RegSelToolConfig import regSelTool_SCT_Cfg - RegSelTool_SCT = acc.popToolsAndMerge(regSelTool_SCT_Cfg(flags)) - - from RegionSelector.RegSelToolConfig import regSelTool_TRT_Cfg - RegSelTool_TRT = acc.popToolsAndMerge(regSelTool_TRT_Cfg(flags)) - - - verifier = CompFactory.AthViews.ViewDataVerifier( name = 'VDVInDet'+signature, - DataObjects= [('xAOD::EventInfo', 'StoreGateSvc+EventInfo'), - ('InDet::PixelClusterContainerCache', 'PixelTrigClustersCache'), - ('PixelRDO_Cache', 'PixRDOCache'), - ('InDet::SCT_ClusterContainerCache', 'SCT_ClustersCache'), - ('SCT_RDO_Cache', 'SctRDOCache'), - ('SpacePointCache', 'PixelSpacePointCache'), - ('SpacePointCache', 'SctSpacePointCache'), - ('IDCInDetBSErrContainer_Cache', 'PixelBSErrCache'), - ('IDCInDetBSErrContainer_Cache', 'SctBSErrCache'), - ('IDCInDetBSErrContainer_Cache', 'SctFlaggedCondCache'), - ('xAOD::EventInfo', 'EventInfo'), - ('TrigRoiDescriptorCollection', roisKey), - ( 'TagInfo' , 'DetectorStore+ProcessingTags' )] ) - - acc.addEventAlgo(verifier) - - #Only add raw data decoders if we're running over raw data - isMC = flags.Input.isMC - if not isMC: - #Pixel - - PixelRodDecoder=CompFactory.PixelRodDecoder - InDetPixelRodDecoder = PixelRodDecoder(name = "InDetPixelRodDecoder"+ signature) - # Disable duplcated pixel check for data15 because duplication mechanism was used. - if len(flags.Input.ProjectName)>=6 and flags.Input.ProjectName[:6]=="data15": - InDetPixelRodDecoder.CheckDuplicatedPixel=False - acc.addPublicTool(InDetPixelRodDecoder) - - PixelRawDataProviderTool=CompFactory.PixelRawDataProviderTool - InDetPixelRawDataProviderTool = PixelRawDataProviderTool(name = "InDetPixelRawDataProviderTool"+ signature, - Decoder = InDetPixelRodDecoder) - acc.addPublicTool(InDetPixelRawDataProviderTool) - - - # load the PixelRawDataProvider - PixelRawDataProvider=CompFactory.PixelRawDataProvider - InDetPixelRawDataProvider = PixelRawDataProvider(name = "InDetPixelRawDataProvider"+ signature, - RDOKey = InDetKeys.PixelRDOs(), - ProviderTool = InDetPixelRawDataProviderTool ) + PixelRodDecoder=CompFactory.PixelRodDecoder + InDetPixelRodDecoder = PixelRodDecoder(name = "InDetPixelRodDecoder"+ signature) + # Disable duplcated pixel check for data15 because duplication mechanism was used. + if len(flags.Input.ProjectName)>=6 and flags.Input.ProjectName[:6]=="data15": + InDetPixelRodDecoder.CheckDuplicatedPixel=False + acc.addPublicTool(InDetPixelRodDecoder) + + PixelRawDataProviderTool=CompFactory.PixelRawDataProviderTool + InDetPixelRawDataProviderTool = PixelRawDataProviderTool(name = "InDetPixelRawDataProviderTool"+ signature, + Decoder = InDetPixelRodDecoder) + acc.addPublicTool(InDetPixelRawDataProviderTool) + + # load the PixelRawDataProvider + PixelRawDataProvider=CompFactory.PixelRawDataProvider + InDetPixelRawDataProvider = PixelRawDataProvider(name = "InDetPixelRawDataProvider"+ signature, + RDOKey = InDetKeys.PixelRDOs(), + ProviderTool = InDetPixelRawDataProviderTool, + isRoI_Seeded = True, + RoIs = roisKey, + RDOCacheKey = InDetCacheNames.PixRDOCacheKey, + RegSelTool = RegSelTool_Pixel) + + acc.addEventAlgo(InDetPixelRawDataProvider) - InDetPixelRawDataProvider.isRoI_Seeded = True - InDetPixelRawDataProvider.RoIs = roisKey - InDetPixelRawDataProvider.RDOCacheKey = InDetCacheNames.PixRDOCacheKey + return acc -# from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel -# InDetPixelRawDataProvider.RegSelTool = makeRegSelTool_Pixel() +def sctDataPrepCfg(flags, roisKey, signature): + acc = ComponentAccumulator() - InDetPixelRawDataProvider.RegSelTool = RegSelTool_Pixel + acc.merge(sctCondCfg(flags)) - acc.addEventAlgo(InDetPixelRawDataProvider) + from RegionSelector.RegSelToolConfig import regSelTool_SCT_Cfg + RegSelTool_SCT = acc.popToolsAndMerge(regSelTool_SCT_Cfg(flags)) + # load the SCTRawDataProvider + from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig import SCTRawDataProviderCfg + sctProviderArgs = {} + sctProviderArgs["RDOKey"] = InDetKeys.SCT_RDOs() + sctProviderArgs["isRoI_Seeded"] = True + sctProviderArgs["RoIs"] = roisKey + sctProviderArgs["RDOCacheKey"] = InDetCacheNames.SCTRDOCacheKey + sctProviderArgs["RegSelTool"] = RegSelTool_SCT + acc.merge(SCTRawDataProviderCfg(flags, suffix=signature, **sctProviderArgs)) + # load the SCTEventFlagWriter + from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig import SCTEventFlagWriterCfg + acc.merge(SCTEventFlagWriterCfg(flags, suffix=signature)) + return acc - #SCT - # load the SCTRawDataProvider - from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig import SCTRawDataProviderCfg - sctProviderArgs = {} - sctProviderArgs["RDOKey"] = InDetKeys.SCT_RDOs() - sctProviderArgs["isRoI_Seeded"] = True - sctProviderArgs["RoIs"] = roisKey - sctProviderArgs["RDOCacheKey"] = InDetCacheNames.SCTRDOCacheKey - sctProviderArgs["RegSelTool"] = RegSelTool_SCT - acc.merge(SCTRawDataProviderCfg(flags, suffix=signature, **sctProviderArgs)) - # load the SCTEventFlagWriter - from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConfig import SCTEventFlagWriterCfg - acc.merge(SCTEventFlagWriterCfg(flags, suffix=signature)) - #TRT +def trtDataPrep(flags, roisKey, signature): + acc = ComponentAccumulator() + acc.merge(trtCondCfg(flags)) - TRT_RodDecoder=CompFactory.TRT_RodDecoder - InDetTRTRodDecoder = TRT_RodDecoder(name = "InDetTRTRodDecoder", - LoadCompressTableDB = True)#(globalflags.DataSource() != 'geant4')) - acc.addPublicTool(InDetTRTRodDecoder) + from RegionSelector.RegSelToolConfig import regSelTool_TRT_Cfg + RegSelTool_TRT = acc.popToolsAndMerge(regSelTool_TRT_Cfg(flags)) - TRTRawDataProviderTool=CompFactory.TRTRawDataProviderTool - InDetTRTRawDataProviderTool = TRTRawDataProviderTool(name = "InDetTRTRawDataProviderTool"+ signature, - Decoder = InDetTRTRodDecoder) - acc.addPublicTool(InDetTRTRawDataProviderTool) + TRT_RodDecoder=CompFactory.TRT_RodDecoder + InDetTRTRodDecoder = TRT_RodDecoder(name = "InDetTRTRodDecoder", + LoadCompressTableDB = True)#(globalflags.DataSource() != 'geant4')) + acc.addPublicTool(InDetTRTRodDecoder) + TRTRawDataProviderTool=CompFactory.TRTRawDataProviderTool + InDetTRTRawDataProviderTool = TRTRawDataProviderTool(name = "InDetTRTRawDataProviderTool"+ signature, + Decoder = InDetTRTRodDecoder) + acc.addPublicTool(InDetTRTRawDataProviderTool) - # load the TRTRawDataProvider - TRTRawDataProvider=CompFactory.TRTRawDataProvider - InDetTRTRawDataProvider = TRTRawDataProvider(name = "InDetTRTRawDataProvider"+ signature, - RDOKey = "TRT_RDOs", - ProviderTool = InDetTRTRawDataProviderTool) - InDetTRTRawDataProvider.isRoI_Seeded = True - InDetTRTRawDataProvider.RoIs = roisKey + # load the TRTRawDataProvider + TRTRawDataProvider=CompFactory.TRTRawDataProvider + InDetTRTRawDataProvider = TRTRawDataProvider(name = "InDetTRTRawDataProvider"+ signature, + RDOKey = "TRT_RDOs", + ProviderTool = InDetTRTRawDataProviderTool, + RegSelTool = RegSelTool_TRT, + isRoI_Seeded = True, + RoIs = roisKey) -# from RegionSelector.RegSelToolConfig import makeRegSelTool_TRT -# InDetTRTRawDataProvider.RegSelTool_TRT = makeRegSelTool_TRT() + acc.addEventAlgo(InDetTRTRawDataProvider) - InDetTRTRawDataProvider.RegSelTool = RegSelTool_TRT + return acc - acc.addEventAlgo(InDetTRTRawDataProvider) +def pixelClusterizationCfg(flags, roisKey, signature): + acc = ComponentAccumulator() + from RegionSelector.RegSelToolConfig import regSelTool_Pixel_Cfg + RegSelTool_Pixel = acc.popToolsAndMerge(regSelTool_Pixel_Cfg(flags)) #Pixel clusterisation InDet__ClusterMakerTool=CompFactory.InDet.ClusterMakerTool - InDetClusterMakerTool = InDet__ClusterMakerTool(name = "InDetClusterMakerTool"+ signature) + InDetClusterMakerTool = InDet__ClusterMakerTool(name = "InDetClusterMakerTool"+ signature) acc.addPublicTool(InDetClusterMakerTool) InDet__MergedPixelsTool=CompFactory.InDet.MergedPixelsTool - InDetMergedPixelsTool = InDet__MergedPixelsTool(name = "InDetMergedPixelsTool"+ signature, - globalPosAlg = InDetClusterMakerTool) + InDetMergedPixelsTool = InDet__MergedPixelsTool(name = "InDetMergedPixelsTool"+ signature, + globalPosAlg = InDetClusterMakerTool) # Enable duplcated RDO check for data15 because duplication mechanism was used. if len(flags.Input.ProjectName)>=6 and flags.Input.ProjectName[:6]=="data15": @@ -514,25 +498,33 @@ def trigInDetCfg( inflags, roisKey="EMRoIs", signatureName='' ): acc.addPublicTool(InDetPixelGangedAmbiguitiesFinder) InDet__PixelClusterization=CompFactory.InDet.PixelClusterization - InDetPixelClusterization = InDet__PixelClusterization(name = "InDetPixelClusterization"+ signature, - clusteringTool = InDetMergedPixelsTool, - gangedAmbiguitiesFinder = InDetPixelGangedAmbiguitiesFinder, - DataObjectName = InDetKeys.PixelRDOs(), - AmbiguitiesMap = 'TrigPixelClusterAmbiguitiesMap', - ClustersName = "PixelTrigClusters",) + InDetPixelClusterization = InDet__PixelClusterization(name = "InDetPixelClusterization"+ signature, + clusteringTool = InDetMergedPixelsTool, + gangedAmbiguitiesFinder = InDetPixelGangedAmbiguitiesFinder, + DataObjectName = InDetKeys.PixelRDOs(), + AmbiguitiesMap = 'TrigPixelClusterAmbiguitiesMap', + ClustersName = "PixelTrigClusters", + RegSelTool = RegSelTool_Pixel, + isRoI_Seeded = True, + RoIs = roisKey, + ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey) + + acc.addEventAlgo(InDetPixelClusterization) - InDetPixelClusterization.isRoI_Seeded = True - InDetPixelClusterization.RoIs = roisKey - InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheNames.Pixel_ClusterKey + return acc - # from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel - InDetPixelClusterization.RegSelTool = RegSelTool_Pixel +def sctClusterizationCfg(flags, roisKey, signature): + acc = ComponentAccumulator() - acc.addEventAlgo(InDetPixelClusterization) + from RegionSelector.RegSelToolConfig import regSelTool_SCT_Cfg + RegSelTool_SCT = acc.popToolsAndMerge(regSelTool_SCT_Cfg(flags)) from InDetConfig.InDetRecToolConfig import InDetSCT_ConditionsSummaryToolCfg - InDetSCT_ConditionsSummaryToolWithoutFlagged = acc.popToolsAndMerge(InDetSCT_ConditionsSummaryToolCfg(flags,withFlaggedCondTool=False, withTdaqTool=False)) + InDetSCT_ConditionsSummaryToolWithoutFlagged = acc.popToolsAndMerge(InDetSCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool = False, withTdaqTool = False)) + InDet__ClusterMakerTool=CompFactory.InDet.ClusterMakerTool + InDetClusterMakerTool = InDet__ClusterMakerTool(name = "InDetClusterMakerTool"+ signature) + acc.addPublicTool(InDetClusterMakerTool) # # --- SCT_ClusteringTool (public) @@ -546,22 +538,25 @@ def trigInDetCfg( inflags, roisKey="EMRoIs", signatureName='' ): # InDet__SCT_Clusterization=CompFactory.InDet.SCT_Clusterization - InDetSCT_Clusterization = InDet__SCT_Clusterization(name = "InDetSCT_Clusterization"+ signature, - clusteringTool = InDetSCT_ClusteringTool, - # ChannelStatus = InDetSCT_ChannelStatusAlg, - DataObjectName = InDetKeys.SCT_RDOs(), - ClustersName = "SCT_TrigClusters", - conditionsTool = InDetSCT_ConditionsSummaryToolWithoutFlagged) - InDetSCT_Clusterization.isRoI_Seeded = True - InDetSCT_Clusterization.RoIs = roisKey - InDetSCT_Clusterization.ClusterContainerCacheKey = InDetCacheNames.SCT_ClusterKey - InDetSCT_Clusterization.FlaggedCondCacheKey = InDetCacheNames.SCTFlaggedCondCacheKey - - InDetSCT_Clusterization.RegSelTool = RegSelTool_SCT + InDetSCT_Clusterization = InDet__SCT_Clusterization(name = "InDetSCT_Clusterization"+ signature, + clusteringTool = InDetSCT_ClusteringTool, + # ChannelStatus = InDetSCT_ChannelStatusAlg, + DataObjectName = InDetKeys.SCT_RDOs(), + ClustersName = "SCT_TrigClusters", + conditionsTool = InDetSCT_ConditionsSummaryToolWithoutFlagged, + isRoI_Seeded = True, + RoIs = roisKey, + ClusterContainerCacheKey = InDetCacheNames.SCT_ClusterKey, + FlaggedCondCacheKey = InDetCacheNames.SCTFlaggedCondCacheKey, + RegSelTool = RegSelTool_SCT) + acc.addEventAlgo(InDetSCT_Clusterization) + return acc - #Space points and FTF +def spacePointsMakingCfg(flags, signature): + acc = ComponentAccumulator() + #Space points InDet__SiSpacePointMakerTool=CompFactory.InDet.SiSpacePointMakerTool InDetSiSpacePointMakerTool = InDet__SiSpacePointMakerTool(name = "InDetSiSpacePointMakerTool"+ signature) @@ -580,15 +575,21 @@ def trigInDetCfg( inflags, roisKey="EMRoIs", signatureName='' ): ProcessPixels = flags.Detector.RecoPixel, ProcessSCTs = flags.Detector.RecoSCT, ProcessOverlaps = flags.Detector.RecoSCT, - SpacePointCacheSCT = InDetCacheNames.SpacePointCacheSCT, - SpacePointCachePix = InDetCacheNames.SpacePointCachePix,) + SpacePointCacheSCT = InDetCacheNames.SpacePointCacheSCT, + SpacePointCachePix = InDetCacheNames.SpacePointCachePix,) acc.addEventAlgo(InDetSiTrackerSpacePointFinder) - acc.addPublicTool( CompFactory.TrigL2LayerNumberTool( "TrigL2LayerNumberTool_FTF" ) ) + return acc + + +def __trackCollName(signatureName): + return "HLT_IDTrkTrack_"+signatureName+"_FTF" + +def ftfCfg(flags, roisKey, signature, signatureName): + acc = ComponentAccumulator() acc.merge( TrackSummaryToolCfg(flags, name="InDetTrigFastTrackSummaryTool") ) -# acc.addPublicTool( CompFactory.TrigL2ResidualCalculator( "TrigL2ResidualCalculator" ) ) acc.merge( SiTrackMaker_xkCfg( flags, name = "InDetTrigSiTrackMaker_FTF"+signature ) ) acc.addPublicTool( CompFactory.TrigInDetTrackFitter( "TrigInDetTrackFitter" ) ) @@ -601,15 +602,15 @@ def trigInDetCfg( inflags, roisKey="EMRoIs", signatureName='' ): acc.merge( TrackingGeometrySvcCfg( flags ) ) acc.addPublicTool( CompFactory.TrigL2LayerNumberTool( name = "TrigL2LayerNumberTool_FTF", UseNewLayerScheme = True) ) + acc.addPublicTool( CompFactory.TrigL2LayerNumberTool( "TrigL2LayerNumberTool_FTF" ) ) acc.addPublicTool( CompFactory.TrigSpacePointConversionTool( "TrigSpacePointConversionTool" + signature, - DoPhiFiltering = True, - UseBeamTilt = False, + DoPhiFiltering = True, + UseBeamTilt = False, UseNewLayerScheme = True, - RegSelTool_Pixel = pixRegSelTool, - RegSelTool_SCT = sctRegSelTool, - layerNumberTool = acc.getPublicTool("TrigL2LayerNumberTool_FTF") ) ) - + RegSelTool_Pixel = pixRegSelTool, + RegSelTool_SCT = sctRegSelTool, + layerNumberTool = acc.getPublicTool("TrigL2LayerNumberTool_FTF") ) ) # TODO remove once offline configured counterparts are available? acc.addCondAlgo( CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk(name= "InDetSiDetElementBoundaryLinksSCTCondAlg", @@ -626,76 +627,114 @@ def trigInDetCfg( inflags, roisKey="EMRoIs", signatureName='' ): # TrigL2ResidualCalculator = acc.getPublicTool( "TrigL2ResidualCalculator" ), initialTrackMaker = acc.getPublicTool( "InDetTrigSiTrackMaker_FTF" + signature ), trigInDetTrackFitter = acc.getPublicTool( "TrigInDetTrackFitter" ), - RoIs = roisKey, - trigZFinder = CompFactory.TrigZFinder(), - doZFinder = False, - SeedRadBinWidth = flags.InDet.Tracking.seedRadBinWidth, - TrackInitialD0Max = 1000. if flags.InDet.Tracking.extension == 'cosmics' else 20.0, - TracksName = "HLT_IDTrkTrack_"+signatureName+"_FTF", - OutputCollectionSuffix = signature, - TripletDoPSS = False, - Triplet_D0Max = flags.InDet.Tracking.d0SeedMax, - Triplet_D0_PPS_Max = flags.InDet.Tracking.d0SeedPPSMax, - Triplet_MaxBufferLength = 3, - Triplet_MinPtFrac = 1, - Triplet_nMaxPhiSlice = 53, - doCloneRemoval = flags.InDet.Tracking.doCloneRemoval, - doResMon = flags.InDet.Tracking.doResMon, - doSeedRedundancyCheck = flags.InDet.Tracking.checkRedundantSeeds, - pTmin = flags.InDet.Tracking.minPT, - useNewLayerNumberScheme = True, - MinHits = 5, - useGPU=False, - DoubletDR_Max = 270) + RoIs = roisKey, + trigZFinder = CompFactory.TrigZFinder(), + doZFinder = False, + SeedRadBinWidth = flags.InDet.Tracking.seedRadBinWidth, + TrackInitialD0Max = 1000. if flags.InDet.Tracking.extension == 'cosmics' else 20.0, + TracksName = __trackCollName(signatureName), + OutputCollectionSuffix = signature, + TripletDoPSS = False, + Triplet_D0Max = flags.InDet.Tracking.d0SeedMax, + Triplet_D0_PPS_Max = flags.InDet.Tracking.d0SeedPPSMax, + Triplet_MaxBufferLength = 3, + Triplet_MinPtFrac = 1, + Triplet_nMaxPhiSlice = 53, + doCloneRemoval = flags.InDet.Tracking.doCloneRemoval, + doResMon = flags.InDet.Tracking.doResMon, + doSeedRedundancyCheck = flags.InDet.Tracking.checkRedundantSeeds, + pTmin = flags.InDet.Tracking.minPT, + useNewLayerNumberScheme = True, + MinHits = 5, + useGPU = False, + DoubletDR_Max = 270) acc.addEventAlgo( ftf ) + + return acc + + +def trackConverterCfg(flags, signature, signatureName): + acc = ComponentAccumulator() + + acc.merge( TrackSummaryToolCfg(flags, name="InDetTrigFastTrackSummaryTool") ) + creatorTool = CompFactory.Trk.TrackParticleCreatorTool( name = "InDetTrigParticleCreatorToolFTF", Extrapolator = acc.getPublicTool( "InDetTrigExtrapolator" ), - TrackSummaryTool = acc.getPublicTool( "InDetTrigFastTrackSummaryTool" ), - KeepParameters = True, + TrackSummaryTool = acc.getPublicTool( "InDetTrigFastTrackSummaryTool" ), + KeepParameters = True, ComputeAdditionalInfo = True, - ExtraSummaryTypes = ['eProbabilityComb', 'eProbabilityHT', 'TRTTrackOccupancy', 'TRTdEdx', 'TRTdEdxUsedHits']) + ExtraSummaryTypes = ['eProbabilityComb', 'eProbabilityHT', 'TRTTrackOccupancy', 'TRTdEdx', 'TRTdEdxUsedHits']) acc.addPublicTool(creatorTool) - trackParticleCnv=CompFactory.InDet.TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg" + signature, - TrackName = ftf.TracksName, - TrackParticlesName = recordable("HLT_IDTrack_"+signatureName+"_FTF"), + TrackName = __trackCollName(signatureName), + TrackParticlesName = recordable("HLT_IDTrack_"+signatureName+"_FTF"), ParticleCreatorTool = acc.getPublicTool("InDetTrigParticleCreatorToolFTF")) + acc.addEventAlgo(trackParticleCnv) return acc - + +def trigInDetCfg( inflags, roisKey="EMRoIs", signatureName='' ): + + # redirect InDet.Tracking flags to point to a specific trigger setting + flags = inflags.cloneAndReplace("InDet.Tracking", "Trigger.InDetTracking."+signatureName) + + #If signature specified add suffix to the name of each algorithms + signature = ("_" + signatureName if signatureName else '').lower() + + acc = ComponentAccumulator() + acc.merge(magFieldCfgCfg(flags)) + + # TODO merge it to the component needing it + acc.merge(beamposCondCfg(flags)) + + + verifier = CompFactory.AthViews.ViewDataVerifier( name = 'VDVInDet'+signature, + DataObjects= [('xAOD::EventInfo', 'StoreGateSvc+EventInfo'), + ('InDet::PixelClusterContainerCache', 'PixelTrigClustersCache'), + ('PixelRDO_Cache', 'PixRDOCache'), + ('InDet::SCT_ClusterContainerCache', 'SCT_ClustersCache'), + ('SCT_RDO_Cache', 'SctRDOCache'), + ('SpacePointCache', 'PixelSpacePointCache'), + ('SpacePointCache', 'SctSpacePointCache'), + ('IDCInDetBSErrContainer_Cache', 'PixelBSErrCache'), + ('IDCInDetBSErrContainer_Cache', 'SctBSErrCache'), + ('IDCInDetBSErrContainer_Cache', 'SctFlaggedCondCache'), + ('xAOD::EventInfo', 'EventInfo'), + ('TrigRoiDescriptorCollection', roisKey), + ( 'TagInfo' , 'DetectorStore+ProcessingTags' )] ) + + acc.addEventAlgo(verifier) + #Only add raw data decoders if we're running over raw data + isMC = flags.Input.isMC + if not isMC: + acc.merge(pixelDataPrepCfg(flags, roisKey, signature)) + acc.merge(sctDataPrepCfg(flags, roisKey, signature)) + acc.merge(trtDataPrep(flags, roisKey, signature)) + + acc.merge(pixelClusterizationCfg(flags, roisKey, signature)) + acc.merge(sctClusterizationCfg(flags, roisKey, signature)) + acc.merge(spacePointsMakingCfg(flags, signature)) + acc.merge(ftfCfg(flags, roisKey, signature, signatureName)) + acc.merge(trackConverterCfg(flags, signature, signatureName)) + return acc + if __name__ == "__main__": from AthenaCommon.Configurable import Configurable Configurable.configurableRun3Behavior=1 from AthenaConfiguration.AllConfigFlags import ConfigFlags - ConfigFlags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1"] - ConfigFlags.Trigger.LVL1ConfigFile = "LVL1config_Physics_pp_v7.xml" - #ConfigFlags.IOVDb.GlobalTag = "CONDBR2-BLKPA-2018-13" - ConfigFlags.lock() - - acc = ComponentAccumulator() - - nThreads=1 - - SG__HiveMgrSvc=CompFactory.SG.HiveMgrSvc - eventDataSvc = SG__HiveMgrSvc("EventDataSvc") - eventDataSvc.NSlots = nThreads - acc.addService( eventDataSvc ) - #from AthenaConfiguration.MainServicesConfig import MainServicesCfg - #acc.merge( MainServicesCfg( ConfigFlags ) ) - from L1Decoder.L1DecoderConfig import L1DecoderCfg - l1DecoderAcc = L1DecoderCfg( ConfigFlags ) - acc.merge(l1DecoderAcc) - from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg - acc.merge(ByteStreamReadCfg(ConfigFlags)) + from AthenaConfiguration.TestDefaults import defaultTestFiles + ConfigFlags.Input.Files = defaultTestFiles.RAW + ConfigFlags.lock() + # this configuration is not runable, the test checks if there is no mistake in python scripts above + # output can be used by experts to check actual configuration (e.g. here we configure to run on RAW and it should be reflected in settings) + from AthenaConfiguration.MainServicesConfig import MainServicesCfg + acc = MainServicesCfg( ConfigFlags ) acc.merge( trigInDetCfg( ConfigFlags, roisKey="ElectronRoIs", signatureName="Electron" ) ) - from RegionSelector.RegSelConfig import regSelCfg - rsc = regSelCfg( ConfigFlags ) - acc.merge( rsc ) - acc.printConfig() + acc.printConfig(withDetails=True, summariseProps=True) acc.store( open("test.pkl", "wb") ) print('All ok')