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",
423 "BTagging_AntiKt4EMTopo":
"xAOD::BTaggingContainer",
424 "BTagging_AntiKt4EMTopoAux":
"xAOD::BTaggingAuxContainer",
425 "BTagging_AntiKt4EMPFlow":
"xAOD::BTaggingContainer",
426 "BTagging_AntiKt4EMPFlowAux":
"xAOD::BTaggingAuxContainer"})
428 ExtraVariables += [
"TauJets.ABS_ETA_LEAD_TRACK.ClusterTotalEnergy.ClustersMeanCenterLambda.ClustersMeanEMProbability.ClustersMeanFirstEngDens.ClustersMeanPresamplerFrac.ClustersMeanSecondLambda.EMFRACTIONATEMSCALE_MOVEE3.EMFracFixed.GhostMuonSegmentCount.LeadClusterFrac.NNDecayMode.NNDecayModeProb_1p0n.NNDecayModeProb_1p1n.NNDecayModeProb_1pXn.NNDecayModeProb_3p0n.NNDecayModeProb_3pXn.PFOEngRelDiff.PanTau_DecayModeExtended.TAU_ABSDELTAETA.TAU_ABSDELTAPHI.TAU_SEEDTRK_SECMAXSTRIPETOVERPT.UpsilonCluster.absipSigLeadTrk.chargedFELinks.etHotShotDR1.etHotShotDR1OverPtLeadTrk.etHotShotWin.etHotShotWinOverPtLeadTrk.etaCombined.hadLeakFracFixed.leadTrackProbHT.mCombined.mu.nConversionTracks.nFakeTracks.nModifiedIsolationTracks.nVtxPU.neutralFELinks.passThinning.phiCombined.ptCombined.ptIntermediateAxisEM.rho"]
429 ExtraVariables += [
"PrimaryVertices.sumPt2.x.y.z"]
431 AllVariables += [
"Kt4EMPFlowEventShape",
432 "InDetTrackParticlesClusterAssociations",
433 "AntiKt4EMTopoJets",
"AntiKt4EMPFlowJets",
434 "BTagging_AntiKt4EMTopo",
"BTagging_AntiKt4EMPFlow"]
436 if flags.Detector.EnablePixel:
437 IDTIDESlimmingHelper.AppendToDictionary.update(
438 {
'PixelMSOSs':
'xAOD::TrackStateValidationContainer',
439 'PixelMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
440 AllVariables += [
"PixelMSOSs"]
442 if flags.Detector.EnableSCT:
443 IDTIDESlimmingHelper.AppendToDictionary.update(
444 {
'SCT_MSOSs':
'xAOD::TrackStateValidationContainer',
445 'SCT_MSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
446 AllVariables += [
"SCT_MSOSs"]
448 if flags.Detector.EnableTRT:
449 IDTIDESlimmingHelper.AppendToDictionary.update(
450 {
'TRT_MSOSs':
'xAOD::TrackStateValidationContainer',
451 'TRT_MSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
452 AllVariables += [
"TRT_MSOSs"]
454 if flags.Detector.EnableITkPixel:
455 IDTIDESlimmingHelper.AppendToDictionary.update(
456 {
'ITkPixelMSOSs':
'xAOD::TrackStateValidationContainer',
457 'ITkPixelMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
458 AllVariables += [
"ITkPixelMSOSs"]
460 if flags.Detector.EnableITkStrip:
461 IDTIDESlimmingHelper.AppendToDictionary.update(
462 {
'ITkStripMSOSs':
'xAOD::TrackStateValidationContainer',
463 'ITkStripMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
464 AllVariables += [
"ITkStripMSOSs"]
468 IDTIDESlimmingHelper.AppendToDictionary.update({
469 "AntiKt4TruthJets":
"xAOD::JetContainer",
470 "AntiKt4TruthJetsAux":
"xAOD::JetAuxContainer",
471 "InTimeAntiKt4TruthJets":
"xAOD::JetContainer",
472 "InTimeAntiKt4TruthJetsAux":
"xAOD::JetAuxContainer",
473 "JetInputTruthParticles":
"xAOD::TruthParticleContainer",
474 "JetInputTruthParticlesNoWZ":
"xAOD::TruthParticleContainer",
475 "TruthEvents":
"xAOD::TruthEventContainer",
476 "TruthEventsAux":
"xAOD::TruthEventAuxContainer",
477 "TruthParticles":
"xAOD::TruthParticleContainer",
478 "TruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
479 "egammaTruthParticles":
"xAOD::TruthParticleContainer",
480 "egammaTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
481 "MuonTruthParticles":
"xAOD::TruthParticleContainer",
482 "MuonTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
483 "LRTegammaTruthParticles":
"xAOD::TruthParticleContainer",
484 "LRTegammaTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
485 "TruthVertices":
"xAOD::TruthVertexContainer",
486 "TruthVerticesAux":
"xAOD::TruthVertexAuxContainer"})
488 AllVariables += [
"AntiKt4TruthJets",
489 "InTimeAntiKt4TruthJets",
490 "JetInputTruthParticles",
491 "JetInputTruthParticlesNoWZ",
494 "egammaTruthParticles",
495 "MuonTruthParticles",
496 "LRTegammaTruthParticles",
499 list_aux = [
"BHadronsFinal",
"BHadronsInitial",
"BQuarksFinal",
500 "CHadronsFinal",
"CHadronsInitial",
"CQuarksFinal",
501 "HBosons",
"Partons",
"TQuarksFinal",
"TausFinal",
502 "WBosons",
"ZBosons"]
503 for item
in list_aux:
504 label =
"TruthLabel"+item
505 labelAux = label+
"Aux"
506 IDTIDESlimmingHelper.AppendToDictionary.update(
507 {label:
"xAOD::TruthParticleContainer",
508 labelAux:
"xAOD::TruthParticleAuxContainer"})
509 AllVariables += [label]
513 IDTIDESlimmingHelper.IncludeTriggerNavigation =
True
514 IDTIDESlimmingHelper.IncludeAdditionalTriggerContent =
True
516 IDTIDESlimmingHelper.AllVariables = AllVariables
517 IDTIDESlimmingHelper.StaticContent = StaticContent
518 IDTIDESlimmingHelper.SmartCollections = SmartCollections
519 IDTIDESlimmingHelper.ExtraVariables = ExtraVariables
522 IDTIDEItemList = IDTIDESlimmingHelper.GetItemList()
524 ItemList=IDTIDEItemList, AcceptAlgs=[
"IDTIDEKernel"]))
526 flags,
"DAOD_IDTIDE", AcceptAlgs=[
"IDTIDEKernel"],
527 createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TriggerMenuMetaData]))