12 """Configure the skimming tool"""
13 acc = ComponentAccumulator()
15 from DerivationFrameworkJetEtMiss
import TriggerLists
16 metTriggers = TriggerLists.MET_Trig(flags)
17 elTriggers = TriggerLists.single_el_Trig(flags)
18 muTriggers = TriggerLists.single_mu_Trig(flags)
21 if not flags.Input.isMC:
23 from CoolConvUtilities.MagFieldUtils
import getFieldForRun
24 magfield=getFieldForRun(flags.Input.RunNumbers[0],lumiblock=flags.Input.LumiBlockNumbers[0])
25 addTtbarEvents = magfield.solenoidCurrent() > 0
29 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
30 xAODStringSkimmingToolCfg)
32 tracks =
'InDetTrackParticles.TrkIsoPt1000_ptcone20 < 0.12*InDetTrackParticles.pt && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm'
34 trackRequirements =
'(InDetTrackParticles.pt > 6.*GeV && '+tracks+
' )'
35 trackRequirementsMu =
'(InDetTrackParticles.pt > 40.*GeV && '+tracks+
' )'
36 jetRequirementsTtbar =
'(AntiKt4EMPFlowJets.pt > 18*GeV && log(AntiKt4EMPFlowJets.GN2v01_pb/(0.2*AntiKt4EMPFlowJets.GN2v01_pc + (1.-0.2-0.01)*AntiKt4EMPFlowJets.GN2v01_pu + 0.01*AntiKt4EMPFlowJets.GN2v01_ptau))>=0.844)'
38 trackRequirementsNoIso =
'(InDetTrackParticles.pt > 10.*GeV && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )'
40 muonsRequirements =
'(Muons.pt >= 20.*GeV) && (abs(Muons.eta) < 2.6) && (Muons.DFCommonMuonPassPreselection)'
41 electronsRequirements =
'(Electrons.pt > 20.*GeV) && (abs(Electrons.eta) < 2.6) && ((Electrons.Loose) || (Electrons.DFCommonElectronsLHLoose))'
44 expression_W =
'( count('+trackRequirements+
') >=1 )'
45 expression_Mu =
'( count('+trackRequirementsMu+
') >=1 )'
46 expression_ttbarEl =
'( count('+electronsRequirements+
') >=1 ) && ( count('+jetRequirementsTtbar+
') >=1 ) && ( count('+trackRequirementsNoIso+
') >=2 ) && ( count('+trackRequirements+
') >=1 )'
47 expression_ttbarElNoTag =
'( count('+electronsRequirements+
') >=1 ) && ( count('+trackRequirements+
') >=1 )'
48 expression_ttbarMu =
'( count('+muonsRequirements+
') >=1 ) && ( count('+jetRequirementsTtbar+
') >=1 ) && ( count('+trackRequirementsNoIso+
') >=2 ) && ( count('+trackRequirements+
') >=1 )'
49 expression_ttbarMuNoTag =
'( count('+muonsRequirements+
') >=1 ) && ( count('+trackRequirements+
') >=1 )'
51 skimmingTool_W = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
52 flags, name =
"skimmingTool_W", expression = expression_W))
53 filterList_W = [skimmingTool_W]
54 skimmingTool_Mu = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
55 flags, name =
"skimmingTool_mu", expression = expression_Mu))
56 filterList_Mu = [skimmingTool_Mu]
59 if flags.Trigger.EDMVersion >= 0:
60 JETM12TriggerSkimmingTool_W = (
61 CompFactory.DerivationFramework.TriggerSkimmingTool(
62 name =
"JETM12TriggerSkimmingTool_W",
63 TriggerListOR = metTriggers))
64 acc.addPublicTool(JETM12TriggerSkimmingTool_W)
65 filterList_W += [JETM12TriggerSkimmingTool_W]
67 JETM12TriggerSkimmingTool_ele = (
68 CompFactory.DerivationFramework.TriggerSkimmingTool(
69 name =
"JETM12TriggerSkimmingTool_ele",
70 TriggerListOR = elTriggers))
71 acc.addPublicTool(JETM12TriggerSkimmingTool_ele)
73 JETM12TriggerSkimmingTool_mu = (
74 CompFactory.DerivationFramework.TriggerSkimmingTool(
75 name =
"JETM12TriggerSkimmingTool_mu",
76 TriggerListOR = muTriggers))
77 acc.addPublicTool(JETM12TriggerSkimmingTool_mu)
78 filterList_Mu += [JETM12TriggerSkimmingTool_mu]
80 JETM12SkimmingTool_W = (
81 CompFactory.DerivationFramework.FilterCombinationAND(
82 name=
"JETM12SkimmingTool_W", FilterList=filterList_W))
83 acc.addPublicTool(JETM12SkimmingTool_W)
84 JETM12SkimmingTool_Mu = (
85 CompFactory.DerivationFramework.FilterCombinationAND(
86 name=
"JETM12SkimmingTool_Mu", FilterList=filterList_Mu))
87 acc.addPublicTool(JETM12SkimmingTool_Mu)
89 finalSkimmingTools = [JETM12SkimmingTool_W,JETM12SkimmingTool_Mu]
92 skimmingTool_ttbarEl = acc.getPrimaryAndMerge(
93 xAODStringSkimmingToolCfg(
94 flags, name =
"skimmingTool_ttbarEl",
95 expression = expression_ttbarEl))
96 acc.addPublicTool(skimmingTool_ttbarEl)
97 filterList_ttbarEl = [skimmingTool_ttbarEl]
99 skimmingTool_ttbarElNoTag = acc.getPrimaryAndMerge(
100 xAODStringSkimmingToolCfg(
101 flags, name =
"skimmingTool_ttbarElNoTag",
102 expression = expression_ttbarElNoTag))
103 acc.addPublicTool(skimmingTool_ttbarElNoTag)
104 filterList_ttbarElNoTag = [skimmingTool_ttbarElNoTag]
106 skimmingTool_ttbarMu = acc.getPrimaryAndMerge(
107 xAODStringSkimmingToolCfg(
108 flags, name =
"skimmingTool_ttbarMu",
109 expression = expression_ttbarMu))
110 acc.addPublicTool(skimmingTool_ttbarMu)
111 filterList_ttbarMu = [skimmingTool_ttbarMu]
113 skimmingTool_ttbarMuNoTag = acc.getPrimaryAndMerge(
114 xAODStringSkimmingToolCfg(
115 flags, name =
"skimmingTool_ttbarMuNoTag",
116 expression = expression_ttbarMuNoTag))
117 acc.addPublicTool(skimmingTool_ttbarMuNoTag)
118 filterList_ttbarMuNoTag = [skimmingTool_ttbarMuNoTag]
120 if flags.Trigger.EDMVersion >= 0:
121 filterList_ttbarEl += [JETM12TriggerSkimmingTool_ele]
122 filterList_ttbarElNoTag += [JETM12TriggerSkimmingTool_ele]
123 filterList_ttbarMu += [JETM12TriggerSkimmingTool_mu]
124 filterList_ttbarMuNoTag += [JETM12TriggerSkimmingTool_mu]
126 JETM12SkimmingTool_ttbarEl = (
127 CompFactory.DerivationFramework.FilterCombinationAND(
128 name=
"JETM12SkimmingTool_ttbarEl",
129 FilterList=filterList_ttbarEl))
130 acc.addPublicTool(JETM12SkimmingTool_ttbarEl)
131 JETM12SkimmingTool_ttbarElNoTag = (
132 CompFactory.DerivationFramework.FilterCombinationAND(
133 name=
"JETM12SkimmingTool_ttbarElNoTag",
134 FilterList=filterList_ttbarElNoTag))
135 acc.addPublicTool(JETM12SkimmingTool_ttbarElNoTag)
136 JETM12SkimmingTool_ttbarMu = (
137 CompFactory.DerivationFramework.FilterCombinationAND(
138 name=
"JETM12SkimmingTool_ttbarMu",
139 FilterList=filterList_ttbarMu))
140 acc.addPublicTool(JETM12SkimmingTool_ttbarMu)
141 JETM12SkimmingTool_ttbarMuNoTag = (
142 CompFactory.DerivationFramework.FilterCombinationAND(
143 name=
"JETM12SkimmingTool_ttbarMuNoTag",
144 FilterList=filterList_ttbarMuNoTag))
145 acc.addPublicTool(JETM12SkimmingTool_ttbarMuNoTag)
147 finalSkimmingTools = [
148 JETM12SkimmingTool_W, JETM12SkimmingTool_Mu,
149 JETM12SkimmingTool_ttbarEl, JETM12SkimmingTool_ttbarMu,
150 JETM12SkimmingTool_ttbarElNoTag, JETM12SkimmingTool_ttbarMuNoTag]
152 JETM12SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
153 name=
"JETM12SkimmingTool", FilterList=finalSkimmingTools)
154 acc.addPublicTool(JETM12SkimmingTool, primary =
True)
159 """Configure the augmentation tool for skimming"""
160 acc = ComponentAccumulator()
164 from InDetTrackSelectionTool.InDetTrackSelectionToolConfig
import (
165 InDetTrackSelectionTool_Loose_Cfg)
166 toolkwargs[
"TrackSelectionTool"] = acc.popToolsAndMerge(InDetTrackSelectionTool_Loose_Cfg(flags,
167 name =
"TrackSelectionTool1000_JETM12",
171 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import isoTTVAToolCfg
172 toolkwargs[
'TTVATool'] = acc.popToolsAndMerge(isoTTVAToolCfg(flags))
174 toolkwargs[
"name"] =
"TrackIsolationToolPt1000"
175 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(**toolkwargs)
176 acc.addPublicTool(TrackIsoTool)
178 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
180 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
181 Pt1000IsoTrackDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
182 name =
"Pt1000IsoTrackDecorator",
183 TrackIsolationTool = TrackIsoTool,
184 TargetContainer =
"InDetTrackParticles",
185 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
186 isoSuffix = [
"ptcone40",
"ptcone30",
"ptcone20"],
187 Prefix =
"TrkIsoPt1000_"))
189 acc.addPublicTool(Pt1000IsoTrackDecorator, primary=
True)
194 """Configure the augmentation tool"""
195 acc = ComponentAccumulator()
199 from InDetTrackSelectionTool.InDetTrackSelectionToolConfig
import (
200 InDetTrackSelectionTool_Loose_Cfg)
201 toolkwargs[
"TrackSelectionTool"] = acc.popToolsAndMerge(InDetTrackSelectionTool_Loose_Cfg(flags,
202 name =
"TrackSelectionTool500_JETM12",
205 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import isoTTVAToolCfg
206 toolkwargs[
'TTVATool'] = acc.popToolsAndMerge(isoTTVAToolCfg(flags))
208 toolkwargs[
"name"] =
"TrackIsolationToolPt500"
209 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(**toolkwargs)
210 acc.addPublicTool(TrackIsoTool)
212 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
213 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
214 Pt500IsoTrackDecorator = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
215 name =
"Pt500IsoTrackDecorator",
216 TrackIsolationTool = TrackIsoTool,
217 TargetContainer =
"InDetTrackParticles",
218 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
219 isoSuffix = [
"ptcone40",
"ptcone30",
"ptcone20"],
220 Prefix =
"TrkIsoPt500_"))
222 acc.addPublicTool(Pt500IsoTrackDecorator, primary=
True)
228 """Configure the derivation framework driving algorithm (kernel) for JETM12"""
229 acc = ComponentAccumulator()
232 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
233 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs[
'TriggerListsHelper']))
236 from AthenaCommon.CFElements
import seqAND
237 acc.addSequence( seqAND(
"JETM12Sequence") )
238 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
241 skimmingKernel = DerivationKernel(kwargs[
"PreselectionName"], SkimmingTools = [skimmingTool], AugmentationTools = [augmentationToolSkim])
242 acc.addEventAlgo( skimmingKernel, sequenceName=
"JETM12Sequence" )
245 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg, MuonTrackParticleThinningCfg, EgammaTrackParticleThinningCfg, TauTrackParticleThinningCfg
248 JETM12_thinning_expression =
"( InDetTrackParticles.pt > 6*GeV && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )"
249 JETM12TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
251 name =
"JETM12TrackParticleThinningTool",
252 StreamName = kwargs[
'StreamName'],
253 SelectionString = JETM12_thinning_expression,
254 InDetTrackParticlesKey =
"InDetTrackParticles"))
257 JETM12MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
259 name =
"JETM12MuonTPThinningTool",
260 StreamName = kwargs[
'StreamName'],
262 InDetTrackParticlesKey =
"InDetTrackParticles"))
265 JETM12ElectronTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
267 name =
"JETM12ElectronTPThinningTool",
268 StreamName = kwargs[
'StreamName'],
270 InDetTrackParticlesKey =
"InDetTrackParticles"))
273 JETM12PhotonTPThinningTool = acc.getPrimaryAndMerge(EgammaTrackParticleThinningCfg(
275 name =
"JETM12PhotonTPThinningTool",
276 StreamName = kwargs[
'StreamName'],
278 InDetTrackParticlesKey =
"InDetTrackParticles",
279 GSFConversionVerticesKey =
"GSFConversionVertices"))
282 JETM12TauTPThinningTool = acc.getPrimaryAndMerge(TauTrackParticleThinningCfg(
284 name =
"JETM12TauTPThinningTool",
285 StreamName = kwargs[
'StreamName'],
287 InDetTrackParticlesKey =
"InDetTrackParticles",
288 DoTauTracksThinning =
True,
289 TauTracksKey =
"TauTracks"))
291 thinningTools = [JETM12TrackParticleThinningTool,
292 JETM12MuonTPThinningTool,
293 JETM12ElectronTPThinningTool,
294 JETM12PhotonTPThinningTool,
295 JETM12TauTPThinningTool]
298 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
299 selectionString =
"( InDetTrackParticles.pt > 6*GeV && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )"
300 JETM12CaloThinningTool = acc.getPrimaryAndMerge(CaloClusterThinningCfg(flags,
301 name =
"JETM12CaloClusterThinning",
302 StreamName = kwargs[
'StreamName'],
303 SGKey =
"InDetTrackParticles",
304 TopoClCollectionSGKey =
"CaloCalTopoClusters",
305 SelectionString = selectionString,
307 acc.addPublicTool(JETM12CaloThinningTool)
308 thinningTools.append(JETM12CaloThinningTool)
311 truth_cond_status =
"( (TruthParticles.isGenStable) && (TruthParticles.pt > 8*GeV) )"
312 truth_cond_Lepton =
"((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16) && !(TruthParticles.isSimulationParticle))"
313 truth_expression =
'('+truth_cond_status+
' || '+truth_cond_Lepton +
')'
315 JETM12TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(name =
"JETM12TruthThinningTool",
316 StreamName = kwargs[
'StreamName'],
317 ParticleSelectionString = truth_expression,
318 PreserveDescendants =
False,
319 PreserveGeneratorDescendants =
True,
320 PreserveAncestors =
False)
322 acc.addPublicTool(JETM12TruthThinningTool)
323 thinningTools.append(JETM12TruthThinningTool)
329 acc.addEventAlgo(DerivationKernel(name,
330 ThinningTools = thinningTools,
331 AugmentationTools = [augmentationTool]),
332 sequenceName=
"JETM12Sequence")
338 acc = ComponentAccumulator()
344 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
345 JETM12TriggerListsHelper = TriggerListsHelper(flags)
348 acc.merge(
JETM12KernelCfg(flags, name=
"JETM12Kernel", PreselectionName=
"JETM12PreselectionKernel", StreamName =
'StreamDAOD_JETM12', TriggerListsHelper = JETM12TriggerListsHelper))
353 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
354 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
355 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
357 JETM12SlimmingHelper =
SlimmingHelper(
"JETM12SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
359 JETM12SlimmingHelper.SmartCollections = [
"EventInfo",
360 "Electrons",
"Photons",
"Muons",
"TauJets",
361 "InDetTrackParticles",
"PrimaryVertices",
362 "MET_Baseline_AntiKt4EMPFlow",
363 "AntiKt4EMPFlowJets"]
365 JETM12SlimmingHelper.AllVariables = [
"MuonSegments",
"InDetTrackParticles",
366 "Kt4EMTopoOriginEventShape",
"Kt4EMPFlowEventShape",
"CaloCalTopoClusters"]
368 JETM12SlimmingHelper.ExtraVariables = [
"InDetTrackParticles.TrkIsoPt1000_ptcone40.TrkIsoPt1000_ptcone30.TrkIsoPt1000_ptcone20.TrkIsoPt500_ptcone40.TrkIsoPt500_ptcone30.TrkIsoPt500_ptcone20"]
371 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import addTruth3ContentToSlimmerTool
372 addTruth3ContentToSlimmerTool(JETM12SlimmingHelper)
374 JETM12SlimmingHelper.AppendToDictionary.update({
'TruthParticles':
'xAOD::TruthParticleContainer',
375 'TruthParticlesAux':
'xAOD::TruthParticleAuxContainer'})
377 JETM12SlimmingHelper.SmartCollections += [
"AntiKt4TruthJets"]
378 JETM12SlimmingHelper.AllVariables += [
"MuonTruthParticles",
"TruthParticles",
"TruthVertices"]
381 JETM12SlimmingHelper.IncludeTriggerNavigation =
False
382 JETM12SlimmingHelper.IncludeJetTriggerContent =
False
383 JETM12SlimmingHelper.IncludeMuonTriggerContent =
False
384 JETM12SlimmingHelper.IncludeEGammaTriggerContent =
False
385 JETM12SlimmingHelper.IncludeTauTriggerContent =
False
386 JETM12SlimmingHelper.IncludeEtMissTriggerContent =
False
387 JETM12SlimmingHelper.IncludeBJetTriggerContent =
False
388 JETM12SlimmingHelper.IncludeBPhysTriggerContent =
False
389 JETM12SlimmingHelper.IncludeMinBiasTriggerContent =
False
392 JETM12ItemList = JETM12SlimmingHelper.GetItemList()
393 acc.merge(OutputStreamCfg(flags,
"DAOD_JETM12", ItemList=JETM12ItemList, AcceptAlgs=[
"JETM12Kernel"]))
394 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_JETM12", AcceptAlgs=[
"JETM12Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))