15 from AthenaConfiguration.ComponentAccumulator 
import ComponentAccumulator
 
   16 from AthenaConfiguration.ComponentFactory 
import CompFactory
 
   17 from AthenaConfiguration.Enums 
import MetadataCategory
 
   18 from AthenaCommon.Logging 
import logging
 
   19 logSTDM6 = logging.getLogger(
'STDM6')
 
   25     """Configure the derivation framework driving algorithm (kernel) for STDM6""" 
   29     from DerivationFrameworkPhys.PhysCommonConfig 
import PhysCommonAugmentationsCfg
 
   32         TriggerListsHelper     = kwargs[
'TriggerListsHelper'], 
 
   33         TauJets_EleRM_in_input = kwargs[
'TauJets_EleRM_in_input']
 
   36     from DerivationFrameworkInDet.InDetToolsConfig 
import InDetTrackSelectionToolWrapperCfg
 
   39         name           = 
"DFJETM1CommonTrackSelectionLoose",
 
   41         DecorationName = 
"DFJETM1Loose"))
 
   43     acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(
"JETM1CommonKernel", AugmentationTools = [DFCommonTrackSelection]))
 
   48         'TrackParticleThinningToolName'       : 
"STDM6TrackParticleThinningTool",
 
   49         'MuonTPThinningToolName'              : 
"STDM6MuonTPThinningTool",
 
   50         'TauJetThinningToolName'              : 
"STDM6TauJetThinningTool",
 
   51         'TauJets_MuonRMThinningToolName'      : 
"STDM6TauJets_MuonRMThinningTool",
 
   52         'DiTauThinningToolName'               : 
"STDM6DiTauThinningTool",
 
   53         'DiTauTPThinningToolName'             : 
"STDM6DiTauTPThinningTool",
 
   54         'DiTauLowPtThinningToolName'          : 
"STDM6DiTauLowPtThinningTool",
 
   55         'DiTauLowPtTPThinningToolName'        : 
"STDM6DiTauLowPtTPThinningTool",
 
   58     if kwargs.get(
'TauJets_EleRM_in_input', 
False):
 
   59         thinningToolsArgs[
'TauJets_EleRMThinningToolName'] = 
"STDM6TauJets_EleRMThinningTool" 
   61     from DerivationFrameworkPhys.PhysCommonThinningConfig 
import PhysCommonThinningCfg
 
   65     for key 
in thinningToolsArgs:
 
   66         thinningTools.append(acc.getPublicTool(thinningToolsArgs[key]))
 
   69     DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
 
   83     from JetRecConfig.JetRecConfig 
import JetRecCfg, getModifier
 
   84     from JetRecConfig.StandardJetMods 
import stdJetModifiers
 
   85     from JetRecConfig.StandardSmallRJets 
import AntiKt4PV0Track, AntiKt4EMPFlow, AntiKt4EMPFlowNoPtCut, AntiKt4EMTopoNoPtCut
 
   90     bJVTTool = 
getModifier(AntiKt4EMPFlow, stdJetModifiers[
'bJVT'], stdJetModifiers[
'bJVT'].modspec, flags=flags)
 
   91     acc.addEventAlgo(CompFactory.JetDecorationAlg(name=
'bJVTAlg',
 
   92                                                   JetContainer=
'AntiKt4EMPFlowJets', 
 
   93                                                   Decorators=[bJVTTool]))
 
   98     jetList = [AntiKt4PV0Track]
 
  104         jetList += [AntiKt4EMPFlowNoPtCut, AntiKt4EMTopoNoPtCut]
 
  110         from JetRecConfig.StandardSmallRJets 
import AntiKt4UFOCSSKNoPtCut
 
  111         AntiKt4UFOCSSKNoPtCut_JETM1 = AntiKt4UFOCSSKNoPtCut.clone(
 
  112             modifiers = AntiKt4UFOCSSKNoPtCut.modifiers+(
"NNJVT",)
 
  114         jetList += [AntiKt4UFOCSSKNoPtCut_JETM1]
 
  116         from JetRecConfig.StandardSmallRJets 
import AntiKt4UFOCSSK
 
  117         AntiKt4UFOCSSK_JETM1 = AntiKt4UFOCSSK.clone(
 
  118             modifiers = AntiKt4UFOCSSK.modifiers+(
"NNJVT",)
 
  120         jetList += [AntiKt4UFOCSSK_JETM1]
 
  130     from JetRecConfig.JetRecConfig 
import getConstitPJGAlg
 
  131     from JetRecConfig.StandardJetConstits 
import stdConstitDic 
as cst
 
  132     from JetRecConfig.JetInputConfig 
import buildEventShapeAlg
 
  143         from DerivationFrameworkMCTruth.MCTruthCommonConfig 
import AddTopQuarkAndDownstreamParticlesCfg
 
  152     if flags.Trigger.EDMVersion == 2:
 
  153         triggerNames = [
"JetContainer_a4tcemsubjesFS", 
"JetContainer_a4tcemsubjesISFS", 
"JetContainer_GSCJet",
 
  154                         "JetContainer_a10tclcwsubjesFS", 
"JetContainer_a10tclcwsubFS", 
"JetContainer_a10ttclcwjesFS"]
 
  156         for trigger 
in triggerNames:
 
  157             wrapperName = trigger+
'AuxWrapper' 
  158             auxContainerName = 
'HLT_xAOD__'+trigger+
'Aux' 
  160             acc.addEventAlgo(CompFactory.xAODMaker.AuxStoreWrapper( wrapperName, SGKeys = [ auxContainerName+
"." ] ))
 
  165 def STDM6CoreCfg(flags, name_tag='STDM6', StreamName='StreamDAOD_STDM6', TriggerListsHelper=None, TauJets_EleRM_in_input=None):
 
  167     if TriggerListsHelper 
is None:
 
  168         from DerivationFrameworkPhys.TriggerListsHelper 
import TriggerListsHelper
 
  169         TriggerListsHelper = TriggerListsHelper(flags)
 
  171     if TauJets_EleRM_in_input 
is None:
 
  173         TauJets_EleRM_in_input = (flags.Input.TypedCollections.count(
'xAOD::TauJetContainer#TauJets_EleRM') > 0)
 
  178     from DerivationFrameworkHiggs.HiggsPhysContent 
import  HiggsAugmentationAlgsCfg
 
  183     from IsolationSelection.IsolationSelectionConfig 
import  IsoCloseByAlgsCfg
 
  184     acc.merge(
IsoCloseByAlgsCfg(flags, suff = 
"_"+name_tag, isPhysLite = 
False, stream_name = StreamName))
 
  189     from DerivationFrameworkMCTruth.HFClassificationCommonConfig 
import HFClassificationCommonCfg
 
  195     from OutputStreamAthenaPool.OutputStreamConfig 
import OutputStreamCfg
 
  196     from xAODMetaDataCnv.InfileMetaDataConfig 
import SetupMetaDataForStreamCfg
 
  197     from DerivationFrameworkCore.SlimmingHelper 
import SlimmingHelper
 
  199     STDM6SlimmingHelper = 
SlimmingHelper(name_tag+
"SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
 
  200     STDM6SlimmingHelper.SmartCollections = [
"EventInfo",
 
  205                                            "InDetTrackParticles",
 
  207                                            "AntiKt4EMPFlowJets",
 
  208                                            "AntiKt10UFOCSSKJets",
 
  209                                            "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
 
  210                                            "BTagging_AntiKt4EMPFlow",
 
  211                                            "BTagging_AntiKtVR30Rmax4Rmin02Track",
 
  212                                            "MET_Baseline_AntiKt4EMTopo",
 
  213                                            "MET_Baseline_AntiKt4EMPFlow",
 
  218                                            "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
 
  219                                            "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
 
  220                                            "AntiKtVR30Rmax4Rmin02PV0TrackJets",
 
  222     if TauJets_EleRM_in_input:
 
  223         STDM6SlimmingHelper.SmartCollections.append(
"TauJets_EleRM")
 
  228     STDM6SlimmingHelper.AllVariables += [ 
"AFPSiHitContainer",
 
  229                                          "AFPToFHitContainer",
 
  230                                          "AFPSiHitsClusterContainer",
 
  232                                          "AFPToFTrackContainer",    
 
  233                                          "AFPProtonContainer",
 
  234                                          "AFPVertexContainer",
 
  235                                          "CaloCalTopoClusters",
 
  240     STDM6SlimmingHelper.AllVariables += [
"MuonSegments", 
"EventInfo",
 
  241                                          "Kt4EMTopoOriginEventShape",
"Kt4EMPFlowEventShape",
"Kt4EMPFlowPUSBEventShape",
"Kt4EMPFlowNeutEventShape",
"Kt4UFOCSSKEventShape",
"Kt4UFOCSSKNeutEventShape",
 
  242                                          "AntiKt4EMPFlowJets"]
 
  244     excludedVertexAuxData = 
"-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV" 
  246     StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
 
  247     StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
 
  248     StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
 
  249     StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
 
  250     StaticContent += [
"xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
 
  251     StaticContent += [
"xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]   
 
  253     STDM6SlimmingHelper.StaticContent = StaticContent
 
  256     STDM6SlimmingHelper.ExtraVariables += [
"AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt",
 
  257                                               "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.isJvtHS.isJvtPU",
 
  258                                               "TruthPrimaryVertices.t.x.y.z",
 
  259                                               "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
 
  260                                               "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ.HF_Classification.HF_SimpleClassification",
 
  261                                               "TauJets.dRmax.etOverPtLeadTrk",
 
  262                                               "TauJets_MuonRM.dRmax.etOverPtLeadTrk",
 
  263                                               "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
 
  264                                               "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
 
  265     if TauJets_EleRM_in_input:
 
  266         STDM6SlimmingHelper.ExtraVariables += [
"TauJets_EleRM.dRmax.etOverPtLeadTrk"]
 
  270     STDM6SlimmingHelper.ExtraVariables  += [
"AntiKt4EMTopoJets.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1",
 
  271                                            "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1",
 
  272                                            "AntiKt4EMPFlowJets.passOnlyBJVT.DFCommonJets_bJvt.isJvtHS.isJvtPU",
 
  273                                            "InDetTrackParticles.truthMatchProbability",
 
  274                                            "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets.zg.rg.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack",
 
  275                                            "AntiKt10UFOCSSKJets.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack"]
 
  280     for tagger 
in [
"GN2Xv00", 
"GN2XWithMassv00", 
"GN2Xv01"]:
 
  281         for score 
in [
"phbb", 
"phcc", 
"ptop", 
"pqcd"]:
 
  282             extraList.append(f
"{tagger}_{score}")
 
  283     STDM6SlimmingHelper.ExtraVariables += [
"AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets." + 
".".
join(extraList)]
 
  293         from DerivationFrameworkMCTruth.MCTruthCommonConfig 
import addTruth3ContentToSlimmerTool
 
  297         STDM6SlimmingHelper.AppendToDictionary.update({
'TruthParticles': 
'xAOD::TruthParticleContainer',
 
  298                                                        'TruthParticlesAux': 
'xAOD::TruthParticleAuxContainer'})
 
  300         STDM6SlimmingHelper.AllVariables += [
'TruthHFWithDecayParticles',
'TruthHFWithDecayVertices',
'TruthCharm',
'TruthPileupParticles',
'InTimeAntiKt4TruthJets',
'OutOfTimeAntiKt4TruthJets']
 
  301         STDM6SlimmingHelper.AllVariables += [
"TruthEvents", 
"TruthParticles", 
"TruthVertices", 
"AntiKt4TruthJets",
"AntiKt4TruthWZJets"]
 
  302         STDM6SlimmingHelper.ExtraVariables += [
"Electrons.TruthLink",
 
  305                                               "AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt",
 
  306                                               "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt",
 
  307                                               "TruthPrimaryVertices.t.x.y.z",
 
  308                                               "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
 
  309                                               "PrimaryVertices.x.y.z.covariance.trackWeights.vertexType.sumPt2",
 
  313         STDM6SlimmingHelper.SmartCollections += [
"AntiKt4TruthWZJets"]
 
  314         STDM6SlimmingHelper.AllVariables += [
"TruthTopQuarkWithDecayParticles",
"TruthTopQuarkWithDecayVertices",
 
  315                                              "AntiKt4TruthJets", 
"InTimeAntiKt4TruthJets", 
"OutOfTimeAntiKt4TruthJets", 
"TruthParticles"]
 
  316         STDM6SlimmingHelper.ExtraVariables += [
"TruthVertices.uid.z"]
 
  318         from DerivationFrameworkMCTruth.MCTruthCommonConfig 
import AddTauAndDownstreamParticlesCfg
 
  320         STDM6SlimmingHelper.AllVariables += [
'TruthTausWithDecayParticles',
'TruthTausWithDecayVertices']
 
  322     STDM6SlimmingHelper.AppendToDictionary.update({
'Kt4UFOCSSKEventShape':
'xAOD::EventShape',
 
  323                                                    'Kt4UFOCSSKEventShapeAux':
'xAOD::EventShapeAuxInfo',
 
  324                                                    'Kt4UFOCSSKNeutEventShape':
'xAOD::EventShape',
 
  325                                                    'Kt4UFOCSSKNeutEventShapeAux':
'xAOD::EventShapeAuxInfo'})
 
  328     from DerivationFrameworkHiggs.HiggsPhysContent 
import  setupHiggsSlimmingVariables
 
  332     STDM6SlimmingHelper.IncludeTriggerNavigation = 
False 
  334     STDM6SlimmingHelper.IncludeJetTriggerContent = 
True 
  335     STDM6SlimmingHelper.IncludeMuonTriggerContent = 
False 
  336     STDM6SlimmingHelper.IncludeEGammaTriggerContent = 
False 
  337     STDM6SlimmingHelper.IncludeJetTauEtMissTriggerContent = 
False 
  338     STDM6SlimmingHelper.IncludeTauTriggerContent = 
False 
  339     STDM6SlimmingHelper.IncludeEtMissTriggerContent = 
False 
  340     STDM6SlimmingHelper.IncludeBJetTriggerContent = 
False 
  341     STDM6SlimmingHelper.IncludeBPhysTriggerContent = 
False 
  342     STDM6SlimmingHelper.IncludeMinBiasTriggerContent = 
False 
  346     if flags.Trigger.EDMVersion == 2:
 
  347         from DerivationFrameworkPhys.TriggerMatchingCommonConfig 
import AddRun2TriggerMatchingToSlimmingHelper
 
  349                                          OutputContainerPrefix = 
"TrigMatch_", 
 
  350                                          TriggerList = TriggerListsHelper.Run2TriggerNamesTau)
 
  352                                          OutputContainerPrefix = 
"TrigMatch_",
 
  353                                          TriggerList = TriggerListsHelper.Run2TriggerNamesNoTau)
 
  354         triggerNames = [
"a4tcemsubjesFS", 
"a4tcemsubjesISFS", 
"a10tclcwsubjesFS", 
"a10tclcwsubFS", 
"a10ttclcwjesFS", 
"GSCJet"]
 
  355         for trigger 
in triggerNames:
 
  356             STDM6SlimmingHelper.FinalItemList.append(
'xAOD::AuxContainerBase!#HLT_xAOD__JetContainer_'+trigger+
'Aux.pt.eta.phi.m')
 
  359     if flags.Trigger.EDMVersion == 3 
or (flags.Trigger.EDMVersion == 2 
and flags.Trigger.doEDMVersionConversion):
 
  360         from TrigNavSlimmingMT.TrigNavSlimmingMTConfig 
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
 
  363     jetOutputList = [
"AntiKt4PV0TrackJets", 
"AntiKt4UFOCSSKJets"]
 
  365         jetOutputList = [
"AntiKt4PV0TrackJets",
"AntiKt4UFOCSSKNoPtCutJets",
"AntiKt4EMPFlowNoPtCutJets",
"AntiKt4EMTopoNoPtCutJets"]
 
  366     from DerivationFrameworkJetEtMiss.JetCommonConfig 
import addJetsToSlimmingTool
 
  371     STDM6ItemList = STDM6SlimmingHelper.GetItemList()
 
  372     acc.merge(
OutputStreamCfg(flags, 
"DAOD_"+name_tag, ItemList=STDM6ItemList, AcceptAlgs=[name_tag+
"Kernel"]))
 
  373     acc.merge(
SetupMetaDataForStreamCfg(flags, 
"DAOD_"+name_tag, AcceptAlgs=[name_tag+
"Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))
 
  379     logSTDM6.info(
'****************** STARTING STDM6 *****************')
 
  381     stream_name = 
'StreamDAOD_STDM6' 
  388     from DerivationFrameworkPhys.TriggerListsHelper 
import TriggerListsHelper
 
  389     STDM6TriggerListsHelper = TriggerListsHelper(flags)
 
  392     TauJets_EleRM_in_input = (flags.Input.TypedCollections.count(
'xAOD::TauJetContainer#TauJets_EleRM') > 0)
 
  393     if TauJets_EleRM_in_input:
 
  394         logSTDM6.info(
"TauJets_EleRM is in the input AOD. Relevant containers will be scheduled")
 
  396         logSTDM6.info(
"TauJets_EleRM is Not in the input AOD. No relevant containers will be written")
 
  402         StreamName = stream_name, 
 
  403         TriggerListsHelper = STDM6TriggerListsHelper, 
 
  404         TauJets_EleRM_in_input=TauJets_EleRM_in_input
 
  410         StreamName = stream_name,
 
  411         TriggerListsHelper = STDM6TriggerListsHelper, 
 
  412         TauJets_EleRM_in_input=TauJets_EleRM_in_input