diff --git a/Event/xAOD/xAODJet/Root/JetContainerInfo.cxx b/Event/xAOD/xAODJet/Root/JetContainerInfo.cxx index c7aaa6b69083bbc7c326dc757055dd3d8651999e..54386f5affb7ba9c54b3a7112ea7224d0de36447 100644 --- a/Event/xAOD/xAODJet/Root/JetContainerInfo.cxx +++ b/Event/xAOD/xAODJet/Root/JetContainerInfo.cxx @@ -100,6 +100,7 @@ namespace xAOD { { "EMTopoOrigin", EMTopoOrigin }, { "TopoTower", TopoTower }, { "Tower", Tower }, + { "Jet", Jet }, { "Truth", Truth }, { "TruthWZ", TruthWZ }, { "TruthDressedWZ", TruthDressedWZ }, @@ -148,6 +149,7 @@ namespace xAOD { { EMTopoOrigin, "EMTopoOrigin" }, { TopoTower, "TopoTower" }, { Tower, "Tower" }, + { Jet, "Jet" }, { Truth, "Truth" }, { TruthWZ, "TruthWZ" }, { TruthDressedWZ, "TruthDressedWZ" }, diff --git a/Reconstruction/Jet/JetCalibTools/python/JetCalibToolsConfig.py b/Reconstruction/Jet/JetCalibTools/python/JetCalibToolsConfig.py index 464ba9a6138146b5d1689b34902846dfaf5a314a..57e9d3bde7ab5fbd59f9523b370e24e4ed1b2bf8 100644 --- a/Reconstruction/Jet/JetCalibTools/python/JetCalibToolsConfig.py +++ b/Reconstruction/Jet/JetCalibTools/python/JetCalibToolsConfig.py @@ -24,29 +24,30 @@ all = ['getJetCalibTool'] pflowcontexts = { "T0":("JES_MC15cRecommendation_PFlow_Aug2016_rel21.config","00-04-77","JetArea_Residual_EtaJES"), # Omit smearing, to avoid any efficiency loss - "AnalysisLatest":("JES_data2017_2016_2015_Consolidated_PFlow_2018_Rel21.config","00-04-82","JetArea_Residual_EtaJES_GSC_InSitu"), + "AnalysisLatest":("JES_data2017_2016_2015_Consolidated_PFlow_2018_Rel21.config","00-04-82","JetArea_Residual_EtaJES_GSC_Insitu"), } topocontexts = { "T0":("JES_MC15cRecommendation_May2016_rel21.config","00-04-77","JetArea_Residual_EtaJES"), - # Placeholder from a vague approximation of the 2017 setup? - "Trigger":("JES_MC15cRecommendation_May2016_Trigger.config","00-04-77","JetArea_Residual_EtaJES_InSitu"), # Omit smearing, to avoid any efficiency loss - "AnalysisLatest":("JES_data2017_2016_2015_Consolidated_EMTopo_2018_Rel21.config","00-04-82","JetArea_Residual_EtaJES_GSC_InSitu"), + "AnalysisLatest":("JES_data2017_2016_2015_Consolidated_EMTopo_2018_Rel21.config","00-04-82","JetArea_Residual_EtaJES_GSC_Insitu"), + "TrigSubJES":("JES_MC15cRecommendation_May2016_Trigger.config","00-04-77","JetArea_EtaJES"), + "TrigSubJESIS":("JES_MC15cRecommendation_May2016_Trigger.config","00-04-77","JetArea_EtaJES_GSC_Insitu"), } rscanlc2 = { - "RScanLatest":("JES_MC16Recommendation_Rscan2LC_22Feb2018_rel21.config","00-04-81","JetArea_Residual_EtaJES_GSC_InSitu") + "RScanLatest":("JES_MC16Recommendation_Rscan2LC_22Feb2018_rel21.config","00-04-81","JetArea_Residual_EtaJES_GSC_Insitu") } rscanlc6 = { - "RScanLatest":("JES_MC16Recommendation_Rscan6LC_22Feb2018_rel21.config","00-04-81","JetArea_Residual_EtaJES_GSC_InSitu") + "RScanLatest":("JES_MC16Recommendation_Rscan6LC_22Feb2018_rel21.config","00-04-81","JetArea_Residual_EtaJES_GSC_Insitu") } fatjetcontexts = { "CombinedMass": ("JES_MC16recommendation_FatJet_JMS_comb_19Jan2018.config","00-04-81","EtaJES_JMS"), "CaloMass": ("JES_MC16recommendation_FatJet_JMS_calo_29Nov2017.config","00-04-81","EtaJES_JMS"), "TAMass": ("JES_MC16recommendation_FatJet_JMS_TA_29Nov2017.config","00-04-81","EtaJES_JMS"), + "TrigSubJES": ("JES_Full2012dataset_Rscan_June2014.config","00-04-77","JetArea_EtaJES"), } # List AFII config files separately, to avoid needing to specify a different context @@ -61,6 +62,7 @@ calibcontexts = { "AntiKt4EMPFlow":pflowcontexts, "AntiKt4EMTopo":topocontexts, "AntiKt4LCTopo":topocontexts, + "AntiKt10LCTopo":fatjetcontexts, # Standard trimmed "AntiKt10LCTopoTrimmedPtFrac5SmallR20":fatjetcontexts, # R-Scan @@ -69,7 +71,7 @@ calibcontexts = { } -hasInSitu = ["AntiKt4LCTopo", "AntiKt4EMTopo", "AntiKt4EMPFlow"] +hasInSitu = ["AntiKt4LCTopo", "AntiKt4EMTopo", "AntiKt4EMPFlow", "TrigAntiKt4EMTopo"] # This method extracts the relevant configuration, does some consistency checks, # then forwards the configuration to defineJetCalibTool, returning the output. @@ -98,7 +100,7 @@ def getJetCalibTool(jetcollection, context, data_type, calibseq = ""): # Check that the calib sequence requests something sensible for the in situ calibration # Leave other checks for the tool code. # Might need to specialise if we decide MC trigger jets should also have in situ. - if calibseq_tmp.endswith("InSitu"): + if calibseq_tmp.endswith("Insitu"): if data_type == 'data': if not jetcollection in hasInSitu: raise ValueError("In situ calibration does not exist for {0}, context {1}".format(jetcollection,context)) @@ -141,15 +143,15 @@ def getJetCalibToolPrereqs(modspec,jetdef): calibcontext, data_type, calibseq = getCalibSpecsFromString(modspec) if calibseq=="": cfg, calibarea, calibseq = calibcontexts[jetdef.basename][calibcontext] - # For now, only dependent on calibseq -- can ignore InSitu, which is + # For now, only dependent on calibseq -- can ignore Insitu, which is # added when getting the concrete tool prereqs = [] prereqs.append("mod:ConstitFourMom") if "JetArea" in calibseq: prereqs.append("input:EventDensity") + prereqs += ["mod:CaloEnergies"] if "GSC" in calibseq: - prereqs += ["mod:CaloEnergies", - "mod:TrackMoments", + prereqs += ["mod:TrackMoments", "ghost:MuonSegment"] jetcaliblog.debug("Prereqs for calibseq '{0}': {1}".format(calibseq,str(prereqs))) return prereqs diff --git a/Reconstruction/Jet/JetRecConfig/python/ConstModHelpers.py b/Reconstruction/Jet/JetRecConfig/python/ConstModHelpers.py index 109f9fdf622d1d2e3c902b732579cc98a33ad044..e132136311ee7ca46080c0facc46ed92d37c2793 100644 --- a/Reconstruction/Jet/JetRecConfig/python/ConstModHelpers.py +++ b/Reconstruction/Jet/JetRecConfig/python/ConstModHelpers.py @@ -29,73 +29,88 @@ from PFlowUtils import PFlowUtilsConf # Maybe we need a config class in JetDefinition? ConstModTools = { + # Topoclusters "Origin": JetRecToolsConf.CaloClusterConstituentsOrigin, "EM": JetRecToolsConf.ClusterAtEMScaleTool, + # Particle flow + "CorrectPFO": + JetRecToolsConf.CorrectPFOTool, + "CHS": JetRecToolsConf.ChargedHadronSubtractionTool, + # Pileup suppression "Vor": JetRecToolsConf.VoronoiWeightTool, "CS": JetRecToolsConf.ConstituentSubtractorTool, "SK": JetRecToolsConf.SoftKillerWeightTool } ConstModConfigs = { + # Topoclusters "Origin": {}, "EM": {}, + # Particle flow + "CorrectPFO": + {"WeightPFOTool": PFlowUtilsConf.CP__WeightPFOTool("weightPFO")}, + "CHS": {}, + # Pileup suppression "Vor": {"doSpread":False, "nSigma":0}, "CS": {"MaxEta":5.}, "SK": {} } -def ConstitModAlg(inputtype,sequence,suffix=""): - # May wish to pass an empty sequence for regular PFlow - modlist = [] +def getConstitModAlg(constit,suffix=""): + inputtype = constit.basetype + + # Need to extend to TCC + if not inputtype in [xAODType.CaloCluster, xAODType.ParticleFlow]: + constmodlog.error("Only ParticleFlow and CaloCluster currently supported!") + raise TypeError("Unsupported input type {0}".format(inputtype)) + + + sequence = list(constit.modifiers) # Copy, as we may make some additions + typename = {xAODType.CaloCluster: "TopoCluster", + xAODType.ParticleFlow: "EMPFlow" + }[inputtype] + if inputtype == xAODType.ParticleFlow: - weightPFO = PFlowUtilsConf.CP__WeightPFOTool("weightPFO") - correctPFO = JetRecToolsConf.CorrectPFOTool("correctPFO", - InputType = inputtype, - WeightPFOTool = weightPFO - ) - modlist.append(correctPFO) - inputname = {xAODType.CaloCluster: "TopoCluster", - xAODType.ParticleFlow: "EMPFlow" - }[inputtype] + # Always do 4mom corrections first and CHS last + sequence = ["CorrectPFO"] + sequence + ["CHS"] + # If no mods are needed, don't give back a tool + if sequence == []: return None + + modlist = [] for step in sequence: if step == "LC": continue # Nothing to do for LC clusters tool = None - toolname = "ConstitMod{0}_{1}{2}".format(inputname,step,suffix) + toolname = "ConstitMod{0}_{1}{2}".format(typename,step,suffix) tool = ConstModTools[step](toolname,**ConstModConfigs[step]) - if inputtype == xAODType.ParticleFlow: + if inputtype == xAODType.ParticleFlow and not step in ["CorrectPFO","CHS"]: tool.IgnoreChargedPFO=True tool.ApplyToChargedPFO=False tool.InputType = inputtype modlist.append(tool) sequenceshort = "".join(sequence) - seqname = "ConstitMod{0}_{1}{2}".format(sequenceshort,inputname,suffix) - inputcontainer = "" - outputcontainer = "" + seqname = "ConstitMod{0}_{1}{2}".format(sequenceshort,typename,suffix) + inputcontainer = str(constit.rawname) + outputcontainer = str(constit.inputname) if inputtype==xAODType.ParticleFlow: - inputcontainer = "JetETMiss" - outputcontainer = sequenceshort if sequenceshort else "CHS" - chstool = JetRecToolsConf.ChargedHadronSubtractionTool("chsPFO") - chstool.InputType = inputtype - modlist.append(chstool) - elif inputtype==xAODType.CaloCluster: - inputcontainer = "CaloCalTopoClusters" - outputcontainer = sequenceshort+"TopoClusters" - else: - constmodlog.error("Only ParticleFlow and CaloCluster currently supported!") - raise TypeError("Unsupported input type {0}".format(inputtype)) - - # If no mods are needed, don't give back a tool - if not modlist: return components + # Tweak PF names because ConstModSequence needs to work with + # up to 4 containers + def chopPFO(thestring): + pfostr = "ParticleFlowObjects" + if thestring.endswith(pfostr): + return thestring[:-len(pfostr)] + return thestring + inputcontainer = chopPFO(inputcontainer) + outputcontainer = chopPFO(outputcontainer) modseq = JetRecToolsConf.JetConstituentModSequence(seqname, InputType=inputtype, OutputContainer = outputcontainer, InputContainer= inputcontainer, - Modifiers = [ mod for mod in modlist] + Modifiers = modlist ) constitmodalg = JetRecConf.JetAlgorithm("jetalg_{0}".format(modseq.getName())) diff --git a/Reconstruction/Jet/JetRecConfig/python/JetDefinition.py b/Reconstruction/Jet/JetRecConfig/python/JetDefinition.py index 978024c80eb44cb108367056422bd969bce460a5..9f60833da7d42b3de0621ea76cf78b8144da5e24 100644 --- a/Reconstruction/Jet/JetRecConfig/python/JetDefinition.py +++ b/Reconstruction/Jet/JetRecConfig/python/JetDefinition.py @@ -10,9 +10,6 @@ __all__ = ["JetConstit", "JetGhost", "JetDefinition","xAODType"] -# Code from JetRecUtils -# define the convention that we write R truncating the decimal point -# if R>=1, then we write R*10 from AthenaCommon import Logging jetlog = Logging.logging.getLogger('JetDefinition') @@ -25,6 +22,9 @@ except: from ROOT import xAODType xAODType.ObjectType +# Code from JetRecUtils +# define the convention that we write R truncating the decimal point +# if R>=1, then we write R*10 def formatRvalue(parameter): # impose precision limits where there could be ambiguity if int(10*parameter)>=1 and int(100*parameter % 10): @@ -44,12 +44,18 @@ def buildJetAlgName(finder, mainParam, variableRMassScale=None, variableRMinRadi return finder + formatRvalue(mainParam) # A class that defines the type of object used to build a jet +# Normally defaults to standard offline input containers, but +# can be overridden. class JetConstit(object): - def __init__(self, type, modifiers=[]): - self.__basetype = type + def __init__(self, objtype, modifiers=[], rawname=None, inputname=None): + self.__basetype = objtype self.__modifiers = modifiers + # Override for unmodified container name + self.__rawname = rawname + # Override for final container name + self.__inputname = inputname - self.defineLabelAndContainerName() + self.defineLabelAndContainerNames() pass def __hash__(self): @@ -70,7 +76,7 @@ class JetConstit(object): @basetype.setter def basetype(self,basetype): self.__basetype = basetype - self.defineLabelAndContainerName() + self.defineLabelAndContainerNames() @property def modifiers(self): @@ -78,19 +84,21 @@ class JetConstit(object): @modifiers.setter def modifiers(self,modifiers): self.__modifiers = modifiers - self.defineLabelAndContainerName() + self.defineLabelAndContainerNames() - def defineLabelAndContainerName(self): + def defineLabelAndContainerNames(self): labelnames = { xAODType.CaloCluster: "Topo", xAODType.ParticleFlow: "EMPFlow", xAODType.TrackParticle: "Track", xAODType.TruthParticle: "Truth", xAODType.TrackCaloCluster: "TrackCaloCluster", - xAODType.Jet: "Jets", + xAODType.Jet: "Jet", } + # Need capability to override label? self.label = "" + self.rawname = "" self.inputname = "" # Truth "modifiers" specify the selection tool config @@ -99,24 +107,21 @@ class JetConstit(object): # Other "modifiers" determine the constit mods e.g. # origin correction, PU suppression etc # Topoclusters should also specify EM or LC - # Jets just specify the jet definition + # Jets could specify a filter e.g. pt cut or JVT?? modstring = "" if self.__modifiers: for mod in self.__modifiers: # Handle special case of topocluster state if mod in ["EM","LC"]: self.label += mod - self.inputname += mod else: modstring += mod - if self.__basetype==xAODType.Jet: - self.label += labelnames[self.__basetype] - else: - self.label += labelnames[self.__basetype] + self.label += labelnames[self.basetype] + if self.basetype!=xAODType.Jet: self.label += modstring - if self.__basetype==xAODType.TruthParticle: - self.label = self.label.replace("NoWZ","WZ") + if self.basetype==xAODType.TruthParticle: + self.label = self.label.replace("NoWZ","WZ") containernames = { xAODType.CaloCluster: "TopoClusters", @@ -126,22 +131,36 @@ class JetConstit(object): xAODType.TrackCaloCluster: "TrackCaloClusters", xAODType.Jet: "Jets", } - defaultaffixes = { + # Sometimes the unmodified container name is longer + defaultaffixesraw = { xAODType.CaloCluster: "CaloCal", - xAODType.ParticleFlow: "CHS", - xAODType.TrackParticle: "", - xAODType.TruthParticle: "", + xAODType.ParticleFlow: "JetETMiss", xAODType.TrackCaloCluster: "CombinedAndNeutral", - xAODType.Jet: "", + } + # Sometimes the standard contstit container has default mods not in modlist + defaultaffixesinput = { + xAODType.ParticleFlow: "CHS", } - if not modstring: - modstring = defaultaffixes[self.__basetype] - modsfirst = [xAODType.TruthParticle, xAODType.TrackCaloCluster] - if self.__basetype in modsfirst: - self.inputname += containernames[self.basetype]+modstring - else: - self.inputname += modstring+containernames[self.basetype] + # User-specified override + if self.__rawname: + self.rawname = self.__rawname + else: # Default to standard container + if self.basetype in defaultaffixesraw.keys(): + self.rawname = defaultaffixesraw[self.basetype] + self.rawname += containernames[self.basetype] + + # User-specified override + if self.__inputname: + self.inputname = self.__inputname + else: # Default to naming with modifiers if requested, else default container + if not modstring and self.basetype in defaultaffixesinput.keys(): + modstring = defaultaffixesinput[self.basetype] + modslast = [xAODType.TruthParticle, xAODType.TrackCaloCluster] + if self.basetype in modslast: + self.inputname = containernames[self.basetype]+modstring + else: + self.inputname = modstring+containernames[self.basetype] pass diff --git a/Reconstruction/Jet/JetRecConfig/python/JetRecConfig.py b/Reconstruction/Jet/JetRecConfig/python/JetRecConfig.py index 1d7904371b4a0e661c13f1fb33a2f3c15b30204e..7e9832da72a59adc0360c12d378adfabd570b522 100644 --- a/Reconstruction/Jet/JetRecConfig/python/JetRecConfig.py +++ b/Reconstruction/Jet/JetRecConfig/python/JetRecConfig.py @@ -58,13 +58,16 @@ def JetRecCfg(jetdef, configFlags, jetnameprefix="",jetnamesuffix=""): # # To facilitate running in serial mode, we also prepare # the constituent PseudoJetGetter here (needed for rho) - inputcomps, constitpjkey = JetInputCfgAndConstitPJName(deps["inputs"], configFlags, sequenceName=jetsfullname) + inputcomps = JetInputCfg(deps["inputs"], configFlags, sequenceName=jetsfullname) + constitpjalg = inputcomps.getPrimary() + constitpjkey = constitpjalg.PJGetter.OutputContainer + components.merge(inputcomps) pjs = [constitpjkey] # Schedule the ghost PseudoJetGetterAlgs for ghostdef in deps["ghosts"]: - ghostpjalg = GhostPJGAlg( ghostdef ) + ghostpjalg = getGhostPJGAlg( ghostdef ) components.addEventAlgo( ghostpjalg, sequencename ) ghostpjkey = ghostpjalg.PJGetter.OutputContainer pjs.append( ghostpjkey ) @@ -206,7 +209,7 @@ def expandPrereqs(reqtype,prereqs): # # This includes constituent modifications, track selection, copying of # input truth particles and event density calculations -def JetInputCfgAndConstitPJName(inputdeps, configFlags, sequenceName): +def JetInputCfg(inputdeps, configFlags, sequenceName): jetlog.info("Setting up jet inputs.") components = ComponentAccumulator(sequenceName) @@ -230,13 +233,16 @@ def JetInputCfgAndConstitPJName(inputdeps, configFlags, sequenceName): # May need to generate constituent modifier sequences to # produce the input collection import ConstModHelpers - constitalg = ConstModHelpers.ConstitModAlg(constit.basetype,constit.modifiers) - components.addEventAlgo(constitalg) + constitalg = ConstModHelpers.getConstitModAlg(constit) + if constitalg: + components.addEventAlgo(constitalg) # Schedule the constituent PseudoJetGetterAlg - constitpjalg = ConstitPJGAlg( constit ) + constitpjalg = getConstitPJGAlg( constit ) constitpjkey = constitpjalg.PJGetter.OutputContainer - components.addEventAlgo( constitpjalg ) + # Mark the constit PJGAlg as the primary so that the caller + # can access the output container name + components.addEventAlgo( constitpjalg, primary=True ) # Track selection and vertex association kind of go hand in hand, though it's not # completely impossible that one might want one and not the other @@ -308,7 +314,7 @@ def JetInputCfgAndConstitPJName(inputdeps, configFlags, sequenceName): eventshapealg.EventDensityTool = rhotool components.addEventAlgo(eventshapealg) - return components, constitpjkey + return components ######################################################################## # Functions for generating PseudoJetGetters, including determining @@ -335,7 +341,7 @@ def getGhostPrereqs(ghostdef): prereqs = ["input:JetInputTruthParticles"] return prereqs -def ConstitPJGAlg(basedef): +def getConstitPJGAlg(basedef): jetlog.debug("Getting PseudoJetAlg for label {0} from {1}".format(basedef.label,basedef.inputname)) # getter = JetRecConf.PseudoJetGetter("pjg_"+basedef.label, @@ -352,7 +358,7 @@ def ConstitPJGAlg(basedef): ) return pjgalg -def GhostPJGAlg(ghostdef): +def getGhostPJGAlg(ghostdef): label = "Ghost"+ghostdef.inputtype kwargs = { "OutputContainer": "PseudoJet"+label, diff --git a/Reconstruction/Jet/JetRecTools/Root/JetConstituentModSequence.cxx b/Reconstruction/Jet/JetRecTools/Root/JetConstituentModSequence.cxx index e2e17de28ffb820351aed16c8bf60521156e1391..ed0d64ce732ea549799684533efb0502899a1b36 100644 --- a/Reconstruction/Jet/JetRecTools/Root/JetConstituentModSequence.cxx +++ b/Reconstruction/Jet/JetRecTools/Root/JetConstituentModSequence.cxx @@ -31,10 +31,6 @@ StatusCode JetConstituentModSequence::initialize() { ATH_CHECK( m_modifiers.retrieve() ); - if( m_modifiers.empty() ) { - ATH_MSG_ERROR(" empty container !!" ); - return StatusCode::FAILURE; - } // Set and initialise DataHandleKeys only for the correct input type // Die if the input type is unsupported diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/jetDefs.py b/Trigger/TrigValidation/TrigUpgradeTest/python/jetDefs.py index de17a8cf55070bae74a2060eba0914c6b89a958b..4d9daeeebf76f4bf6d2c88e123eddc707feadf2a 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/python/jetDefs.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/python/jetDefs.py @@ -2,99 +2,265 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration # -from AthenaCommon.CFElements import seqAND -## def jetFSInputMaker( ): -## """ Creates the jet inputMaker for FS""" -## RoIs = jetCollections.L1RoIs -## #'FSJETRoI' -## from DecisionHandling.DecisionHandlingConf import InputMakerForRoI -## InputMakerAlg = InputMakerForRoI("JetInputMaker", RoIsLink="initialRoI") -## InputMakerAlg.RoIs=RoIs -## return InputMakerAlg +from AthenaCommon.CFElements import parOR, seqAND +from AthenaCommon.Constants import ERROR def jetAthSequence(ConfigFlags): from TrigT2CaloCommon.CaloDef import clusterFSInputMaker InputMakerAlg= clusterFSInputMaker() - (recoSequence, sequenceOut) = jetRecoSequence() - JetAthSequence = seqAND("jetAthSequence",[InputMakerAlg, recoSequence ]) + dataOrMC = "data" + #if ConfigFlags.Input.isMC: + # dataOrMC = "mc" + # want to make this automatic. + + jetDefString = ConfigFlags.jetdefinition + jetDefString += "_"+dataOrMC + + + (recoSequence, sequenceOut) = jetRecoSequence( jetDefString ) + + JetAthSequence = seqAND("jetAthSequence_"+jetDefString,[InputMakerAlg, recoSequence ]) return (JetAthSequence, InputMakerAlg, sequenceOut) -def jetRecoSequence(RoIs = 'FSJETRoI'): - from TrigT2CaloCommon.CaloDef import HLTFSTopoRecoSequence - (jetRecoSequence, caloclusters) = HLTFSTopoRecoSequence(RoIs) +def jetRecoSequence( jetDefString , RoIs = 'FSJETRoI'): + + dataType = "data" + if jetDefString.endswith("mc"): + dataType = "mc" + + # construct calibration key word. + calibSeq = "" + if "subjesis" in jetDefString: + calibSeq += "SubJESIS" + elif "subjes" in jetDefString: + calibSeq += "SubJES" + if calibSeq: calibSeq = "Trig"+calibSeq + + radius = 0.4 + if "a10_" in jetDefString: + radius = 1.0 + #if calibSeq: + # calibSeq += "JMS" + + doLC=False + jetConstitName = "EM" + if "lcw" in jetDefString: + doLC=True + jetConstitName = "LC" + + # now avoid duplicate tool name errors for a4 emtopo and a10r chains. + extraSuffix = "" + if "a10r_" in jetDefString: + extraSuffix += "a10r" + + cellMakerAlgo = _getHLTCellMakerAlgoForJets("cellMaker"+jetConstitName, RoIs, outputEDM='CaloCells'+jetConstitName, OutputLevel=ERROR) + topoClusterMakerAlgo = _getHLTTopoClusterMakerAlgoForJets( "topoClusterMaker"+jetConstitName, inputEDM=cellMakerAlgo.CellsName, doLC=doLC, OutputLevel=ERROR) + + caloMakerSequence = parOR("TopoClusterRecoSequence"+jetConstitName+extraSuffix+calibSeq, [cellMakerAlgo, topoClusterMakerAlgo]) + caloclusters = topoClusterMakerAlgo.CaloClusters + + from JetRecConfig.JetDefinition import JetConstit, JetDefinition, xAODType, JetModifier + + # chosen jet collection + prefix = "TrigAntiKt4" + if "a10_" in jetDefString: + prefix = "TrigAntiKt10" + jetsFullName = prefix+jetConstitName+calibSeq + trigJetConstit = JetConstit( xAODType.CaloCluster, [jetConstitName]) # 'EM' or 'LC' for trigger jets + trigJetConstit.istrigger = False + trigJetConstit.ptmin = 2e3 + trigJetConstit.ptminfilter = 7e3 + trigJetDef = JetDefinition( "AntiKt", radius, trigJetConstit)#, ptmin=trigMinPt,ptminfilter=trigMinPt) + + from JetRecConfig import JetRecConfig + + modList = [ (JetModifier("JetCaloEnergies", "jetens"), '') ] + modList += [ (JetModifier("JetSorter","jetsort"), '') ] + if calibSeq: + from JetCalibTools import JetCalibToolsConfig + jetCalibTool = JetCalibToolsConfig.getJetCalibTool( trigJetDef.basename, calibSeq, dataType ) + modList += [(JetModifier("JetCalibrationTool", jetCalibTool.name()), calibSeq+':'+dataType)] + modList += [ ( JetModifier("JetFilterTool","jetptfilter"), str(int(trigJetConstit.ptminfilter))) ] + + trigJetConstit.rawname = caloclusters + trigJetConstit.inputname = jetConstitName+trigJetConstit.inputname + constitAlg = _getConstitAlg( trigJetConstit ) + jetRecoSequence = parOR( "JetRecSeq_"+jetsFullName+"_"+extraSuffix, [constitAlg]) + + constitPJAlg = _getConstitPJGAlg( trigJetConstit ) + constitPJKey = constitPJAlg.PJGetter.OutputContainer + + pjs = [constitPJKey] + + jetRecoSequence += constitPJAlg + + eventShapeAlg = _getEventShapeAlg( trigJetConstit, constitPJKey ) + jetRecoSequence += eventShapeAlg - from AthenaCommon.AppMgr import ToolSvc - # Jet Reco: + # Generate a JetAlgorithm to run the jet finding and modifiers + # (via a JetRecTool instance). + jetRecAlg = JetRecConfig.getJetAlgorithm(jetsFullName, trigJetDef, pjs, modList) - # PseudoJetAlgorithm uses a tool to convert IParticles (eg CaloClusters) - # to PseudoJets, which are the input to FastJet. The PseudoJets are - # stored in a PseudoJetContainer, which is written top the event store. + jetRecoSequence += jetRecAlg - from JetRec.JetRecConf import (PseudoJetAlgorithm, - PseudoJetGetter) + # check if asked for reclustering + if 'a10r' in jetDefString: + a10rJetsFullName = "TrigAntiKt10rSubJESIS" + a10rJetConstit = JetConstit( xAODType.Jet, []) + trigAntiKt10rJetDef = JetDefinition( "AntiKt", 1.0, a10rJetConstit) - pseudoJetGetter = PseudoJetGetter('simpleJobPJGetter') - pseudoJetGetter.InputContainer = caloclusters - pseudoJetGetter.OutputContainer = 'PseudoJetEMTopo' - pseudoJetGetter.Label = '' + a10rmodList= [] + a10rJetConstit.inputname = jetsFullName - ToolSvc += pseudoJetGetter + a10rconstitPJAlg = _getConstitPJGAlg( a10rJetConstit ) + a10rconstitPJKey = a10rconstitPJAlg.PJGetter.OutputContainer + jetRecoSequence += a10rconstitPJAlg - algo3 = PseudoJetAlgorithm() - algo3.PJGetter = pseudoJetGetter + a10rpjs = [a10rconstitPJKey] + a10rjetRecAlg = JetRecConfig.getJetAlgorithm(a10rJetsFullName, trigAntiKt10rJetDef, a10rpjs, a10rmodList) - jetRecoSequence += algo3 + jetRecoSequence += a10rjetRecAlg + jetsFullName = a10rJetsFullName + sequenceOut = jetsFullName + caloMakerSequence += jetRecoSequence - # JetAlgorithm and its Tools... Reads in PseudoJetContainers, - # alls FastJet to cluster PseudoJets, - # and then convert the output of FastJet (new pseudojets) to Atlas jets. + jetRecoFullSequence = caloMakerSequence - from JetRec.JetRecConf import (JetAlgorithm, - JetRecTool, - JetFromPseudojet, - JetFinder) + return (jetRecoFullSequence,sequenceOut) +def _getConstitAlg( constit ): + + from JetRecConfig import ConstModHelpers + constitalg = ConstModHelpers.getConstitModAlg(constit) + return constitalg + +def _getConstitPJGAlg(basedef): + + from JetRec import JetRecConf + getter = JetRecConf.PseudoJetGetter("pjg_"+basedef.label, + InputContainer = basedef.inputname, + OutputContainer = "PseudoJet"+basedef.label, + Label = basedef.label, + SkipNegativeEnergy=True, + GhostScale=0. + ) + + pjgalg = JetRecConf.PseudoJetAlgorithm( + "pjgalg_"+basedef.label, + PJGetter = getter + ) + return pjgalg + +def _getGhostPJGAlg(ghostdef): + + label = "Ghost"+ghostdef.inputtype + kwargs = { + "OutputContainer": "PseudoJet"+label, + "Label": label, + "SkipNegativeEnergy": True, + "GhostScale": 1e-40 + } + + from JetRec import JetRecConf + pjgclass = JetRecConf.PseudoJetGetter + if ghostdef.inputtype=="MuonSegment": + # Muon segments have a specialised type + pjgclass = JetRecConf.MuonSegmentPseudoJetGetter + kwargs = { + "InputContainer":"MuonSegments", + "OutputContainer":"PseudoJet"+label, + "Label":label, + "Pt":1e-20 + } + elif ghostdef.inputtype=="Track": + kwargs["InputContainer"] = "JetSelectedTracks" + elif ghostdef.inputtype.startswith("TruthLabel"): + truthsuffix = ghostdef.inputtype[5:] + kwargs["InputContainer"] = "TruthLabel"+truthsuffix + elif ghostdef.inputtype == "Truth": + kwargs["InputContainer"] = "JetInputTruthParticles" + else: + raise ValueError("Unhandled ghost type {0} received!".format(ghostdef.inputtype)) + + getter = pjgclass("pjg_"+label, **kwargs) + + pjgalg = JetRecConf.PseudoJetAlgorithm( + "pjgalg_"+label, + PJGetter = getter + ) + return pjgalg + +def _getTrackPrepAlg( trackPrepAlgName ): + + from JetRecTools import JetRecToolsConfig + from JetRec import JetRecConf + # Jet track selection + jettrackselloose = JetRecToolsConfig.getTrackSelTool() + jettvassoc = JetRecToolsConfig.getTrackVertexAssocTool() + + jettrkprepalg = JetRecConf.JetAlgorithm(trackPrepAlgName) + jettrkprepalg.Tools = [ jettrackselloose, jettvassoc ] + + return jettrkprepalg + +def _getEventShapeAlg( constit, constitpjkey ): + + rhokey = "Kt4"+constit.label+"EventShape" + rhotoolname = "EventDensity_Kt4"+constit.label + + from EventShapeTools import EventShapeToolsConf + rhotool = EventShapeToolsConf.EventDensityTool(rhotoolname) + rhotool.InputContainer = constitpjkey + rhotool.OutputContainer = rhokey + + eventshapealg = EventShapeToolsConf.EventDensityAthAlg("{0}Alg".format(rhotoolname)) + eventshapealg.EventDensityTool = rhotool - name = 'simpleJob' + return eventshapealg - # jet from Pseudo jet takes a pseudo jet returned by FastJet - jetBuilder = JetFromPseudojet(name+'JetBuilder') - ToolSvc += jetBuilder +def _getHLTCellMakerAlgoForJets( name, RoIs, outputEDM='CaloCells', OutputLevel=ERROR ): - jetFinder = JetFinder(name+'JetFinder') - jetFinder.JetBuilder = jetBuilder - jetFinder.JetAlgorithm = 'AntiKt' - jetFinder.VariableRMinRadius = -1 - jetFinder.VariableRMassScale = -1 - jetFinder.GhostArea = 0.01 - jetFinder.JetRadius = 0.4 - jetFinder.PtMin = 7000. - jetFinder.RandomOption = 1 # 1: used run/evt number to make seed + from AthenaCommon.AppMgr import ServiceMgr as svcMgr + if not hasattr(svcMgr,'TrigCaloDataAccessSvc'): + from TrigT2CaloCommon.TrigT2CaloCommonConf import TrigCaloDataAccessSvc + svcMgr+=TrigCaloDataAccessSvc() + svcMgr.TrigCaloDataAccessSvc.OutputLevel=ERROR + from AthenaCommon.AppMgr import ServiceMgr as svcMgr + from TrigCaloRec.TrigCaloRecConfig import HLTCaloCellMaker - ToolSvc += jetFinder + inputEDM = RoIs + algo=HLTCaloCellMaker(name) + algo.RoIs=inputEDM + algo.TrigDataAccessMT=svcMgr.TrigCaloDataAccessSvc + algo.OutputLevel=OutputLevel + algo.CellsName=outputEDM + + return algo - jetRecTool = JetRecTool() - jetRecTool.InputContainer = '' # name of a jet collection. - jetRecTool.OutputContainer = 'jets' - jetRecTool.JetFinder = jetFinder - jetRecTool.JetModifiers = [] - jetRecTool.Trigger = False - jetRecTool.InputPseudoJets = ['StoreGateSvc+PseudoJetEMTopo'] +def _getHLTTopoClusterMakerAlgoForJets(name, inputEDM, doLC=False, OutputLevel=ERROR): - ToolSvc += jetRecTool + from TrigCaloRec.TrigCaloRecConfig import TrigCaloClusterMakerMT_topo - algo4 = JetAlgorithm() - algo4.Tools = [jetRecTool] - jetRecoSequence += algo4 + algo = TrigCaloClusterMakerMT_topo(name, doMoments=True, doLC=doLC, cells=inputEDM) + algo.CaloClusters="caloclusters" + if doLC: + algo.CaloClusters+="LC" + algo.OutputLevel=OutputLevel + return algo +def _getJetFilterTool( threshold ): + + from JetRec import JetRecConf + threshold = int(threshold) + jetptfilter = JetRecConf.JetFilterTool("jetptfilter_{0}mev".format(threshold)) + jetptfilter.PtMin = threshold + return jetptfilter - sequenceOut= jetRecTool.OutputContainer - return (jetRecoSequence,sequenceOut) diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/jetMenuDefs.py b/Trigger/TrigValidation/TrigUpgradeTest/python/jetMenuDefs.py index 4bd4a78f9e01796af62818fa5e9d3b1d7d3d04f9..6d21d9a8137af419497fa4cbc3828a5d51f8b825 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/python/jetMenuDefs.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/python/jetMenuDefs.py @@ -1,21 +1,23 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration # -from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RecoFragmentsPool, MenuSequence +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence from AthenaConfiguration.AllConfigFlags import ConfigFlags -def jetMenuSequence(): +def jetMenuSequence(jet_def_string, hypoName): """ Function to create the jet Menu Sequence""" - + + ConfigFlags.jetdefinition=jet_def_string ## RoIs = 'FSJETRoI' #reco sequence from TrigUpgradeTest.jetDefs import jetAthSequence - (JetAthSequence, InputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(jetAthSequence,ConfigFlags) + #(JetAthSequence, InputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(jetAthSequence,ConfigFlags) + (JetAthSequence, InputMakerAlg, sequenceOut) = jetAthSequence(ConfigFlags) #hypo from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetHypoAlgMT from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetHypoToolFromDict - hypo = TrigJetHypoAlgMT("TrigJetHypoAlgMT") + hypo = TrigJetHypoAlgMT(hypoName) hypo.Jets = sequenceOut diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py index 3776af68e8e0f783c59ccb8af870f626222b096d..67e7686c709cfe99871a8f79dc7d6fdc9fabf1fa 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py @@ -118,23 +118,42 @@ if opt.doMuonSlice == True: # jet chains ################################################################## if opt.doJetSlice == True: - from TriggerMenuMT.HLTMenuConfig.Jet.JetSequenceSetup import jetMenuSequence + #from TriggerMenuMT.HLTMenuConfig.Jet.JetSequenceSetup import jetMenuSequence + from TrigUpgradeTest.jetMenuDefs import jetMenuSequence - jetSeq1 = jetMenuSequence() - jetstep1=ChainStep("Step1_jet", [jetSeq1]) + # small-R jets, different calibrations + jetSeq_a4_emtopo = jetMenuSequence("a4_emtopo_subjesis", "TrigJetHypoAlgMT_a4_emtopo") + step_a4_emtopo =ChainStep("Step_jet_a4_emtopo", [jetSeq_a4_emtopo]) + + jetSeq_a4_emtopo_subjes = jetMenuSequence("a4_emtopo_subjes", "TrigJetHypoAlgMT_a4_emtopo_subjes") + step_a4_emtopo_subjes = ChainStep("Step_jet_a4_subjes_emtopo", [jetSeq_a4_emtopo_subjes]) + + jetSeq_a4_emtopo_nocalib = jetMenuSequence("a4_emtopo_nocalib", "TrigJetHypoAlgMT_a4_emtopo_nocalib") + step_a4_emtopo_nocalib=ChainStep("Step_jet_a4_nocalib_emtopo", [jetSeq_a4_emtopo_nocalib]) + + jetSeq_a4_lcw = jetMenuSequence("a4_lcw_subjesis", "TrigJetHypoAlgMT_a4_lcw") + step_a4_lcw=ChainStep("Step_jet_a4_lcw", [jetSeq_a4_lcw]) + + # large-R jets + jetSeq_a10_lcw_subjes = jetMenuSequence("a10_lcw_subjes", "TrigJetHypoAlgMT_a10_lcw_subjes") + step_a10_lcw_subjes=ChainStep("Step_jet_a10_subjes_lcw", [jetSeq_a10_lcw_subjes]) + + jetSeq_a10r = jetMenuSequence("a10r_emtopo_subjesis", "TrigJetHypoAlgMT_a10r") + step_a10r=ChainStep("Step_jet_a10r", [jetSeq_a10r]) jetChains = [ - Chain(name='HLT_j85', Seed="L1_J20", ChainSteps=[jetstep1] ), - Chain(name='HLT_j45', Seed="L1_J20", ChainSteps=[jetstep1] ), - Chain(name='HLT_j420', Seed='L1_J20', ChainSteps=[jetstep1] ), - Chain(name='HLT_j225_gsc420_boffperf_split', Seed='L1_J20', ChainSteps=[jetstep1] ), - Chain(name='HLT_j260_320eta490', Seed='L1_J20', ChainSteps=[jetstep1] ), - - Chain(name='HLT_3j200', Seed='L1_J20', ChainSteps=[jetstep1] ), - Chain(name='HLT_5j70_0eta240_L14J15', Seed='L1_J20', ChainSteps=[jetstep1] ), - Chain(name='HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet', Seed='L1_J20', ChainSteps=[jetstep1] ), + Chain(name='HLT_j45', Seed="L1_J20", ChainSteps=[step_a4_emtopo] ), + Chain(name='HLT_j85', Seed="L1_J20", ChainSteps=[step_a4_emtopo] ), + Chain(name='HLT_j420', Seed="L1_J20", ChainSteps=[step_a4_emtopo] ), + Chain(name='HLT_j260_320eta490', Seed="L1_J20", ChainSteps=[step_a4_emtopo] ), + Chain(name='HLT_j225_gsc420_boffperf_split', Seed="L1_J20", ChainSteps=[step_a4_emtopo] ), + Chain(name='HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet', Seed="L1_J20", ChainSteps=[step_a4_emtopo] ), + Chain(name='HLT_j460_a10_lcw_subjes', Seed="L1_J20", ChainSteps=[step_a10_lcw_subjes] ), + Chain(name='HLT_j460_a10r', Seed="L1_J20", ChainSteps=[step_a10r] ), + Chain(name='HLT_3j200', Seed="L1_J20", ChainSteps=[step_a4_emtopo] ), + Chain(name='HLT_5j70_0eta240', Seed="L1_J20", ChainSteps=[step_a4_emtopo] ), # 5j70_0eta240_L14J15 (J20 until multi-object L1 seeds supported) + ] - ] testChains += jetChains diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref index b760fd6ba46666cc0d1741d809c3ef29560c9427..7e7bfc0d024f725443f2be0cc16f22034259abea 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref @@ -4,6 +4,7 @@ TriggerSummaryStep1 0 0 DEBUG +++ HLT_g5_etcut ID#140 TriggerSummaryStep1 0 0 DEBUG +++ HLT_e3_etcut1step ID#1509456583 TriggerSummaryStep1 0 0 DEBUG +++ HLT_e7_etcut ID#2430733989 TriggerSummaryStep1 0 0 DEBUG +++ HLT_e3_etcut ID#2711808158 +TriggerSummaryStep1 0 0 DEBUG +++ HLT_j45 ID#3664574289 TriggerSummaryStep2 0 0 DEBUG +++ HLT_e5_etcut ID#607406625 TriggerSummaryStep2 0 0 DEBUG +++ HLT_g5_etcut ID#1407390618 TriggerSummaryStep2 0 0 DEBUG +++ HLT_e7_etcut ID#2430733989 @@ -196,6 +197,7 @@ TriggerSummaryStep1 19 0 DEBUG +++ HLT_g5_etcut ID#140 TriggerSummaryStep1 19 0 DEBUG +++ HLT_e3_etcut1step ID#1509456583 TriggerSummaryStep1 19 0 DEBUG +++ HLT_e7_etcut ID#2430733989 TriggerSummaryStep1 19 0 DEBUG +++ HLT_e3_etcut ID#2711808158 +TriggerSummaryStep1 19 0 DEBUG +++ HLT_j85 ID#3478728990 TriggerSummaryStep1 19 0 DEBUG +++ HLT_j45 ID#3664574289 TriggerSummaryStep2 19 0 DEBUG +++ HLT_e5_etcut ID#607406625 TriggerSummaryStep2 19 0 DEBUG +++ HLT_g5_etcut ID#1407390618 @@ -207,18 +209,18 @@ TrigSignatureMoniMT INFO HLT_2mu6Comb TrigSignatureMoniMT INFO HLT_2mu6Comb decisions 0 0 0 0 TrigSignatureMoniMT INFO HLT_3j200 20 20 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_3j200 decisions 0 0 0 0 -TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J15 20 20 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J15 decisions 0 0 0 0 +TrigSignatureMoniMT INFO HLT_5j70_0eta240 20 20 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_5j70_0eta240 decisions 0 0 0 0 TrigSignatureMoniMT INFO HLT_e3_etcut 20 20 18 17 0 0 17 -TrigSignatureMoniMT INFO HLT_e3_etcut decisions 54 342 0 0 +TrigSignatureMoniMT INFO HLT_e3_etcut decisions 54 343 0 0 TrigSignatureMoniMT INFO HLT_e3_etcut1step 20 20 18 0 0 0 18 TrigSignatureMoniMT INFO HLT_e3_etcut1step decisions 54 0 0 0 TrigSignatureMoniMT INFO HLT_e3_etcut_mu6 20 20 10 0 0 0 1 TrigSignatureMoniMT INFO HLT_e3_etcut_mu6 decisions 17 0 0 0 TrigSignatureMoniMT INFO HLT_e5_etcut 20 20 17 16 0 0 16 -TrigSignatureMoniMT INFO HLT_e5_etcut decisions 50 329 0 0 +TrigSignatureMoniMT INFO HLT_e5_etcut decisions 50 330 0 0 TrigSignatureMoniMT INFO HLT_e7_etcut 20 20 15 14 0 0 14 -TrigSignatureMoniMT INFO HLT_e7_etcut decisions 36 264 0 0 +TrigSignatureMoniMT INFO HLT_e7_etcut decisions 36 265 0 0 TrigSignatureMoniMT INFO HLT_g5_etcut 20 20 17 17 0 0 17 TrigSignatureMoniMT INFO HLT_g5_etcut decisions 50 50 0 0 TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet20 20 0 0 0 0 0 @@ -229,10 +231,14 @@ TrigSignatureMoniMT INFO HLT_j260_320eta490 TrigSignatureMoniMT INFO HLT_j260_320eta490 decisions 0 0 0 0 TrigSignatureMoniMT INFO HLT_j420 20 20 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_j420 decisions 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45 20 20 4 0 0 0 4 -TrigSignatureMoniMT INFO HLT_j45 decisions 4 0 0 0 -TrigSignatureMoniMT INFO HLT_j85 20 20 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j85 decisions 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45 20 20 5 0 0 0 5 +TrigSignatureMoniMT INFO HLT_j45 decisions 5 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes 20 20 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes decisions 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r 20 20 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r decisions 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j85 20 20 1 0 0 0 1 +TrigSignatureMoniMT INFO HLT_j85 decisions 1 0 0 0 TrigSignatureMoniMT INFO HLT_mu20_ivar 20 20 3 2 2 0 2 TrigSignatureMoniMT INFO HLT_mu20_ivar decisions 3 2 2 0 TrigSignatureMoniMT INFO HLT_mu6 20 20 3 2 1 1 1 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/slice_jet.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/slice_jet.ref index 16174a88f5d47065e30f4757445e45f0a76f329b..1dd4bad8957b121adcc0fdc67f9e399e218b6a0b 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/slice_jet.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/slice_jet.ref @@ -1,7 +1,7 @@ TrigSignatureMoniMT INFO HLT_3j200 20 20 0 0 TrigSignatureMoniMT INFO HLT_3j200 decisions 0 -TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J15 20 20 0 0 -TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J15 decisions 0 +TrigSignatureMoniMT INFO HLT_5j70_0eta240 20 20 0 0 +TrigSignatureMoniMT INFO HLT_5j70_0eta240 decisions 0 TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet20 20 0 0 TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet decisions 0 TrigSignatureMoniMT INFO HLT_j225_gsc420_boffperf_split20 20 0 0 @@ -10,7 +10,11 @@ TrigSignatureMoniMT INFO HLT_j260_320eta490 TrigSignatureMoniMT INFO HLT_j260_320eta490 decisions 0 TrigSignatureMoniMT INFO HLT_j420 20 20 0 0 TrigSignatureMoniMT INFO HLT_j420 decisions 0 -TrigSignatureMoniMT INFO HLT_j45 20 20 4 4 -TrigSignatureMoniMT INFO HLT_j45 decisions 4 -TrigSignatureMoniMT INFO HLT_j85 20 20 0 0 -TrigSignatureMoniMT INFO HLT_j85 decisions 0 +TrigSignatureMoniMT INFO HLT_j45 20 20 5 5 +TrigSignatureMoniMT INFO HLT_j45 decisions 5 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes 20 20 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes decisions 0 +TrigSignatureMoniMT INFO HLT_j460_a10r 20 20 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r decisions 0 +TrigSignatureMoniMT INFO HLT_j85 20 20 1 1 +TrigSignatureMoniMT INFO HLT_j85 decisions 1 diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py index 0a824bf9359011aa01832fd445ceb5a8a041664f..5e2439bf9696b8b32435606f50f8b69ce38d08cf 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py @@ -107,10 +107,10 @@ JetChainParts = { 'trigType' : ['j'], 'extra' : [], 'cleaning' : ['noCleaning',], - 'recoAlg' : ['a4',], - 'dataType' : ['tc',], - 'calib' : ['em'], - 'jetCalib' : ['subjes'], + 'recoAlg' : ['a4', 'a10', 'a10r'], + 'dataType' : ['tc'], + 'calib' : ['em', 'lcw'], + 'jetCalib' : ['subjes', 'subjesIS', 'nojcalib'], 'scan' : ['FS',], 'addInfo' : ['perf'],