12 """Configure the skimming tool"""
13 acc = ComponentAccumulator()
15 from DerivationFrameworkJetEtMiss
import TriggerLists
16 electronTriggers = TriggerLists.single_el_Trig(flags)
17 muonTriggers = TriggerLists.single_mu_Trig(flags)
19 addRun3ElectronTriggers = [
"HLT_e17_lhvloose_L1EM15VHI",
"HLT_e20_lhvloose_L1EM15VH",
"HLT_e250_etcut_L1EM22VHI",
20 "HLT_e26_lhtight_ivarloose_L1EM22VHI",
"HLT_e26_lhtight_ivarloose_L1eEM26M",
21 "HLT_e60_lhmedium_L1EM22VHI",
"HLT_e60_lhmedium_L1eEM26M",
22 "HLT_e140_lhloose_L1EM22VHI",
"HLT_e140_lhloose_L1eEM26M",
23 "HLT_e300_etcut_L1EM22VHI",
"HLT_e300_etcut_L1eEM26M",
24 "HLT_e140_lhloose_noringer_L1EM22VHI",
"HLT_e140_lhloose_noringer_L1eEM26M"]
26 addRund3MuonTriggers = [
"HLT_mu24_ivarmedium_L1MU14FCH",
"HLT_mu50_L1MU14FCH",
"HLT_mu60_0eta105_msonly_L1MU14FCH",
"HLT_mu60_L1MU14FCH",
"HLT_mu80_msonly_3layersEC_L1MU14FCH"]
28 electronTriggers = electronTriggers+addRun3ElectronTriggers
29 muonTriggers = muonTriggers+addRund3MuonTriggers
31 elofflinesel =
'(count((Electrons.pt > 20*GeV) && (Electrons.DFCommonElectronsLHMedium)) >= 2)'
32 muofflinesel =
'(count((Muons.pt > 20*GeV) && (Muons.DFCommonMuonPassPreselection)) >= 2)'
36 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
37 xAODStringSkimmingToolCfg)
38 JETM3OfflineSkimmingTool_ele = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
39 flags, name =
"JETM3OfflineSkimmingTool_ele",
40 expression = elofflinesel, TrigDecisionTool=
""))
41 JETM3OfflineSkimmingTool_mu = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
42 flags, name =
"JETM3OfflineSkimmingTool_mu",
43 expression = muofflinesel, TrigDecisionTool=
""))
45 filterList = [JETM3OfflineSkimmingTool_ele, JETM3OfflineSkimmingTool_mu]
47 if not flags.Input.isMC:
49 JETM3TriggerSkimmingTool_ele = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"JETM3TriggerSkimmingTool_ele", TriggerListOR = electronTriggers)
50 acc.addPublicTool(JETM3TriggerSkimmingTool_ele)
51 JETM3TriggerSkimmingTool_mu = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"JETM3TriggerSkimmingTool_mu", TriggerListOR = muonTriggers)
52 acc.addPublicTool(JETM3TriggerSkimmingTool_mu)
54 JETM3SkimmingTool_ele = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM3SkimmingTool_ele", FilterList=[JETM3OfflineSkimmingTool_ele, JETM3TriggerSkimmingTool_ele] )
55 JETM3SkimmingTool_mu = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM3SkimmingTool_mu", FilterList=[JETM3OfflineSkimmingTool_mu, JETM3TriggerSkimmingTool_mu] )
56 acc.addPublicTool(JETM3SkimmingTool_ele)
57 acc.addPublicTool(JETM3SkimmingTool_mu)
59 filterList = [JETM3SkimmingTool_ele, JETM3SkimmingTool_mu]
62 JETM3SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
63 name=
"JETM3SkimmingTool", FilterList=filterList)
64 acc.addPublicTool(JETM3SkimmingTool, primary =
True)
71 """Configure the derivation framework driving algorithm (kernel) for JETM3"""
72 acc = ComponentAccumulator()
78 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
79 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
82 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg, MuonTrackParticleThinningCfg, EgammaTrackParticleThinningCfg, TauTrackParticleThinningCfg
85 JETM3_thinning_expression =
"( abs(InDetTrackParticles.d0) < 5*mm ) && ( abs(InDetTrackParticles.DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5*mm )"
86 JETM3TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
88 name =
"JETM3TrackParticleThinningTool",
89 StreamName = kwargs[
'StreamName'],
90 SelectionString = JETM3_thinning_expression,
91 InDetTrackParticlesKey =
"InDetTrackParticles"))
94 JETM3MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
96 name =
"JETM3MuonTPThinningTool",
97 StreamName = kwargs[
'StreamName'],
99 InDetTrackParticlesKey =
"InDetTrackParticles"))
102 JETM3ElectronTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
104 name =
"JETM3ElectronTPThinningTool",
105 StreamName = kwargs[
'StreamName'],
107 InDetTrackParticlesKey =
"InDetTrackParticles"))
110 JETM3PhotonTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
112 name =
"JETM3PhotonTPThinningTool",
113 StreamName = kwargs[
'StreamName'],
115 InDetTrackParticlesKey =
"InDetTrackParticles",
116 GSFConversionVerticesKey =
"GSFConversionVertices"))
119 JETM3TauTPThinningTool = acc.getPrimaryAndMerge(TauTrackParticleThinningCfg(
121 name =
"JETM3TauTPThinningTool",
122 StreamName = kwargs[
'StreamName'],
124 InDetTrackParticlesKey =
"InDetTrackParticles",
125 DoTauTracksThinning =
True,
126 TauTracksKey =
"TauTracks"))
129 thinningTools = [JETM3TrackParticleThinningTool,
130 JETM3MuonTPThinningTool,
131 JETM3ElectronTPThinningTool,
132 JETM3PhotonTPThinningTool,
133 JETM3TauTPThinningTool]
136 truth_cond_WZH =
"(TruthParticles.isW || TruthParticles.isZ || TruthParticles.isHiggs)"
137 truth_cond_Lepton =
"((TruthParticles.isLepton) && !(TruthParticles.isSimulationParticle))"
138 truth_cond_QuarkGluon =
"((TruthParticles.isParton) && (TruthParticles.pt > 10000.)) || (TruthParticles.isTop)"
139 truth_cond_Photon =
"((TruthParticles.isPhoton) && (TruthParticles.pt > 10000.) && !(TruthParticles.isSimulationParticle))"
141 truth_expression =
'('+truth_cond_WZH+
' || '+truth_cond_Lepton +
' || '+truth_cond_QuarkGluon+
' || '+truth_cond_Photon+
')'
143 preserveAllDescendants =
False
145 JETM3TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning ( name =
"JETM3TruthThinningTool",
146 StreamName = kwargs[
'StreamName'],
147 ParticleSelectionString = truth_expression,
148 PreserveDescendants = preserveAllDescendants,
149 PreserveGeneratorDescendants =
not preserveAllDescendants,
150 PreserveAncestors =
True)
152 acc.addPublicTool(JETM3TruthThinningTool)
153 thinningTools.append(JETM3TruthThinningTool)
156 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
157 acc.addEventAlgo(DerivationKernel(name,
158 ThinningTools = thinningTools,
159 SkimmingTools = [skimmingTool]))
170 acc = ComponentAccumulator()
172 from JetRecConfig.JetRecConfig
import JetRecCfg, getModifier
173 from JetRecConfig.StandardJetMods
import stdJetModifiers
174 from JetRecConfig.StandardSmallRJets
import AntiKt4EMPFlow, AntiKt4EMPFlowLowPt, AntiKt4EMTopoLowPt, AntiKt4UFOCSSKLowPt
179 bJVTTool = getModifier(AntiKt4EMPFlow, stdJetModifiers[
'bJVT'], stdJetModifiers[
'bJVT'].modspec, flags=flags)
180 acc.addEventAlgo(CompFactory.JetDecorationAlg(name=
'bJVTAlg',
181 JetContainer=
'AntiKt4EMPFlowJets',
182 Decorators=[bJVTTool]))
187 AntiKt4UFOCSSKLowPt_JETM3 = AntiKt4UFOCSSKLowPt.clone(
188 modifiers = AntiKt4UFOCSSKLowPt.modifiers+(
"NNJVT",)
190 jetList = [AntiKt4EMPFlowLowPt, AntiKt4EMTopoLowPt, AntiKt4UFOCSSKLowPt_JETM3]
194 acc.merge(JetRecCfg(flags,jd))
198 from DerivationFrameworkJetEtMiss.PFlowCommonConfig
import PFlowCommonCfg
199 acc.merge(PFlowCommonCfg(flags))
207 if flags.Trigger.EDMVersion == 2:
208 triggerNames = [
"JetContainer_a4tcemsubjesFS",
"JetContainer_a4tcemsubjesISFS",
"JetContainer_a10tclcwsubjesFS",
"JetContainer_GSCJet"]
210 for trigger
in triggerNames:
211 wrapperName = trigger+
'AuxWrapper'
212 auxContainerName =
'HLT_xAOD__'+trigger+
'Aux'
214 acc.addEventAlgo(CompFactory.xAODMaker.AuxStoreWrapper( wrapperName, SGKeys = [ auxContainerName+
"." ] ))
222 acc = ComponentAccumulator()
228 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
229 JETM3TriggerListsHelper = TriggerListsHelper(flags)
232 acc.merge(
JETM3KernelCfg(flags, name=
"JETM3Kernel", StreamName =
'StreamDAOD_JETM3', TriggerListsHelper = JETM3TriggerListsHelper))
237 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
238 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
239 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
241 JETM3SlimmingHelper =
SlimmingHelper(
"JETM3SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
243 JETM3SlimmingHelper.SmartCollections = [
"EventInfo",
"InDetTrackParticles",
"PrimaryVertices",
244 "Electrons",
"Photons",
"Muons",
"TauJets",
245 "MET_Baseline_AntiKt4EMTopo",
"MET_Baseline_AntiKt4EMPFlow",
246 "AntiKt4EMPFlowJets",
"AntiKt4EMTopoJets",
247 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
250 JETM3SlimmingHelper.AllVariables = [
"CHSGChargedParticleFlowObjects",
"CHSGNeutralParticleFlowObjects",
251 "MuonSegments",
"LVL1JetRoIs",
252 "Kt4EMTopoOriginEventShape",
"Kt4EMPFlowEventShape",
"Kt4EMPFlowNeutEventShape"]
254 JETM3SlimmingHelper.ExtraVariables = [
"AntiKt4EMPFlowJets.passOnlyBJVT.DFCommonJets_bJvt.isJvtHS.isJvtPU",
255 "Muons.energyLossType.EnergyLoss.ParamEnergyLoss.MeasEnergyLoss.EnergyLossSigma.MeasEnergyLossSigma.ParamEnergyLossSigmaPlus.ParamEnergyLossSigmaMinus"]
258 from DerivationFrameworkJetEtMiss.CommonJETMXContent
import ClusterVariables, FlowElementVariables
259 JETM3SlimmingHelper.ExtraVariables += [
".".join([
"CaloCalTopoClusters"] + ClusterVariables)]
260 JETM3SlimmingHelper.ExtraVariables += [
".".join([
"GlobalChargedParticleFlowObjects"] + FlowElementVariables)]
261 JETM3SlimmingHelper.ExtraVariables += [
".".join([
"GlobalNeutralParticleFlowObjects"] + FlowElementVariables)]
266 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import addTruth3ContentToSlimmerTool
267 addTruth3ContentToSlimmerTool(JETM3SlimmingHelper)
269 JETM3SlimmingHelper.AppendToDictionary.update({
'TruthParticles':
'xAOD::TruthParticleContainer',
270 'TruthParticlesAux':
'xAOD::TruthParticleAuxContainer'})
272 JETM3SlimmingHelper.AllVariables += [
"AntiKt4TruthJets",
"InTimeAntiKt4TruthJets",
"OutOfTimeAntiKt4TruthJets",
273 "TruthParticles",
"TruthEvents",
"TruthVertices",
274 "MuonTruthParticles",
"egammaTruthParticles",]
275 JETM3SlimmingHelper.SmartCollections += [
"AntiKt4TruthWZJets",
"AntiKt4TruthJets",
"AntiKt10TruthJets",
276 "AntiKt10TruthSoftDropBeta100Zcut10Jets"]
279 JETM3SlimmingHelper.IncludeTriggerNavigation =
False
280 JETM3SlimmingHelper.IncludeJetTriggerContent =
True
281 JETM3SlimmingHelper.IncludeMuonTriggerContent =
True
282 JETM3SlimmingHelper.IncludeEGammaTriggerContent =
True
283 JETM3SlimmingHelper.IncludeTauTriggerContent =
False
284 JETM3SlimmingHelper.IncludeEtMissTriggerContent =
False
285 JETM3SlimmingHelper.IncludeBJetTriggerContent =
False
286 JETM3SlimmingHelper.IncludeBPhysTriggerContent =
False
287 JETM3SlimmingHelper.IncludeMinBiasTriggerContent =
False
291 if flags.Trigger.EDMVersion == 2:
292 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
293 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = JETM3SlimmingHelper,
294 OutputContainerPrefix =
"TrigMatch_",
295 TriggerList = JETM3TriggerListsHelper.Run2TriggerNamesTau)
296 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = JETM3SlimmingHelper,
297 OutputContainerPrefix =
"TrigMatch_",
298 TriggerList = JETM3TriggerListsHelper.Run2TriggerNamesNoTau)
300 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
301 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
302 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(JETM3SlimmingHelper)
304 jetOutputList = [
"AntiKt4EMPFlowLowPtJets",
"AntiKt4EMTopoLowPtJets",
"AntiKt4UFOCSSKLowPtJets"]
305 from DerivationFrameworkJetEtMiss.JetCommonConfig
import addJetsToSlimmingTool
306 addJetsToSlimmingTool(JETM3SlimmingHelper, jetOutputList, JETM3SlimmingHelper.SmartCollections)
309 JETM3ItemList = JETM3SlimmingHelper.GetItemList()
310 acc.merge(OutputStreamCfg(flags,
"DAOD_JETM3", ItemList=JETM3ItemList, AcceptAlgs=[
"JETM3Kernel"]))
311 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_JETM3", AcceptAlgs=[
"JETM3Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData,MetadataCategory.TruthMetaData]))