ATLAS Offline Software
Loading...
Searching...
No Matches
python.JETM4 Namespace Reference

Functions

 JETM4SkimmingToolCfg (flags)
 JETM4KernelCfg (flags, name='JETM4Kernel', **kwargs)
 JETM4ExtraContentCfg (flags)
 JETM4Cfg (flags)

Function Documentation

◆ JETM4Cfg()

python.JETM4.JETM4Cfg ( flags)

Definition at line 144 of file JETM4.py.

144def JETM4Cfg(flags):
145
146 acc = ComponentAccumulator()
147
148 # Get the lists of triggers needed for trigger matching.
149 # This is needed at this scope (for the slimming) and further down in the config chain
150 # for actually configuring the matching, so we create it here and pass it down
151 # TODO: this should ideally be called higher up to avoid it being run multiple times in a train
152 from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
153 JETM4TriggerListsHelper = TriggerListsHelper(flags)
154
155 # Skimming, thinning, augmentation, extra content
156 acc.merge(JETM4KernelCfg(flags, name="JETM4Kernel", StreamName = 'StreamDAOD_JETM4', TriggerListsHelper = JETM4TriggerListsHelper))
157
158 # ============================
159 # Define contents of the format
160 # =============================
161 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
162 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
163 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
164
165 JETM4SlimmingHelper = SlimmingHelper("JETM4SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
166
167 JETM4SlimmingHelper.SmartCollections = ["EventInfo","InDetTrackParticles", "PrimaryVertices",
168 "Electrons", "Photons", "Muons", "TauJets",
169 "MET_Baseline_AntiKt4EMTopo","MET_Baseline_AntiKt4EMPFlow",
170 "AntiKt4EMPFlowJets","AntiKt4EMTopoJets","AntiKt4UFOCSSKLowPtJets",
171 "AntiKt10UFOCSSKJets",
172 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"]
173
174 JETM4SlimmingHelper.AllVariables = ["CHSGChargedParticleFlowObjects", "CHSGNeutralParticleFlowObjects",
175 "MuonSegments",
176 "Kt4EMTopoOriginEventShape","Kt4EMPFlowEventShape","Kt4EMPFlowPUSBEventShape","Kt4EMPFlowNeutEventShape"]
177
178 JETM4SlimmingHelper.ExtraVariables = ["TauJets.truthJetLink.truthParticleLink.IsTruthMatched"]
179
180 # Low-level variables
181 from DerivationFrameworkJetEtMiss.CommonJETMXContent import ClusterVariables, FlowElementVariables
182 JETM4SlimmingHelper.ExtraVariables += [".".join(["CaloCalTopoClusters"] + ClusterVariables)]
183 JETM4SlimmingHelper.ExtraVariables += [".".join(["GlobalChargedParticleFlowObjects"] + FlowElementVariables)]
184 JETM4SlimmingHelper.ExtraVariables += [".".join(["GlobalNeutralParticleFlowObjects"] + FlowElementVariables)]
185
186 # Large-Radius jet regression extra content
187 extraListReg = []
188 modelName = "bJR10v00"
189 for score in ["mass", "pt"]:
190 extraListReg.append(f"{modelName}_{score}")
191 JETM4SlimmingHelper.ExtraVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets." + ".".join(extraListReg)]
192
193 # Truth containers
194 if flags.Input.isMC:
195
196 from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
197 addTruth3ContentToSlimmerTool(JETM4SlimmingHelper)
198
199 JETM4SlimmingHelper.AppendToDictionary.update({'TruthParticles': 'xAOD::TruthParticleContainer',
200 'TruthParticlesAux': 'xAOD::TruthParticleAuxContainer'})
201
202 JETM4SlimmingHelper.AllVariables += ["TruthParticles", "TruthEvents", "TruthVertices",
203 "MuonTruthParticles", "egammaTruthParticles",]
204 JETM4SlimmingHelper.SmartCollections += ["AntiKt4TruthJets","AntiKt10TruthJets",
205 "AntiKt10TruthSoftDropBeta100Zcut10Jets"]
206
207 # Trigger content
208 JETM4SlimmingHelper.IncludeTriggerNavigation = False
209 JETM4SlimmingHelper.IncludeJetTriggerContent = False
210 JETM4SlimmingHelper.IncludeMuonTriggerContent = False
211 JETM4SlimmingHelper.IncludeEGammaTriggerContent = True
212 JETM4SlimmingHelper.IncludeTauTriggerContent = False
213 JETM4SlimmingHelper.IncludeEtMissTriggerContent = False
214 JETM4SlimmingHelper.IncludeBJetTriggerContent = False
215 JETM4SlimmingHelper.IncludeBPhysTriggerContent = False
216 JETM4SlimmingHelper.IncludeMinBiasTriggerContent = False
217
218 # Trigger matching
219 # Run 2
220 if flags.Trigger.EDMVersion == 2:
221 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
222 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = JETM4SlimmingHelper,
223 OutputContainerPrefix = "TrigMatch_",
224 TriggerList = JETM4TriggerListsHelper.Run2TriggerNamesTau)
225 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = JETM4SlimmingHelper,
226 OutputContainerPrefix = "TrigMatch_",
227 TriggerList = JETM4TriggerListsHelper.Run2TriggerNamesNoTau)
228 # Run 3, or Run 2 with navigation conversion
229 if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
230 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
231 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(JETM4SlimmingHelper)
232
233 # Output stream
234 JETM4ItemList = JETM4SlimmingHelper.GetItemList()
235 acc.merge(OutputStreamCfg(flags, "DAOD_JETM4", ItemList=JETM4ItemList, AcceptAlgs=["JETM4Kernel"]))
236 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_JETM4", AcceptAlgs=["JETM4Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
237
238 return acc
239

◆ JETM4ExtraContentCfg()

python.JETM4.JETM4ExtraContentCfg ( flags)

Definition at line 124 of file JETM4.py.

124def JETM4ExtraContentCfg(flags):
125
126 acc = ComponentAccumulator()
127
128 # PFlow augmentation tool
129 from DerivationFrameworkJetEtMiss.PFlowCommonConfig import PFlowCommonCfg
130 acc.merge(PFlowCommonCfg(flags))
131
132 from JetRecConfig.JetRecConfig import JetRecCfg
133 from JetRecConfig.StandardSmallRJets import AntiKt4UFOCSSKLowPt
134 AntiKt4UFOCSSKLowPt_JETM4 = AntiKt4UFOCSSKLowPt.clone(
135 modifiers = AntiKt4UFOCSSKLowPt.modifiers+("NNJVT",)
136 )
137 jetList = [AntiKt4UFOCSSKLowPt_JETM4]
138 for jd in jetList:
139 acc.merge(JetRecCfg(flags,jd))
140
141 return acc
142
143

◆ JETM4KernelCfg()

python.JETM4.JETM4KernelCfg ( flags,
name = 'JETM4Kernel',
** kwargs )
Configure the derivation framework driving algorithm (kernel) for JETM4

Definition at line 25 of file JETM4.py.

25def JETM4KernelCfg(flags, name='JETM4Kernel', **kwargs):
26 """Configure the derivation framework driving algorithm (kernel) for JETM4"""
27 acc = ComponentAccumulator()
28
29 # Skimming
30 if not flags.Input.isMC:
31 skimmingTool = acc.getPrimaryAndMerge(JETM4SkimmingToolCfg(flags))
32
33 # Common augmentations
34 from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
35 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs['TriggerListsHelper']))
36
37 # Thinning tools...
38 from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg, MuonTrackParticleThinningCfg, EgammaTrackParticleThinningCfg, TauTrackParticleThinningCfg
39
40 # https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/DaodRecommendations
41 JETM4_thinning_expression = "( abs(InDetTrackParticles.d0) < 5*mm ) && ( abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5*mm )"
42 JETM4TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
43 flags,
44 name = "JETM4TrackParticleThinningTool",
45 StreamName = kwargs['StreamName'],
46 SelectionString = JETM4_thinning_expression,
47 InDetTrackParticlesKey = "InDetTrackParticles"))
48
49 # Include inner detector tracks associated with muons
50 JETM4MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
51 flags,
52 name = "JETM4MuonTPThinningTool",
53 StreamName = kwargs['StreamName'],
54 MuonKey = "Muons",
55 InDetTrackParticlesKey = "InDetTrackParticles"))
56
57 # Include inner detector tracks associated with electonrs
58 JETM4ElectronTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
59 flags,
60 name = "JETM4ElectronTPThinningTool",
61 StreamName = kwargs['StreamName'],
62 SGKey = "Electrons",
63 InDetTrackParticlesKey = "InDetTrackParticles"))
64
65 # Include inner detector tracks associated with photons
66 JETM4PhotonTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
67 flags,
68 name = "JETM4PhotonTPThinningTool",
69 StreamName = kwargs['StreamName'],
70 SGKey = "Photons",
71 InDetTrackParticlesKey = "InDetTrackParticles",
72 GSFConversionVerticesKey = "GSFConversionVertices"))
73
74 # Include inner detector tracks associated with taus
75 JETM4TauTPThinningTool = acc.getPrimaryAndMerge(TauTrackParticleThinningCfg(
76 flags,
77 name = "JETM4TauTPThinningTool",
78 StreamName = kwargs['StreamName'],
79 TauKey = "TauJets",
80 InDetTrackParticlesKey = "InDetTrackParticles",
81 DoTauTracksThinning = True,
82 TauTracksKey = "TauTracks"))
83
84
85 thinningTools = [JETM4TrackParticleThinningTool,
86 JETM4MuonTPThinningTool,
87 JETM4ElectronTPThinningTool,
88 JETM4PhotonTPThinningTool,
89 JETM4TauTPThinningTool]
90
91 if flags.Input.isMC:
92 truth_cond_WZH = "((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))" # W, Z and Higgs
93 truth_cond_Lepton = "((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16) && !(TruthParticles.isSimulationParticle))" # Leptons
94 truth_cond_Quark = "((abs(TruthParticles.pdgId) <= 5 && (TruthParticles.pt > 10000.)) || (abs(TruthParticles.pdgId) == 6))" # Quarks
95 truth_cond_Gluon = "((abs(TruthParticles.pdgId) == 21) && (TruthParticles.pt > 10000.))" # Gluons
96 truth_cond_Photon = "((abs(TruthParticles.pdgId) == 22) && (TruthParticles.pt > 10000.) && !(TruthParticles.isSimulationParticle))" # Photon
97
98 truth_expression = '('+truth_cond_WZH+' || '+truth_cond_Lepton +' || '+truth_cond_Quark+'||'+truth_cond_Gluon+' || '+truth_cond_Photon+')'
99
100 preserveAllDescendants = False
101
102 JETM4TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning ( name = "JETM4TruthThinningTool",
103 StreamName = kwargs['StreamName'],
104 ParticleSelectionString = truth_expression,
105 PreserveDescendants = preserveAllDescendants,
106 PreserveGeneratorDescendants = not preserveAllDescendants,
107 PreserveAncestors = True)
108
109 acc.addPublicTool(JETM4TruthThinningTool)
110 thinningTools.append(JETM4TruthThinningTool)
111
112 # Finally the kernel itself
113 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
114 acc.addEventAlgo(DerivationKernel(name,
115 ThinningTools = thinningTools,
116 SkimmingTools = [skimmingTool] if not flags.Input.isMC else []))
117
118 # Extra jet content:
119 acc.merge(JETM4ExtraContentCfg(flags))
120
121 return acc
122
123

◆ JETM4SkimmingToolCfg()

python.JETM4.JETM4SkimmingToolCfg ( flags)
Configure the skimming tool

Definition at line 11 of file JETM4.py.

11def JETM4SkimmingToolCfg(flags):
12 """Configure the skimming tool"""
13 acc = ComponentAccumulator()
14
15 from DerivationFrameworkJetEtMiss import TriggerLists
16 triggerlist = TriggerLists.single_photon_Trig(flags)
17
18 JETM4SkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(name = "JETM4SkimmingTool", TriggerListOR = triggerlist)
19 acc.addPublicTool(JETM4SkimmingTool, primary=True)
20
21 return(acc)
22
23
24# Main algorithm config