12 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
13 from AthenaConfiguration.ComponentFactory
import CompFactory
14 from AthenaConfiguration.Enums
import MetadataCategory
15 from AthenaCommon.CFElements
import seqAND, parAND
19 IDTIDE_AOD_EXCLUDED_AUXDATA = [
20 'TrkBLX',
'TrkBLY',
'TrkBLZ',
'TrkIBLX',
'TrkIBLY',
'TrkIBLZ',
21 'TrkL1X',
'TrkL1Y',
'TrkL1Z',
'TrkL2X',
'TrkL2Y',
'TrkL2Z',
22 'IDTIDE_biased_PVd0Sigma',
'IDTIDE_biased_PVz0Sigma',
23 'IDTIDE_biased_PVz0SigmaSinTheta',
24 'IDTIDE_biased_d0',
'IDTIDE_biased_d0Sigma',
25 'IDTIDE_biased_z0',
'IDTIDE_biased_z0Sigma',
26 'IDTIDE_biased_z0SigmaSinTheta',
'IDTIDE_biased_z0SinTheta',
27 'IDTIDE_unbiased_PVd0Sigma',
'IDTIDE_unbiased_PVz0Sigma',
28 'IDTIDE_unbiased_PVz0SigmaSinTheta',
29 'IDTIDE_unbiased_d0',
'IDTIDE_unbiased_d0Sigma',
30 'IDTIDE_unbiased_z0',
'IDTIDE_unbiased_z0Sigma',
31 'IDTIDE_unbiased_z0SigmaSinTheta',
'IDTIDE_unbiased_z0SinTheta'
41 augmentationTools = []
44 from DerivationFrameworkInDet.InDetToolsConfig
import (
45 TrackToVertexWrapperCfg)
46 IDTIDETrackToVertexWrapper = acc.getPrimaryAndMerge(
48 flags, name=
"IDTIDETrackToVertexWrapper",
49 DecorationPrefix=
"IDTIDE")
51 augmentationTools.append(IDTIDETrackToVertexWrapper)
53 from DerivationFrameworkInDet.InDetToolsConfig
import (
54 UsedInVertexFitTrackDecoratorCfg)
55 IDTIDEUsedInFitDecorator = acc.getPrimaryAndMerge(
57 augmentationTools.append(IDTIDEUsedInFitDecorator)
60 from DerivationFrameworkInDet.InDetToolsConfig
import (
61 TrackParametersAtPVCfg)
63 flags, name=
"IDTIDE_DFCommonZ0AtPV",
64 Z0SGEntryName=
"IDTIDEInDetTrackZ0AtPV")
66 augmentationTools.append(DFCommonZ0AtPV)
76 if not flags.Input.isMC:
78 sel_jet600 =
'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 600.*GeV'
79 sel_jet800 =
'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 800.*GeV'
80 sel_jet1000 =
'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 1000.*GeV'
83 jetA_ph1 =
'( HLT_j110_pf_ftf_preselj80_L1jJ60 || HLT_j175_pf_ftf_preselj140_L1jJ90 || HLT_j260_pf_ftf_preselj200_L1jJ125 )'
84 jetC_ph1 =
'( HLT_j360_pf_ftf_preselj225_L1jJ160 )'
85 jetD_ph1 =
'( HLT_j400_pf_ftf_preselj225_L1jJ160 && !HLT_j460_pf_ftf_preselj225_L1jJ160 )'
86 jetE_ph1 =
'( HLT_j460_pf_ftf_preselj225_L1jJ160 )'
87 jetF_ph1 =
' HLT_j460_pf_ftf_preselj225_L1jJ160 '
88 jetG_ph1 =
' HLT_j460_pf_ftf_preselj225_L1jJ160 '
89 jetH_ph1 =
' HLT_j460_pf_ftf_preselj225_L1jJ160 '
92 desd_jetA = f
'( HLT_j110_pf_ftf_preselj80_L1J30 || HLT_j175_pf_ftf_preselj140_L1J50 || HLT_j260_pf_ftf_preselj200_L1J75 ) || {jetA_ph1} '
93 desd_jetC = f
'( HLT_j360_pf_ftf_preselj225_L1J100 ) || {jetC_ph1} '
94 desd_jetD = f
'( HLT_j420_pf_ftf_preselj225_L1J100 && !HLT_j460_pf_ftf_preselj225_L1J100 ) || {jetD_ph1} '
95 desd_jetE = f
'( HLT_j460_pf_ftf_preselj225_L1J100 ) || {jetE_ph1} '
97 f
'(( HLT_j460_pf_ftf_preselj225_L1J100 || {jetF_ph1} ) && count({sel_jet600})>0 && count({sel_jet800})==0 )'
99 f
'(( HLT_j460_pf_ftf_preselj225_L1J100 || {jetG_ph1} ) && count({sel_jet800})>0 && count({sel_jet1000})==0 )'
100 desd_jetH = f
'(( HLT_j460_pf_ftf_preselj225_L1J100 || {jetH_ph1} ) && count({sel_jet1000})>0 )'
111 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
112 xAODStringSkimmingToolCfg,
114 FilterCombinationANDCfg,
115 FilterCombinationORCfg)
117 IDTIDE_SkimmingToolA = acc.getPrimaryAndMerge(
119 expression=desd_jetA))
121 flags, name=
"IDTIDE_PrescaleToolA", Prescale=prescaleA))
123 flags, name=
"IDTIDE_ANDToolA",
124 FilterList=[IDTIDE_SkimmingToolA, IDTIDE_PrescaleToolA]))
126 IDTIDE_SkimmingToolC = acc.getPrimaryAndMerge(
128 expression=desd_jetC))
130 flags, name=
"IDTIDE_PrescaleToolC", Prescale=prescaleC))
132 flags, name=
"IDTIDE_ANDToolC",
133 FilterList=[IDTIDE_SkimmingToolC, IDTIDE_PrescaleToolC]))
135 IDTIDE_SkimmingToolD = acc.getPrimaryAndMerge(
137 expression=desd_jetD))
139 flags, name=
"IDTIDE_PrescaleToolD", Prescale=prescaleD))
141 flags, name=
"IDTIDE_ANDToolD",
142 FilterList=[IDTIDE_SkimmingToolD, IDTIDE_PrescaleToolD]))
144 IDTIDE_SkimmingToolE = acc.getPrimaryAndMerge(
146 expression=desd_jetE))
148 flags, name=
"IDTIDE_PrescaleToolE", Prescale=prescaleE))
150 flags, name=
"IDTIDE_ANDToolE",
151 FilterList=[IDTIDE_SkimmingToolE, IDTIDE_PrescaleToolE]))
153 IDTIDE_SkimmingToolF = acc.getPrimaryAndMerge(
155 expression=desd_jetF))
157 flags, name=
"IDTIDE_PrescaleToolF", Prescale=prescaleF))
159 flags, name=
"IDTIDE_ANDToolF",
160 FilterList=[IDTIDE_SkimmingToolF, IDTIDE_PrescaleToolF]))
162 IDTIDE_SkimmingToolG = acc.getPrimaryAndMerge(
164 expression=desd_jetG))
166 flags, name=
"IDTIDE_PrescaleToolG", Prescale=prescaleG))
168 flags, name=
"IDTIDE_ANDToolG",
169 FilterList=[IDTIDE_SkimmingToolG, IDTIDE_PrescaleToolG]))
171 IDTIDE_SkimmingToolH = acc.getPrimaryAndMerge(
173 expression=desd_jetH))
176 flags, name=
"IDTIDELogicalCombination",
177 FilterList=[IDTIDE_ANDToolA, IDTIDE_ANDToolC, IDTIDE_ANDToolD,
178 IDTIDE_ANDToolE, IDTIDE_ANDToolF,
179 IDTIDE_ANDToolG, IDTIDE_SkimmingToolH]))
181 skimmingTools.append(IDTIDE_ORTool)
185 CompFactory.DerivationFramework.DerivationKernel(
186 "IDTIDEKernelPresel", SkimmingTools=skimmingTools))
191 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
193 AugmentationTools=augmentationTools,
194 SkimmingTools=skimmingTools,
196 RunSkimmingFirst=
True,
211 if flags.Detector.GeometryID:
212 from DerivationFrameworkInDet.InDetToolsConfig
import (
213 IDTIDEThinningToolCfg)
214 thinningTools.append(acc.getPrimaryAndMerge(
216 if flags.Detector.GeometryITk:
217 from DerivationFrameworkInDet.InDetToolsConfig
import (
218 ITkTIDEThinningToolCfg)
219 thinningTools.append(acc.getPrimaryAndMerge(
224 from DerivationFrameworkInDet.InDetToolsConfig
import (
225 IDTIDETruthThinningToolCfg)
226 thinningTools.append(acc.getPrimaryAndMerge(
229 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
231 AugmentationTools=[],
232 ThinningTools=thinningTools,
237 """Configure the derivation framework driving algorithm (kernel) for IDTIDE"""
243 IDTIDEPreselSequenceName=
'IDTIDEPreselSequence'
244 acc.addSequence(
seqAND(IDTIDEPreselSequenceName))
265 IDTIDEPreselAlgSequenceName=
'IDTIDEPreselAlgSequence'
266 acc.addSequence(
parAND(IDTIDEPreselAlgSequenceName),
267 parentName=IDTIDEPreselSequenceName)
269 from InDetConfig.InDetPrepRawDataToxAODConfig
import InDetPrepDataToxAODCfg
271 sequenceName=IDTIDEPreselAlgSequenceName)
273 IDTIDEPostProcSequenceName=
'IDTIDEPostProcSequence'
274 acc.addSequence(
parAND(IDTIDEPostProcSequenceName),
275 parentName=IDTIDEPreselSequenceName)
277 from DerivationFrameworkInDet.InDetToolsConfig
import (
278 DFInDetTSOSKernelCfg)
280 sequenceName=IDTIDEPostProcSequenceName)
282 sequenceName=IDTIDEPostProcSequenceName)
286 """Configure the derivation framework driving algorithm (kernel) for IDTIDE"""
289 IDTIDEPreselSequenceName=
'IDTIDEPreselSequence'
290 acc.addSequence(
seqAND(IDTIDEPreselSequenceName))
294 IDTIDEPreselAlgSequenceName=
'IDTIDEPreselAlgSequence'
295 acc.addSequence(
parAND(IDTIDEPreselAlgSequenceName),
296 parentName=IDTIDEPreselSequenceName)
298 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkPrepDataToxAODCfg
300 sequenceName=IDTIDEPreselAlgSequenceName)
302 IDTIDEPostProcSequenceName=
'IDTIDEPostProcSequence'
303 acc.addSequence(
parAND(IDTIDEPostProcSequenceName),
304 parentName=IDTIDEPreselSequenceName)
309 if not flags.Tracking.writeExtendedSi_PRDInfo:
310 from DerivationFrameworkInDet.InDetToolsConfig
import DFITkTSOSKernelCfg
312 sequenceName=IDTIDEPostProcSequenceName)
314 sequenceName=IDTIDEPostProcSequenceName)
320 """Main config fragment for IDTIDE"""
324 if flags.Detector.GeometryID:
326 if flags.Detector.GeometryITk:
332 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
333 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
334 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
336 "IDTIDESlimmingHelper",
337 NamesAndTypes=flags.Input.TypedCollections,
342 SmartCollections = []
345 IDTIDESlimmingHelper.AppendToDictionary.update({
346 "EventInfo":
"xAOD::EventInfo",
"EventInfoAux":
"xAOD::EventAuxInfo",
347 "CombinedMuonTrackParticles":
"xAOD::TrackParticleContainer",
"CombinedMuonTrackParticlesAux":
"xAOD::TrackParticleAuxContainer",
348 "Muons":
"xAOD::MuonContainer",
"MuonsAux":
"xAOD::MuonAuxContainer",
349 "Electrons":
"xAOD::ElectronContainer",
350 "ElectronsAux":
"xAOD::ElectronAuxContainer",
351 "Photons":
"xAOD::PhotonContainer",
352 "PhotonsAux":
"xAOD::PhotonAuxContainer",
353 "JetETMissNeutralParticleFlowObjects":
"xAOD::FlowElementContainer",
354 "JetETMissNeutralParticleFlowObjectsAux":
"xAOD::FlowElementAuxContainer",
355 "JetETMissChargedParticleFlowObjects":
"xAOD::FlowElementContainer",
356 "JetETMissChargedParticleFlowObjectsAux":
"xAOD::FlowElementAuxContainer",
357 "TauJets":
"xAOD::TauJetContainer",
358 "TauJetsAux":
"xAOD::TauJetAuxContainer",
359 "InDetTrackParticles":
"xAOD::TrackParticleContainer",
360 "InDetTrackParticlesAux":
"xAOD::TrackParticleAuxContainer",
361 "InDetLargeD0TrackParticles":
"xAOD::TrackParticleContainer",
362 "InDetLargeD0TrackParticlesAux":
"xAOD::TrackParticleAuxContainer",
363 "Kt4EMTopoOriginEventShape":
"xAOD::EventShape",
364 "Kt4EMTopoOriginEventShapeAux":
"xAOD::EventShapeAuxInfo",
365 "Kt4LCTopoOriginEventShape":
"xAOD::EventShape",
366 "Kt4LCTopoOriginEventShapeAux":
"xAOD::EventShapeAuxInfo",
367 "NeutralParticleFlowIsoCentralEventShape":
"xAOD::EventShape",
368 "NeutralParticleFlowIsoCentralEventShapeAux":
"xAOD::EventShapeAuxInfo",
369 "NeutralParticleFlowIsoForwardEventShape":
"xAOD::EventShape",
370 "NeutralParticleFlowIsoForwardEventShapeAux":
"xAOD::EventShapeAuxInfo",
371 "TopoClusterIsoCentralEventShape":
"xAOD::EventShape",
372 "TopoClusterIsoCentralEventShapeAux":
"xAOD::EventShapeAuxInfo",
373 "TopoClusterIsoForwardEventShape":
"xAOD::EventShape",
374 "TopoClusterIsoForwardEventShapeAux":
"xAOD::EventShapeAuxInfo"}
376 if flags.Detector.GeometryID:
377 IDTIDESlimmingHelper.AppendToDictionary.update({
378 "PixelClusters":
"xAOD::TrackMeasurementValidationContainer",
379 "PixelClustersAux":
"xAOD::TrackMeasurementValidationAuxContainer",
380 "SCT_Clusters":
"xAOD::TrackMeasurementValidationContainer",
381 "SCT_ClustersAux":
"xAOD::TrackMeasurementValidationAuxContainer"
383 if flags.Detector.GeometryITk:
384 IDTIDESlimmingHelper.AppendToDictionary.update({
385 "ITkPixelMeasurements":
"xAOD::TrackMeasurementValidationContainer",
386 "ITkPixelMeasurementsAux":
"xAOD::TrackMeasurementValidationAuxContainer",
387 "ITkStripMeasurements":
"xAOD::TrackMeasurementValidationContainer",
388 "ITkStripMeasurementsAux":
"xAOD::TrackMeasurementValidationAuxContainer"
391 SmartCollections += [
"Muons",
"Electrons",
"Photons"]
393 AllVariables += [
"EventInfo",
394 "JetETMissNeutralParticleFlowObjects",
395 "JetETMissChargedParticleFlowObjects",
396 "InDetTrackParticles",
397 "InDetLargeD0TrackParticles",
400 "Kt4EMTopoOriginEventShape",
401 "Kt4LCTopoOriginEventShape",
402 "NeutralParticleFlowIsoCentralEventShape",
403 "NeutralParticleFlowIsoForwardEventShape",
404 "TopoClusterIsoCentralEventShape",
405 "TopoClusterIsoForwardEventShape",
407 if flags.Detector.GeometryID:
408 AllVariables += [
"PixelClusters",
"SCT_Clusters"]
409 if flags.Detector.GeometryITk:
410 AllVariables += [
"ITkPixelMeasurements",
"ITkStripMeasurements"]
412 IDTIDESlimmingHelper.AppendToDictionary.update({
413 "Kt4EMPFlowEventShape":
"xAOD::EventShape",
414 "Kt4EMPFlowEventShapeAux":
"xAOD::EventShapeAuxInfo",
415 "PrimaryVertices":
"xAOD::VertexContainer",
416 "PrimaryVerticesAux":
"xAOD::VertexAuxContainer",
417 "InDetTrackParticlesClusterAssociations":
"xAOD::TrackParticleClusterAssociationContainer",
418 "InDetTrackParticlesClusterAssociationsAux":
"xAOD::TrackParticleClusterAssociationAuxContainer",
419 "AntiKt4EMTopoJets":
"xAOD::JetContainer",
420 "AntiKt4EMTopoJetsAux":
"xAOD::JetAuxContainer",
421 "AntiKt4EMPFlowJets":
"xAOD::JetContainer",
422 "AntiKt4EMPFlowJetsAux":
"xAOD::JetAuxContainer"})
424 ExtraVariables += [
"TauJets.ABS_ETA_LEAD_TRACK.ClusterTotalEnergy.ClustersMeanCenterLambda.ClustersMeanEMProbability.ClustersMeanFirstEngDens.ClustersMeanPresamplerFrac.ClustersMeanSecondLambda.EMFracFixed.LeadClusterFrac.NNDecayMode.NNDecayModeProb_1p0n.NNDecayModeProb_1p1n.NNDecayModeProb_1pXn.NNDecayModeProb_3p0n.NNDecayModeProb_3pXn.PFOEngRelDiff.PanTau_DecayModeExtended.UpsilonCluster.absipSigLeadTrk.chargedFELinks.etHotShotWin.etHotShotWinOverPtLeadTrk.etaCombined.hadLeakFracFixed.leadTrackProbHT.mCombined.mu.nConversionTracks.nFakeTracks.nModifiedIsolationTracks.nVtxPU.neutralFELinks.passThinning.phiCombined.ptCombined.ptIntermediateAxisEM.rho"]
425 ExtraVariables += [
"PrimaryVertices.sumPt2.x.y.z"]
427 AllVariables += [
"Kt4EMPFlowEventShape",
428 "InDetTrackParticlesClusterAssociations",
429 "AntiKt4EMTopoJets",
"AntiKt4EMPFlowJets"]
431 if flags.Detector.EnablePixel:
432 IDTIDESlimmingHelper.AppendToDictionary.update(
433 {
'PixelMSOSs':
'xAOD::TrackStateValidationContainer',
434 'PixelMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
435 AllVariables += [
"PixelMSOSs"]
437 if flags.Detector.EnableSCT:
438 IDTIDESlimmingHelper.AppendToDictionary.update(
439 {
'SCT_MSOSs':
'xAOD::TrackStateValidationContainer',
440 'SCT_MSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
441 AllVariables += [
"SCT_MSOSs"]
443 if flags.Detector.EnableTRT:
444 IDTIDESlimmingHelper.AppendToDictionary.update(
445 {
'TRT_MSOSs':
'xAOD::TrackStateValidationContainer',
446 'TRT_MSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
447 AllVariables += [
"TRT_MSOSs"]
449 if flags.Detector.EnableITkPixel:
450 IDTIDESlimmingHelper.AppendToDictionary.update(
451 {
'ITkPixelMSOSs':
'xAOD::TrackStateValidationContainer',
452 'ITkPixelMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
453 AllVariables += [
"ITkPixelMSOSs"]
455 if flags.Detector.EnableITkStrip:
456 IDTIDESlimmingHelper.AppendToDictionary.update(
457 {
'ITkStripMSOSs':
'xAOD::TrackStateValidationContainer',
458 'ITkStripMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
459 AllVariables += [
"ITkStripMSOSs"]
463 IDTIDESlimmingHelper.AppendToDictionary.update({
464 "AntiKt4TruthJets":
"xAOD::JetContainer",
465 "AntiKt4TruthJetsAux":
"xAOD::JetAuxContainer",
466 "InTimeAntiKt4TruthJets":
"xAOD::JetContainer",
467 "InTimeAntiKt4TruthJetsAux":
"xAOD::JetAuxContainer",
468 "JetInputTruthParticles":
"xAOD::TruthParticleContainer",
469 "JetInputTruthParticlesNoWZ":
"xAOD::TruthParticleContainer",
470 "TruthEvents":
"xAOD::TruthEventContainer",
471 "TruthEventsAux":
"xAOD::TruthEventAuxContainer",
472 "TruthParticles":
"xAOD::TruthParticleContainer",
473 "TruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
474 "egammaTruthParticles":
"xAOD::TruthParticleContainer",
475 "egammaTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
476 "MuonTruthParticles":
"xAOD::TruthParticleContainer",
477 "MuonTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
478 "LRTegammaTruthParticles":
"xAOD::TruthParticleContainer",
479 "LRTegammaTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
480 "TruthVertices":
"xAOD::TruthVertexContainer",
481 "TruthVerticesAux":
"xAOD::TruthVertexAuxContainer"})
483 AllVariables += [
"AntiKt4TruthJets",
484 "InTimeAntiKt4TruthJets",
485 "JetInputTruthParticles",
486 "JetInputTruthParticlesNoWZ",
489 "egammaTruthParticles",
490 "MuonTruthParticles",
491 "LRTegammaTruthParticles",
494 list_aux = [
"BHadronsFinal",
"BHadronsInitial",
"BQuarksFinal",
495 "CHadronsFinal",
"CHadronsInitial",
"CQuarksFinal",
496 "HBosons",
"Partons",
"TQuarksFinal",
"TausFinal",
497 "WBosons",
"ZBosons"]
498 for item
in list_aux:
499 label =
"TruthLabel"+item
500 labelAux = label+
"Aux"
501 IDTIDESlimmingHelper.AppendToDictionary.update(
502 {label:
"xAOD::TruthParticleContainer",
503 labelAux:
"xAOD::TruthParticleAuxContainer"})
504 AllVariables += [label]
508 IDTIDESlimmingHelper.IncludeTriggerNavigation =
True
509 IDTIDESlimmingHelper.IncludeAdditionalTriggerContent =
True
511 IDTIDESlimmingHelper.AllVariables = AllVariables
512 IDTIDESlimmingHelper.StaticContent = StaticContent
513 IDTIDESlimmingHelper.SmartCollections = SmartCollections
514 IDTIDESlimmingHelper.ExtraVariables = ExtraVariables
517 IDTIDEItemList = IDTIDESlimmingHelper.GetItemList()
519 ItemList=IDTIDEItemList, AcceptAlgs=[
"IDTIDEKernel"]))
521 flags,
"DAOD_IDTIDE", AcceptAlgs=[
"IDTIDEKernel"],
522 createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TriggerMenuMetaData]))