3This module defines the standard JetModifier tools used in jet reco
5Definitions are grouped in a dictionary of tool configurations using the helpers defined
7This dict maps a modifier alias to the JetModifier config object
8that in turn will be responsible for generating a configured tool.
10The JetModifier config class is defined in JetDefinition.py
12 Args to the JetModifier constructor are:
13 1. Tool Type (ignored if the helper is a custom one)
14 2. Tool Name (ignored if the helper is a custom one)
15 3. createfn : helper function which build the actual tool. If none, we just instantiate the tool type.
16 4. prereqs : Prerequisites (default to []). Can also be a function which returns a list
17 X. all other keyword arguments are directly interpreted as Property of the tool.
18 for ex, passing 'PtMin=10.' will configure the tool as in 'tool.PtMin = 10'
19 we can pass function as the value :
20 'JetContainerName=nameFunc' will configure as in 'tool.JetContainerName=nameFunc(jetdef, modspec)'
22 --> should this be by default? prefer to avoid ignored args
24from .JetDefinition
import JetModifier
25from .Utilities
import ldict
26from .StandardJetConstits
import inputsFromContext
28from JetRecConfig.JetRecCommon
import isMC
37 return jetdef.fullname()
41 """Returns the exact constituent container name used to build jetdef"""
42 constitdef = jetdef.inputdef
43 containername = constitdef.containername(jetdef).
split(
':')[-1]
if callable(constitdef.containername)
else constitdef.containername
49stdJetModifiers.update(
54 PtMin =
lambda jdef,modspec: int(modspec)
56 Filter_ifnotESD =
JetModifier(
"JetFilterTool",
"jetptfilter_{modspec}",
57 PtMin =
lambda _,modspec: 1,
60 Filter_calibThreshold =
JetModifier(
"JetFilterTool",
"jetptfilter_{modspec}",
61 PtMin =
lambda jetdef,modspec: 1
if not jetdef._cflags.Jet.useCalibJetThreshold
else int(modspec),
73 from JetCalibTools
import JetCalibToolsConfig
74 stdJetModifiers.update(
75 Calib =
JetModifier(
"JetCalibrationTool",
"jetcalib_jetcoll_calibseq",
76 createfn=JetCalibToolsConfig.getJetCalibToolFromString,
80 from JetCalibTools
import JetResponseToolConfig
81 stdJetModifiers.update(
85 JetContainer=_jetname,
86 prereqs= [
"input:EventDensity"],
87 createfn=JetResponseToolConfig.getJetResponseTool,
91except ModuleNotFoundError:
92 from AthenaCommon
import Logging
93 jetlog = Logging.logging.getLogger(
'JetStandardMods')
94 jetlog.info(
"No JetMomentTools pakage found (expected in AthGeneration or analysis releases). Some jet calculations will be disabled.")
98 from JetCalibTools
import JetCalibToolsCfg
99 stdJetModifiers.update(
100 CalibNew =
JetModifier(
"JetCalibTool",
"jetcalib_jetcoll_calibseq",
101 createfn=JetCalibToolsCfg.defineJetCalibTool,
104except ModuleNotFoundError:
105 from AthenaCommon
import Logging
106 jetlog = Logging.logging.getLogger(
'JetStandardMods')
107 jetlog.info(
"No JetMomentTools pakage found (expected in AthGeneration or analysis releases). Some jet calculations will be disabled.")
120 return jetdef.fullname()
125 from JetMomentTools
import JetMomentToolsConfig
126 stdJetModifiers.update(
129 ClusterMoments =
JetModifier(
"JetClusterMomentsTool",
"clsmoms", JetContainer = _jetname),
130 ECPSFrac =
JetModifier(
"JetECPSFractionTool",
"ecpsfrac", JetContainer = _jetname),
131 Width =
JetModifier(
"JetWidthTool",
"width", JetContainer = _jetname),
135 prereqs=[
"mod:EMScaleMom"],
136 Calculations=[
"EMFrac",
"HECFrac",
"PSFrac",
"FracSamplingMax"], JetContainer = _jetname,
139 CaloEnergiesLargeR =
JetModifier(
"JetCaloEnergies",
"jetenslargeR",
140 prereqs=[
"mod:EMScaleMom"],
141 Calculations=[
"EMFrac",
"HECFrac",
"PSFrac",
"EM3Frac",
"Tile0Frac",
"EffNClusts"], JetContainer = _jetname,
142 calcClusterBasedVars =
True,
147 prereqs=[
"mod:EMScaleMom"],
148 Calculations=[
"EMFrac",
"HECFrac",
"PSFrac",
"FracSamplingMax"], JetContainer = _jetname,
149 calcClusterBasedVars =
True),
153 Calculations = [
"LArQuality",
"N90Constituents",
"NegativeE",
"Timing",
"HECQuality",
"Centroid",
"AverageLArQF",
"BchCorrCell"],JetContainer = _jetname),
157 ThresholdCuts = [90],
158 Calculations = [
"LArQuality",
"NegativeE",
"Timing",
"HECQuality",
"Centroid",
"AverageLArQF",
"BchCorrCell"],JetContainer = _jetname),
161 Calculations = [
"N90Constituents"],JetContainer = _jetname),
163 ConstitFourMom =
JetModifier(
"JetConstitFourMomTool",
"constitfourmom_basename",
164 createfn=JetMomentToolsConfig.getConstitFourMomTool,),
165 EMScaleMom =
JetModifier(
"JetEMScaleMomTool",
"emscalemom_basename",
166 createfn=JetMomentToolsConfig.getEMScaleMomTool,
167 JetContainer = _jetname),
170 createfn=JetMomentToolsConfig.getJVFTool,
171 prereqs = [inputsFromContext(
"TVA"),
"mod:TrackMoments", inputsFromContext(
"Vertices")],
172 JetContainer = _jetname),
174 createfn=JetMomentToolsConfig.getJVTTool,
175 prereqs = [
"mod:JVF" ],JetContainer = _jetname),
177 createfn=JetMomentToolsConfig.getNNJvtTool,
178 prereqs = [
"mod:JVF" ],JetContainer = _jetname),
180 prereqs = [
"mod:EMScaleMom"],JetContainer = _jetname),
181 OriginSetPV =
JetModifier(
"JetOriginCorrectionTool",
"origin_setpv",
182 prereqs = [
"mod:JVF" ],JetContainer = _jetname, OnlyAssignPV=
True),
184 createfn=JetMomentToolsConfig.getTrackMomentsTool,
185 prereqs = [ inputsFromContext(
"TVA"),
"ghost:Track" ],JetContainer = _jetname),
187 TrackSumMoments =
JetModifier(
"JetTrackSumMomentsTool",
"trksummoms",
188 createfn=JetMomentToolsConfig.getTrackSumMomentsTool,
189 prereqs = [ inputsFromContext(
"TVA"),
"ghost:Track" ],JetContainer = _jetname),
191 prereqs = [
"ghost:Track" ]),
194 createfn=JetMomentToolsConfig.getQGTaggingTool,
195 prereqs =
lambda _,jetdef :
196 [inputsFromContext(
"TVA"),
"mod:TrackMoments"] +
197 ([
"mod:JetPtAssociation"]
if not isMC(jetdef._cflags)
else []),
198 JetContainer = _jetname),
201 createfn=JetMomentToolsConfig.getPFlowfJVTTool,
202 prereqs = [inputsFromContext(
"TVA"),inputsFromContext(
"EventDensity"),inputsFromContext(
"Vertices"),
"mod:NNJVT"],
203 JetContainer = _jetname),
206 createfn=JetMomentToolsConfig.getPFlowbJVTTool,
207 prereqs = [inputsFromContext(
"EventDensity"),inputsFromContext(
"Vertices"),
"mod:NNJVT"],
208 JetContainer = _jetname),
211 JetContainer = _jetname,
215 JetContainer = _jetname,
218 JetPtAssociation =
JetModifier(
"JetPtAssociationTool",
"jetPtAssociation",
220 createfn=JetMomentToolsConfig.getJetPtAssociationTool,
221 prereqs=[
"ghost:Truth"],
222 JetContainer = _jetname
226 JetContainer = _jetname,
232 JetContainer=_jetname,
233 InputConstitContainer = _constitContainername,
234 IsolationCalculations = [
"IsoFixedCone:5:Pt",
"IsoFixedCone:5:PtPUsub",],
235 RhoKey =
lambda jetdef, specs :
"Kt4"+jetdef.inputdef.label+
"EventShape" ,
236 prereqs= [
"input:EventDensity"],
240 JetContainer=_jetname,
241 InputConstitContainer = _constitContainername,
242 IsolationCalculations = [
"IsoFixedCone:5:Pt", ],
247except ModuleNotFoundError:
248 from AthenaCommon
import Logging
249 jetlog = Logging.logging.getLogger(
'JetStandardMods')
250 jetlog.info(
"No JetMomentTools pakage found (expected in AthGeneration or analysis releases). Some jet calculations will be disabled.")
255from ParticleJetTools
import ParticleJetToolsConfig
256stdJetModifiers.update(
258 PartonTruthLabel =
JetModifier(
"Analysis::JetPartonTruthLabel",
"partontruthlabel",
259 prereqs=[
"ghost:Partons"]
263 JetDeltaRLabel =
JetModifier(
"ParticleJetDeltaRLabelTool",
"jetdrlabeler_jetptmin",
264 createfn=ParticleJetToolsConfig.getJetDeltaRLabelTool,
265 prereqs=[
"ghost:BHadronsFinal",
266 "ghost:CHadronsFinal",
271 JetGhostLabel =
JetModifier(
"ParticleJetGhostLabelTool",
"jetghostlabeler",
272 createfn=ParticleJetToolsConfig.getJetGhostLabelTool,
273 prereqs=[
"ghost:BHadronsFinal",
274 "ghost:CHadronsFinal",
279 JetDeltaRInitialLabel =
JetModifier(
"ParticleJetDeltaRLabelTool",
"jetdrlabelerinitial_jetptmin",
280 createfn=ParticleJetToolsConfig.getJetDeltaRInitialLabelTool,
281 prereqs=[
"ghost:BHadronsInitial",
282 "ghost:CHadronsInitial",
287 JetGhostInitialLabel =
JetModifier(
"ParticleJetGhostLabelTool",
"jetghostinitiallabeler",
288 createfn=ParticleJetToolsConfig.getJetGhostInitialLabelTool,
289 prereqs=[
"ghost:BHadronsInitial",
290 "ghost:CHadronsInitial",
294 JetQuarkChargeLabel =
JetModifier(
"JetQuarkChargeLabelingTool",
"jetquarkchargetool",
295 createfn=ParticleJetToolsConfig.getJetQuarkChargeTool,
296 prereqs=[
"mod:JetGhostInitialLabel",
"mod:JetGhostLabel",
"mod:PartonTruthLabel"]
300 JetTaggingTruthLabel =
JetModifier(
"JetTaggingTruthLabel",
"truthlabeler_{mods}",
302 createfn=ParticleJetToolsConfig.getJetTruthLabelTool,
306 JetPileupLabel =
JetModifier(
"JetPileupLabel",
"pileuplabeler_{mods}",
308 createfn=ParticleJetToolsConfig.getJetPileupLabelTool,
309 prereqs=[
"input:AntiKt4TruthDressedWZJets"]
316stdJetModifiers.update(
317 nsubjettiness =
JetModifier(
"NSubjettinessTool",
"nsubjettiness", Alpha = 1.0,
318 JetContainer = _jetname),
319 nsubjettinessR =
JetModifier(
"NSubjettinessRatiosTool",
"nsubjettinessR",),
324 ktsplitter =
JetModifier(
"KTSplittingScaleTool",
"ktsplitter", JetContainer = _jetname),
328 dipolarity =
JetModifier(
"DipolarityTool",
"dipolarity",SubJetRadius = 0.3),
334 ecorr =
JetModifier(
"EnergyCorrelatorTool",
"ecorr", Beta = 1.0, JetContainer = _jetname),
337 ecorrgeneral =
JetModifier(
"EnergyCorrelatorGeneralizedTool",
"ecorrgeneral", DoLSeries =
True, JetContainer = _jetname),
338 ecorrgeneralratios =
JetModifier(
"EnergyCorrelatorGeneralizedRatiosTool",
"ecorrgeneralratios", DoLSeries =
True),
340 comshapes =
JetModifier(
"CenterOfMassShapesTool",
"comshapes", JetContainer = _jetname),
342 pull =
JetModifier(
"JetPullTool",
"pull", UseEtaInsteadOfY =
False, IncludeTensorMoments =
True ),
348 softdropobs =
JetModifier(
"SoftDropObservablesTool",
"softdropobs"),
353 from JetMomentTools
import JetMomentToolsConfig
354 stdJetModifiers.update(
355 qgtransformer =
JetModifier(
"BoostedJetTaggerTool",
"qgtransformer",
356 createfn=JetMomentToolsConfig.getBoostedJetTaggerToolQG,
357 JetContainer = _jetname,
358 SuppressInputDependence =
True),
360except ModuleNotFoundError:
361 from AthenaCommon
import Logging
362 jetlog = Logging.logging.getLogger(
'JetStandardMods')
363 jetlog.info(
"No JetMomentTools pakage found (expected in AthGeneration or analysis releases). Some jet calculations will be disabled.")
368 from JetMomentTools
import JetMomentToolsConfig
369 stdJetModifiers.update(
370 toptransformer =
JetModifier(
"BoostedJetTaggerTool",
"toptransformer",
371 createfn=JetMomentToolsConfig.getBoostedJetTaggerToolTop,
372 JetContainer = _jetname,
373 SuppressInputDependence =
True),
375except ModuleNotFoundError:
376 from AthenaCommon
import Logging
377 jetlog = Logging.logging.getLogger(
'JetStandardMods')
378 jetlog.info(
"No JetMomentTools pakage found (expected in AthGeneration or analysis releases). Some jet calculations will be disabled.")
383 from JetMomentTools
import JetMomentToolsConfig
384 stdJetModifiers.update(
385 wtransformer =
JetModifier(
"BoostedJetTaggerTool",
"wtransformer",
386 createfn=JetMomentToolsConfig.getBoostedJetTaggerToolW,
387 JetContainer = _jetname,
388 SuppressInputDependence =
True),
390except ModuleNotFoundError:
391 from AthenaCommon
import Logging
392 jetlog = Logging.logging.getLogger(
'JetStandardMods')
393 jetlog.info(
"No JetMomentTools pakage found (expected in AthGeneration or analysis releases). Some jet calculations will be disabled.")
398 from JetMomentTools
import JetMomentToolsConfig
399 stdJetModifiers.update(
400 wtransformer_massdec =
JetModifier(
"BoostedJetTaggerTool",
"wtransformer_massdec",
401 createfn=JetMomentToolsConfig.getBoostedJetTaggerToolWMassDec,
402 JetContainer = _jetname,
403 SuppressInputDependence =
True),
405except ModuleNotFoundError:
406 from AthenaCommon
import Logging
407 jetlog = Logging.logging.getLogger(
'JetStandardMods')
408 jetlog.info(
"No JetMomentTools pakage found (expected in AthGeneration or analysis releases). Some jet calculations will be disabled.")
412stdJetModifiers.update(
413 vr =
JetModifier(
"FlavorTagDiscriminants::VRJetOverlapDecoratorTool",
"vr")
std::vector< std::string > split(const std::string &s, const std::string &t=":")
getJetTruthLabelToolPrereqs(jetdef, modspec)
_jetname(jetdef, modspec)
_constitContainername(jetdef, modspec)