28 """Jet reconstruction needed for HIGG1D1"""
34 PrefixForHggCollection =
"Hgg"
35 HggVertexContainerName = PrefixForHggCollection+
"PrimaryVertices"
36 CustomPFJetContainerName =
"AntiKt4EMPFlowCustomVtxJets"
38 from JetRecConfig.StandardJetConstits
import stdInputExtDic, JetInputExternal,JetInputConstit, JetInputConstitSeq, JetConstitModifier, xAODType
39 from JetRecConfig.StandardSmallRJets
import AntiKt4EMPFlow
40 from JetRecConfig.JetDefinition
import JetDefinition
41 from JetRecTools
import JetRecToolsConfig
as jrtcfg
42 from JetMomentTools
import JetMomentToolsConfig
43 from JetRecConfig.StandardJetConstits
import stdConstitDic, stdContitModifDic
44 from JetRecConfig.StandardJetContext
import propFromContext, inputsFromContext
45 from JetRecConfig.JetInputConfig
import buildEventShapeAlg
48 jetContextName =
'CustomVtx'
49 context = ConfigFlags.Jet.Context[jetContextName]
51 def replaceItems(tup,orgName,newName):
53 for i, item
in enumerate(newList):
55 newList[i] = item.replace(orgName,newName)
56 print(
"Updated ", orgName,
" to ", newName )
58 print(
"Failed to update ", orgName,
" to ", newName )
61 def updateCalibSequence(tup):
63 for i, item
in enumerate(newList):
65 calibspecs = item.split(
":")
66 calib, calibcontext, data_type = calibspecs[:3]
69 calibseq = calibspecs[3]
70 rhoname =
"Kt4EMPFlowCustomVtxEventShape"
71 pvname = HggVertexContainerName
72 finalCalibString = f
"CalibCustomVtx:{calibcontext}:{data_type}:{calibseq}:{rhoname}:{pvname}"
73 if len(calibspecs)>6: finalCalibString = f
"{finalCalibString}:{calibspecs[6]}"
74 newList[i] = finalCalibString
75 print(finalCalibString)
77 print(
"Failed to update calib sequence" )
82 modsCustomVtx = AntiKt4EMPFlow.modifiers
83 modsCustomVtx = updateCalibSequence(modsCustomVtx)
84 modsCustomVtx = replaceItems(modsCustomVtx,
"TrackMoments",
"TrackMomentsCustomVtx")
85 modsCustomVtx = replaceItems(modsCustomVtx,
"TrackSumMoments",
"TrackSumMomentsCustomVtx")
86 modsCustomVtx = replaceItems(modsCustomVtx,
"JVF",
"JVFCustomVtx")
87 modsCustomVtx = replaceItems(modsCustomVtx,
"JVT",
"JVTCustomVtx")
88 modsCustomVtx = replaceItems(modsCustomVtx,
"Charge",
"ChargeCustomVtx")
90 ghostCustomVtx = AntiKt4EMPFlow.ghostdefs
91 ghostCustomVtx = replaceItems(ghostCustomVtx,
"Track",
"TrackCustomVtx")
94 stdConstitDic[
"TrackCustomVtx"] = JetInputConstit(
"TrackCustomVtx", xAODType.TrackParticle,
"JetSelectedTracksCustomVtx" )
97 stdConstitDic[
"GPFlowCustomVtx"] = JetInputConstitSeq(
"GPFlowCustomVtx", xAODType.FlowElement,[
"CorrectPFOCustomVtx",
"CHSCustomVtx"] ,
'GlobalParticleFlowObjects',
'CHSGCustomVtxParticleFlowObjects',
100 stdContitModifDic[
"CorrectPFOCustomVtx"] = JetConstitModifier(
"CorrectPFOCustomVtx",
"CorrectPFOTool",
103 WeightPFOTool= CompFactory.getComp(
"CP::WeightPFOTool")(
"weightPFO") )
106 stdContitModifDic[
"CHSCustomVtx"] = JetConstitModifier(
"CHSCustomVtx",
"ChargedHadronSubtractionTool",
110 UseTrackToVertexTool=
True,
115 AntiKt4EMPFlowCustomVtx = JetDefinition(
"AntiKt",0.4,stdConstitDic.GPFlowCustomVtx,
117 context = jetContextName,
118 ghostdefs = ghostCustomVtx,
119 modifiers = modsCustomVtx+(
"JetPtAssociation",
"QGTaggingCustomVtx",
"fJVTCustomVtx",
"NNJVTCustomVtx"),
123 def getUsedInVertexFitTrackDecoratorAlgCustomVtx(jetdef, jetmod):
124 """ Create the alg to decorate the used-in-fit information for AMVF """
125 context = jetdef._contextDic
127 from InDetUsedInFitTrackDecoratorTool.UsedInVertexFitTrackDecoratorConfig
import getUsedInVertexFitTrackDecoratorAlg
129 vertexDeco=
'TTVA_AMVFVertices_forHiggs',
130 weightDeco=
'TTVA_AMVFWeights_forHiggs')
135 stdInputExtDic[context[
'Vertices']] = JetInputExternal( context[
'Vertices'], xAODType.Vertex )
137 stdInputExtDic[
"JetSelectedTracksCustomVtx"] = JetInputExternal(
"JetSelectedTracksCustomVtx", xAODType.TrackParticle,
138 prereqs= [ f
"input:{context['Tracks']}" ],
139 algoBuilder =
lambda jdef,_ : jrtcfg.getTrackSelAlg(jdef, trackSelOpt=
False )
142 stdInputExtDic[
"JetTrackUsedInFitDecoCustomVtx"] = JetInputExternal(
"JetTrackUsedInFitDecoCustomVtx", xAODType.TrackParticle,
143 prereqs= [ f
"input:{context['Tracks']}" ,
144 f
"input:{context['Vertices']}"],
145 algoBuilder = getUsedInVertexFitTrackDecoratorAlgCustomVtx
148 stdInputExtDic[
"JetTrackVtxAssocCustomVtx"] = JetInputExternal(
"JetTrackVtxAssocCustomVtx", xAODType.TrackParticle,
149 algoBuilder =
lambda jdef,_ : jrtcfg.getJetTrackVtxAlg(jdef._contextDic, algname=
"jetTVACustomVtx", WorkingPoint=
"Nonprompt_All_MaxWeight"),
150 prereqs = [
"input:JetTrackUsedInFitDecoCustomVtx", f
"input:{context['Vertices']}" ] )
152 stdInputExtDic[
"EventDensityCustomVtx"] = JetInputExternal(
"EventDensityCustomVtx",
"EventShape", algoBuilder = buildEventShapeAlg,
153 containername =
lambda jetdef, _ :
"Kt4"+jetdef.inputdef.label+
"CustomVtxEventShape",
154 prereqs =
lambda jetdef : [
"input:"+jetdef.inputdef.name] )
156 from JetRecConfig.StandardJetMods
import stdJetModifiers
157 from JetRecConfig.JetDefinition
import JetModifier
158 from JetCalibTools
import JetCalibToolsConfig
160 stdJetModifiers.update(
162 CalibCustomVtx = JetModifier(
"JetCalibrationTool",
"jetcalib_jetcoll_calibseqCustomVtx",
163 createfn=JetCalibToolsConfig.getJetCalibToolFromString,
167 JVFCustomVtx = JetModifier(
"JetVertexFractionTool",
"jvfCustomVtx",
169 modspec =
"CustomVtx",
170 prereqs = [
"input:JetTrackVtxAssocCustomVtx",
"mod:TrackMomentsCustomVtx", f
"input:{context['Vertices']}"] ,
171 JetContainer = CustomPFJetContainerName),
173 JVTCustomVtx = JetModifier(
"JetVertexTaggerTool",
"jvtCustomVtx",
175 modspec =
"CustomVtx",
176 prereqs = [
"mod:JVFCustomVtx" ],JetContainer = CustomPFJetContainerName),
178 NNJVTCustomVtx = JetModifier(
"JetVertexNNTagger",
"nnjvtCustomVtx",
180 prereqs = [
"mod:JVFCustomVtx" ],JetContainer = CustomPFJetContainerName),
182 OriginSetPVCustomVtx = JetModifier(
"JetOriginCorrectionTool",
"origin_setpvCustomVtx",
183 modspec =
"CustomVtx",
184 prereqs = [
"mod:JVFCustomVtx" ],JetContainer = CustomPFJetContainerName, OnlyAssignPV=
True),
186 TrackMomentsCustomVtx = JetModifier(
"JetTrackMomentsTool",
"trkmomsCustomVtx",
188 modspec =
"CustomVtx",
189 prereqs = [
"input:JetTrackVtxAssocCustomVtx",
"ghost:TrackCustomVtx" ],JetContainer = CustomPFJetContainerName),
191 TrackSumMomentsCustomVtx = JetModifier(
"JetTrackSumMomentsTool",
"trksummomsCustomVtx",
193 modspec =
"CustomVtx",
194 prereqs = [
"input:JetTrackVtxAssocCustomVtx",
"ghost:TrackCustomVtx" ],JetContainer = CustomPFJetContainerName),
196 ChargeCustomVtx = JetModifier(
"JetChargeTool",
"jetchargeCustomVtx",
197 prereqs = [
"ghost:TrackCustomVtx" ]),
200 QGTaggingCustomVtx = JetModifier(
"JetQGTaggerVariableTool",
"qgtaggingCustomVtx",
202 modspec =
"CustomVtx",
203 prereqs =
lambda _,jdef :
204 [
"input:JetTrackVtxAssocCustomVtx",
"mod:TrackMomentsCustomVtx"] +
205 ([
"mod:JetPtAssociation"]
if not jdef._cflags.Input.isMC
else []),
206 JetContainer = CustomPFJetContainerName),
208 fJVTCustomVtx = JetModifier(
"JetForwardPFlowJvtTool",
"fJVTCustomVtx",
210 modspec =
"CustomVtx",
211 prereqs = [
"input:JetTrackVtxAssocCustomVtx",
"input:EventDensityCustomVtx",f
"input:{context['Vertices']}",
"mod:NNJVTCustomVtx"],
212 JetContainer = CustomPFJetContainerName),
215 from JetRecConfig.JetRecConfig
import JetRecCfg
216 from JetRecConfig.JetConfigFlags
import jetInternalFlags
218 jetInternalFlags.isRecoJob =
True
219 acc.merge(
JetRecCfg(ConfigFlags,AntiKt4EMPFlowCustomVtx))