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)
72 if not flags.Input.isMC:
74 sel_jet600 =
'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 600.*GeV'
75 sel_jet800 =
'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 800.*GeV'
76 sel_jet1000 =
'AntiKt4EMPFlowJets.JetConstitScaleMomentum_pt >= 1000.*GeV'
78 desd_jetA =
'( HLT_j110_pf_ftf_preselj80_L1J30 || HLT_j175_pf_ftf_preselj140_L1J50 || HLT_j260_pf_ftf_preselj200_L1J75 )'
79 desd_jetC =
'( HLT_j360_pf_ftf_preselj225_L1J100 )'
80 desd_jetD =
'( HLT_j420_pf_ftf_preselj225_L1J100 && !HLT_j460_pf_ftf_preselj225_L1J100 )'
81 desd_jetE =
'( HLT_j460_pf_ftf_preselj225_L1J100 )'
82 desd_jetF =
'( HLT_j460_pf_ftf_preselj225_L1J100 && count(' + \
83 sel_jet600+
')>0 && count('+sel_jet800+
')==0 )'
84 desd_jetG =
'( HLT_j460_pf_ftf_preselj225_L1J100 && count(' + \
85 sel_jet800+
')>0 && count('+sel_jet1000+
')==0 )'
86 desd_jetH =
'( HLT_j460_pf_ftf_preselj225_L1J100 && count('+sel_jet1000+
')>0 )'
96 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
97 xAODStringSkimmingToolCfg,
99 FilterCombinationANDCfg,
100 FilterCombinationORCfg)
102 IDTIDE_SkimmingToolA = acc.getPrimaryAndMerge(
104 expression=desd_jetA))
106 flags, name=
"IDTIDE_PrescaleToolA", Prescale=prescaleA))
108 flags, name=
"IDTIDE_ANDToolA",
109 FilterList=[IDTIDE_SkimmingToolA, IDTIDE_PrescaleToolA]))
111 IDTIDE_SkimmingToolC = acc.getPrimaryAndMerge(
113 expression=desd_jetC))
115 flags, name=
"IDTIDE_PrescaleToolC", Prescale=prescaleC))
117 flags, name=
"IDTIDE_ANDToolC",
118 FilterList=[IDTIDE_SkimmingToolC, IDTIDE_PrescaleToolC]))
120 IDTIDE_SkimmingToolD = acc.getPrimaryAndMerge(
122 expression=desd_jetD))
124 flags, name=
"IDTIDE_PrescaleToolD", Prescale=prescaleD))
126 flags, name=
"IDTIDE_ANDToolD",
127 FilterList=[IDTIDE_SkimmingToolD, IDTIDE_PrescaleToolD]))
129 IDTIDE_SkimmingToolE = acc.getPrimaryAndMerge(
131 expression=desd_jetE))
133 flags, name=
"IDTIDE_PrescaleToolE", Prescale=prescaleE))
135 flags, name=
"IDTIDE_ANDToolE",
136 FilterList=[IDTIDE_SkimmingToolE, IDTIDE_PrescaleToolE]))
138 IDTIDE_SkimmingToolF = acc.getPrimaryAndMerge(
140 expression=desd_jetF))
142 flags, name=
"IDTIDE_PrescaleToolF", Prescale=prescaleF))
144 flags, name=
"IDTIDE_ANDToolF",
145 FilterList=[IDTIDE_SkimmingToolF, IDTIDE_PrescaleToolF]))
147 IDTIDE_SkimmingToolG = acc.getPrimaryAndMerge(
149 expression=desd_jetG))
151 flags, name=
"IDTIDE_PrescaleToolG", Prescale=prescaleG))
153 flags, name=
"IDTIDE_ANDToolG",
154 FilterList=[IDTIDE_SkimmingToolG, IDTIDE_PrescaleToolG]))
156 IDTIDE_SkimmingToolH = acc.getPrimaryAndMerge(
158 expression=desd_jetH))
161 flags, name=
"IDTIDELogicalCombination",
162 FilterList=[IDTIDE_ANDToolA, IDTIDE_ANDToolC, IDTIDE_ANDToolD,
163 IDTIDE_ANDToolE, IDTIDE_ANDToolF,
164 IDTIDE_ANDToolG, IDTIDE_SkimmingToolH]))
166 skimmingTools.append(IDTIDE_ORTool)
170 CompFactory.DerivationFramework.DerivationKernel(
171 "IDTIDEKernelPresel", SkimmingTools=skimmingTools))
176 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
178 AugmentationTools=augmentationTools,
179 SkimmingTools=skimmingTools,
181 RunSkimmingFirst=
True,
196 if flags.Detector.GeometryID:
197 from DerivationFrameworkInDet.InDetToolsConfig
import (
198 IDTIDEThinningToolCfg)
199 thinningTools.append(acc.getPrimaryAndMerge(
201 if flags.Detector.GeometryITk:
202 from DerivationFrameworkInDet.InDetToolsConfig
import (
203 ITkTIDEThinningToolCfg)
204 thinningTools.append(acc.getPrimaryAndMerge(
209 from DerivationFrameworkInDet.InDetToolsConfig
import (
210 IDTIDETruthThinningToolCfg)
211 thinningTools.append(acc.getPrimaryAndMerge(
214 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
216 AugmentationTools=[],
217 ThinningTools=thinningTools,
222 """Configure the derivation framework driving algorithm (kernel) for IDTIDE"""
228 IDTIDEPreselSequenceName=
'IDTIDEPreselSequence'
229 acc.addSequence(
seqAND(IDTIDEPreselSequenceName))
250 IDTIDEPreselAlgSequenceName=
'IDTIDEPreselAlgSequence'
251 acc.addSequence(
parAND(IDTIDEPreselAlgSequenceName),
252 parentName=IDTIDEPreselSequenceName)
254 from InDetConfig.InDetPrepRawDataToxAODConfig
import InDetPrepDataToxAODCfg
256 sequenceName=IDTIDEPreselAlgSequenceName)
258 IDTIDEPostProcSequenceName=
'IDTIDEPostProcSequence'
259 acc.addSequence(
parAND(IDTIDEPostProcSequenceName),
260 parentName=IDTIDEPreselSequenceName)
262 from DerivationFrameworkInDet.InDetToolsConfig
import (
263 DFInDetTSOSKernelCfg)
265 sequenceName=IDTIDEPostProcSequenceName)
267 sequenceName=IDTIDEPostProcSequenceName)
271 """Configure the derivation framework driving algorithm (kernel) for IDTIDE"""
274 IDTIDEPreselSequenceName=
'IDTIDEPreselSequence'
275 acc.addSequence(
seqAND(IDTIDEPreselSequenceName))
279 IDTIDEPreselAlgSequenceName=
'IDTIDEPreselAlgSequence'
280 acc.addSequence(
parAND(IDTIDEPreselAlgSequenceName),
281 parentName=IDTIDEPreselSequenceName)
283 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkPrepDataToxAODCfg
285 sequenceName=IDTIDEPreselAlgSequenceName)
287 IDTIDEPostProcSequenceName=
'IDTIDEPostProcSequence'
288 acc.addSequence(
parAND(IDTIDEPostProcSequenceName),
289 parentName=IDTIDEPreselSequenceName)
294 if not flags.Tracking.writeExtendedSi_PRDInfo:
295 from DerivationFrameworkInDet.InDetToolsConfig
import DFITkTSOSKernelCfg
297 sequenceName=IDTIDEPostProcSequenceName)
299 sequenceName=IDTIDEPostProcSequenceName)
305 """Main config fragment for IDTIDE"""
309 if flags.Detector.GeometryID:
311 if flags.Detector.GeometryITk:
317 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
318 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
319 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
321 "IDTIDESlimmingHelper",
322 NamesAndTypes=flags.Input.TypedCollections,
327 SmartCollections = []
330 IDTIDESlimmingHelper.AppendToDictionary.update({
331 "EventInfo":
"xAOD::EventInfo",
"EventInfoAux":
"xAOD::EventAuxInfo",
332 "Muons":
"xAOD::MuonContainer",
"MuonsAux":
"xAOD::MuonAuxContainer",
333 "Electrons":
"xAOD::ElectronContainer",
334 "ElectronsAux":
"xAOD::ElectronAuxContainer",
335 "Photons":
"xAOD::PhotonContainer",
336 "PhotonsAux":
"xAOD::PhotonAuxContainer",
337 "JetETMissNeutralParticleFlowObjects":
"xAOD::FlowElementContainer",
338 "JetETMissNeutralParticleFlowObjectsAux":
"xAOD::FlowElementAuxContainer",
339 "JetETMissChargedParticleFlowObjects":
"xAOD::FlowElementContainer",
340 "JetETMissChargedParticleFlowObjectsAux":
"xAOD::FlowElementAuxContainer",
341 "TauJets":
"xAOD::TauJetContainer",
342 "TauJetsAux":
"xAOD::TauJetAuxContainer",
343 "InDetTrackParticles":
"xAOD::TrackParticleContainer",
344 "InDetTrackParticlesAux":
"xAOD::TrackParticleAuxContainer",
345 "InDetLargeD0TrackParticles":
"xAOD::TrackParticleContainer",
346 "InDetLargeD0TrackParticlesAux":
"xAOD::TrackParticleAuxContainer",
347 "Kt4EMTopoOriginEventShape":
"xAOD::EventShape",
348 "Kt4EMTopoOriginEventShapeAux":
"xAOD::EventShapeAuxInfo",
349 "Kt4LCTopoOriginEventShape":
"xAOD::EventShape",
350 "Kt4LCTopoOriginEventShapeAux":
"xAOD::EventShapeAuxInfo",
351 "NeutralParticleFlowIsoCentralEventShape":
"xAOD::EventShape",
352 "NeutralParticleFlowIsoCentralEventShapeAux":
"xAOD::EventShapeAuxInfo",
353 "NeutralParticleFlowIsoForwardEventShape":
"xAOD::EventShape",
354 "NeutralParticleFlowIsoForwardEventShapeAux":
"xAOD::EventShapeAuxInfo",
355 "TopoClusterIsoCentralEventShape":
"xAOD::EventShape",
356 "TopoClusterIsoCentralEventShapeAux":
"xAOD::EventShapeAuxInfo",
357 "TopoClusterIsoForwardEventShape":
"xAOD::EventShape",
358 "TopoClusterIsoForwardEventShapeAux":
"xAOD::EventShapeAuxInfo"}
360 if flags.Detector.GeometryID:
361 IDTIDESlimmingHelper.AppendToDictionary.update({
362 "PixelClusters":
"xAOD::TrackMeasurementValidationContainer",
363 "PixelClustersAux":
"xAOD::TrackMeasurementValidationAuxContainer",
364 "SCT_Clusters":
"xAOD::TrackMeasurementValidationContainer",
365 "SCT_ClustersAux":
"xAOD::TrackMeasurementValidationAuxContainer"
367 if flags.Detector.GeometryITk:
368 IDTIDESlimmingHelper.AppendToDictionary.update({
369 "ITkPixelClusters":
"xAOD::TrackMeasurementValidationContainer",
370 "ITkPixelClustersAux":
"xAOD::TrackMeasurementValidationAuxContainer",
371 "ITkStripClusters":
"xAOD::TrackMeasurementValidationContainer",
372 "ITkStripClustersAux":
"xAOD::TrackMeasurementValidationAuxContainer"
375 SmartCollections += [
"Muons",
"Electrons",
"Photons"]
377 AllVariables += [
"EventInfo",
378 "JetETMissNeutralParticleFlowObjects",
379 "JetETMissChargedParticleFlowObjects",
380 "InDetTrackParticles",
381 "InDetLargeD0TrackParticles",
384 "Kt4EMTopoOriginEventShape",
385 "Kt4LCTopoOriginEventShape",
386 "NeutralParticleFlowIsoCentralEventShape",
387 "NeutralParticleFlowIsoForwardEventShape",
388 "TopoClusterIsoCentralEventShape",
389 "TopoClusterIsoForwardEventShape",
391 if flags.Detector.GeometryID:
392 AllVariables += [
"PixelClusters",
"SCT_Clusters"]
393 if flags.Detector.GeometryITk:
394 AllVariables += [
"ITkPixelClusters",
"ITkStripClusters"]
396 IDTIDESlimmingHelper.AppendToDictionary.update({
397 "Kt4EMPFlowEventShape":
"xAOD::EventShape",
398 "Kt4EMPFlowEventShapeAux":
"xAOD::EventShapeAuxInfo",
399 "PrimaryVertices":
"xAOD::VertexContainer",
400 "PrimaryVerticesAux":
"xAOD::VertexAuxContainer",
401 "InDetTrackParticlesClusterAssociations":
"xAOD::TrackParticleClusterAssociationContainer",
402 "InDetTrackParticlesClusterAssociationsAux":
"xAOD::TrackParticleClusterAssociationAuxContainer",
403 "AntiKt4EMTopoJets":
"xAOD::JetContainer",
404 "AntiKt4EMTopoJetsAux":
"xAOD::JetAuxContainer",
405 "AntiKt4EMPFlowJets":
"xAOD::JetContainer",
406 "AntiKt4EMPFlowJetsAux":
"xAOD::JetAuxContainer",
407 "BTagging_AntiKt4EMTopo":
"xAOD::BTaggingContainer",
408 "BTagging_AntiKt4EMTopoAux":
"xAOD::BTaggingAuxContainer",
409 "BTagging_AntiKt4EMPFlow":
"xAOD::BTaggingContainer",
410 "BTagging_AntiKt4EMPFlowAux":
"xAOD::BTaggingAuxContainer"})
412 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"]
413 ExtraVariables += [
"PrimaryVertices.sumPt2.x.y.z"]
415 AllVariables += [
"Kt4EMPFlowEventShape",
416 "InDetTrackParticlesClusterAssociations",
417 "AntiKt4EMTopoJets",
"AntiKt4EMPFlowJets",
418 "BTagging_AntiKt4EMTopo",
"BTagging_AntiKt4EMPFlow"]
420 if flags.Detector.EnablePixel:
421 IDTIDESlimmingHelper.AppendToDictionary.update(
422 {
'PixelMSOSs':
'xAOD::TrackStateValidationContainer',
423 'PixelMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
424 AllVariables += [
"PixelMSOSs"]
426 if flags.Detector.EnableSCT:
427 IDTIDESlimmingHelper.AppendToDictionary.update(
428 {
'SCT_MSOSs':
'xAOD::TrackStateValidationContainer',
429 'SCT_MSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
430 AllVariables += [
"SCT_MSOSs"]
432 if flags.Detector.EnableTRT:
433 IDTIDESlimmingHelper.AppendToDictionary.update(
434 {
'TRT_MSOSs':
'xAOD::TrackStateValidationContainer',
435 'TRT_MSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
436 AllVariables += [
"TRT_MSOSs"]
438 if flags.Detector.EnableITkPixel:
439 IDTIDESlimmingHelper.AppendToDictionary.update(
440 {
'ITkPixelMSOSs':
'xAOD::TrackStateValidationContainer',
441 'ITkPixelMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
442 AllVariables += [
"ITkPixelMSOSs"]
444 if flags.Detector.EnableITkStrip:
445 IDTIDESlimmingHelper.AppendToDictionary.update(
446 {
'ITkStripMSOSs':
'xAOD::TrackStateValidationContainer',
447 'ITkStripMSOSsAux':
'xAOD::TrackStateValidationAuxContainer'})
448 AllVariables += [
"ITkStripMSOSs"]
452 IDTIDESlimmingHelper.AppendToDictionary.update({
453 "AntiKt4TruthJets":
"xAOD::JetContainer",
454 "AntiKt4TruthJetsAux":
"xAOD::JetAuxContainer",
455 "JetInputTruthParticles":
"xAOD::TruthParticleContainer",
456 "JetInputTruthParticlesNoWZ":
"xAOD::TruthParticleContainer",
457 "TruthEvents":
"xAOD::TruthEventContainer",
458 "TruthEventsAux":
"xAOD::TruthEventAuxContainer",
459 "TruthParticles":
"xAOD::TruthParticleContainer",
460 "TruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
461 "egammaTruthParticles":
"xAOD::TruthParticleContainer",
462 "egammaTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
463 "MuonTruthParticles":
"xAOD::TruthParticleContainer",
464 "MuonTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
465 "LRTegammaTruthParticles":
"xAOD::TruthParticleContainer",
466 "LRTegammaTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
467 "TruthVertices":
"xAOD::TruthVertexContainer",
468 "TruthVerticesAux":
"xAOD::TruthVertexAuxContainer"})
470 AllVariables += [
"AntiKt4TruthJets",
471 "JetInputTruthParticles",
472 "JetInputTruthParticlesNoWZ",
475 "egammaTruthParticles",
476 "MuonTruthParticles",
477 "LRTegammaTruthParticles",
480 list_aux = [
"BHadronsFinal",
"BHadronsInitial",
"BQuarksFinal",
481 "CHadronsFinal",
"CHadronsInitial",
"CQuarksFinal",
482 "HBosons",
"Partons",
"TQuarksFinal",
"TausFinal",
483 "WBosons",
"ZBosons"]
484 for item
in list_aux:
485 label =
"TruthLabel"+item
486 labelAux = label+
"Aux"
487 IDTIDESlimmingHelper.AppendToDictionary.update(
488 {label:
"xAOD::TruthParticleContainer",
489 labelAux:
"xAOD::TruthParticleAuxContainer"})
490 AllVariables += [label]
494 IDTIDESlimmingHelper.IncludeTriggerNavigation =
True
495 IDTIDESlimmingHelper.IncludeAdditionalTriggerContent =
True
497 IDTIDESlimmingHelper.AllVariables = AllVariables
498 IDTIDESlimmingHelper.StaticContent = StaticContent
499 IDTIDESlimmingHelper.SmartCollections = SmartCollections
500 IDTIDESlimmingHelper.ExtraVariables = ExtraVariables
503 IDTIDEItemList = IDTIDESlimmingHelper.GetItemList()
505 ItemList=IDTIDEItemList, AcceptAlgs=[
"IDTIDEKernel"]))
507 flags,
"DAOD_IDTIDE", AcceptAlgs=[
"IDTIDEKernel"],
508 createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TriggerMenuMetaData]))