diff --git a/InnerDetector/InDetConfig/python/ITkConfigFlags.py b/InnerDetector/InDetConfig/python/ITkConfigFlags.py index 7e1f994c4d764fddd75b7b81c80ff8ea73cc7cb5..debc79a2ea41dd22662b7b892c57af73866b1dc3 100644 --- a/InnerDetector/InDetConfig/python/ITkConfigFlags.py +++ b/InnerDetector/InDetConfig/python/ITkConfigFlags.py @@ -60,8 +60,10 @@ def createITkConfigFlags(): not(prevFlags.Beam.Type is BeamType.Cosmics)) # Save cluster information to Derivation - itkcf.addFlag("ITk.DAODStorePixel", True) - itkcf.addFlag("ITk.DAODStoreStrip", True) + itkcf.addFlag("ITk.DAODStorePixel", lambda prevFlags: + prevFlags.Detector.EnableITkPixel) + itkcf.addFlag("ITk.DAODStoreStrip", lambda prevFlags: + prevFlags.Detector.EnableITkStrip) itkcf.addFlag("ITk.DAODStoreExtra", True) # Save SiHitCollections to RDO diff --git a/InnerDetector/InDetConfig/python/InDetConfigFlags.py b/InnerDetector/InDetConfig/python/InDetConfigFlags.py index a9431d5d621afd8d7eef322618fff34c1c1925f4..100270e8b15d365dd9decf344fa99b75526d142a 100644 --- a/InnerDetector/InDetConfig/python/InDetConfigFlags.py +++ b/InnerDetector/InDetConfig/python/InDetConfigFlags.py @@ -43,9 +43,12 @@ def createInDetConfigFlags(): # Save cluster information to Derivation icf.addFlag("InDet.DRAWZSelection", False) - icf.addFlag("InDet.DAODStorePixel", True) - icf.addFlag("InDet.DAODStoreSCT", True) - icf.addFlag("InDet.DAODStoreTRT", True) + icf.addFlag("InDet.DAODStorePixel", lambda prevFlags: + prevFlags.Detector.EnablePixel) + icf.addFlag("InDet.DAODStoreSCT", lambda prevFlags: + prevFlags.Detector.EnableSCT) + icf.addFlag("InDet.DAODStoreTRT", lambda prevFlags: + prevFlags.Detector.EnableTRT) icf.addFlag("InDet.DAODStoreExtra", True) # Specific flags for pixel study diff --git a/InnerDetector/InDetRecTools/InDetUsedInFitTrackDecoratorTool/Root/InDetUsedInFitTrackDecoratorTool.cxx b/InnerDetector/InDetRecTools/InDetUsedInFitTrackDecoratorTool/Root/InDetUsedInFitTrackDecoratorTool.cxx index 80dd6d05deb552acdadec36a6c832b12aa0e02a9..f7c891734b1fe2590bd2d7934216a8424b6ff596 100644 --- a/InnerDetector/InDetRecTools/InDetUsedInFitTrackDecoratorTool/Root/InDetUsedInFitTrackDecoratorTool.cxx +++ b/InnerDetector/InDetRecTools/InDetUsedInFitTrackDecoratorTool/Root/InDetUsedInFitTrackDecoratorTool.cxx @@ -88,6 +88,8 @@ void InDet::InDetUsedInFitTrackDecoratorTool::decorate(const xAOD::TrackParticle // Decor handles for the AMVF vertices and weights SG::WriteDecorHandle<xAOD::TrackParticleContainer, std::vector<ElementLink<xAOD::VertexContainer>>> vtxDeco(m_vtxDecoKey, ctx); SG::WriteDecorHandle<xAOD::TrackParticleContainer, std::vector<float>> wgtDeco(m_wgtDecoKey, ctx); + bool isVtxDeco_available = vtxDeco.isAvailable(); + if(isVtxDeco_available) return; //vector to collect results std::vector<std::pair<const xAOD::Vertex*,float> > vxWithWeight; diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTIDE.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTIDE.py index 166db58d4720f5bda4cccf9a9a20b737cf17d5e9..d16852eb0b239d101198f474092365c06e7da5cc 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTIDE.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTIDE.py @@ -56,7 +56,7 @@ def IDTIDEKernelCommonCfg(flags, name='IDTIDEKernel'): from DerivationFrameworkInDet.InDetToolsConfig import ( TrackParametersAtPVCfg) DFCommonZ0AtPV = acc.getPrimaryAndMerge(TrackParametersAtPVCfg( - flags, name="DFCommonZ0AtPV", + flags, name="IDTIDE_DFCommonZ0AtPV", Z0SGEntryName="IDTIDEInDetTrackZ0AtPV") ) augmentationTools.append(DFCommonZ0AtPV) @@ -179,46 +179,6 @@ def IDTIDEKernelCommonCfg(flags, name='IDTIDEKernel'): return acc -def DFInDetTSOSKernelCfg(flags, name='DFInDetTSOSKernel'): - acc = ComponentAccumulator() - - # ==================================================================== - # AUGMENTATION TOOLS - # ==================================================================== - tsos_augmentationTools = [] - - from DerivationFrameworkInDet.InDetToolsConfig import ( - DFTrackStateOnSurfaceDecoratorCfg) - DFTSOS = acc.getPrimaryAndMerge(DFTrackStateOnSurfaceDecoratorCfg(flags)) - tsos_augmentationTools.append(DFTSOS) - - # shared between IDTIDE and IDTRKVALID - acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( - name, - AugmentationTools=tsos_augmentationTools, - ThinningTools=[], - OutputLevel=INFO)) - return acc - -def DFITkTSOSKernelCfg(flags, name='DFITkTSOSKernel'): - acc = ComponentAccumulator() - - # ==================================================================== - # AUGMENTATION TOOLS - # ==================================================================== - tsos_augmentationTools = [] - - from DerivationFrameworkInDet.InDetToolsConfig import DFITkTrackStateOnSurfaceDecoratorCfg - DFTSOS = acc.getPrimaryAndMerge(DFITkTrackStateOnSurfaceDecoratorCfg(flags)) - tsos_augmentationTools.append(DFTSOS) - - # shared between IDTIDE and IDTRKVALID - acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( - name, - AugmentationTools=tsos_augmentationTools, - ThinningTools=[], - OutputLevel=INFO)) - return acc def IDTIDEThinningKernelCfg(flags, name="IDTIDEThinningKernel", StreamName=""): acc = ComponentAccumulator() @@ -248,7 +208,7 @@ def IDTIDEThinningKernelCfg(flags, name="IDTIDEThinningKernel", StreamName=""): IDTIDETruthThinningToolCfg(flags, StreamName=StreamName))) acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( - name="IDTIDEThinningKernel", + name, AugmentationTools=[], ThinningTools=thinningTools, OutputLevel=INFO)) @@ -295,6 +255,8 @@ def IDTIDEKernelCfg(flags, StreamName=""): acc.addSequence(parSeq(IDTIDEPostProcSequenceName), parentName=IDTIDEPreselSequenceName) + from DerivationFrameworkInDet.InDetToolsConfig import ( + DFInDetTSOSKernelCfg) acc.merge(DFInDetTSOSKernelCfg(flags), sequenceName=IDTIDEPostProcSequenceName) acc.merge(IDTIDEThinningKernelCfg(flags, StreamName=StreamName), @@ -322,6 +284,7 @@ def ITkTIDEKernelCfg(flags, StreamName=""): acc.addSequence(parSeq(IDTIDEPostProcSequenceName), parentName=IDTIDEPreselSequenceName) + from DerivationFrameworkInDet.InDetToolsConfig import DFITkTSOSKernelCfg acc.merge(DFITkTSOSKernelCfg(flags), sequenceName=IDTIDEPostProcSequenceName) acc.merge(IDTIDEThinningKernelCfg(flags, StreamName=StreamName), diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTRKVALID.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTRKVALID.py index 7d3a666b799c9a9ad81822fcc9c40543b5cff536..3ba10d27828c9411b6600c9ea6d0ccef6a838ec6 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTRKVALID.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/IDTRKVALID.py @@ -16,135 +16,215 @@ from AthenaCommon.Constants import INFO # Main algorithm config - -def IDTRKVALIDKernelCfg(flags, name='IDTRKVALIDKernel', **kwargs): - """Configure the derivation framework driving algorithm (kernel) for IDTRKVALID""" +def IDTRKVALID_ANDToolCfg(flags, name='IDTRKVALID_ANDTool'): acc = ComponentAccumulator() - DerivationKernel = CompFactory.DerivationFramework.DerivationKernel - acc.addSequence(seqAND('IDTRKVALIDSequence')) + sel_muon1 = 'Muons.pt > 25*GeV && Muons.ptcone40/Muons.pt < 0.3 && Muons.passesIDCuts' + sel_muon2 = 'Muons.pt > 20*GeV && Muons.ptcone40/Muons.pt < 0.3 && Muons.passesIDCuts' + draw_zmumu = '( count ( DRZmumuMass > 70*GeV && DRZmumuMass < 110*GeV ) >= 1 )' + from DerivationFrameworkTools.DerivationFrameworkToolsConfig import ( + InvariantMassToolCfg, xAODStringSkimmingToolCfg, + FilterCombinationANDCfg) + IDTRKVALID_ZmumuMass = acc.getPrimaryAndMerge(InvariantMassToolCfg( + flags, name="IDTRKVALID_ZmumuMass", + ContainerName = "Muon", + ObjectRequirements = sel_muon1, + SecondObjectRequirements = sel_muon2, + MassHypothesis = 105.66, + SecondMassHypothesis = 105.66, + StoreGateEntryName = "ZmumuMass")) + + IDTRKVALID_SkimmingTool = acc.getPrimaryAndMerge( + xAODStringSkimmingToolCfg(flags, name="IDTRKVALID_SkimmingTool", + expression=draw_zmumu)) + + IDTRKVALID_ANDTool = acc.getPrimaryAndMerge( + FilterCombinationANDCfg(flags, name, + FilterList=[IDTRKVALID_ZmumuMass, + IDTRKVALID_SkimmingTool])) + + acc.addPublicTool(IDTRKVALID_ANDTool, primary=True) + return acc + + +def IDTRKVALIDKernelCommonCfg(flags, name='IDTRKVALIDKernel'): + acc = ComponentAccumulator() # ==================================================================== # AUGMENTATION TOOLS # ==================================================================== augmentationTools = [] - tsos_augmentationTools = [] # Add unbiased track parameters to track particles from DerivationFrameworkInDet.InDetToolsConfig import ( TrackToVertexWrapperCfg) IDTRKVALIDTrackToVertexWrapper = acc.getPrimaryAndMerge( - TrackToVertexWrapperCfg(flags, - name="IDTRKVALIDTrackToVertexWrapper", - DecorationPrefix="IDTRKVALID")) + TrackToVertexWrapperCfg( + flags, name="IDTRKVALIDTrackToVertexWrapper", + DecorationPrefix="IDTRKVALID")) augmentationTools.append(IDTRKVALIDTrackToVertexWrapper) - from DerivationFrameworkInDet.InDetToolsConfig import (UsedInVertexFitTrackDecoratorCfg) - IDTRKVALIDUsedInFitDecorator = acc.getPrimaryAndMerge(UsedInVertexFitTrackDecoratorCfg(flags, - name="IDTRKVALIDUsedInFitDecorator")) + from DerivationFrameworkInDet.InDetToolsConfig import ( + UsedInVertexFitTrackDecoratorCfg) + IDTRKVALIDUsedInFitDecorator = acc.getPrimaryAndMerge( + UsedInVertexFitTrackDecoratorCfg(flags)) augmentationTools.append(IDTRKVALIDUsedInFitDecorator) # @TODO eventually computed for other extra outputs. Possible to come up with a solution to use a common Z0AtPV if there is more than one client ? - from DerivationFrameworkInDet.InDetToolsConfig import (TrackParametersAtPVCfg) - DFCommonZ0AtPV = acc.getPrimaryAndMerge(TrackParametersAtPVCfg(flags, - name="DFCommonZ0AtPV", - Z0SGEntryName="IDTRKVALIDInDetTrackZ0AtPV")) + from DerivationFrameworkInDet.InDetToolsConfig import TrackParametersAtPVCfg + DFCommonZ0AtPV = acc.getPrimaryAndMerge(TrackParametersAtPVCfg( + flags, name="IDTRKVALID_DFCommonZ0AtPV", + Z0SGEntryName="IDTRKVALIDInDetTrackZ0AtPV")) augmentationTools.append(DFCommonZ0AtPV) - if flags.Detector.GeometryID: - from DerivationFrameworkInDet.InDetToolsConfig import (DFTrackStateOnSurfaceDecoratorCfg) - DFTSOS = acc.getPrimaryAndMerge(DFTrackStateOnSurfaceDecoratorCfg(flags)) - tsos_augmentationTools.append(DFTSOS) + # ==================================================================== + # SKIMMING TOOLS + # ==================================================================== + skimmingTools = [] + if flags.InDet.DRAWZSelection: + IDTRKVALID_ANDTool = acc.getPrimaryAndMerge(IDTRKVALID_ANDToolCfg(flags)) + skimmingTools.append(IDTRKVALID_ANDTool) - if flags.Detector.GeometryITk: - from DerivationFrameworkInDet.InDetToolsConfig import (ITkTrackStateOnSurfaceDecoratorCfg) - DFTSOS = acc.getPrimaryAndMerge(ITkTrackStateOnSurfaceDecoratorCfg(flags)) - tsos_augmentationTools.append(DFTSOS) - - from DerivationFrameworkInDet.PixelNtupleMakerConfig import (EventInfoPixelModuleStatusMonitoringCfg) - DFEI = acc.getPrimaryAndMerge(EventInfoPixelModuleStatusMonitoringCfg(flags, - name = "EventInfoPixelModuleStatusMonitoring", - OutputLevel =INFO)) - augmentationTools.append(DFEI) + acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( + "IDTRKVALIDKernelPresel", SkimmingTools=skimmingTools)) # ==================================================================== - # SKIMMING TOOLS + # CREATE THE DERIVATION KERNEL ALGORITHM AND PASS THE ABOVE TOOLS # ==================================================================== + + acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( + name, + AugmentationTools = augmentationTools, + SkimmingTools = skimmingTools, + ThinningTools = [], + RunSkimmingFirst = True)) + + return acc + +def IDTRKVALID_PixelModuleStatus_KernelCfg( + flags, name='IDTRKVALID_PixelModuleStatus_Kernel'): + + acc = ComponentAccumulator() + + augmentationTools = [] + from DerivationFrameworkInDet.PixelNtupleMakerConfig import ( + EventInfoPixelModuleStatusMonitoringCfg) + DFEI = acc.getPrimaryAndMerge(EventInfoPixelModuleStatusMonitoringCfg(flags)) + augmentationTools.append(DFEI) + skimmingTools = [] if flags.InDet.DRAWZSelection: - sel_muon1 = 'Muons.pt > 25*GeV && Muons.ptcone40/Muons.pt < 0.3 && Muons.passesIDCuts' - sel_muon2 = 'Muons.pt > 20*GeV && Muons.ptcone40/Muons.pt < 0.3 && Muons.passesIDCuts' - draw_zmumu = '( count ( DRZmumuMass > 70*GeV && DRZmumuMass < 110*GeV ) >= 1 )' - from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (InvariantMassToolCfg,xAODStringSkimmingToolCfg,FilterCombinationANDCfg) - IDTRKVALID_ZmumuMass = acc.getPrimaryAndMerge(InvariantMassToolCfg(flags, - name="IDTRKVALID_ZmumuMass", - ContainerName = "Muon", - ObjectRequirements = sel_muon1, - SecondObjectRequirements = sel_muon2, - MassHypothesis = 105.66, - SecondMassHypothesis = 105.66, - StoreGateEntryName = "ZmumuMass")) - IDTRKVALID_SkimmingTool = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(flags, - name="IDTRKVALID_SkimmingTool", - expression=draw_zmumu)) - IDTRKVALID_ANDTool = acc.getPrimaryAndMerge(FilterCombinationANDCfg(flags, - name="IDTRKVALID_ANDTool", - FilterList=[IDTRKVALID_ZmumuMass,IDTRKVALID_SkimmingTool])) + IDTRKVALID_ANDTool = acc.getPrimaryAndMerge(IDTRKVALID_ANDToolCfg(flags)) skimmingTools.append(IDTRKVALID_ANDTool) + acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( + name, + AugmentationTools = augmentationTools, + SkimmingTools = skimmingTools, + ThinningTools = [], + RunSkimmingFirst = True)) + return acc - IDTRKVALIDKernelPresel = DerivationKernel("IDTRKVALIDKernelPresel", - SkimmingTools=skimmingTools) - acc.addEventAlgo(IDTRKVALIDKernelPresel, sequenceName="IDTRKVALIDSequence") +def IDTRKVALID_ITkPixelModuleStatus_KernelCfg( + flags, name='IDTRKVALID_ITkPixelModuleStatus_Kernel'): - if flags.Detector.GeometryID: - from InDetConfig.InDetPrepRawDataToxAODConfig import InDetPrepDataToxAODCfg - acc.merge(InDetPrepDataToxAODCfg(flags)) + acc = ComponentAccumulator() - if flags.Detector.GeometryITk: - from InDetConfig.InDetPrepRawDataToxAODConfig import ITkPrepDataToxAODCfg - acc.merge(ITkPrepDataToxAODCfg(flags)) + augmentationTools = [] + from DerivationFrameworkInDet.PixelNtupleMakerConfig import ( + ITkEventInfoPixelModuleStatusMonitoringCfg) + DFEI = acc.getPrimaryAndMerge( + ITkEventInfoPixelModuleStatusMonitoringCfg(flags)) + augmentationTools.append(DFEI) + + skimmingTools = [] + if flags.InDet.DRAWZSelection: + IDTRKVALID_ANDTool = acc.getPrimaryAndMerge(IDTRKVALID_ANDToolCfg(flags)) + skimmingTools.append(IDTRKVALID_ANDTool) + + acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( + name, + AugmentationTools = augmentationTools, + SkimmingTools = skimmingTools, + ThinningTools = [], + RunSkimmingFirst = True)) + + return acc + +def IDTRKVALIDThinningKernelCfg( + flags, name="IDTRKVALIDThinningKernel", StreamName=""): + acc = ComponentAccumulator() # ==================================================================== # THINNING TOOLS # ==================================================================== - thinningTools = [] + thinningTools = [] # MC truth thinning if flags.Input.isMC: - from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import (MenuTruthThinningCfg) - IDTRKVALIDTruthThinningTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(flags, - name = "IDTRKVALIDTruthThinningTool", - StreamName = kwargs['StreamName'], - WriteEverything = True, - WriteFirstN = -1, - PreserveAncestors = True, - PreserveGeneratorDescendants=True)) - thinningTools.append(IDTRKVALIDTruthThinningTool) + from DerivationFrameworkInDet.InDetToolsConfig import ( + IDTRKVALIDTruthThinningToolCfg) + thinningTools.append(acc.getPrimaryAndMerge( + IDTRKVALIDTruthThinningToolCfg(flags, StreamName=StreamName))) + + acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( + name, + AugmentationTools=[], + ThinningTools=thinningTools, + OutputLevel=INFO)) + return acc - # ==================================================================== - # CREATE THE DERIVATION KERNEL ALGORITHM AND PASS THE ABOVE TOOLS - # ==================================================================== - acc.addEventAlgo(DerivationKernel(name = "DFTSOSKernel", - AugmentationTools = tsos_augmentationTools, - ThinningTools = [], - OutputLevel =INFO), - sequenceName="IDTRKVALIDSequence") - - acc.addEventAlgo(DerivationKernel(name, - AugmentationTools = augmentationTools, - SkimmingTools = skimmingTools, - ThinningTools = [], - RunSkimmingFirst = True, - OutputLevel=INFO), - sequenceName="IDTRKVALIDSequence") - - acc.addEventAlgo(DerivationKernel(name="IDTRKVALIDThinningKernel", - AugmentationTools = [], - ThinningTools = thinningTools, - OutputLevel = INFO), - sequenceName="IDTRKVALIDSequence") + +def IDTRKVALIDKernelCfg(flags, StreamName=""): + """Configure the derivation framework driving algorithm (kernel) for IDTRKVALID""" + acc = ComponentAccumulator() + + IDTRKVALIDSequenceName='IDTRKVALIDSequence' + acc.addSequence(seqAND(IDTRKVALIDSequenceName)) + + acc.merge(IDTRKVALIDKernelCommonCfg(flags), + sequenceName=IDTRKVALIDSequenceName) + + acc.merge(IDTRKVALID_PixelModuleStatus_KernelCfg(flags), + sequenceName=IDTRKVALIDSequenceName) + + from InDetConfig.InDetPrepRawDataToxAODConfig import InDetPrepDataToxAODCfg + acc.merge(InDetPrepDataToxAODCfg(flags), + sequenceName=IDTRKVALIDSequenceName) + + from DerivationFrameworkInDet.InDetToolsConfig import DFInDetTSOSKernelCfg + acc.merge(DFInDetTSOSKernelCfg(flags), + sequenceName=IDTRKVALIDSequenceName) + + acc.merge(IDTRKVALIDThinningKernelCfg(flags, StreamName=StreamName), + sequenceName=IDTRKVALIDSequenceName) + + return acc + +def ITkTRKVALIDKernelCfg(flags, StreamName=""): + """Configure the derivation framework driving algorithm (kernel) for IDTRKVALID""" + acc = ComponentAccumulator() + + IDTRKVALIDSequenceName='IDTRKVALIDSequence' + acc.addSequence(seqAND(IDTRKVALIDSequenceName)) + + acc.merge(IDTRKVALIDKernelCommonCfg(flags), + sequenceName=IDTRKVALIDSequenceName) + + acc.merge(IDTRKVALID_ITkPixelModuleStatus_KernelCfg(flags), + sequenceName=IDTRKVALIDSequenceName) + + from InDetConfig.InDetPrepRawDataToxAODConfig import ITkPrepDataToxAODCfg + acc.merge(ITkPrepDataToxAODCfg(flags), + sequenceName=IDTRKVALIDSequenceName) + + from DerivationFrameworkInDet.InDetToolsConfig import DFITkTSOSKernelCfg + acc.merge(DFITkTSOSKernelCfg(flags), + sequenceName=IDTRKVALIDSequenceName) + + acc.merge(IDTRKVALIDThinningKernelCfg(flags, StreamName=StreamName), + sequenceName=IDTRKVALIDSequenceName) return acc @@ -154,9 +234,10 @@ def IDTRKVALIDCfg(flags): acc = ComponentAccumulator() # Main algorithm (kernel) - acc.merge(IDTRKVALIDKernelCfg(flags, - name = "IDTRKVALIDKernel", - StreamName = 'StreamDAOD_IDTRKVALID')) + if flags.Detector.GeometryID: + acc.merge(IDTRKVALIDKernelCfg(flags, StreamName = 'StreamDAOD_IDTRKVALID')) + if flags.Detector.GeometryITk: + acc.merge(ITkTRKVALIDKernelCfg(flags, StreamName = 'StreamDAOD_IDTRKVALID')) # ============================= # Define contents of the format @@ -164,9 +245,10 @@ def IDTRKVALIDCfg(flags): from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper - IDTRKVALIDSlimmingHelper = SlimmingHelper("IDTRKVALIDSlimmingHelper", - NamesAndTypes = flags.Input.TypedCollections, - ConfigFlags = flags) + IDTRKVALIDSlimmingHelper = SlimmingHelper( + "IDTRKVALIDSlimmingHelper", + NamesAndTypes = flags.Input.TypedCollections, + ConfigFlags = flags) AllVariables = [] StaticContent = [] @@ -226,6 +308,7 @@ def IDTRKVALIDCfg(flags): "SCT_Clusters": "xAOD::TrackMeasurementValidationContainer", "SCT_ClustersAux": "xAOD::TrackMeasurementValidationAuxContainer" }) + if flags.Detector.GeometryITk: if flags.ITk.DAODStorePixel: IDTRKVALIDSlimmingHelper.AppendToDictionary.update({ diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/InDetToolsConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/InDetToolsConfig.py index 5a1a066f798320b4cd44919b3db8a969cd551191..677321fc2d22229f68b1da16e651738611d77eae 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/InDetToolsConfig.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/InDetToolsConfig.py @@ -135,6 +135,25 @@ def DFTrackStateOnSurfaceDecoratorCfg( kwargs.setdefault("OutputLevel", INFO) return TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs) +def DFInDetTSOSKernelCfg(flags, name='DFInDetTSOSKernel'): + acc = ComponentAccumulator() + + # ==================================================================== + # AUGMENTATION TOOLS + # ==================================================================== + tsos_augmentationTools = [] + + DFTSOS = acc.getPrimaryAndMerge(DFTrackStateOnSurfaceDecoratorCfg(flags)) + tsos_augmentationTools.append(DFTSOS) + + # shared between IDTIDE and IDTRKVALID + acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( + name, + AugmentationTools=tsos_augmentationTools, + ThinningTools=[], + OutputLevel=INFO)) + return acc + def ObserverTrackStateOnSurfaceDecoratorCfg( flags, name="ObserverTrackStateOnSurfaceDecorator", **kwargs): kwargs.setdefault("ContainerName", "InDetObservedTrackParticles") @@ -265,13 +284,32 @@ def ITkTSOS_CommonKernelCfg(flags, name="ITkTSOS_CommonKernel"): def DFITkTrackStateOnSurfaceDecoratorCfg( flags, name="DFITkTrackStateOnSurfaceDecorator", **kwargs): - kwargs.setdefault("StorePixel", flags.Detector.EnableITkPixel) - kwargs.setdefault("StoreSCT", flags.Detector.EnableITkStrip) + kwargs.setdefault("StorePixel", flags.ITk.DAODStorePixel) + kwargs.setdefault("StoreSCT", flags.ITk.DAODStoreStrip) kwargs.setdefault("DecorationPrefix", "") kwargs.setdefault("PRDtoTrackMap", "") kwargs.setdefault("OutputLevel", INFO) return ITkTrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs) +def DFITkTSOSKernelCfg(flags, name='DFITkTSOSKernel'): + acc = ComponentAccumulator() + + # ==================================================================== + # AUGMENTATION TOOLS + # ==================================================================== + tsos_augmentationTools = [] + + DFTSOS = acc.getPrimaryAndMerge(DFITkTrackStateOnSurfaceDecoratorCfg(flags)) + tsos_augmentationTools.append(DFTSOS) + + # shared between IDTIDE and IDTRKVALID + acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel( + name, + AugmentationTools=tsos_augmentationTools, + ThinningTools=[], + OutputLevel=INFO)) + return acc + def ITkSiSPTrackStateOnSurfaceDecoratorCfg( flags, name="SiSPTrackStateOnSurfaceDecorator", **kwargs): kwargs.setdefault("ContainerName", "SiSPSeededTracksTrackParticles") @@ -514,3 +552,15 @@ def IDTIDETruthThinningToolCfg(flags, name="IDTIDETruthThinningTool", **kwargs): from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import ( MenuTruthThinningCfg) return MenuTruthThinningCfg(flags, name, **kwargs) + +def IDTRKVALIDTruthThinningToolCfg( + flags, name="IDTRKVALIDTruthThinningTool", **kwargs): + + kwargs.setdefault("WriteEverything", True) + kwargs.setdefault("WriteFirstN", -1) + kwargs.setdefault("PreserveAncestors", True) + kwargs.setdefault("PreserveGeneratorDescendants", True) + + from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import ( + MenuTruthThinningCfg) + return MenuTruthThinningCfg(flags, name, **kwargs) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/PixelNtupleMakerConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/PixelNtupleMakerConfig.py index f9e9e23b72296f13425401892a730ae34193bd01..7b98802b6964966581e917a9912176cbb344577d 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/PixelNtupleMakerConfig.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkInDet/python/PixelNtupleMakerConfig.py @@ -8,7 +8,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from PixelConditionsTools.PixelConditionsSummaryConfig import PixelConditionsSummaryCfg def PixelNtupleMakerCfg(flags, name="PixelMonitoringTool", **kwargs): acc= ComponentAccumulator() @@ -21,10 +20,62 @@ def PixelNtupleMakerCfg(flags, name="PixelMonitoringTool", **kwargs): acc.addPublicTool(the_tool, primary = True) return acc -def EventInfoPixelModuleStatusMonitoringCfg(flags, name="EventInfoPixelModuleStatusMonitoring", **kwargs): - acc= ComponentAccumulator() - kwargs.setdefault("PixelConditionsSummaryTool", acc.popToolsAndMerge(PixelConditionsSummaryCfg(flags))) - the_tool = CompFactory.DerivationFramework.EventInfoPixelModuleStatusMonitoring(name,**kwargs) - acc.addPublicTool(the_tool, primary = True) +def EventInfoPixelModuleStatusMonitoringCfg( + flags, name="EventInfoPixelModuleStatusMonitoring", **kwargs): + from PixelConditionsAlgorithms.PixelConditionsConfig import ( + PixelDCSCondTempAlgCfg, PixelDCSCondHVAlgCfg, + PixelDCSCondStateAlgCfg, PixelDCSCondStatusAlgCfg, + PixelDeadMapCondAlgCfg, ) + acc = PixelDCSCondTempAlgCfg(flags) + acc.merge(PixelDCSCondHVAlgCfg(flags)) + acc.merge(PixelDCSCondStateAlgCfg(flags)) + acc.merge(PixelDCSCondStatusAlgCfg(flags)) + acc.merge(PixelDeadMapCondAlgCfg(flags)) + + if "PixelConditionsSummaryTool" not in kwargs: + from PixelConditionsTools.PixelConditionsSummaryConfig import ( + PixelConditionsSummaryCfg) + kwargs.setdefault("PixelConditionsSummaryTool", acc.popToolsAndMerge( + PixelConditionsSummaryCfg(flags))) + + acc.addPublicTool( + CompFactory.DerivationFramework.EventInfoPixelModuleStatusMonitoring( + name,**kwargs), primary = True) + return acc + +def ITkEventInfoPixelModuleStatusMonitoringCfg( + flags, name="ITkEventInfoPixelModuleStatusMonitoring", **kwargs): + from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ( + ITkPixelDCSCondTempAlgCfg, ITkPixelDCSCondHVAlgCfg, + ITkPixelDCSCondStateAlgCfg, ITkPixelDCSCondStatusAlgCfg, + ITkPixelDeadMapCondAlgCfg) + acc = ITkPixelDCSCondTempAlgCfg(flags) + acc.merge(ITkPixelDCSCondHVAlgCfg(flags)) + acc.merge(ITkPixelDCSCondStateAlgCfg(flags)) + acc.merge(ITkPixelDCSCondStatusAlgCfg(flags)) + acc.merge(ITkPixelDeadMapCondAlgCfg(flags)) + + kwargs.setdefault("ReadKeyeTemp", "ITkPixelDCSTempCondData") + kwargs.setdefault("ReadKeyHV", "ITkPixelDCSHVCondData") + kwargs.setdefault("PixelDCSStateCondData", "ITkPixelDCSStateCondData") + kwargs.setdefault("PixelDCSStatusCondData", "ITkPixelDCSStatusCondData") + kwargs.setdefault("PixelDeadMapCondData", "ITkPixelDeadMapCondData") + + # No PixelByteStreamErrs producer yet for ITk + kwargs.setdefault("PixelByteStreamErrs", "") + kwargs.setdefault("UseByteStreamRD53", False) + + kwargs.setdefault("UseByteStreamFEI4", False) + kwargs.setdefault("UseByteStreamFEI3", False) + + if "PixelConditionsSummaryTool" not in kwargs: + from PixelConditionsTools.ITkPixelConditionsSummaryConfig import ( + ITkPixelConditionsSummaryCfg) + kwargs.setdefault("PixelConditionsSummaryTool", acc.popToolsAndMerge( + ITkPixelConditionsSummaryCfg(flags))) + + acc.addPublicTool( + CompFactory.DerivationFramework.EventInfoPixelModuleStatusMonitoring( + name,**kwargs), primary = True) return acc