7 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
8 from AthenaConfiguration.ComponentFactory
import CompFactory
9 from AthenaConfiguration.Enums
import MetadataCategory
13 """Configure the skimming tool"""
16 from DerivationFrameworkJetEtMiss
import TriggerLists
17 elTriggers = TriggerLists.single_el_Trig(flags)
18 muTriggers = TriggerLists.single_mu_Trig(flags)
20 addRun3ElectronTriggers = [
"HLT_e17_lhvloose_L1EM15VHI",
"HLT_e20_lhvloose_L1EM15VH",
"HLT_e250_etcut_L1EM22VHI",
21 "HLT_e26_lhtight_ivarloose_L1EM22VHI",
"HLT_e26_lhtight_ivarloose_L1eEM26M",
22 "HLT_e60_lhmedium_L1EM22VHI",
"HLT_e60_lhmedium_L1eEM26M",
23 "HLT_e140_lhloose_L1EM22VHI",
"HLT_e140_lhloose_L1eEM26M",
24 "HLT_e300_etcut_L1EM22VHI",
"HLT_e300_etcut_L1eEM26M",
25 "HLT_e140_lhloose_noringer_L1EM22VHI",
"HLT_e140_lhloose_noringer_L1eEM26M"]
27 addRund3MuonTriggers = [
"HLT_mu24_ivarmedium_L1MU14FCH",
"HLT_mu50_L1MU14FCH",
"HLT_mu60_0eta105_msonly_L1MU14FCH",
"HLT_mu60_L1MU14FCH",
"HLT_mu80_msonly_3layersEC_L1MU14FCH"]
29 elTriggers = elTriggers+addRun3ElectronTriggers
30 muTriggers = muTriggers+addRund3MuonTriggers
31 lepTriggers = elTriggers+muTriggers
34 tracks =
'InDetTrackParticles.TrkIsoPt1000_ptcone20 < 0.12*InDetTrackParticles.pt && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm'
36 trackRequirements =
'(InDetTrackParticles.pt > 9.*GeV && '+tracks+
' )'
38 jetRequirementsTtbar =
'(AntiKt4EMPFlowJets.pt > 18*GeV && log(AntiKt4EMPFlowJets.GN2v01_pb/(0.2*AntiKt4EMPFlowJets.GN2v01_pc+0.01*AntiKt4EMPFlowJets.GN2v01_ptau+(1.0-0.2-0.01)*AntiKt4EMPFlowJets.GN2v01_pu)) > -0.378)'
40 muonsRequirements =
'(Muons.pt >= 24.*GeV) && (abs(Muons.eta) < 2.6) && (Muons.DFCommonMuonPassPreselection)'
41 electronsRequirements =
'(Electrons.pt > 24.*GeV) && (abs(Electrons.eta) < 2.6) && ((Electrons.Loose) || (Electrons.DFCommonElectronsLHLoose))'
44 expression =
'( count('+trackRequirements+
') >=2 && count('+jetRequirementsTtbar+
') >=1 && ( count('+muonsRequirements+
') >=1 || count('+electronsRequirements+
') >=1 ) )'
46 skimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool(name =
"skimmingTool", expression = expression)
47 acc.addPublicTool(skimmingTool)
50 STDM17TriggerSkimmingTool_lep = CompFactory.DerivationFramework.TriggerSkimmingTool(name =
"STDM17TriggerSkimmingTool_lep", TriggerListOR = lepTriggers)
51 acc.addPublicTool(STDM17TriggerSkimmingTool_lep)
52 STDM17SkimmingTool_lep = CompFactory.DerivationFramework.FilterCombinationAND(name=
"STDM17SkimmingTool_lep", FilterList=[skimmingTool, STDM17TriggerSkimmingTool_lep])
53 acc.addPublicTool(STDM17SkimmingTool_lep)
55 finalSkimmingTools = [STDM17SkimmingTool_lep]
57 STDM17SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(name=
"STDM17SkimmingTool", FilterList=finalSkimmingTools)
58 acc.addPublicTool(STDM17SkimmingTool, primary =
True)
63 """Configure the augmentation tool for skimming"""
68 from InDetConfig.InDetTrackSelectionToolConfig
import InDetTrackSelectionTool_Loose_Cfg
70 name =
"TrackSelectionTool1000_STDM17",
74 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import isoTTVAToolCfg
75 toolkwargs[
'TTVATool'] = acc.popToolsAndMerge(
isoTTVAToolCfg(flags))
77 toolkwargs[
"name"] =
"TrackIsolationToolPt1000"
78 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(**toolkwargs)
79 acc.addPublicTool(TrackIsoTool)
82 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
83 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
85 name =
"Pt1000IsoTrackDecorator",
86 TrackIsolationTool = TrackIsoTool,
87 TargetContainer =
"InDetTrackParticles",
88 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
89 isoSuffix = [
"ptcone40",
"ptcone30",
"ptcone20"],
90 Prefix =
"TrkIsoPt1000_"))
91 acc.addPublicTool(Pt1000IsoTrackDecorator, primary=
True)
96 """Configure the augmentation tool"""
101 from InDetConfig.InDetTrackSelectionToolConfig
import InDetTrackSelectionTool_Loose_Cfg
103 name =
"TrackSelectionTool500_STDM17",
106 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import isoTTVAToolCfg
107 toolkwargs[
'TTVATool'] = acc.popToolsAndMerge(
isoTTVAToolCfg(flags))
109 toolkwargs[
"name"] =
"TrackIsolationToolPt500"
110 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(**toolkwargs)
111 acc.addPublicTool(TrackIsoTool)
114 from xAODPrimitives.xAODIso
import xAODIso
as isoPar
115 from DerivationFrameworkInDet.InDetToolsConfig
import IsolationTrackDecoratorCfg
117 name =
"Pt500IsoTrackDecorator",
118 TrackIsolationTool = TrackIsoTool,
119 TargetContainer =
"InDetTrackParticles",
120 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
121 isoSuffix = [
"ptcone40",
"ptcone30",
"ptcone20"],
122 Prefix =
"TrkIsoPt500_"))
123 acc.addPublicTool(Pt500IsoTrackDecorator, primary=
True)
129 """Configure the derivation framework driving algorithm (kernel) for STDM17"""
133 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
137 from AthenaCommon.CFElements
import seqAND
138 acc.addSequence(
seqAND(
"STDM17Sequence") )
139 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
142 skimmingKernel =
DerivationKernel(kwargs[
"PreselectionName"], SkimmingTools = [skimmingTool], AugmentationTools = [augmentationToolSkim])
143 acc.addEventAlgo( skimmingKernel, sequenceName=
"STDM17Sequence" )
146 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg, MuonTrackParticleThinningCfg, EgammaTrackParticleThinningCfg, TauTrackParticleThinningCfg
149 STDM17_thinning_expression =
"( InDetTrackParticles.pt > 6*GeV && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )"
152 name =
"STDM17TrackParticleThinningTool",
153 StreamName = kwargs[
'StreamName'],
154 SelectionString = STDM17_thinning_expression,
155 InDetTrackParticlesKey =
"InDetTrackParticles"))
160 name =
"STDM17MuonTPThinningTool",
161 StreamName = kwargs[
'StreamName'],
163 InDetTrackParticlesKey =
"InDetTrackParticles"))
168 name =
"STDM17ElectronTPThinningTool",
169 StreamName = kwargs[
'StreamName'],
171 InDetTrackParticlesKey =
"InDetTrackParticles"))
176 name =
"STDM17PhotonTPThinningTool",
177 StreamName = kwargs[
'StreamName'],
179 InDetTrackParticlesKey =
"InDetTrackParticles",
180 GSFConversionVerticesKey =
"GSFConversionVertices"))
185 name =
"STDM17TauTPThinningTool",
186 StreamName = kwargs[
'StreamName'],
188 InDetTrackParticlesKey =
"InDetTrackParticles",
189 DoTauTracksThinning =
True,
190 TauTracksKey =
"TauTracks"))
192 thinningTools = [STDM17TrackParticleThinningTool,
193 STDM17MuonTPThinningTool,
194 STDM17ElectronTPThinningTool,
195 STDM17PhotonTPThinningTool,
196 STDM17TauTPThinningTool]
199 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
200 selectionString =
"( InDetTrackParticles.pt > 6*GeV && InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 5.0*mm )"
202 name =
"STDM17CaloClusterThinning",
203 StreamName = kwargs[
'StreamName'],
204 SGKey =
"InDetTrackParticles",
205 TopoClCollectionSGKey =
"CaloCalTopoClusters",
206 SelectionString = selectionString,
208 acc.addPublicTool(STDM17CaloThinningTool)
209 thinningTools.append(STDM17CaloThinningTool)
212 truth_cond_status =
"( (TruthParticles.pdgId == 24) || (TruthParticles.pdgId == -24) )"
213 truth_cond_Lepton =
"((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16) && (TruthParticles.barcode < 200000))"
214 truth_expression =
'('+truth_cond_status+
' || '+truth_cond_Lepton +
')'
216 STDM17TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(name =
"STDM17TruthThinningTool",
217 StreamName = kwargs[
'StreamName'],
218 ParticleSelectionString = truth_expression,
219 PreserveDescendants =
False,
220 PreserveGeneratorDescendants =
True,
221 PreserveAncestors =
False)
223 acc.addPublicTool(STDM17TruthThinningTool)
224 thinningTools.append(STDM17TruthThinningTool)
231 ThinningTools = thinningTools,
232 AugmentationTools = [augmentationTool]),
233 sequenceName=
"STDM17Sequence")
245 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
246 STDM17TriggerListsHelper = TriggerListsHelper(flags)
249 acc.merge(
STDM17KernelCfg(flags, name=
"STDM17Kernel", PreselectionName=
"STDM17PreselectionKernel", StreamName =
'StreamDAOD_STDM17', TriggerListsHelper = STDM17TriggerListsHelper))
254 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
255 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
256 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
258 STDM17SlimmingHelper =
SlimmingHelper(
"STDM17SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
260 STDM17SlimmingHelper.SmartCollections = [
"EventInfo",
261 "Electrons",
"Photons",
"Muons",
"TauJets",
"TauJets_MuonRM",
262 "InDetTrackParticles",
"PrimaryVertices",
263 "MET_Baseline_AntiKt4EMPFlow",
264 "AntiKt4EMPFlowJets",
265 "BTagging_AntiKt4EMPFlow",
266 "AntiKt4EMPFlowJets_FTAG",]
269 STDM17SlimmingHelper.AllVariables = [
"MuonSegments",
"InDetTrackParticles",
270 "Kt4EMTopoOriginEventShape",
"Kt4EMPFlowEventShape",
"CaloCalTopoClusters"]
272 STDM17SlimmingHelper.ExtraVariables = [
"InDetTrackParticles.TrkIsoPt1000_ptcone40.TrkIsoPt1000_ptcone30.TrkIsoPt1000_ptcone20.TrkIsoPt500_ptcone40.TrkIsoPt500_ptcone30.TrkIsoPt500_ptcone20"]
275 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import addTruth3ContentToSlimmerTool
278 STDM17SlimmingHelper.AppendToDictionary.update({
'TruthParticles':
'xAOD::TruthParticleContainer',
279 'TruthParticlesAux':
'xAOD::TruthParticleAuxContainer'})
281 STDM17SlimmingHelper.SmartCollections += [
"AntiKt4TruthJets"]
282 STDM17SlimmingHelper.AllVariables += [
"MuonTruthParticles",
"TruthParticles",
"TruthVertices"]
285 STDM17SlimmingHelper.IncludeTriggerNavigation =
False
286 STDM17SlimmingHelper.IncludeJetTriggerContent =
False
287 STDM17SlimmingHelper.IncludeMuonTriggerContent =
False
288 STDM17SlimmingHelper.IncludeEGammaTriggerContent =
False
289 STDM17SlimmingHelper.IncludeTauTriggerContent =
False
290 STDM17SlimmingHelper.IncludeEtMissTriggerContent =
False
291 STDM17SlimmingHelper.IncludeBJetTriggerContent =
False
292 STDM17SlimmingHelper.IncludeBPhysTriggerContent =
False
293 STDM17SlimmingHelper.IncludeMinBiasTriggerContent =
False
298 if flags.Trigger.EDMVersion == 2:
299 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
301 OutputContainerPrefix =
"TrigMatch_",
302 TriggerList = STDM17TriggerListsHelper.Run2TriggerNamesTau)
304 OutputContainerPrefix =
"TrigMatch_",
305 TriggerList = STDM17TriggerListsHelper.Run2TriggerNamesNoTau)
307 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
308 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
314 STDM17ItemList = STDM17SlimmingHelper.GetItemList()
315 acc.merge(
OutputStreamCfg(flags,
"DAOD_STDM17", ItemList=STDM17ItemList, AcceptAlgs=[
"STDM17Kernel"]))
316 acc.merge(
SetupMetaDataForStreamCfg(flags,
"DAOD_STDM17", AcceptAlgs=[
"STDM17Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))