Skip to content
Snippets Groups Projects
Commit f73002e8 authored by Teng Jian Khoo's avatar Teng Jian Khoo Committed by Walter Lampl
Browse files

Rerun jet modifiers after jet calibration, both to update 4-vec and to ensure...

Rerun jet modifiers after jet calibration, both to update 4-vec and to ensure that decorations are registered
parent 400dd941
No related branches found
No related tags found
No related merge requests found
......@@ -289,7 +289,8 @@ def getJetAlgorithm(jetname, jetdef, pjContNames, monTool = None):
return jetalg
########################################################################
# Function that substitues JetRecTool + JetAlgorithm
# New JetRecAlgorithm to replace JetRecTool
# This call is for a JRA that runs jet-finding
#
def getJetRecAlg( jetdef):
""" """
......@@ -318,6 +319,39 @@ def getJetRecAlg( jetdef):
return jra
########################################################################
# Get a JetRecAlg set up to copy a jet collection and apply mods
# In this setup we do not resolve dependencies because typically
# these may be set up already in the original jet collection
# In future we may wish to add a toggle.
#
def getJetCopyAlg(jetsin, jetsoutdef, shallowcopy=True, shallowIO=True):
jcopy = CompFactory.JetCopier(
"copier",
InputJets = jetsin,
ShallowCopy=shallowcopy,
ShallowIO=shallowIO)
# Convert mod aliases into concrete tools
from . import JetModConfig
mods = []
for mod in jetsoutdef.modifiers:
moddef = JetModConfig.aliasToModDef(mod,jetsoutdef)
mods.append(JetModConfig.getModifier(jetsoutdef,moddef,moddef.modspec))
jetsoutname = jetsoutdef.fullname()
jra = CompFactory.JetRecAlg(
"jetrecalg_copy_"+jetsoutname,
Provider = jcopy,
Modifiers = mods,
OutputContainer = jetsoutname)
autoconfigureModifiers(jra.Modifiers, jetsoutname)
return jra
########################################################################
# For each modifier in the given list with a configurable input container
# name ("JetContainer"), configure it to containerName.
......
......@@ -473,7 +473,7 @@ HLT_JetDS_j0_L1J100:
1: 3
2: 3
stepFeatures:
0: 81
0: 137
1: 32
2: 3
HLT_alfacalib_AlfaPEB_L1ALFA_ANY:
......@@ -1371,7 +1371,7 @@ HLT_j0_aggSEP500htSEP30etSEP0eta320_L1J20:
stepCounts:
0: 1
stepFeatures:
0: 28
0: 50
HLT_j0_perf_L1J12_EMPTY:
eventCount: 0
HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20:
......@@ -2723,11 +2723,11 @@ HLT_xe100_cvfpufit_L1XE50:
0: 10
1: 6
HLT_xe100_mht_L1XE50:
eventCount: 9
eventCount: 7
stepCounts:
0: 9
0: 7
stepFeatures:
0: 9
0: 7
HLT_xe100_mhtpufit_em_subjesgscIS_L1XE50:
eventCount: 6
stepCounts:
......@@ -2783,11 +2783,11 @@ HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50:
0: 6
1: 5
HLT_xe110_mht_L1XE50:
eventCount: 7
eventCount: 6
stepCounts:
0: 7
0: 6
stepFeatures:
0: 7
0: 6
HLT_xe110_pfsum_L1XE50:
eventCount: 4
stepCounts:
......
......@@ -647,7 +647,7 @@ HLT_j0_perf_L1J12_EMPTY:
stepCounts:
0: 8
stepFeatures:
0: 117
0: 127
HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20:
eventCount: 2
stepCounts:
......@@ -1747,13 +1747,13 @@ HLT_xe30_mht_L1XE10:
stepFeatures:
0: 14
HLT_xe30_mhtpufit_em_subjesgscIS_L1XE10:
eventCount: 5
eventCount: 4
stepCounts:
0: 20
1: 5
1: 4
stepFeatures:
0: 20
1: 5
1: 4
HLT_xe30_mhtpufit_pf_subjesgscIS_L1XE10:
eventCount: 3
stepCounts:
......
......@@ -62,9 +62,18 @@ JetVarsToKeep = ['ActiveArea', 'ActiveArea4vec_eta', 'ActiveArea4vec_m', 'Active
'JetPileupScaleMomentum_eta', 'JetPileupScaleMomentum_m', 'JetPileupScaleMomentum_phi', 'JetPileupScaleMomentum_pt',
'JetEtaJESScaleMomentum_eta', 'JetEtaJESScaleMomentum_m', 'JetEtaJESScaleMomentum_phi', 'JetEtaJESScaleMomentum_pt',
'JetGSCScaleMomentum_eta', 'JetGSCScaleMomentum_m', 'JetGSCScaleMomentum_phi', 'JetGSCScaleMomentum_pt',
'Jvt', 'JVFCorr', 'NumTrkPt500', 'NumTrkPt1000', 'SizeParameter', 'SumPtTrkPt500', 'SumPtTrkPt1000', 'TrackWidthPt1000', 'SumPtChargedPFOPt500',]
'Jvt', 'JVFCorr', 'NumTrkPt500', 'NumTrkPt1000', 'SizeParameter', 'SumPtTrkPt500', 'SumPtTrkPt1000', 'TrackWidthPt1000', 'SumPtChargedPFOPt500',
]
JetVars = '.'.join(JetVarsToKeep)
JetCopyVarsToKeep = ['pt', 'eta', 'phi', 'm',
'JetPileupScaleMomentum_eta', 'JetPileupScaleMomentum_m', 'JetPileupScaleMomentum_phi', 'JetPileupScaleMomentum_pt',
'JetEtaJESScaleMomentum_eta', 'JetEtaJESScaleMomentum_m', 'JetEtaJESScaleMomentum_phi', 'JetEtaJESScaleMomentum_pt',
'JetGSCScaleMomentum_eta', 'JetGSCScaleMomentum_m', 'JetGSCScaleMomentum_phi', 'JetGSCScaleMomentum_pt',
'Jvt'
]
JetCopyVars = '.'.join(JetCopyVarsToKeep)
BTagOutput = ['jetLink','BTagTrackToJetAssociator','minimumTrackRelativeEta','maximumTrackRelativeEta','averageTrackRelativeEta','trkSum_ntrk','trkSum_SPt','trkSum_VPt','trkSum_VEta','Muons',]
BTagOutput_IP2D = ['IP2D_TrackParticleLinks','IP2D_gradeOfTracks','IP2D_weightBofTracks','IP2D_weightCofTracks','IP2D_weightUofTracks','IP2D_sigD0wrtPVofTracks','IP2D_flagFromV0ofTracks','IP2D_nTrks','IP2D_isDefaults','IP2D_cu','IP2D_bu','IP2D_bc',]
BTagOutput_IP3D = ['IP3D_TrackParticleLinks','IP3D_gradeOfTracks','IP3D_weightBofTracks','IP3D_weightCofTracks','IP3D_weightUofTracks','IP3D_valD0wrtPVofTracks','IP3D_sigD0wrtPVofTracks','IP3D_valZ0wrtPVofTracks','IP3D_sigZ0wrtPVofTracks','IP3D_flagFromV0ofTracks','IP3D_nTrks','IP3D_isDefaults','IP3D_cu','IP3D_bu','IP3D_bc',]
......@@ -277,20 +286,23 @@ TriggerHLTListRun3 = [
('xAOD::JetAuxContainer#HLT_jet_seedAux.', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Tau'),
# Jet
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjesIS', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMTopoJets_subjesISAux.'+JetVars, 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjesIS', 'BS ESD AODFULL', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt4EMTopoJets_subjesISAux.'+JetCopyVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjesIS_ftf', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMTopoJets_subjesIS_ftfAux.'+JetVars, 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_nojcalib_ftf', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMTopoJets_nojcalib_ftfAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjesgscIS_ftf', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAux.'+JetVars, 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subresjesgscIS_ftf', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAux.'+JetVars, 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjesIS_ftf', 'BS ESD AODFULL', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt4EMTopoJets_subjesIS_ftfAux.'+JetCopyVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjesgscIS_ftf', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt4EMTopoJets_subjesgscIS_ftfAux.'+JetCopyVars, 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subresjesgscIS_ftf', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt4EMTopoJets_subresjesgscIS_ftfAux.'+JetCopyVars, 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjes', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMTopoJets_subjesAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjes', 'BS ESD AODFULL', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt4EMTopoJets_subjesAux.'+JetCopyVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_nojcalib', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMTopoJets_nojcalibAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
......@@ -301,8 +313,8 @@ TriggerHLTListRun3 = [
('xAOD::JetContainer#HLT_AntiKt4EMTopoCSSKJets_nojcalib', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMTopoCSSKJets_nojcalibAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt10LCTopoJets_subjes', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt10LCTopoJets_subjesAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt10LCTopoJets_subjes', 'BS ESD AODFULL', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt10LCTopoJets_subjesAux.'+JetCopyVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt10LCTopoJets_nojcalib', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt10LCTopoJets_nojcalibAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
......@@ -331,17 +343,17 @@ TriggerHLTListRun3 = [
('xAOD::JetContainer#HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_nojcalib_ftf', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_nojcalib_ftfAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf', 'BS ESD AODFULL', 'Jet'),
('xAOD::ShallowAuxContainer#HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMPFlowJets_subjesIS_ftf', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMPFlowJets_subjesIS_ftfAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMPFlowJets_subjesIS_ftf', 'BS ESD AODFULL', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt4EMPFlowJets_subjesIS_ftfAux.'+JetCopyVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf', 'BS ESD AODFULL', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAux.'+JetCopyVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf', 'BS ESD AODFULL', 'Jet', 'alias:JetContainerShallowCopy'),
('xAOD::ShallowAuxContainer#HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAux.'+JetCopyVars, 'BS ESD AODFULL', 'Jet'),
('xAOD::JetContainer#HLT_AntiKt4EMPFlowJets_nojcalib_ftf', 'BS ESD AODFULL', 'Jet'),
('xAOD::JetAuxContainer#HLT_AntiKt4EMPFlowJets_nojcalib_ftfAux.'+JetVars, 'BS ESD AODFULL', 'Jet'),
......
......@@ -202,9 +202,12 @@ def defineTrackMods(trkopt):
]
return trkmods
def getFilterCut(recoAlg):
return {"a4":5000, "a10":50000, "a10r": 50000, "a10t":50000, "a10sd":50000}[recoAlg]
# Translate calib specification into something understood by
# the calibration config helper
def defineCalibFilterMods(jetRecoDict,dataSource,rhoKey="auto"):
def defineCalibMods(jetRecoDict,dataSource,rhoKey="auto"):
# Minimum modifier set for calibration w/o track GSC
# Should eventually build in more mods, depend on track info etc
......@@ -220,7 +223,7 @@ def defineCalibFilterMods(jetRecoDict,dataSource,rhoKey="auto"):
if jetRecoDict["dataType"].endswith("tc"):
calibContext,calibSeq = {
("a4","subjes"): ("TrigRun2","JetArea_EtaJES_GSC"), # Calo GSC only
("a4","subjes"): ("TrigRun2","JetArea_EtaJES_GSC"), # Calo GSC only
("a4","subjesIS"): ("TrigRun2","JetArea_EtaJES_GSC"), # Calo GSC only
("a4","subjesgscIS"): ("TrigRun2GSC","JetArea_EtaJES_GSC"), # Calo+Trk GSC
("a4","subresjesgscIS"): ("TrigRun2GSC","JetArea_Residual_EtaJES_GSC"), # pu residual + calo+trk GSC
......@@ -254,12 +257,9 @@ def defineCalibFilterMods(jetRecoDict,dataSource,rhoKey="auto"):
if jetalg=="a4":
calibMods = ["ConstitFourMom_copy",
"CaloEnergies", # Needed for GSC
"Calib:"+calibSpec,
"Sort"]
"Calib:"+calibSpec]
else:
calibMods = ["ConstitFourMom_copy",
"Calib:"+calibSpec,
"Sort"]
"Calib:"+calibSpec]
filtercut = {"a4":7000, "a10":50000, "a10r": 50000, "a10t":50000, "a10sd":50000}[jetalg]
return calibMods + ["Filter:"+str(filtercut)]
return calibMods
......@@ -74,9 +74,9 @@ def jetRecoSequence( configFlags, clustersKey, **jetRecoDict ):
clustersKey=clustersKey, **jetRecoDict)
# Normal jet reconstruction, no reclustering or grooming
def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict ):
def standardJetBuildSequence( configFlags, dataSource, clustersKey, **jetRecoDict ):
jetDefString = jetRecoDictToString(jetRecoDict)
recoSeq = parOR( "JetRecSeq_"+jetDefString, [])
buildSeq = parOR( "JetBuildSeq_"+jetDefString, [])
trkcolls = getTrkColls(jetRecoDict) if jetRecoDict["trkopt"]!="notrk" else {}
# Add particle flow reconstruction if needed
......@@ -87,10 +87,10 @@ def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict
(pfseq, pfoPrefix) = RecoFragmentsPool.retrieve(
PFHLTSequence,
configFlags, clustersin=clustersKey, tracktype=jetRecoDict["trkopt"])
recoSeq += pfseq
jetDef = JetRecoConfiguration.defineJets(jetRecoDict,pfoPrefix=pfoPrefix, prefix=jetNamePrefix)
buildSeq += pfseq
jetDef = JetRecoConfiguration.defineJets(jetRecoDict,pfoPrefix=pfoPrefix,prefix=jetNamePrefix)
else:
jetDef = JetRecoConfiguration.defineJets(jetRecoDict,clustersKey=clustersKey, prefix=jetNamePrefix)
jetDef = JetRecoConfiguration.defineJets(jetRecoDict,clustersKey=clustersKey,prefix=jetNamePrefix)
# chosen jet collection
jetsFullName = jetDef.fullname()
......@@ -105,12 +105,12 @@ def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict
from JetRecConfig.ConstModHelpers import getConstitModAlg
constitModAlg = getConstitModAlg(jetDef.inputdef, monTool=monJetRecTool)
if constitModAlg:
recoSeq += constitModAlg
buildSeq += constitModAlg
# Add the PseudoJetGetter alg to the sequence
constitPJAlg = getConstitPJGAlg( jetDef.inputdef )
constitPJKey = str(constitPJAlg.OutputContainer)
recoSeq += conf2toConfigurable( constitPJAlg )
buildSeq += conf2toConfigurable( constitPJAlg )
# Basic list of PseudoJets is just the constituents
# Append ghosts (tracks) if desired
pjs = [constitPJKey]
......@@ -122,21 +122,8 @@ def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict
trkMods = JetRecoConfiguration.defineTrackMods(jetRecoDict["trkopt"])
jetModList += trkMods
rhoKey = "auto"
if "sub" in jetRecoDict["jetCalib"]:
# Add the event shape alg if needed for area subtraction
eventShapeAlg = JetInputConfig.buildEventShapeAlg( jetDef, "HLT_" )
recoSeq += conf2toConfigurable(eventShapeAlg)
# Not currently written because impossible to merge
# across event views, which is maybe a concern in
# the case of regional PFlow
rhoKey = str(eventShapeAlg.EventDensityTool.OutputContainer)
# Import the standard jet modifiers as defined for offline
# We can add/configure these differently if desired.
calibMods = JetRecoConfiguration.defineCalibFilterMods(jetRecoDict,dataSource, rhoKey)
jetModList += calibMods
# Sort and filter
jetModList += ["Sort", "Filter:"+str(JetRecoConfiguration.getFilterCut(jetRecoDict["recoAlg"]))]
# Get online monitoring tool
from JetRec import JetOnlineMon
......@@ -153,7 +140,47 @@ def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict
# Generate a JetAlgorithm to run the jet finding and modifiers
# (via a JetRecTool instance).
jetRecAlg = JetRecConfig.getJetAlgorithm(jetsFullName, jetDef, pjs, monTool)
recoSeq += conf2toConfigurable( jetRecAlg )
buildSeq += conf2toConfigurable( jetRecAlg )
return buildSeq, jetsOut, jetDef
def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict ):
jetDefString = jetRecoDictToString(jetRecoDict)
if jetRecoDict["jetCalib"]=="nojcalib":
return RecoFragmentsPool.retrieve( standardJetBuildSequence, configFlags, dataSource=dataSource,
clustersKey=clustersKey,**jetRecoDict)
# Schedule reconstruction w/o calibration
# This is just a starting point -- will change so that
# the calibration is only ever done at the end for ungroomed
_jetRecoDictNoJCalib = dict(jetRecoDict)
_jetRecoDictNoJCalib["jetCalib"] = "nojcalib"
buildSeq, jetsNoCalib, jetDefNoCalib = RecoFragmentsPool.retrieve( standardJetBuildSequence, configFlags, dataSource=dataSource,
clustersKey=clustersKey, **_jetRecoDictNoJCalib)
recoSeq = parOR( "JetRecSeq_"+jetDefString, [buildSeq])
# Get the calibration tool if desired.
jetDef = jetDefNoCalib.clone()
jetDef.suffix = jetDefNoCalib.suffix.replace("nojcalib",jetRecoDict["jetCalib"])
jetsOut = jetDef.fullname()
rhoKey = "auto"
if "sub" in jetRecoDict["jetCalib"]:
# Add the event shape alg if needed for area subtraction
eventShapeAlg = JetInputConfig.buildEventShapeAlg( jetDef, jetNamePrefix )
recoSeq += conf2toConfigurable(eventShapeAlg)
# Not currently written because impossible to merge
# across event views, which is maybe a concern in
# the case of regional PFlow
rhoKey = str(eventShapeAlg.EventDensityTool.OutputContainer)
jetDef.modifiers = JetRecoConfiguration.defineCalibMods(jetRecoDict,dataSource,rhoKey)
jetDef.modifiers += jetDefNoCalib.modifiers[:-2] # Leave off sort + filter
copyCalibAlg = JetRecConfig.getJetCopyAlg(jetsin=jetsNoCalib,jetsoutdef=jetDef)
recoSeq += copyCalibAlg
# End of basic jet reco
return recoSeq, jetsOut, jetDef
......@@ -168,17 +195,20 @@ def groomedJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict
ungroomedJetRecoDict["recoAlg"] = ungroomedJetRecoDict["recoAlg"].rstrip("tsd") # Drop grooming spec
ungroomedJetRecoDict["jetCalib"] = "nojcalib" # No need to calibrate
(ungroomedJetRecoSequence,ungroomedJetsName, ungroomedDef) = RecoFragmentsPool.retrieve(
standardJetRecoSequence,
# Only jet building -- we do jet calib in a larger sequence via copy+calib
(ungroomedJetBuildSequence,ungroomedJetsName,ungroomedDef) = RecoFragmentsPool.retrieve(
standardJetBuildSequence,
configFlags, dataSource=dataSource, clustersKey=clustersKey,
**ungroomedJetRecoDict)
recoSeq += conf2toConfigurable( ungroomedJetRecoSequence )
recoSeq += ungroomedJetBuildSequence
# Need to forward the pseudojets of the parents to the groomer
parentpjs = getattr(ungroomedJetRecoSequence,"jetalg_{}".format(ungroomedJetsName)).Tools[0].InputPseudoJets
# Should try to do this in a nicer way...
parentpjs = getattr(ungroomedJetBuildSequence,"jetalg_{}".format(ungroomedJetsName)).Tools[0].InputPseudoJets
groomDef = JetRecoConfiguration.defineGroomedJets(jetRecoDict,ungroomedDef)
groomedJetsFullName = groomDef.fullname()
groomDef.modifiers = JetRecoConfiguration.defineCalibFilterMods(jetRecoDict,dataSource)
groomDef.modifiers = JetRecoConfiguration.defineCalibMods(jetRecoDict,dataSource)
groomDef.modifiers += ["Sort","Filter:"+str(JetRecoConfiguration.getFilterCut(jetRecoDict["recoAlg"]))]
# Can add substructure mods here
# Get online monitoring tool
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment