6 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory
import CompFactory
8 from AthenaConfiguration.Enums
import MetadataCategory
12 """Configure the skimming tool"""
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 tracks =
'InDetTrackParticles.TrkIsoPt1000_ptcone20 < 0.12*InDetTrackParticles.pt && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm'
31 trackRequirements =
'(InDetTrackParticles.pt > 6.*GeV && '+tracks+
' )'
32 trackRequirementsMu =
'(InDetTrackParticles.pt > 40.*GeV && '+tracks+
' )'
33 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)'
35 trackRequirementsNoIso =
'(InDetTrackParticles.pt > 10.*GeV && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )'
37 muonsRequirements =
'(Muons.pt >= 20.*GeV) && (abs(Muons.eta) < 2.6) && (Muons.DFCommonMuonPassPreselection)'
38 electronsRequirements =
'(Electrons.pt > 20.*GeV) && (abs(Electrons.eta) < 2.6) && ((Electrons.Loose) || (Electrons.DFCommonElectronsLHLoose))'
41 expression_W =
'( count('+trackRequirements+
') >=1 )'
42 expression_Mu =
'( count('+trackRequirementsMu+
') >=1 )'
43 expression_ttbarEl =
'( count('+electronsRequirements+
') >=1 ) && ( count('+jetRequirementsTtbar+
') >=1 ) && ( count('+trackRequirementsNoIso+
') >=2 ) && ( count('+trackRequirements+
') >=1 )'
44 expression_ttbarElNoTag =
'( count('+electronsRequirements+
') >=1 ) && ( count('+trackRequirements+
') >=1 )'
45 expression_ttbarMu =
'( count('+muonsRequirements+
') >=1 ) && ( count('+jetRequirementsTtbar+
') >=1 ) && ( count('+trackRequirementsNoIso+
') >=2 ) && ( count('+trackRequirements+
') >=1 )'
46 expression_ttbarMuNoTag =
'( count('+muonsRequirements+
') >=1 ) && ( count('+trackRequirements+
') >=1 )'
48 skimmingTool_W = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_W", expression = expression_W)
49 acc.addPublicTool(skimmingTool_W)
50 skimmingTool_Mu = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_mu", expression = expression_Mu)
51 acc.addPublicTool(skimmingTool_Mu)
54 JETM12TriggerSkimmingTool_W = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"JETM12TriggerSkimmingTool_W", TriggerListOR = metTriggers)
55 acc.addPublicTool(JETM12TriggerSkimmingTool_W)
56 JETM12TriggerSkimmingTool_ele = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"JETM12TriggerSkimmingTool_ele", TriggerListOR = elTriggers)
57 acc.addPublicTool(JETM12TriggerSkimmingTool_ele)
58 JETM12TriggerSkimmingTool_mu = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"JETM12TriggerSkimmingTool_mu", TriggerListOR = muTriggers)
59 acc.addPublicTool(JETM12TriggerSkimmingTool_mu)
61 JETM12SkimmingTool_W = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_W", FilterList=[skimmingTool_W, JETM12TriggerSkimmingTool_W])
62 acc.addPublicTool(JETM12SkimmingTool_W)
63 JETM12SkimmingTool_Mu = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_Mu", FilterList=[skimmingTool_Mu, JETM12TriggerSkimmingTool_mu])
64 acc.addPublicTool(JETM12SkimmingTool_Mu)
66 finalSkimmingTools = [JETM12SkimmingTool_W,JETM12SkimmingTool_Mu]
69 skimmingTool_ttbarEl = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_ttbarEl", expression = expression_ttbarEl)
70 acc.addPublicTool(skimmingTool_ttbarEl)
71 skimmingTool_ttbarElNoTag = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_ttbarElNoTag", expression = expression_ttbarElNoTag)
72 acc.addPublicTool(skimmingTool_ttbarElNoTag)
73 skimmingTool_ttbarMu = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_ttbarMu", expression = expression_ttbarMu)
74 acc.addPublicTool(skimmingTool_ttbarMu)
75 skimmingTool_ttbarMuNoTag = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_ttbarMuNoTag", expression = expression_ttbarMuNoTag)
76 acc.addPublicTool(skimmingTool_ttbarMuNoTag)
78 JETM12SkimmingTool_ttbarEl = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_ttbarEl",FilterList=[skimmingTool_ttbarEl,JETM12TriggerSkimmingTool_ele])
79 acc.addPublicTool(JETM12SkimmingTool_ttbarEl)
80 JETM12SkimmingTool_ttbarElNoTag = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_ttbarElNoTag",FilterList=[skimmingTool_ttbarElNoTag,JETM12TriggerSkimmingTool_ele])
81 acc.addPublicTool(JETM12SkimmingTool_ttbarElNoTag)
82 JETM12SkimmingTool_ttbarMu = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_ttbarMu",FilterList=[skimmingTool_ttbarMu,JETM12TriggerSkimmingTool_mu])
83 acc.addPublicTool(JETM12SkimmingTool_ttbarMu)
84 JETM12SkimmingTool_ttbarMuNoTag = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_ttbarMuNoTag",FilterList=[skimmingTool_ttbarMuNoTag,JETM12TriggerSkimmingTool_mu])
85 acc.addPublicTool(JETM12SkimmingTool_ttbarMuNoTag)
87 finalSkimmingTools = [JETM12SkimmingTool_W, JETM12SkimmingTool_Mu, JETM12SkimmingTool_ttbarEl, JETM12SkimmingTool_ttbarMu, JETM12SkimmingTool_ttbarElNoTag, JETM12SkimmingTool_ttbarMuNoTag]
89 JETM12SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(name=
"JETM12SkimmingTool", FilterList=finalSkimmingTools)
90 acc.addPublicTool(JETM12SkimmingTool, primary =
True)
95 """Configure the augmentation tool for skimming"""
100 from InDetConfig.InDetTrackSelectionToolConfig
import InDetTrackSelectionTool_Loose_Cfg
102 name =
"TrackSelectionTool1000_JETM12",
106 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import isoTTVAToolCfg
107 toolkwargs[
'TTVATool'] = acc.popToolsAndMerge(
isoTTVAToolCfg(flags))
109 toolkwargs[
"name"] =
"TrackIsolationToolPt1000"
110 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(**toolkwargs)
111 acc.addPublicTool(TrackIsoTool)
113 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
115 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
117 name =
"Pt1000IsoTrackDecorator",
118 TrackIsolationTool = TrackIsoTool,
119 TargetContainer =
"InDetTrackParticles",
120 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
121 isoSuffix = [
"ptcone40",
"ptcone30",
"ptcone20"],
122 Prefix =
"TrkIsoPt1000_"))
124 acc.addPublicTool(Pt1000IsoTrackDecorator, primary=
True)
129 """Configure the augmentation tool"""
134 from InDetConfig.InDetTrackSelectionToolConfig
import InDetTrackSelectionTool_Loose_Cfg
136 name =
"TrackSelectionTool500_JETM12",
139 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import isoTTVAToolCfg
140 toolkwargs[
'TTVATool'] = acc.popToolsAndMerge(
isoTTVAToolCfg(flags))
142 toolkwargs[
"name"] =
"TrackIsolationToolPt500"
143 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(**toolkwargs)
144 acc.addPublicTool(TrackIsoTool)
146 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
147 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
149 name =
"Pt500IsoTrackDecorator",
150 TrackIsolationTool = TrackIsoTool,
151 TargetContainer =
"InDetTrackParticles",
152 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
153 isoSuffix = [
"ptcone40",
"ptcone30",
"ptcone20"],
154 Prefix =
"TrkIsoPt500_"))
156 acc.addPublicTool(Pt500IsoTrackDecorator, primary=
True)
162 """Configure the derivation framework driving algorithm (kernel) for JETM12"""
166 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
170 from AthenaCommon.CFElements
import seqAND
171 acc.addSequence(
seqAND(
"JETM12Sequence") )
172 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
175 skimmingKernel =
DerivationKernel(kwargs[
"PreselectionName"], SkimmingTools = [skimmingTool], AugmentationTools = [augmentationToolSkim])
176 acc.addEventAlgo( skimmingKernel, sequenceName=
"JETM12Sequence" )
179 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg, MuonTrackParticleThinningCfg, EgammaTrackParticleThinningCfg, TauTrackParticleThinningCfg
182 JETM12_thinning_expression =
"( InDetTrackParticles.pt > 6*GeV && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )"
185 name =
"JETM12TrackParticleThinningTool",
186 StreamName = kwargs[
'StreamName'],
187 SelectionString = JETM12_thinning_expression,
188 InDetTrackParticlesKey =
"InDetTrackParticles"))
193 name =
"JETM12MuonTPThinningTool",
194 StreamName = kwargs[
'StreamName'],
196 InDetTrackParticlesKey =
"InDetTrackParticles"))
201 name =
"JETM12ElectronTPThinningTool",
202 StreamName = kwargs[
'StreamName'],
204 InDetTrackParticlesKey =
"InDetTrackParticles"))
209 name =
"JETM12PhotonTPThinningTool",
210 StreamName = kwargs[
'StreamName'],
212 InDetTrackParticlesKey =
"InDetTrackParticles",
213 GSFConversionVerticesKey =
"GSFConversionVertices"))
218 name =
"JETM12TauTPThinningTool",
219 StreamName = kwargs[
'StreamName'],
221 InDetTrackParticlesKey =
"InDetTrackParticles",
222 DoTauTracksThinning =
True,
223 TauTracksKey =
"TauTracks"))
225 thinningTools = [JETM12TrackParticleThinningTool,
226 JETM12MuonTPThinningTool,
227 JETM12ElectronTPThinningTool,
228 JETM12PhotonTPThinningTool,
229 JETM12TauTPThinningTool]
232 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
233 selectionString =
"( InDetTrackParticles.pt > 6*GeV && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )"
235 name =
"JETM12CaloClusterThinning",
236 StreamName = kwargs[
'StreamName'],
237 SGKey =
"InDetTrackParticles",
238 TopoClCollectionSGKey =
"CaloCalTopoClusters",
239 SelectionString = selectionString,
241 acc.addPublicTool(JETM12CaloThinningTool)
242 thinningTools.append(JETM12CaloThinningTool)
245 truth_cond_status =
"( (TruthParticles.isGenStable) && (TruthParticles.pt > 8*GeV) )"
246 truth_cond_Lepton =
"((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16) && !(TruthParticles.isSimulationParticle))"
247 truth_expression =
'('+truth_cond_status+
' || '+truth_cond_Lepton +
')'
249 JETM12TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(name =
"JETM12TruthThinningTool",
250 StreamName = kwargs[
'StreamName'],
251 ParticleSelectionString = truth_expression,
252 PreserveDescendants =
False,
253 PreserveGeneratorDescendants =
True,
254 PreserveAncestors =
False)
256 acc.addPublicTool(JETM12TruthThinningTool)
257 thinningTools.append(JETM12TruthThinningTool)
264 ThinningTools = thinningTools,
265 AugmentationTools = [augmentationTool]),
266 sequenceName=
"JETM12Sequence")
278 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
279 JETM12TriggerListsHelper = TriggerListsHelper(flags)
282 acc.merge(
JETM12KernelCfg(flags, name=
"JETM12Kernel", PreselectionName=
"JETM12PreselectionKernel", StreamName =
'StreamDAOD_JETM12', TriggerListsHelper = JETM12TriggerListsHelper))
287 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
288 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
289 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
291 JETM12SlimmingHelper =
SlimmingHelper(
"JETM12SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
293 JETM12SlimmingHelper.SmartCollections = [
"EventInfo",
294 "Electrons",
"Photons",
"Muons",
"TauJets",
295 "InDetTrackParticles",
"PrimaryVertices",
296 "MET_Baseline_AntiKt4EMPFlow",
297 "AntiKt4EMPFlowJets"]
299 JETM12SlimmingHelper.AllVariables = [
"MuonSegments",
"InDetTrackParticles",
300 "Kt4EMTopoOriginEventShape",
"Kt4EMPFlowEventShape",
"CaloCalTopoClusters"]
302 JETM12SlimmingHelper.ExtraVariables = [
"InDetTrackParticles.TrkIsoPt1000_ptcone40.TrkIsoPt1000_ptcone30.TrkIsoPt1000_ptcone20.TrkIsoPt500_ptcone40.TrkIsoPt500_ptcone30.TrkIsoPt500_ptcone20"]
305 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import addTruth3ContentToSlimmerTool
308 JETM12SlimmingHelper.AppendToDictionary.update({
'TruthParticles':
'xAOD::TruthParticleContainer',
309 'TruthParticlesAux':
'xAOD::TruthParticleAuxContainer'})
311 JETM12SlimmingHelper.SmartCollections += [
"AntiKt4TruthJets"]
312 JETM12SlimmingHelper.AllVariables += [
"MuonTruthParticles",
"TruthParticles",
"TruthVertices"]
315 JETM12SlimmingHelper.IncludeTriggerNavigation =
False
316 JETM12SlimmingHelper.IncludeJetTriggerContent =
False
317 JETM12SlimmingHelper.IncludeMuonTriggerContent =
False
318 JETM12SlimmingHelper.IncludeEGammaTriggerContent =
False
319 JETM12SlimmingHelper.IncludeTauTriggerContent =
False
320 JETM12SlimmingHelper.IncludeEtMissTriggerContent =
False
321 JETM12SlimmingHelper.IncludeBJetTriggerContent =
False
322 JETM12SlimmingHelper.IncludeBPhysTriggerContent =
False
323 JETM12SlimmingHelper.IncludeMinBiasTriggerContent =
False
326 JETM12ItemList = JETM12SlimmingHelper.GetItemList()
327 acc.merge(
OutputStreamCfg(flags,
"DAOD_JETM12", ItemList=JETM12ItemList, AcceptAlgs=[
"JETM12Kernel"]))
328 acc.merge(
SetupMetaDataForStreamCfg(flags,
"DAOD_JETM12", AcceptAlgs=[
"JETM12Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))