29 """Jet reconstruction needed for HIGG1D1"""
31 acc = ComponentAccumulator()
35 PrefixForHggCollection =
"Hgg"
36 HggVertexContainerName = PrefixForHggCollection+
"PrimaryVertices"
37 CustomPFJetContainerName =
"AntiKt4EMPFlowCustomVtxJets"
39 from JetRecConfig.StandardJetConstits
import stdInputExtDic, JetInputExternal,JetInputConstit, JetInputConstitSeq, JetConstitModifier, xAODType
40 from JetRecConfig.StandardSmallRJets
import AntiKt4EMPFlow
41 from JetRecConfig.JetDefinition
import JetDefinition
42 from JetRecTools
import JetRecToolsConfig
as jrtcfg
43 from JetMomentTools
import JetMomentToolsConfig
44 from JetRecConfig.StandardJetConstits
import stdConstitDic, stdContitModifDic
45 from JetRecConfig.StandardJetContext
import propFromContext, inputsFromContext
46 from JetRecConfig.JetInputConfig
import buildEventShapeAlg
49 jetContextName =
'CustomVtx'
50 context = ConfigFlags.Jet.Context[jetContextName]
52 def replaceItems(tup,orgName,newName):
54 for i, item
in enumerate(newList):
56 newList[i] = item.replace(orgName,newName)
57 print(
"Updated ", orgName,
" to ", newName )
59 print(
"Failed to update ", orgName,
" to ", newName )
62 def updateCalibSequence(tup):
64 if ConfigFlags.GeoModel.Run
is LHCPeriod.Run3:
65 rhoname =
"Kt4EMPFlowNeutEventShape"
67 rhoname =
"Kt4EMPFlowCustomVtxEventShape"
69 for i, item
in enumerate(newList):
71 calibspecs = item.split(
":")
72 calib, calibcontext, data_type = calibspecs[:3]
75 calibseq = calibspecs[3]
76 pvname = HggVertexContainerName
77 finalCalibString = f
"CalibCustomVtx:{calibcontext}:{data_type}:{calibseq}:{rhoname}:{pvname}"
78 if len(calibspecs)>6: finalCalibString = f
"{finalCalibString}:{calibspecs[6]}"
79 newList[i] = finalCalibString
80 print(finalCalibString)
82 print(
"Failed to update calib sequence" )
87 modsCustomVtx = AntiKt4EMPFlow.modifiers
88 modsCustomVtx = updateCalibSequence(modsCustomVtx)
89 modsCustomVtx = replaceItems(modsCustomVtx,
"TrackMoments",
"TrackMomentsCustomVtx")
90 modsCustomVtx = replaceItems(modsCustomVtx,
"TrackSumMoments",
"TrackSumMomentsCustomVtx")
91 modsCustomVtx = replaceItems(modsCustomVtx,
"JVF",
"JVFCustomVtx")
92 modsCustomVtx = replaceItems(modsCustomVtx,
"JVT",
"JVTCustomVtx")
93 modsCustomVtx = replaceItems(modsCustomVtx,
"Charge",
"ChargeCustomVtx")
95 ghostCustomVtx = AntiKt4EMPFlow.ghostdefs
98 stdConstitDic[
"TrackCustomVtx"] = JetInputConstit(
"TrackCustomVtx", xAODType.TrackParticle,
"JetSelectedTracksCustomVtx" )
101 stdConstitDic[
"GPFlowCustomVtx"] = JetInputConstitSeq(
"GPFlowCustomVtx", xAODType.FlowElement,[
"CorrectPFOCustomVtx",
"CHSCustomVtx"] ,
'GlobalParticleFlowObjects',
'CHSGCustomVtxParticleFlowObjects',
102 label=
'EMPFlowCustomVtx')
104 stdContitModifDic[
"CorrectPFOCustomVtx"] = JetConstitModifier(
"CorrectPFOCustomVtx",
"CorrectPFOTool",
105 prereqs=[inputsFromContext(
"Vertices")],
106 properties=dict(VertexContainerKey=propFromContext(
"Vertices"),
107 WeightPFOTool= CompFactory.getComp(
"CP::WeightPFOTool")(
"weightPFO") )
110 stdContitModifDic[
"CHSCustomVtx"] = JetConstitModifier(
"CHSCustomVtx",
"ChargedHadronSubtractionTool",
111 prereqs= [inputsFromContext(
"Vertices"),inputsFromContext(
"TVA")],
112 properties=dict(VertexContainerKey=propFromContext(
"Vertices"),
113 TrackVertexAssociation=propFromContext(
"TVA"),
114 UseTrackToVertexTool=
True,
119 AntiKt4EMPFlowCustomVtx = JetDefinition(
"AntiKt",0.4,stdConstitDic.GPFlowCustomVtx,
120 context = jetContextName,
121 ghostdefs = ghostCustomVtx,
122 modifiers = modsCustomVtx+(
"JetPtAssociation",
"QGTaggingCustomVtx",
"BoostedQGTaggingCustomVtx",
"fJVTCustomVtx",
"NNJVTCustomVtx",
"CaloEnergiesClus",
"JetPileupLabel"),
126 def getUsedInVertexFitTrackDecoratorAlgCustomVtx(jetdef, jetmod):
127 """ Create the alg to decorate the used-in-fit information for AMVF """
128 context = jetdef._contextDic
130 from InDetUsedInFitTrackDecoratorTool.UsedInVertexFitTrackDecoratorConfig
import getUsedInVertexFitTrackDecoratorAlg
131 alg = getUsedInVertexFitTrackDecoratorAlg(context[
'Tracks'], context[
'Vertices'],
132 vertexDeco=
'TTVA_AMVFVertices_forHiggs',
133 weightDeco=
'TTVA_AMVFWeights_forHiggs')
138 stdInputExtDic[context[
'Vertices']] = JetInputExternal( context[
'Vertices'], xAODType.Vertex )
140 stdInputExtDic[
"JetSelectedTracksCustomVtx"] = JetInputExternal(
"JetSelectedTracksCustomVtx", xAODType.TrackParticle,
141 prereqs= [ f
"input:{context['Tracks']}" ],
142 algoBuilder =
lambda jdef,_ : jrtcfg.getTrackSelAlg(jdef, trackSelOpt=
False,
143 DecorDeps=[
"TTVA_AMVFWeights_forHiggs",
"TTVA_AMVFVertices_forHiggs"] )
146 stdInputExtDic[
"JetTrackUsedInFitDecoCustomVtx"] = JetInputExternal(
"JetTrackUsedInFitDecoCustomVtx", xAODType.TrackParticle,
147 prereqs= [ f
"input:{context['Tracks']}" ,
148 f
"input:{context['Vertices']}"],
149 algoBuilder = getUsedInVertexFitTrackDecoratorAlgCustomVtx
152 stdInputExtDic[
"JetTrackVtxAssocCustomVtx"] = JetInputExternal(
"JetTrackVtxAssocCustomVtx", xAODType.TrackParticle,
153 algoBuilder =
lambda jdef,_ : jrtcfg.getJetTrackVtxAlg(jdef._contextDic, algname=
"jetTVACustomVtx",
154 WorkingPoint=
"Nonprompt_All_MaxWeight",
155 AMVFVerticesDeco=
'TTVA_AMVFVertices_forHiggs',
156 AMVFWeightsDeco=
'TTVA_AMVFWeights_forHiggs'),
157 prereqs = [
"input:JetTrackUsedInFitDecoCustomVtx", f
"input:{context['Vertices']}" ] )
159 stdInputExtDic[
"EventDensityCustomVtx"] = JetInputExternal(
"EventDensityCustomVtx",
"EventShape", algoBuilder = buildEventShapeAlg,
160 containername =
lambda jetdef, _ :
"Kt4"+jetdef.inputdef.label+
"CustomVtxEventShape",
161 prereqs =
lambda jetdef : [
"input:"+jetdef.inputdef.name] )
163 from JetRecConfig.StandardJetMods
import stdJetModifiers
164 from JetRecConfig.JetDefinition
import JetModifier
165 from JetCalibTools
import JetCalibToolsConfig
167 stdJetModifiers.update(
169 CalibCustomVtx = JetModifier(
"JetCalibrationTool",
"jetcalib_jetcoll_calibseqCustomVtx",
170 createfn=JetCalibToolsConfig.getJetCalibToolFromString,
174 JVFCustomVtx = JetModifier(
"JetVertexFractionTool",
"jvfCustomVtx",
176 modspec =
"CustomVtx",
177 prereqs = [
"input:JetTrackVtxAssocCustomVtx",
"mod:TrackMomentsCustomVtx", f
"input:{context['Vertices']}"] ,
178 JetContainer = CustomPFJetContainerName),
180 JVTCustomVtx = JetModifier(
"JetVertexTaggerTool",
"jvtCustomVtx",
182 modspec =
"CustomVtx",
183 prereqs = [
"mod:JVFCustomVtx" ],JetContainer = CustomPFJetContainerName),
185 NNJVTCustomVtx = JetModifier(
"JetVertexNNTagger",
"nnjvtCustomVtx",
187 prereqs = [
"mod:JVFCustomVtx" ],JetContainer = CustomPFJetContainerName),
189 OriginSetPVCustomVtx = JetModifier(
"JetOriginCorrectionTool",
"origin_setpvCustomVtx",
190 modspec =
"CustomVtx",
191 prereqs = [
"mod:JVFCustomVtx" ],JetContainer = CustomPFJetContainerName, OnlyAssignPV=
True),
193 TrackMomentsCustomVtx = JetModifier(
"JetTrackMomentsTool",
"trkmomsCustomVtx",
195 modspec =
"CustomVtx",
196 prereqs = [
"input:JetTrackVtxAssocCustomVtx",
"ghost:Track" ],JetContainer = CustomPFJetContainerName),
198 TrackSumMomentsCustomVtx = JetModifier(
"JetTrackSumMomentsTool",
"trksummomsCustomVtx",
200 modspec =
"CustomVtx",
201 prereqs = [
"input:JetTrackVtxAssocCustomVtx",
"ghost:Track" ],JetContainer = CustomPFJetContainerName),
203 ChargeCustomVtx = JetModifier(
"JetChargeTool",
"jetchargeCustomVtx",
204 prereqs = [
"ghost:Track" ]),
207 QGTaggingCustomVtx = JetModifier(
"JetQGTaggerVariableTool",
"qgtaggingCustomVtx",
209 modspec =
"CustomVtx",
210 prereqs =
lambda _,jdef :
211 [
"input:JetTrackVtxAssocCustomVtx",
"mod:TrackMomentsCustomVtx"] +
212 ([
"mod:JetPtAssociation"]
if not jdef._cflags.Input.isMC
else []),
213 JetContainer = CustomPFJetContainerName),
215 BoostedQGTaggingCustomVtx = JetModifier(
"BoostedJetTaggerTool",
"boostedqgtaggingCustomVtx",
217 modspec =
"CustomVtx",
218 prereqs =
lambda _,jdef :
219 [
"input:JetTrackVtxAssocCustomVtx",
"mod:TrackMomentsCustomVtx"] +
220 ([
"mod:JetPtAssociation"]
if not jdef._cflags.Input.isMC
else []),
221 JetContainer = CustomPFJetContainerName),
224 fJVTCustomVtx = JetModifier(
"JetForwardPFlowJvtTool",
"fJVTCustomVtx",
226 modspec =
"CustomVtx",
227 prereqs = [
"input:JetTrackVtxAssocCustomVtx",
"input:EventDensityCustomVtx",f
"input:{context['Vertices']}",
"mod:NNJVTCustomVtx"],
228 JetContainer = CustomPFJetContainerName),
231 from JetRecConfig.JetRecConfig
import JetRecCfg
233 acc.merge(JetRecCfg(ConfigFlags,AntiKt4EMPFlowCustomVtx))
238 """Event cleaning and jet cleaning for HIGG1D1"""
240 acc = ComponentAccumulator()
242 from DerivationFrameworkJetEtMiss.JetCommonConfig
import AddJvtDecorationAlgCfg
243 acc.merge(AddJvtDecorationAlgCfg(ConfigFlags, algName =
"JvtPassDecorCustomVtxAlg", jetContainer=
'AntiKt4EMPFlowCustomVtx'))
245 from DerivationFrameworkTau.TauCommonConfig
import AddTauAugmentationCfg
246 acc.merge(AddTauAugmentationCfg(ConfigFlags, wp=
"GNTauLoose"))
250 from AssociationUtils.AssociationUtilsConfig
import OverlapRemovalToolCfg
252 outputLabel =
'DFCommonJets_passOR_EMPFlowCustomVtx'
254 tauLabel =
'DFTauGNTauLoose'
255 orTool = acc.popToolsAndMerge(OverlapRemovalToolCfg(ConfigFlags, outputLabel=outputLabel, bJetLabel=bJetLabel))
256 algOR = CompFactory.OverlapRemovalGenUseAlg(
'OverlapRemovalGenUseAlg_CustomVtx',
257 JetKey=
"AntiKt4EMPFlowCustomVtxJets",
258 OverlapLabel=outputLabel,
259 OverlapRemovalTool=orTool,
262 acc.addEventAlgo(algOR)
264 from JetSelectorTools.JetSelectorToolsConfig
import EventCleaningToolCfg, JetCleaningToolCfg
265 workingPoints = [
'Loose',
'Tight']
267 for wp
in workingPoints:
268 cleaningLevel = wp +
"Bad"
270 jetCleaningTool = acc.popToolsAndMerge(
273 name=
"JetCleaningCustomVtxTool_" + cleaningLevel,
274 jetdef=
"AntiKt4EMPFlowCustomVtxJets",
275 cleaningLevel=cleaningLevel,
276 useDecorations=
False,
279 acc.addPublicTool(jetCleaningTool)
281 ecTool = acc.popToolsAndMerge(
282 EventCleaningToolCfg(ConfigFlags,
"EventCleaningCustomVtxTool_" + wp, cleaningLevel)
284 ecTool.JetCleanPrefix =
"DFCommonJets_"
285 ecTool.OrDecorator =
"passOR_EMPFlowCustomVtx"
286 ecTool.JetContainer =
"AntiKt4EMPFlowCustomVtxJets"
287 ecTool.JetCleaningTool = jetCleaningTool
288 acc.addPublicTool(ecTool)
292 eventCleanAlg = CompFactory.EventCleaningTestAlg(
293 "EventCleaningCustomVtxTestAlg_" + wp,
294 EventCleaningTool=ecTool,
295 JetCollectionName=
"AntiKt4EMPFlowCustomVtxJets",
296 EventCleanPrefix=
"DFCommonJetsCustomVtx_",
297 CleaningLevel=cleaningLevel,
300 acc.addEventAlgo(eventCleanAlg)