ATLAS Offline Software
Loading...
Searching...
No Matches
ParticleJetToolsConfig Namespace Reference

Functions

 isAnalysisRelease ()
 getMCTruthClassifier ()
 getCopyTruthLabelParticles (truthtype)
 getCopyTruthJetParticles (modspec, cflags)
 getCopyTruthJetParticlesGEN (modspec, cflags)
 _getCommonLabelNames (prefix)
 getJetDeltaRFlavorLabelTool (name='jetdrlabeler', jet_pt_min=5000, collection="Final", dr_max=0.3, use_barcode=False)
 getJetQuarkChargeLabelTool (name='jetquarkcharge', output_label="QuarkChargeTruthLabelID", hadron_label="HadronGhostInitialTruthLabelPdgId", parton_label="PartonExtendedTruthLabelID")
 getJetDeltaRLabelTool (jetdef, modspec)
 getJetQuarkChargeTool (jetdef, modspec)
 getJetDeltaRInitialLabelTool (jetdef, modspec)
 getJetGhostFlavorLabelTool (name="jetghostlabeler", collection="Final", use_barcode=False)
 getJetGhostInitialLabelTool (jetdef, modspec)
 getJetGhostLabelTool (jetdef, modspec)
 getJetTruthLabelTool (jetdef, modspec)
 getJetTruthLabelToolPrereqs (jetdef, modspec)
 getJetPileupLabelTool (jetdef, modspec)

Variables

 jrtlog = Logging.logging.getLogger('ParticleJetToolsConfig')
dict truthpartoptions

Function Documentation

◆ _getCommonLabelNames()

ParticleJetToolsConfig._getCommonLabelNames ( prefix)
protected
Internal unlity to name labels

Returns a dictionary to configure labeling tools. Takes one
argument which is prefixed to each label.

Definition at line 107 of file ParticleJetToolsConfig.py.

107def _getCommonLabelNames(prefix):
108 """Internal unlity to name labels
109
110 Returns a dictionary to configure labeling tools. Takes one
111 argument which is prefixed to each label.
112 """
113 return dict(
114 LabelName=f"{prefix}TruthLabelID",
115 DoubleLabelName=f"{prefix}ExtendedTruthLabelID",
116 LabelPtName=f"{prefix}TruthLabelPt",
117 LabelLxyName=f"{prefix}TruthLabelLxy",
118 LabelDRName=f"{prefix}TruthLabelDR",
119 LabelPdgIdName=f"{prefix}TruthLabelPdgId",
120 LabelPositionDPhiName=f"{prefix}TruthLabelPositionDPhi",
121 LabelPositionDEtaName=f"{prefix}TruthLabelPositionDEta",
122 LabelBarcodeName=f"{prefix}TruthLabelBarcode",
123 ChildLxyName=f"{prefix}TruthLabelChildLxy",
124 ChildPtName=f"{prefix}TruthLabelChildPt",
125 ChildPdgIdName=f"{prefix}TruthLabelChildPdgId",
126 ChildPositionDPhiName=f"{prefix}TruthLabelChildPositionDPhi",
127 ChildPositionDEtaName=f"{prefix}TruthLabelChildPositionDEta",
128 )
129
130
131# ATLASRECTS-8290: remove use_barcode here

◆ getCopyTruthJetParticles()

ParticleJetToolsConfig.getCopyTruthJetParticles ( modspec,
cflags )

Definition at line 63 of file ParticleJetToolsConfig.py.

63def getCopyTruthJetParticles(modspec, cflags):
64 truthclassif = getMCTruthClassifier()
65
66 truthpartcopy = CompFactory.CopyTruthJetParticles(
67 "truthpartcopy"+modspec,
68 OutputName="JetInputTruthParticles"+modspec,
69 MCTruthClassifier=truthclassif)
70 if modspec=="NoWZ":
71 truthpartcopy.IncludePromptLeptons=False
72 truthpartcopy.IncludePromptPhotons=False
73 truthpartcopy.IncludeMuons=True
74 truthpartcopy.IncludeNeutrinos=True
75 if modspec=="DressedWZ":
76 truthpartcopy.IncludePromptLeptons=False
77 truthpartcopy.IncludePromptPhotons=True
78 truthpartcopy.IncludeMuons=True
79 truthpartcopy.IncludeNeutrinos=True
80 truthpartcopy.DressingDecorationNames=['TruthParticles.dressedPhoton_e','TruthParticles.dressedPhoton_mu']
81
82 truthpartcopy.ExtraInputs = {( 'xAOD::TruthParticleContainer' , 'StoreGateSvc+TruthParticles.dressedPhoton_e' ),
83 ( 'xAOD::TruthParticleContainer' , 'StoreGateSvc+TruthParticles.dressedPhoton_mu' )}
84 if modspec=="Charged":
85 truthpartcopy.ChargedParticlesOnly=True
86 return truthpartcopy
87
88

◆ getCopyTruthJetParticlesGEN()

ParticleJetToolsConfig.getCopyTruthJetParticlesGEN ( modspec,
cflags )
  Build truth constituents as in EVTGEN jobs in the r21 config.
IMPORTANT : this is expected to be temporary, only to reproduce the EVTGEN r21 config with the new config. The definitions should be harmonized with reco-level at some point and this function removed.
The source for r21 EVTGEN config was in GeneratorFilters/share/common/GenerateTruthJets.py

Definition at line 89 of file ParticleJetToolsConfig.py.

89def getCopyTruthJetParticlesGEN(modspec, cflags):
90 """ Build truth constituents as in EVTGEN jobs in the r21 config.
91 IMPORTANT : this is expected to be temporary, only to reproduce the EVTGEN r21 config with the new config. The definitions should be harmonized with reco-level at some point and this function removed.
92 The source for r21 EVTGEN config was in GeneratorFilters/share/common/GenerateTruthJets.py
93 """
94 truthclassif = getMCTruthClassifier()
95
96 if modspec == "":
97 return CompFactory.CopyTruthJetParticles("truthpartcopy",
98 OutputName="JetInputTruthParticlesGEN",
99 MCTruthClassifier=truthclassif)
100 elif modspec=="NoWZ":
101 return CompFactory.CopyTruthJetParticles("truthpartcopywz",
102 OutputName="JetInputTruthParticlesGENNoWZ",
103 MCTruthClassifier=truthclassif,
104 IncludePromptLeptons=False)
105
106

◆ getCopyTruthLabelParticles()

ParticleJetToolsConfig.getCopyTruthLabelParticles ( truthtype)

Definition at line 43 of file ParticleJetToolsConfig.py.

43def getCopyTruthLabelParticles(truthtype):
44 toolProperties = {}
45 if truthtype == "Partons":
46 truthcategory = "Partons"
47 elif truthtype in ["WBosons", "ZBosons", "HBosons", "TQuarksFinal"]:
48 truthcategory = "BosonTop"
49 toolProperties['ParticleType'] = truthtype
50 else:
51 truthcategory = "FlavourLabel"
52 toolProperties['ParticleType'] = truthtype
53
54 tooltype = truthpartoptions[truthcategory]["ToolType"]
55 toolProperties.update( PtMin = truthpartoptions[truthcategory]["ptmin"],
56 OutputName = "TruthLabel"+truthtype)
57 ctp = tooltype("truthpartcopy_"+truthtype,
58 **toolProperties
59 )
60 return ctp
61
62# Generates input truth particle containers for truth jets

◆ getJetDeltaRFlavorLabelTool()

ParticleJetToolsConfig.getJetDeltaRFlavorLabelTool ( name = 'jetdrlabeler',
jet_pt_min = 5000,
collection = "Final",
dr_max = 0.3,
use_barcode = False )
Get the standard flavor tagging delta-R labeling tool

Uses cone matching to B, C and tau truth particles.

Definition at line 132 of file ParticleJetToolsConfig.py.

132def getJetDeltaRFlavorLabelTool(name='jetdrlabeler', jet_pt_min=5000, collection="Final", dr_max=0.3, use_barcode=False):
133 """Get the standard flavor tagging delta-R labeling tool
134
135 Uses cone matching to B, C and tau truth particles.
136 """
137 prefix_to_name = "HadronConeExcl"
138 if collection != "Final":
139 prefix_to_name += collection
140 name+=collection
141
142 return CompFactory.ParticleJetDeltaRLabelTool(
143 name,
144 **_getCommonLabelNames(prefix_to_name),
145 BLabelName = "ConeExclBHadrons"+collection,
146 CLabelName = "ConeExclCHadrons"+collection,
147 TauLabelName = "ConeExclTausFinal",
148 BParticleCollection = "TruthLabelBHadrons"+collection,
149 CParticleCollection = "TruthLabelCHadrons"+collection,
150 TauParticleCollection = "TruthLabelTausFinal",
151 PartPtMin = 5000.,
152 DRMax = dr_max,
153 MatchMode = "MinDR",
154 JetPtMin = jet_pt_min,
155 useBarcode=use_barcode, # ATLASRECTS-8290: remove this eventually
156 )
157
158

◆ getJetDeltaRInitialLabelTool()

ParticleJetToolsConfig.getJetDeltaRInitialLabelTool ( jetdef,
modspec )
returns a ParticleJetDeltaRLabelTool
Cone matching for B, C and tau truth for all but track jets.

This function is meant to be used as callback from JetRecConfig where
it is called as func(jetdef, modspec). Hence the jetdef argument even if not used in this case.

Definition at line 204 of file ParticleJetToolsConfig.py.

204def getJetDeltaRInitialLabelTool(jetdef, modspec):
205 """returns a ParticleJetDeltaRLabelTool
206 Cone matching for B, C and tau truth for all but track jets.
207
208 This function is meant to be used as callback from JetRecConfig where
209 it is called as func(jetdef, modspec). Hence the jetdef argument even if not used in this case.
210 """
211 jetptmin = float(modspec)
212 name = "jetdrlabeler_jetpt{0}GeV".format(int(jetptmin/1000))
213 return getJetDeltaRFlavorLabelTool(name, jetptmin, collection = "Initial")
214
215
216# ATLASRECTS-8290: remove use_barcode here

◆ getJetDeltaRLabelTool()

ParticleJetToolsConfig.getJetDeltaRLabelTool ( jetdef,
modspec )
returns a ParticleJetDeltaRLabelTool
Cone matching for B, C and tau truth for all but track jets.

This function is meant to be used as callback from JetRecConfig where
it is called as func(jetdef, modspec). Hence the jetdef argument even if not used in this case.

Definition at line 178 of file ParticleJetToolsConfig.py.

178def getJetDeltaRLabelTool(jetdef, modspec):
179 """returns a ParticleJetDeltaRLabelTool
180 Cone matching for B, C and tau truth for all but track jets.
181
182 This function is meant to be used as callback from JetRecConfig where
183 it is called as func(jetdef, modspec). Hence the jetdef argument even if not used in this case.
184 """
185 jetptmin = float(modspec)
186 name = "jetdrlabeler_jetpt{0}GeV".format(int(jetptmin/1000))
187 return getJetDeltaRFlavorLabelTool(name, jetptmin)
188
189

◆ getJetGhostFlavorLabelTool()

ParticleJetToolsConfig.getJetGhostFlavorLabelTool ( name = "jetghostlabeler",
collection = "Final",
use_barcode = False )

Definition at line 217 of file ParticleJetToolsConfig.py.

220 use_barcode=False):
221
222 prefix_to_name = "HadronGhost"
223 if collection != "Final":
224 prefix_to_name += collection
225 name+=collection
226 return CompFactory.ParticleJetGhostLabelTool(
227 name,
228 **_getCommonLabelNames(prefix_to_name),
229 GhostBName = "GhostBHadrons"+collection,
230 GhostCName = "GhostCHadrons"+collection,
231 GhostTauName = "GhostTausFinal",
232 useBarcode = use_barcode, # ATLASRECTS-8290: remove this eventually
233 PartPtMin = 5000.0
234 )
235

◆ getJetGhostInitialLabelTool()

ParticleJetToolsConfig.getJetGhostInitialLabelTool ( jetdef,
modspec )
get ghost-based flavor tagging labeling

This is a wrapper for JetRecConfig where it's called as
func(jetdef, modspec)

Definition at line 236 of file ParticleJetToolsConfig.py.

236def getJetGhostInitialLabelTool(jetdef, modspec):
237 """get ghost-based flavor tagging labeling
238
239 This is a wrapper for JetRecConfig where it's called as
240 func(jetdef, modspec)
241 """
242 return getJetGhostFlavorLabelTool(modspec,collection = "Initial")
243

◆ getJetGhostLabelTool()

ParticleJetToolsConfig.getJetGhostLabelTool ( jetdef,
modspec )
get ghost-based flavor tagging labeling

This is a wrapper for JetRecConfig where it's called as
func(jetdef, modspec)

Definition at line 244 of file ParticleJetToolsConfig.py.

244def getJetGhostLabelTool(jetdef, modspec):
245 """get ghost-based flavor tagging labeling
246
247 This is a wrapper for JetRecConfig where it's called as
248 func(jetdef, modspec)
249 """
250 return getJetGhostFlavorLabelTool(modspec)
251
252

◆ getJetPileupLabelTool()

ParticleJetToolsConfig.getJetPileupLabelTool ( jetdef,
modspec )

Definition at line 272 of file ParticleJetToolsConfig.py.

272def getJetPileupLabelTool(jetdef, modspec):
273
274 jetPileupLabelTool = CompFactory.JetPileupLabelingTool('pileuplabeler',
275 RecoJetContainer = jetdef.fullname(),
276 TruthJetContainer= "AntiKt4TruthDressedWZJets")
277
278 return jetPileupLabelTool

◆ getJetQuarkChargeLabelTool()

ParticleJetToolsConfig.getJetQuarkChargeLabelTool ( name = 'jetquarkcharge',
output_label = "QuarkChargeTruthLabelID",
hadron_label = "HadronGhostInitialTruthLabelPdgId",
parton_label = "PartonExtendedTruthLabelID" )
Get the flavor tagging labeling tool to store the quark charge of a jet
It is necessary to have saved before an hadron label and a parton label, otherwise the code will break

Definition at line 159 of file ParticleJetToolsConfig.py.

162 parton_label = "PartonExtendedTruthLabelID"):
163 """Get the flavor tagging labeling tool to store the quark charge of a jet
164 It is necessary to have saved before an hadron label and a parton label, otherwise the code will break
165 """
166
167 import ParticleJetTools.quarkChargeMap as qcMap
168 charge_map = qcMap.hadrons_dict
169
170 return CompFactory.JetQuarkChargeLabelingTool(
171 name,
172 HadronDecorationName = hadron_label,
173 PartonDecorationName = parton_label,
174 HadronChargeMap = charge_map,
175 OutputName = output_label,
176 )
177

◆ getJetQuarkChargeTool()

ParticleJetToolsConfig.getJetQuarkChargeTool ( jetdef,
modspec )
returns a JetQuarkChargeLabelingTool

This function is meant to be used as callback from JetRecConfig where
it is called as func(jetdef, modspec). Hence the jetdef argument even if not used.

Definition at line 190 of file ParticleJetToolsConfig.py.

190def getJetQuarkChargeTool(jetdef, modspec):
191 """returns a JetQuarkChargeLabelingTool
192
193 This function is meant to be used as callback from JetRecConfig where
194 it is called as func(jetdef, modspec). Hence the jetdef argument even if not used.
195 """
196 if modspec == "":
197 return getJetQuarkChargeLabelTool()
198
199 outputLabel,hadronLabel,partonLabel = modspec.split(",")
200
201 name = f"jetquarkcharge_{outputLabel}_{hadronLabel}_{partonLabel}"
202 return getJetQuarkChargeLabelTool(name,output_label = outputLabel, hadron_label = hadronLabel, parton_label = partonLabel)
203

◆ getJetTruthLabelTool()

ParticleJetToolsConfig.getJetTruthLabelTool ( jetdef,
modspec )

Definition at line 253 of file ParticleJetToolsConfig.py.

253def getJetTruthLabelTool(jetdef, modspec):
254
255 isTruthJet = 'Truth' in jetdef.fullname()
256
257 if not isinstance(modspec, str):
258 raise ValueError("JetTruthLabelingTool can only be scheduled with str as modspec")
259 else:
260 truthLabel = str(modspec)
261
262 jetTruthLabelTool = CompFactory.JetTruthLabelingTool('truthlabeler_{0}'.format(truthLabel),
263 RecoJetContainer = jetdef.fullname(),
264 IsTruthJetCollection = isTruthJet,
265 TruthLabelName = truthLabel)
266
267 return jetTruthLabelTool
268

◆ getJetTruthLabelToolPrereqs()

ParticleJetToolsConfig.getJetTruthLabelToolPrereqs ( jetdef,
modspec )

Definition at line 269 of file ParticleJetToolsConfig.py.

269def getJetTruthLabelToolPrereqs(jetdef, modspec):
270 return ["input:AntiKt10TruthDressedWZSoftDropBeta100Zcut10Jets"] if modspec == "R10WZTruthLabel_R22v1" and jetdef._cflags.Input.isMC else []
271

◆ getMCTruthClassifier()

ParticleJetToolsConfig.getMCTruthClassifier ( )

Definition at line 23 of file ParticleJetToolsConfig.py.

23def getMCTruthClassifier():
24 # Assume mc15 value
25 truthclassif = CompFactory.MCTruthClassifier(
26 "JetMCTruthClassifier"
27 )
28 if not isAnalysisRelease() :
29 truthclassif.xAODTruthLinkVector= ""
30 # Config neessary only for Athena releases
31 import os
32 if "AtlasProject" in os.environ.keys():
33 if os.environ["AtlasProject"] in ["Athena","AthDerivation"]:
34 truthclassif.ParticleCaloExtensionTool=""
35 return truthclassif
36
37# Generates truth particle containers for truth labeling

◆ isAnalysisRelease()

ParticleJetToolsConfig.isAnalysisRelease ( )

Definition at line 19 of file ParticleJetToolsConfig.py.

19 def isAnalysisRelease():
20 return True
21
22# Putting MCTruthClassifier here as we needn't stick jet configs in really foreign packages

Variable Documentation

◆ jrtlog

ParticleJetToolsConfig.jrtlog = Logging.logging.getLogger('ParticleJetToolsConfig')

Definition at line 12 of file ParticleJetToolsConfig.py.

◆ truthpartoptions

dict ParticleJetToolsConfig.truthpartoptions
Initial value:
1= {
2 "Partons":{"ToolType":CompFactory.CopyTruthPartons,"ptmin":5000},
3 "BosonTop":{"ToolType":CompFactory.CopyBosonTopLabelTruthParticles,"ptmin":100000},
4 "FlavourLabel":{"ToolType":CompFactory.CopyFlavorLabelTruthParticles,"ptmin":5000},
5}

Definition at line 38 of file ParticleJetToolsConfig.py.