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(BTagging_AntiKt4EMPFlow.DL1dv01_pb/(0.018*BTagging_AntiKt4EMPFlow.DL1dv01_pc+(1.0-0.018)*BTagging_AntiKt4EMPFlow.DL1dv01_pu)) > 0.948)'
34 trackRequirementsNoIso =
'(InDetTrackParticles.pt > 10.*GeV && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )'
36 muonsRequirements =
'(Muons.pt >= 20.*GeV) && (abs(Muons.eta) < 2.6) && (Muons.DFCommonMuonPassPreselection)'
37 electronsRequirements =
'(Electrons.pt > 20.*GeV) && (abs(Electrons.eta) < 2.6) && ((Electrons.Loose) || (Electrons.DFCommonElectronsLHLoose))'
40 expression_W =
'( count('+trackRequirements+
') >=1 )'
41 expression_Mu =
'( count('+trackRequirementsMu+
') >=1 )'
42 expression_ttbarEl =
'( count('+electronsRequirements+
') >=1 ) && ( count('+jetRequirementsTtbar+
') >=1 ) && ( count('+trackRequirementsNoIso+
') >=2 ) && ( count('+trackRequirements+
') >=1 )'
43 expression_ttbarElNoTag =
'( count('+electronsRequirements+
') >=1 ) && ( count('+trackRequirements+
') >=1 )'
44 expression_ttbarMu =
'( count('+muonsRequirements+
') >=1 ) && ( count('+jetRequirementsTtbar+
') >=1 ) && ( count('+trackRequirementsNoIso+
') >=2 ) && ( count('+trackRequirements+
') >=1 )'
45 expression_ttbarMuNoTag =
'( count('+muonsRequirements+
') >=1 ) && ( count('+trackRequirements+
') >=1 )'
47 skimmingTool_W = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_W", expression = expression_W)
48 acc.addPublicTool(skimmingTool_W)
49 skimmingTool_Mu = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_mu", expression = expression_Mu)
50 acc.addPublicTool(skimmingTool_Mu)
53 JETM12TriggerSkimmingTool_W = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"JETM12TriggerSkimmingTool_W", TriggerListOR = metTriggers)
54 acc.addPublicTool(JETM12TriggerSkimmingTool_W)
55 JETM12TriggerSkimmingTool_ele = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"JETM12TriggerSkimmingTool_ele", TriggerListOR = elTriggers)
56 acc.addPublicTool(JETM12TriggerSkimmingTool_ele)
57 JETM12TriggerSkimmingTool_mu = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"JETM12TriggerSkimmingTool_mu", TriggerListOR = muTriggers)
58 acc.addPublicTool(JETM12TriggerSkimmingTool_mu)
60 JETM12SkimmingTool_W = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_W", FilterList=[skimmingTool_W, JETM12TriggerSkimmingTool_W])
61 acc.addPublicTool(JETM12SkimmingTool_W)
62 JETM12SkimmingTool_Mu = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_Mu", FilterList=[skimmingTool_Mu, JETM12TriggerSkimmingTool_mu])
63 acc.addPublicTool(JETM12SkimmingTool_Mu)
65 finalSkimmingTools = [JETM12SkimmingTool_W,JETM12SkimmingTool_Mu]
68 skimmingTool_ttbarEl = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_ttbarEl", expression = expression_ttbarEl)
69 acc.addPublicTool(skimmingTool_ttbarEl)
70 skimmingTool_ttbarElNoTag = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_ttbarElNoTag", expression = expression_ttbarElNoTag)
71 acc.addPublicTool(skimmingTool_ttbarElNoTag)
72 skimmingTool_ttbarMu = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_ttbarMu", expression = expression_ttbarMu)
73 acc.addPublicTool(skimmingTool_ttbarMu)
74 skimmingTool_ttbarMuNoTag = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool_ttbarMuNoTag", expression = expression_ttbarMuNoTag)
75 acc.addPublicTool(skimmingTool_ttbarMuNoTag)
77 JETM12SkimmingTool_ttbarEl = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_ttbarEl",FilterList=[skimmingTool_ttbarEl,JETM12TriggerSkimmingTool_ele])
78 acc.addPublicTool(JETM12SkimmingTool_ttbarEl)
79 JETM12SkimmingTool_ttbarElNoTag = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_ttbarElNoTag",FilterList=[skimmingTool_ttbarElNoTag,JETM12TriggerSkimmingTool_ele])
80 acc.addPublicTool(JETM12SkimmingTool_ttbarElNoTag)
81 JETM12SkimmingTool_ttbarMu = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_ttbarMu",FilterList=[skimmingTool_ttbarMu,JETM12TriggerSkimmingTool_mu])
82 acc.addPublicTool(JETM12SkimmingTool_ttbarMu)
83 JETM12SkimmingTool_ttbarMuNoTag = CompFactory.DerivationFramework.FilterCombinationAND(name=
"JETM12SkimmingTool_ttbarMuNoTag",FilterList=[skimmingTool_ttbarMuNoTag,JETM12TriggerSkimmingTool_mu])
84 acc.addPublicTool(JETM12SkimmingTool_ttbarMuNoTag)
86 finalSkimmingTools = [JETM12SkimmingTool_W, JETM12SkimmingTool_Mu, JETM12SkimmingTool_ttbarEl, JETM12SkimmingTool_ttbarMu, JETM12SkimmingTool_ttbarElNoTag, JETM12SkimmingTool_ttbarMuNoTag]
88 JETM12SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(name=
"JETM12SkimmingTool", FilterList=finalSkimmingTools)
89 acc.addPublicTool(JETM12SkimmingTool, primary =
True)
94 """Configure the augmentation tool for skimming"""
99 from InDetConfig.InDetTrackSelectionToolConfig
import InDetTrackSelectionTool_Loose_Cfg
101 name =
"TrackSelectionTool1000_JETM12",
105 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import isoTTVAToolCfg
106 toolkwargs[
'TTVATool'] = acc.popToolsAndMerge(
isoTTVAToolCfg(flags))
108 toolkwargs[
"name"] =
"TrackIsolationToolPt1000"
109 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(**toolkwargs)
110 acc.addPublicTool(TrackIsoTool)
112 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
114 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
116 name =
"Pt1000IsoTrackDecorator",
117 TrackIsolationTool = TrackIsoTool,
118 TargetContainer =
"InDetTrackParticles",
119 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
120 isoSuffix = [
"ptcone40",
"ptcone30",
"ptcone20"],
121 Prefix =
"TrkIsoPt1000_"))
123 acc.addPublicTool(Pt1000IsoTrackDecorator, primary=
True)
128 """Configure the augmentation tool"""
133 from InDetConfig.InDetTrackSelectionToolConfig
import InDetTrackSelectionTool_Loose_Cfg
135 name =
"TrackSelectionTool500_JETM12",
138 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import isoTTVAToolCfg
139 toolkwargs[
'TTVATool'] = acc.popToolsAndMerge(
isoTTVAToolCfg(flags))
141 toolkwargs[
"name"] =
"TrackIsolationToolPt500"
142 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(**toolkwargs)
143 acc.addPublicTool(TrackIsoTool)
145 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
146 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
148 name =
"Pt500IsoTrackDecorator",
149 TrackIsolationTool = TrackIsoTool,
150 TargetContainer =
"InDetTrackParticles",
151 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
152 isoSuffix = [
"ptcone40",
"ptcone30",
"ptcone20"],
153 Prefix =
"TrkIsoPt500_"))
155 acc.addPublicTool(Pt500IsoTrackDecorator, primary=
True)
161 """Configure the derivation framework driving algorithm (kernel) for JETM12"""
165 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
169 from AthenaCommon.CFElements
import seqAND
170 acc.addSequence(
seqAND(
"JETM12Sequence") )
171 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
174 skimmingKernel =
DerivationKernel(kwargs[
"PreselectionName"], SkimmingTools = [skimmingTool], AugmentationTools = [augmentationToolSkim])
175 acc.addEventAlgo( skimmingKernel, sequenceName=
"JETM12Sequence" )
178 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg, MuonTrackParticleThinningCfg, EgammaTrackParticleThinningCfg, TauTrackParticleThinningCfg
181 JETM12_thinning_expression =
"( InDetTrackParticles.pt > 6*GeV && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )"
184 name =
"JETM12TrackParticleThinningTool",
185 StreamName = kwargs[
'StreamName'],
186 SelectionString = JETM12_thinning_expression,
187 InDetTrackParticlesKey =
"InDetTrackParticles"))
192 name =
"JETM12MuonTPThinningTool",
193 StreamName = kwargs[
'StreamName'],
195 InDetTrackParticlesKey =
"InDetTrackParticles"))
200 name =
"JETM12ElectronTPThinningTool",
201 StreamName = kwargs[
'StreamName'],
203 InDetTrackParticlesKey =
"InDetTrackParticles"))
208 name =
"JETM12PhotonTPThinningTool",
209 StreamName = kwargs[
'StreamName'],
211 InDetTrackParticlesKey =
"InDetTrackParticles",
212 GSFConversionVerticesKey =
"GSFConversionVertices"))
217 name =
"JETM12TauTPThinningTool",
218 StreamName = kwargs[
'StreamName'],
220 InDetTrackParticlesKey =
"InDetTrackParticles",
221 DoTauTracksThinning =
True,
222 TauTracksKey =
"TauTracks"))
224 thinningTools = [JETM12TrackParticleThinningTool,
225 JETM12MuonTPThinningTool,
226 JETM12ElectronTPThinningTool,
227 JETM12PhotonTPThinningTool,
228 JETM12TauTPThinningTool]
231 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
232 selectionString =
"( InDetTrackParticles.pt > 6*GeV && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )"
234 name =
"JETM12CaloClusterThinning",
235 StreamName = kwargs[
'StreamName'],
236 SGKey =
"InDetTrackParticles",
237 TopoClCollectionSGKey =
"CaloCalTopoClusters",
238 SelectionString = selectionString,
240 acc.addPublicTool(JETM12CaloThinningTool)
241 thinningTools.append(JETM12CaloThinningTool)
244 truth_cond_status =
"( (TruthParticles.isGenStable) && (TruthParticles.pt > 8*GeV) )"
245 truth_cond_Lepton =
"((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16) && !(TruthParticles.isSimulationParticle))"
246 truth_expression =
'('+truth_cond_status+
' || '+truth_cond_Lepton +
')'
248 JETM12TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(name =
"JETM12TruthThinningTool",
249 StreamName = kwargs[
'StreamName'],
250 ParticleSelectionString = truth_expression,
251 PreserveDescendants =
False,
252 PreserveGeneratorDescendants =
True,
253 PreserveAncestors =
False)
255 acc.addPublicTool(JETM12TruthThinningTool)
256 thinningTools.append(JETM12TruthThinningTool)
263 ThinningTools = thinningTools,
264 AugmentationTools = [augmentationTool]),
265 sequenceName=
"JETM12Sequence")
277 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
278 JETM12TriggerListsHelper = TriggerListsHelper(flags)
281 acc.merge(
JETM12KernelCfg(flags, name=
"JETM12Kernel", PreselectionName=
"JETM12PreselectionKernel", StreamName =
'StreamDAOD_JETM12', TriggerListsHelper = JETM12TriggerListsHelper))
286 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
287 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
288 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
290 JETM12SlimmingHelper =
SlimmingHelper(
"JETM12SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
292 JETM12SlimmingHelper.SmartCollections = [
"EventInfo",
293 "Electrons",
"Photons",
"Muons",
"TauJets",
294 "InDetTrackParticles",
"PrimaryVertices",
295 "MET_Baseline_AntiKt4EMPFlow",
296 "AntiKt4EMPFlowJets",
297 "BTagging_AntiKt4EMPFlow"]
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]))