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

Functions

 JETMOD1KernelCfg (flags, name='JETMOD1Kernel', **kwargs)
 JETMOD1Cfg (flags)

Function Documentation

◆ JETMOD1Cfg()

JETMOD1Cfg ( flags)

Definition at line 180 of file JETMOD1.py.

180def JETMOD1Cfg(flags):
181
182 acc = ComponentAccumulator()
183
184 # Get the lists of triggers needed for trigger matching.
185 # This is needed at this scope (for the slimming) and further down in the config chain
186 # for actually configuring the matching, so we create it here and pass it down
187 # TODO: this should ideally be called higher up to avoid it being run multiple times in a train
188 from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
189 JETMOD1TriggerListsHelper = TriggerListsHelper(flags)
190
191 # Set the stream name - varies depending on whether the input is AOD or DAOD_PHYS
192 streamName = 'StreamDAOD_JETMOD1' if 'StreamAOD' in flags.Input.ProcessingTags else 'StreamD2AOD_JETMOD1'
193
194 # Common augmentations
195 acc.merge(JETMOD1KernelCfg(flags, name="JETMOD1Kernel", StreamName = streamName, TriggerListsHelper = JETMOD1TriggerListsHelper))
196
197 # ============================
198 # Define contents of the format
199 # =============================
200 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
201 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
202 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
203
204 JETMOD1SlimmingHelper = SlimmingHelper("JETMOD1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
205 JETMOD1SlimmingHelper.ExtraVariables = []
206 # Trigger content
207 JETMOD1SlimmingHelper.IncludeTriggerNavigation = False
208 JETMOD1SlimmingHelper.IncludeJetTriggerContent = False
209 JETMOD1SlimmingHelper.IncludeMuonTriggerContent = False
210 JETMOD1SlimmingHelper.IncludeEGammaTriggerContent = False
211 JETMOD1SlimmingHelper.IncludeTauTriggerContent = False
212 JETMOD1SlimmingHelper.IncludeEtMissTriggerContent = False
213 JETMOD1SlimmingHelper.IncludeBJetTriggerContent = False
214 JETMOD1SlimmingHelper.IncludeBPhysTriggerContent = False
215 JETMOD1SlimmingHelper.IncludeMinBiasTriggerContent = False
216
217 # Trigger matching
218 # Run 2
219 if flags.Trigger.EDMVersion == 2:
220 # Need to re-run matching so that new Analysis<X> containers are matched to triggers
221 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import TriggerMatchingCommonRun2Cfg
222 acc.merge(TriggerMatchingCommonRun2Cfg(flags,
223 name = "JETMOD1TrigMatchNoTau",
224 OutputContainerPrefix = "AnalysisTrigMatch_",
225 ChainNames = JETMOD1TriggerListsHelper.Run2TriggerNamesNoTau,
226 InputElectrons = "AnalysisElectrons",
227 InputPhotons = "AnalysisPhotons",
228 InputMuons = "AnalysisMuons",
229 InputTaus = "AnalysisTauJets"))
230 acc.merge(TriggerMatchingCommonRun2Cfg(flags,
231 name = "JETMOD1TrigMatchTau",
232 OutputContainerPrefix = "AnalysisTrigMatch_",
233 ChainNames = JETMOD1TriggerListsHelper.Run2TriggerNamesTau,
234 DRThreshold = 0.2,
235 InputElectrons = "AnalysisElectrons",
236 InputPhotons = "AnalysisPhotons",
237 InputMuons = "AnalysisMuons",
238 InputTaus = "AnalysisTauJets"))
239 # Now add the resulting decorations to the output
240 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
241 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = JETMOD1SlimmingHelper,
242 OutputContainerPrefix = "AnalysisTrigMatch_",
243 TriggerList = JETMOD1TriggerListsHelper.Run2TriggerNamesTau)
244 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = JETMOD1SlimmingHelper,
245 OutputContainerPrefix = "AnalysisTrigMatch_",
246 TriggerList = JETMOD1TriggerListsHelper.Run2TriggerNamesNoTau)
247
248 # Run 3, or Run 2 with navigation conversion
249 if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
250 # No need to run matching: just keep navigation so matching can be done by analysts
251 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
252 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(JETMOD1SlimmingHelper)
253
254 # Event content
255 JETMOD1SlimmingHelper.AppendToDictionary.update({
256 'TruthEvents':'xAOD::TruthEventContainer','TruthEventsAux':'xAOD::TruthEventAuxContainer',
257 'MET_Truth':'xAOD::MissingETContainer','MET_TruthAux':'xAOD::MissingETAuxContainer',
258 'TruthElectrons':'xAOD::TruthParticleContainer','TruthElectronsAux':'xAOD::TruthParticleAuxContainer',
259 'TruthMuons':'xAOD::TruthParticleContainer','TruthMuonsAux':'xAOD::TruthParticleAuxContainer',
260 'TruthPhotons':'xAOD::TruthParticleContainer','TruthPhotonsAux':'xAOD::TruthParticleAuxContainer',
261 'TruthTaus':'xAOD::TruthParticleContainer','TruthTausAux':'xAOD::TruthParticleAuxContainer',
262 'TruthNeutrinos':'xAOD::TruthParticleContainer','TruthNeutrinosAux':'xAOD::TruthParticleAuxContainer',
263 'TruthBSM':'xAOD::TruthParticleContainer','TruthBSMAux':'xAOD::TruthParticleAuxContainer',
264 'TruthBoson':'xAOD::TruthParticleContainer','TruthBosonAux':'xAOD::TruthParticleAuxContainer',
265 'TruthTop':'xAOD::TruthParticleContainer','TruthTopAux':'xAOD::TruthParticleAuxContainer',
266 'TruthForwardProtons':'xAOD::TruthParticleContainer','TruthForwardProtonsAux':'xAOD::TruthParticleAuxContainer',
267 'BornLeptons':'xAOD::TruthParticleContainer','BornLeptonsAux':'xAOD::TruthParticleAuxContainer',
268 'TruthBosonsWithDecayParticles':'xAOD::TruthParticleContainer','TruthBosonsWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
269 'TruthBosonsWithDecayVertices':'xAOD::TruthVertexContainer','TruthBosonsWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
270 'TruthBSMWithDecayParticles':'xAOD::TruthParticleContainer','TruthBSMWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
271 'TruthBSMWithDecayVertices':'xAOD::TruthVertexContainer','TruthBSMWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
272 'TruthPrimaryVertices':'xAOD::TruthVertexContainer','TruthPrimaryVerticesAux':'xAOD::TruthVertexAuxContainer',
273 'AnalysisElectrons':'xAOD::ElectronContainer', 'AnalysisElectronsAux':'xAOD::ElectronAuxContainer',
274 'AnalysisSiHitElectrons':'xAOD::ElectronContainer', 'AnalysisSiHitElectronsAux':'xAOD::ElectronAuxContainer',
275 'AnalysisMuons':'xAOD::MuonContainer', 'AnalysisMuonsAux':'xAOD::MuonAuxContainer',
276 'AnalysisJets':'xAOD::JetContainer','AnalysisJetsAux':'xAOD::AuxContainerBase',
277 'AnalysisPhotons':'xAOD::PhotonContainer', 'AnalysisPhotonsAux':'xAOD::PhotonAuxContainer',
278 'AnalysisTauJets':'xAOD::TauJetContainer', 'AnalysisTauJetsAux':'xAOD::TauJetAuxContainer',
279 'MET_Core_AnalysisMET':'xAOD::MissingETContainer', 'MET_Core_AnalysisMETAux':'xAOD::MissingETAuxContainer',
280 'METAssoc_AnalysisMET':'xAOD::MissingETAssociationMap', 'METAssoc_AnalysisMETAux':'xAOD::MissingETAuxAssociationMap',
281 'AnalysisLargeRJets':'xAOD::JetContainer','AnalysisLargeRJetsAux':'xAOD::AuxContainerBase'
282 })
283
284 JETMOD1SlimmingHelper.SmartCollections = [
285 'EventInfo',
286 'InDetTrackParticles',
287 'PrimaryVertices',
288 ]
289 JETMOD1SlimmingHelper.AllVariables = [
290 "CHSGNeutralParticleFlowObjects",
291 "CHSGChargedParticleFlowObjects",
292 ]
293
294 from DerivationFrameworkMuons.MuonsCommonConfig import MuonVariablesCfg
295
296 # add in extra values for Higgs
297 from DerivationFrameworkHiggs.HiggsPhysContent import setupHiggsSlimmingVariables
298 setupHiggsSlimmingVariables(flags, JETMOD1SlimmingHelper)
299
300 if flags.Input.isMC:
301 from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
302 addTruth3ContentToSlimmerTool(JETMOD1SlimmingHelper)
303 # This block is only needed if input is AOD, as it is already done for PHYS->JETMOD1
304 if 'StreamAOD' in flags.Input.ProcessingTags:
305 from DerivationFrameworkMCTruth.HFClassificationCommonConfig import HFClassificationCommonCfg
306 acc.merge(HFClassificationCommonCfg(flags))
307
308 # Save the extra variables which aren't included by other means
309 btag_variables = [f'{flags.BTagging.AK4TaggerName}_p{x}' for x in ['b', 'c', 'u', 'tau']]
310 JETMOD1SlimmingHelper.ExtraVariables += [
311 'AnalysisElectrons.trackParticleLinks.f1.pt.eta.phi.charge.author.DFCommonElectronsLHVeryLoose.DFCommonElectronsLHLoose.DFCommonElectronsLHLooseBL.DFCommonElectronsLHMedium.DFCommonElectronsLHTight.DFCommonElectronsLHVeryLooseIsEMValue.DFCommonElectronsLHLooseIsEMValue.DFCommonElectronsLHLooseBLIsEMValue.DFCommonElectronsLHMediumIsEMValue.DFCommonElectronsLHTightIsEMValue.DFCommonElectronsDNNLoose.DFCommonElectronsDNNMedium.DFCommonElectronsDNNTight.DFCommonElectronsDNNVeryLooseNoCF97.DFCommonElectronsDNNMediumNoCF.DFCommonElectronsDNNTightNoCF.DFCommonElectronsECIDS.DFCommonElectronsECIDSResult.topoetcone20.topoetcone20ptCorrection.neflowisol20.ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt500.ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt500.ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000.topoetcone20_CloseByCorr.ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt1000_CloseByCorr.ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000_CloseByCorr.caloClusterLinks.ambiguityLink.TruthLink.truthOrigin.truthType.truthPdgId.firstEgMotherTruthType.firstEgMotherTruthOrigin.firstEgMotherTruthParticleLink.firstEgMotherPdgId.ambiguityType.OQ.Eadded_Lr2.Eadded_Lr3.E_mva_only.DFCommonAddAmbiguity',
312 'AnalysisSiHitElectrons.pt.eta.phi.charge.author.topoetcone20_CloseByCorr.DFCommonElectronsLHVeryLoose.ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000_CloseByCorr.OQ.truthOrigin.truthType.firstEgMotherTruthType.firstEgMotherTruthOrigin.z0stheta.d0Normalized.nInnerExpPix.clEta.clPhi.E_mva_only',
313 'AnalysisPhotons.f1.pt.eta.phi.author.OQ.DFCommonPhotonsIsEMLoose.DFCommonPhotonsIsEMMedium.DFCommonPhotonsIsEMTight.DFCommonPhotonsIsEMTightIsEMValue.DFCommonPhotonsCleaning.DFCommonPhotonsCleaningNoTime.ptcone20.topoetcone20.topoetcone40.topoetcone20ptCorrection.topoetcone40ptCorrection.topoetcone20_CloseByCorr.topoetcone40_CloseByCorr.ptcone20_CloseByCorr.caloClusterLinks.vertexLinks.ambiguityLink.TruthLink.truthOrigin.truthType.Eadded_Lr2.Eadded_Lr3.E_mva_only',
314 'GSFTrackParticles.chiSquared.phi.d0.theta.qOverP.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag.z0.vz.charge.vertexLink.numberOfPixelHits.numberOfSCTHits.expectInnermostPixelLayerHit.expectNextToInnermostPixelLayerHit.numberOfInnermostPixelLayerHits.numberOfNextToInnermostPixelLayerHits.originalTrackParticle',
315 'GSFConversionVertices.trackParticleLinks.x.y.z.px.py.pz.pt1.pt2.neutralParticleLinks.minRfirstHit',
316 'egammaClusters.calE.calEta.calPhi.calM.e_sampl.eta_sampl.ETACALOFRAME.PHICALOFRAME.ETA2CALOFRAME.PHI2CALOFRAME.constituentClusterLinks.samplingPattern',
317 "AnalysisMuons.{var_string}".format(var_string = ".".join(MuonVariablesCfg(flags))),
318 'CombinedMuonTrackParticles.qOverP.d0.z0.vz.phi.theta.truthOrigin.truthType.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag.numberOfPixelDeadSensors.numberOfPixelHits.numberOfPixelHoles.numberOfSCTDeadSensors.numberOfSCTHits.numberOfSCTHoles.numberOfTRTHits.numberOfTRTOutliers.chiSquared.numberDoF',
319 'ExtrapolatedMuonTrackParticles.d0.z0.vz.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag.truthOrigin.truthType.qOverP.theta.phi',
320 'MuonSpectrometerTrackParticles.phi.d0.z0.vz.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag.vertexLink.theta.qOverP',
321 'InDetForwardTrackParticles.vz.truthType.truthOrigin.numberDoF.numberOfTRTHits.numberOfSCTHoles.theta.numberOfTRTOutliers.numberOfPrecisionLayers.numberOfSCTDeadSensors.numberOfPixelHoles.numberOfSCTHits.numberOfPrecisionHoleLayers.numberOfPixelDeadSensors.phi.numberOfPixelHits.z0.d0.qOverP.chiSquared.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag',
322 'AnalysisTauJets.pt.eta.phi.m.ptFinalCalib.etaFinalCalib.ptTauEnergyScale.etaTauEnergyScale.charge.isTauFlags.PanTau_DecayMode.NNDecayMode.RNNJetScoreSigTrans.GNTauScoreSigTrans_v0prune.GNTauVL_v0prune.GNTauL_v0prune.GNTauM_v0prune.GNTauT_v0prune.RNNEleScoreSigTrans_v1.EleRNNLoose_v1.EleRNNMedium_v1.EleRNNTight_v1.trackWidth.passTATTauMuonOLR.tauTrackLinks.vertexLink.truthParticleLink.truthJetLink.IsTruthMatched.truthOrigin.truthType',
323 'AnalysisJets.pt.eta.phi.m.constituentLinks.constituentWeights.ConstituentScale.JetConstitScaleMomentum_pt.JetConstitScaleMomentum_eta.JetConstitScaleMomentum_phi.JetConstitScaleMomentum_m.NumTrkPt500.SumPtTrkPt500.DetectorEta.JVFCorr.NNJvtPass.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.PartonTruthLabelID.HadronConeExclExtendedTruthLabelID.HadronConeExclTruthLabelID.TrueFlavor.DFCommonJets_jetClean_LooseBad.DFCommonJets_jetClean_TightBad.Timing.btagging.btaggingLink.GhostTrack.DFCommonJets_fJvt.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.PSFrac.JetAccessorMap.EMFrac.Width.ActiveArea4vec_pt.ActiveArea4vec_eta.ActiveArea4vec_m.ActiveArea4vec_phi.EnergyPerSampling.SumPtChargedPFOPt500.isJvtHS.{btag_var_string}'.format(btag_var_string = ".".join(btag_variables)),
324 'TruthPrimaryVertices.t.x.y.z',
325 'MET_Core_AnalysisMET.name.mpx.mpy.sumet.source',
326 'METAssoc_AnalysisMET.',
327 'InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.numberOfTRTHits.numberOfTRTOutliers',
328 'EventInfo.RandomRunNumber.PileupWeight_NOSYS.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ.HF_Classification.HF_SimpleClassification.{GRL_Deco_names}'.format(GRL_Deco_names='.'.join(str(key) for key in (getGoodRunsLists()).keys())),
329 'Kt4EMPFlowEventShape.Density',
330 'Kt4EMPFlowNeutEventShape.Density',
331 'TauTracks.flagSet.trackLinks',
332 'AnalysisLargeRJets.pt.eta.phi.m.JetConstitScaleMomentum_pt.JetConstitScaleMomentum_eta.JetConstitScaleMomentum_phi.JetConstitScaleMomentum_m.DetectorEta.TrackSumMass.TrackSumPt.constituentLinks.ECF1.ECF2.ECF3.Tau1_wta.Tau2_wta.Tau3_wta.Split12.Split23.Qw.D2.C2.R10TruthLabel_R22v1.R10TruthLabel_R21Precision_2022v1.GhostBHadronsFinalCount.GhostCHadronsFinalCount.Parent.GN2Xv01_phbb.GN2Xv01_phcc.GN2Xv01_ptop.GN2Xv01_pqcd',
333 ]
334
335 # Output stream
336 JETMOD1ItemList = JETMOD1SlimmingHelper.GetItemList()
337
338 formatString = 'D2AOD_JETMOD1' if 'StreamDAOD_PHYS' in flags.Input.ProcessingTags else 'DAOD_JETMOD1'
339 acc.merge(OutputStreamCfg(flags, formatString, ItemList=JETMOD1ItemList, AcceptAlgs=["JETMOD1Kernel"]))
340 acc.merge(SetupMetaDataForStreamCfg(flags, formatString, AcceptAlgs=["JETMOD1Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))
341
342 return acc

◆ JETMOD1KernelCfg()

JETMOD1KernelCfg ( flags,
name = 'JETMOD1Kernel',
** kwargs )
Configure the derivation framework driving algorithm (kernel) for JETMOD1

Definition at line 17 of file JETMOD1.py.

17def JETMOD1KernelCfg(flags, name='JETMOD1Kernel', **kwargs):
18 """Configure the derivation framework driving algorithm (kernel) for JETMOD1"""
19 acc = ComponentAccumulator()
20
21 # This block does the common physics augmentation which isn't needed (or possible) for PHYS->JETMOD1
22 # Ensure block only runs for AOD input
23 if 'StreamAOD' in flags.Input.ProcessingTags:
24 # Common augmentations
25 from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
26 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs['TriggerListsHelper']))
27
28 # Thinning tools
29 # These are set up in PhysCommonThinningConfig. Only thing needed here the list of tools to schedule
30 # This differs depending on whether the input is AOD or PHYS
31 # These are needed whatever the input since they are not applied in PHYS
32 thinningToolsArgs = {
33 'ElectronCaloClusterThinningToolName' : "JETMOD1ElectronCaloClusterThinningTool",
34 'PhotonCaloClusterThinningToolName' : "JETMOD1PhotonCaloClusterThinningTool",
35 'ElectronGSFTPThinningToolName' : "JETMOD1ElectronGSFTPThinningTool",
36 'PhotonGSFTPThinningToolName' : "JETMOD1PhotonGSFTPThinningTool"
37 }
38 # whereas these are only needed if the input is AOD since they are applied already in PHYS
39 if 'StreamAOD' in flags.Input.ProcessingTags:
40 thinningToolsArgs.update({
41 'MuonTPThinningToolName' : "JETMOD1MuonTPThinningTool",
42 'TauJetThinningToolName' : "JETMOD1TauJetThinningTool",
43 'TauJets_MuonRMThinningToolName' : "JETMOD1TauJets_MuonRMThinningTool",
44 'DiTauTPThinningToolName' : "JETMOD1DiTauTPThinningTool",
45 'DiTauLowPtThinningToolName' : "JETMOD1DiTauLowPtThinningTool",
46 'DiTauLowPtTPThinningToolName' : "JETMOD1DiTauLowPtTPThinningTool",
47 })
48 # Configure the thinning tools
49 from DerivationFrameworkPhys.PhysCommonThinningConfig import PhysCommonThinningCfg
50 acc.merge(PhysCommonThinningCfg(flags, StreamName = kwargs['StreamName'], **thinningToolsArgs))
51 # Get them from the CA so they can be added to the kernel
52 thinningTools = []
53 for key in thinningToolsArgs:
54 thinningTools.append(acc.getPublicTool(thinningToolsArgs[key]))
55
56
58 from DerivationFrameworkInDet.InDetToolsConfig import (
59 EgammaTrackParticleThinningCfg,
60 JetConstituentThinningCfg,
61 JetTrackParticleThinningCfg,
62 )
63 # Track quality thinning — mirrors TDD r22loose-track-cuts
64 # (TDD still applies all cuts at dump time, so this is purely a DAOD size optimisation)
65 stream = kwargs['StreamName']
66 track_quality_sel = (
67 "InDetTrackParticles.pt > 500"
68 " && abs(InDetTrackParticles.eta) < 2.5"
69 " && abs(InDetTrackParticles.d0) < 5.0*mm"
70 " && (InDetTrackParticles.numberOfPixelHits + InDetTrackParticles.numberOfPixelDeadSensors"
71 " + InDetTrackParticles.numberOfSCTHits + InDetTrackParticles.numberOfSCTDeadSensors) >= 8"
72 " && (InDetTrackParticles.numberOfPixelHoles + InDetTrackParticles.numberOfSCTHoles) <= 2"
73 " && InDetTrackParticles.numberOfPixelHoles <= 1"
74 )
75
76 thinningTools.append(acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
77 flags,
78 name="JETMOD1JetTPThinningTool",
79 StreamName=stream,
80 JetKey='AntiKt4EMPFlowJets',
81 InDetTrackParticlesKey="InDetTrackParticles",
82 TrackSelectionString=track_quality_sel,
83 )))
84 thinningTools.append(acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
85 flags,
86 name="JETMOD1LargeRJetTPThinningTool",
87 StreamName=stream,
88 JetKey='AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets',
89 InDetTrackParticlesKey="InDetTrackParticles",
90 TrackSelectionString=track_quality_sel,
91 )))
92
93 thinningTools.append(acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
94 flags,
95 name="JETMOD1ElectronTPThinningTool",
96 StreamName=stream,
97 SGKey="Electrons",
98 InDetTrackParticlesKey="InDetTrackParticles",
99 )))
100
101 # Add PFlow Constituents (from FTAG1LITE)
102 thinningTools.append(acc.getPrimaryAndMerge(JetConstituentThinningCfg(
103 flags,
104 name="JETMOD1JetConstituentThinningTool",
105 StreamName=stream,
106 JetKey='AntiKt4EMPFlowJets',
107 JetConstituentName="CHSG",
108 GlobalConstituentName="Global",
109 OtherObjectsName="CaloCalTopoClusters",
110 )))
111 # thinningTools.append(acc.getPrimaryAndMerge(JetConstituentThinningCfg(
112 # flags,
113 # name="JETMOD1LargeRJetConstituentThinningTool",
114 # StreamName=stream,
115 # JetKey='AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets',
116 # JetConstituentName="CHSG",
117 # GlobalConstituentName="Global",
118 # OtherObjectsName="CaloCalTopoClusters",
119 # )))
120
121
122
123 # Higgs augmentations - 4l vertex, Higgs STXS truth variables, CloseBy isolation correction (for all analyses)
124 # For PhysLite, must run CloseBy BEFORE running analysis sequences to be able to 'pass through' to the shallow copy the added isolation values
125 # Here we only run the augmentation algs
126 # These do not need to be run if PhysLite is run from Phys (i.e. not from 'StreamAOD')
127 if 'StreamAOD' in flags.Input.ProcessingTags:
128 # running from AOD
129
130 from DerivationFrameworkHiggs.HiggsPhysContent import HiggsAugmentationAlgsCfg
131 acc.merge(HiggsAugmentationAlgsCfg(flags))
132
133
134 from IsolationSelection.IsolationSelectionConfig import IsoCloseByAlgsCfg
135 acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite = True))
136
137 #==============================================================================
138 # Analysis-level variables
139 #==============================================================================
140
141 # Needed in principle to support MET association when running PHYS->JETMOD1,
142 # but since this doesn't work for PHYS->JETMOD1 anyway, commenting for now
143 #if 'StreamDAOD_PHYS' in flags.Input.ProcessingTags
144 # from AtlasGeoModel.GeoModelConfig import GeoModelCfg
145 # acc.merge(GeoModelCfg(flags))
146
147 # add CP algorithms to job
148 acc.merge(CPAlgorithmsCfg(flags))
149
150 # Build MET from our analysis objects
151 if 'StreamAOD' in flags.Input.ProcessingTags:
152 from METReconstruction.METAssocCfg import AssocConfig, METAssocConfig
153 from METReconstruction.METAssociatorCfg import getAssocCA
154 associators = [AssocConfig('PFlowJet', 'AnalysisJets'),
155 AssocConfig('Muon', 'AnalysisMuons'),
156 AssocConfig('Ele', 'AnalysisElectrons'),
157 AssocConfig('Gamma', 'AnalysisPhotons'),
158 AssocConfig('Tau', 'AnalysisTauJets'),
159 AssocConfig('Soft', '')]
160 JETMOD1_cfg = METAssocConfig('AnalysisMET',
161 flags,
162 associators,
163 doPFlow=True,
164 usePFOLinks=True)
165 components_JETMOD1_cfg = getAssocCA(JETMOD1_cfg,METName='AnalysisMET')
166 acc.merge(components_JETMOD1_cfg)
167 elif 'StreamDAOD_PHYS' in flags.Input.ProcessingTags:
168 from DerivationFrameworkJetEtMiss.METCommonConfig import METRemappingCfg
169
170 METRemap_cfg = METRemappingCfg(flags)
171 acc.merge(METRemap_cfg)
172
173 # The derivation kernel itself
174 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
175 acc.addEventAlgo(DerivationKernel(name, ThinningTools = thinningTools))
176
177 return acc
178
179