ATLAS Offline Software
Loading...
Searching...
No Matches
StandardSmallRJets.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from JetRecConfig.StandardJetConstits import stdConstitDic as cst
4from JetRecConfig.JetRecConfig import registerAsInputConstit
5from .JetDefinition import JetDefinition
6
7
8# *********************************************************
9# Ghost-associated particles for the standard small R jets
10# *********************************************************
11standardghosts = ["Track","MuonSegment","Truth","Tower"]
12
13
14flavourghosts = [ "BHadronsInitial", "BHadronsFinal", "BQuarksFinal",
15 "CHadronsInitial", "CHadronsFinal", "CQuarksFinal",
16 "TausFinal",
17 "WBosons", "ZBosons", "HBosons", "TQuarksFinal",
18 "Partons",]
19
20
21
22
23
24# *********************************************************
25# Modifiers for the standard small R jets
26# *********************************************************
27# (use tuples rather than lists to prevent accidental modification)
28calibmods = (
29 "ConstitFourMom", "CaloEnergies",
30 "Calib:T0:mc",
31 "Sort","numConstit",
32 )
33
34calibmods_lowCut = (
35 "ConstitFourMom", "CaloEnergies",
36 "Calib:T0:mc:JetArea_Residual",
37 "Sort","numConstit",
38)
39
40calibmods_noCut = (
41 "ConstitFourMom","CaloEnergies","Sort","numConstit",
42)
43
44standardmods = (
45 "Width",
46 "CaloQuality", "TrackMoments","TrackSumMoments",
47 "JVF", "JVT", "Charge",
48)
49
50standardmods_ufo = (
51 "Width",
52 "CaloQualityFE", "TrackMoments","TrackSumMoments",
53 "JVF", "JVT", "Charge",
54)
55
56clustermods = ("ECPSFrac","ClusterMoments",)
57truthmods = ("PartonTruthLabel","JetDeltaRLabel:5000", "JetGhostLabel")
58pflowmods = ()
59
60substrmods = ("nsubjettiness","ecorr")
61
62truthlabels = ("JetTaggingTruthLabel:R4TruthLabel",)
63
64# ********************************************************
65# Standard track jet definition
66# ********************************************************
67AntiKtVR30Rmax4Rmin02PV0Track = JetDefinition("AntiKt", 0.4, cst.PV0Track,
68 modifiers = ("Sort","JetDeltaRLabel:4500","JetGhostLabel","vr","numConstit"),
69 ptmin=4000,
70 VRMinR = 0.02,
71 VRMassSc = 30000,
72 lock = True)
73
74# These jets are used as ghost, so they also need to be defined as constituents :
75registerAsInputConstit(AntiKtVR30Rmax4Rmin02PV0Track)
76
77
78AntiKt4PV0Track = JetDefinition("AntiKt", 0.4, cst.PV0Track,
79 modifiers = ("Sort","numConstit")+truthmods,
80 ptmin=2000,
81 lock = True)
82
83
84# *********************************************************
85# Standard small R reco jet definitions
86# *********************************************************
87
88AntiKt4EMPFlow = JetDefinition("AntiKt",0.4,cst.GPFlow,
89 ghostdefs = standardghosts+flavourghosts,
90 modifiers = calibmods+truthmods+standardmods+("Filter_calibThreshold:10000","JetGhostLabel","JetDeltaRInitialLabel:5000","JetGhostInitialLabel","JetQuarkChargeLabel","LArHVCorr","jetiso")+truthlabels,
91 lock = True
92)
93
94# The following jet collection will be scheduled in derivation production (instead of AntiKt4EMPFlow which is used e.g. at Tier-0)
95AntiKt4EMPFlow_deriv = AntiKt4EMPFlow.clone(
96 ghostdefs = AntiKt4EMPFlow.ghostdefs+["UnAssocMuonSegment"],
97 modifiers = AntiKt4EMPFlow.modifiers+("JetPtAssociation","fJVT","NNJVT","CaloEnergiesClus","JetPileupLabel","qgtransformer")
98)
99
100AntiKt4EMPFlowML = JetDefinition("AntiKt",0.4,cst.GPFlowML,
101 infix = "ML",
102 ghostdefs = standardghosts+flavourghosts,
103 modifiers = calibmods+truthmods+standardmods+("Filter_calibThreshold:10000","JetGhostLabel","JetDeltaRInitialLabel:5000","JetGhostInitialLabel","JetQuarkChargeLabel","LArHVCorr","jetiso"),
104 lock = True
105)
106
107
108AntiKt4EMPFlow_noElectrons = JetDefinition("AntiKt",0.4,cst.GPFlow_noElectrons,
109 ghostdefs = standardghosts+flavourghosts,
110 modifiers = calibmods+truthmods+standardmods+("Filter_calibThreshold:10000","JetGhostLabel","LArHVCorr","jetiso"),
111 lock = True
112)
113
114AntiKt4EMPFlow_noMuons = JetDefinition("AntiKt",0.4,cst.GPFlow_noMuons,
115 ghostdefs = standardghosts+flavourghosts,
116 modifiers = calibmods+truthmods+standardmods+("Filter_calibThreshold:10000","JetGhostLabel","LArHVCorr","jetiso"),
117 lock = True
118)
119
120AntiKt4EMPFlow_noLeptons = JetDefinition("AntiKt",0.4,cst.GPFlow_noLeptons,
121 ghostdefs = standardghosts+flavourghosts,
122 modifiers = calibmods+truthmods+standardmods+("Filter_calibThreshold:10000","JetGhostLabel","LArHVCorr","jetiso"),
123 lock = True
124)
125
126AntiKt4EMPFlow_tauSeedEleRM = JetDefinition("AntiKt",0.4,cst.GPFlow_tauSeedEleRM,
127 ghostdefs = standardghosts+flavourghosts,
128 modifiers = calibmods+truthmods+standardmods+("Filter_calibThreshold:10000","JetGhostLabel","LArHVCorr","jetiso"),
129 lock = True
130)
131
132AntiKt4LCTopo = JetDefinition("AntiKt",0.4,cst.LCTopoOrigin,
133 ghostdefs = standardghosts+flavourghosts,
134 modifiers = calibmods+truthmods+standardmods+clustermods+("Filter_ifnotESD:15000","OriginSetPV","LArHVCorr",
135 "JetDeltaRInitialLabel:5000","JetGhostInitialLabel","JetQuarkChargeLabel"),
136 lock = True,
137)
138
139AntiKt4EMTopo = JetDefinition("AntiKt",0.4,cst.EMTopoOrigin,
140 ghostdefs = standardghosts+["TrackLRT"]+flavourghosts,
141 modifiers = calibmods+truthmods+standardmods+clustermods+("Filter_calibThreshold:15000","LArHVCorr","jetiso",),
142 lock = True,
143)
144
145# The following jet collection will be scheduled in derivation production (instead of AntiKt4EMTopo which is used e.g. at Tier-0)
146AntiKt4EMTopo_deriv = AntiKt4EMTopo.clone(
147 modifiers = AntiKt4EMTopo.modifiers+("JetPtAssociation",)
148)
149
150# *********************************************************
151# EMPFlow CSSK jets (no jet calibration available yet,
152# thus applying only low pT filter)
153# *********************************************************
154AntiKt4EMPFlowCSSK = JetDefinition("AntiKt",0.4,cst.GPFlowCSSK,
155 ghostdefs = standardghosts+flavourghosts,
156 modifiers = ("ConstitFourMom","CaloEnergies","Sort","Filter:1","JetPtAssociation","LArHVCorr","jetiso","numConstit")+truthmods+standardmods,
157 ptmin = 2000,
158 lock = True
159)
160
161# *********************************************************
162# UFO CSSK jets
163# *********************************************************
164AntiKt4UFOCSSK = JetDefinition("AntiKt",0.4,cst.UFOCSSK,
165 ghostdefs = standardghosts+flavourghosts,
166 modifiers = calibmods+("Filter_calibThreshold:10000","EMScaleMom","JetPtAssociation","CaloEnergiesClus","JetGhostLabel","jetiso")+truthmods+standardmods_ufo,
167 lock = True
168)
169
170# *********************************************************
171# Low and no pT cut containers used in JETMX derivations
172# *********************************************************
173AntiKt4UFOCSSKNoPtCut = JetDefinition("AntiKt",0.4,cst.UFOCSSK,
174 infix = "NoPtCut",
175 ghostdefs = standardghosts+flavourghosts,
176 modifiers = calibmods_noCut+("Filter:1","EMScaleMom","JetPtAssociation","CaloEnergiesClus","jetiso",)+truthmods+standardmods_ufo,
177 ptmin = 1,
178 lock = True
179)
180
181AntiKt4EMPFlowCSSKNoPtCut = JetDefinition("AntiKt",0.4,cst.GPFlowCSSK,
182 infix = "NoPtCut",
183 ghostdefs = standardghosts+flavourghosts,
184 modifiers = ("ConstitFourMom","CaloEnergies","Sort","Filter:1","JetPtAssociation","jetiso","numConstit")+truthmods+standardmods,
185 ptmin = 1,
186 lock = True
187)
188
189AntiKt4EMPFlowNoPtCut = JetDefinition("AntiKt",0.4,cst.GPFlow,
190 infix = "NoPtCut",
191 ghostdefs = standardghosts+flavourghosts,
192 modifiers = calibmods_lowCut+("Filter:1",)+truthmods+standardmods+("JetPtAssociation","CaloEnergiesClus","jetiso"),
193 ptmin = 1,
194 lock = True
195)
196
197AntiKt4EMPFlowByVertex = JetDefinition("AntiKt", 0.4, cst.GPFlowByVtx,
198 ghostdefs = standardghosts+flavourghosts,
199 modifiers = calibmods_lowCut+("Filter:1",)+truthmods+standardmods+substrmods+("JetPtAssociation","CaloEnergiesClus"),
200 ptmin = 7000,
201 lock = True,
202 byVertex = True
203)
204
205AntiKt4EMTopoNoPtCut = JetDefinition("AntiKt",0.4,cst.EMTopoOrigin,
206 infix = "NoPtCut",
207 ghostdefs = standardghosts+flavourghosts,
208 modifiers = calibmods_lowCut+("Filter:1",)+truthmods+standardmods+clustermods+("JetPtAssociation","jetiso",),
209 ptmin = 1,
210 lock = True
211)
212
213AntiKt4MLTopo = JetDefinition("AntiKt",0.4,cst.MLTopoOrigin,
214 infix = "",
215 ghostdefs = standardghosts+flavourghosts,
216 modifiers = ("CaloEnergies","Sort","numConstit","Filter:1",)+truthmods+standardmods+clustermods+("JetPtAssociation","jetiso",),
217 ptmin = 1,
218 lock = True
219)
220
221AntiKt4UFOCSSKLowPt = JetDefinition("AntiKt",0.4,cst.UFOCSSK,
222 infix = "LowPt",
223 ghostdefs = standardghosts+flavourghosts,
224 modifiers = calibmods_noCut+("Filter:7000","EMScaleMom","JetPtAssociation","CaloEnergiesClus","jetiso",)+truthmods+standardmods_ufo,
225 ptmin = 1,
226 lock = True
227)
228
229AntiKt4EMPFlowLowPt = JetDefinition("AntiKt",0.4,cst.GPFlow,
230 infix = "LowPt",
231 ghostdefs = standardghosts+flavourghosts,
232 modifiers = calibmods_lowCut+("Filter:2000",)+truthmods+standardmods+("JetPtAssociation","jetiso",),
233 ptmin = 2000,
234 lock = True
235)
236
237AntiKt4EMTopoLowPt = JetDefinition("AntiKt",0.4,cst.EMTopoOrigin,
238 infix = "LowPt",
239 ghostdefs = standardghosts+flavourghosts,
240 modifiers = calibmods_lowCut+("Filter:2000",)+truthmods+standardmods+clustermods+("JetPtAssociation","jetiso",),
241 ptmin = 2000,
242 lock = True
243)
244
245# *********************************************************
246# Standard small R truth jet definitions
247# *********************************************************
248
249AntiKt4Truth = JetDefinition("AntiKt",0.4, cst.Truth,
250 ghostdefs = flavourghosts,
251 modifiers = ("Sort", "Width", "jetisoTruth", "numConstit")+truthmods,
252 lock = True,
253)
254
255# These jets may be used as input for the JetTruthLabelling, so they also need to be defined as constituents:
256registerAsInputConstit(AntiKt4Truth)
257
258AntiKt2Truth = JetDefinition("AntiKt",0.2, cst.Truth,
259 ghostdefs = flavourghosts,
260 modifiers = ("Sort", "Width", "numConstit")+truthmods,
261 lock = True,
262)
263
264AntiKt4TruthWZ = JetDefinition("AntiKt",0.4, cst.TruthWZ,
265 ghostdefs = flavourghosts,
266 modifiers = ("Sort", "Width", "jetisoTruth", "numConstit")+truthmods,
267 lock = True,
268)
269
270AntiKt4TruthDressedWZ = JetDefinition("AntiKt",0.4, cst.TruthDressedWZ,
271 ghostdefs = flavourghosts,
272 modifiers = ("Sort", "Width", "jetisoTruth", "numConstit")+truthmods,
273 lock = True,
274)
275
276# These jets are used as input for the JetPileupLabel modifier, so they also need to be defined as constituents:
277registerAsInputConstit(AntiKt4TruthDressedWZ)
278
279AntiKtVRTruthCharged = JetDefinition("AntiKt",0.4, cst.TruthCharged,
280 ghostdefs = flavourghosts,
281 modifiers = ("Sort", "numConstit")+truthmods,
282 VRMinR = 0.02,
283 VRMassSc = 30000,
284 lock = True
285)
286
287AntiKt4TruthGEN = JetDefinition("AntiKt",0.4, cst.TruthGEN,
288 ptmin = 5000,
289 ghostdefs = [],
290 modifiers = ("Sort",)+truthmods,
291 ghostarea = 0.,
292 lock = True,
293)
294AntiKt4TruthGENWZ = AntiKt4TruthGEN.clone(inputdef=cst.TruthGENWZ)
295
296AntiKt6TruthGEN = AntiKt4TruthGEN.clone(radius=0.6)
297AntiKt6TruthGENWZ = AntiKt4TruthGENWZ.clone(radius=0.6)
298
299
301 """Top-level function to schedule the smallR jets in standard reconstruction """
302 from JetRecConfig.JetRecConfig import JetRecCfg
303
304 standarSmallRList = [
305 AntiKt4EMPFlow,
306 AntiKt4LCTopo,
307 AntiKt4Truth,
308 ]
309
310 compacc = JetRecCfg( flags, standarSmallRList[0], )
311 for jetdef in standarSmallRList[1:]:
312 compacc.merge( JetRecCfg( flags, jetdef) )
313
314 return compacc
315