10 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
11 from AthenaConfiguration.ComponentFactory
import CompFactory
12 from AthenaConfiguration.Enums
import MetadataCategory
13 from AthenaCommon.CFElements
import seqAND
16 IDTRKVALID_AOD_EXCLUDED_AUXDATA = [
'IDTRKVALID_'+var
for var
in [
24 'biased_PVz0SigmaSinTheta',
26 'unbiased_PVz0SigmaSinTheta',
28 'biased_z0SigmaSinTheta',
31 'unbiased_z0SigmaSinTheta',
34 'unbiased_z0SinTheta' ] ]
41 sel_muon1 =
'Muons.pt > 25*GeV && Muons.ptcone40/Muons.pt < 0.3 && Muons.passesIDCuts'
42 sel_muon2 =
'Muons.pt > 20*GeV && Muons.ptcone40/Muons.pt < 0.3 && Muons.passesIDCuts'
43 draw_zmumu =
'( count ( DRZmumuMass > 70*GeV && DRZmumuMass < 110*GeV ) >= 1 )'
44 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
45 InvariantMassToolCfg, xAODStringSkimmingToolCfg,
46 FilterCombinationANDCfg)
48 flags, name=
"IDTRKVALID_ZmumuMass",
49 ContainerName =
"Muon",
50 ObjectRequirements = sel_muon1,
51 SecondObjectRequirements = sel_muon2,
52 MassHypothesis = 105.66,
53 SecondMassHypothesis = 105.66,
54 StoreGateEntryName =
"DRZmumuMass"))
56 IDTRKVALID_SkimmingTool = acc.getPrimaryAndMerge(
58 expression=draw_zmumu))
60 IDTRKVALID_ANDTool = acc.getPrimaryAndMerge(
62 FilterList=[IDTRKVALID_ZmumuMass,
63 IDTRKVALID_SkimmingTool]))
65 acc.addPublicTool(IDTRKVALID_ANDTool, primary=
True)
75 augmentationTools = []
77 if flags.Tracking.doVertexFinding:
79 from DerivationFrameworkInDet.InDetToolsConfig
import (
80 TrackToVertexWrapperCfg)
81 IDTRKVALIDTrackToVertexWrapper = acc.getPrimaryAndMerge(
83 flags, name=
"IDTRKVALIDTrackToVertexWrapper",
84 DecorationPrefix=
"IDTRKVALID"))
85 augmentationTools.append(IDTRKVALIDTrackToVertexWrapper)
87 from DerivationFrameworkInDet.InDetToolsConfig
import (
88 UsedInVertexFitTrackDecoratorCfg)
89 IDTRKVALIDUsedInFitDecorator = acc.getPrimaryAndMerge(
91 augmentationTools.append(IDTRKVALIDUsedInFitDecorator)
94 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParametersAtPVCfg
96 flags, name=
"IDTRKVALID_DFCommonZ0AtPV",
97 Z0SGEntryName=
"IDTRKVALIDInDetTrackZ0AtPV"))
98 augmentationTools.append(DFCommonZ0AtPV)
104 if flags.InDet.DRAWZSelection:
106 skimmingTools.append(IDTRKVALID_ANDTool)
112 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
114 AugmentationTools = augmentationTools,
115 SkimmingTools = skimmingTools,
117 RunSkimmingFirst =
True))
122 flags, name='IDTRKVALID_PixelModuleStatus_Kernel'):
126 augmentationTools = []
127 from DerivationFrameworkInDet.PixelNtupleMakerConfig
import (
128 EventInfoPixelModuleStatusMonitoringCfg)
130 augmentationTools.append(DFEI)
135 flags, name='IDTRKVALID_ITkPixelModuleStatus_Kernel'):
139 augmentationTools = []
140 from DerivationFrameworkInDet.PixelNtupleMakerConfig
import (
141 ITkEventInfoPixelModuleStatusMonitoringCfg)
142 DFEI = acc.getPrimaryAndMerge(
144 augmentationTools.append(DFEI)
149 flags, name="IDTRKVALIDThinningKernel", StreamName=""):
159 from DerivationFrameworkInDet.InDetToolsConfig
import (
160 IDTRKVALIDTruthThinningToolCfg)
161 thinningTools.append(acc.getPrimaryAndMerge(
164 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
166 AugmentationTools=[],
167 ThinningTools=thinningTools,
173 """Configure the derivation framework driving algorithm (kernel) for IDTRKVALID"""
176 IDTRKVALIDSequenceName=
'IDTRKVALIDSequence'
177 acc.addSequence(
seqAND(IDTRKVALIDSequenceName))
180 sequenceName=IDTRKVALIDSequenceName)
183 sequenceName=IDTRKVALIDSequenceName)
185 from InDetConfig.InDetPrepRawDataToxAODConfig
import InDetPrepDataToxAODCfg
187 sequenceName=IDTRKVALIDSequenceName)
189 from DerivationFrameworkInDet.InDetToolsConfig
import DFInDetTSOSKernelCfg
191 sequenceName=IDTRKVALIDSequenceName)
194 sequenceName=IDTRKVALIDSequenceName)
199 """Configure the derivation framework driving algorithm (kernel) for IDTRKVALID"""
202 IDTRKVALIDSequenceName=
'IDTRKVALIDSequence'
203 acc.addSequence(
seqAND(IDTRKVALIDSequenceName))
206 sequenceName=IDTRKVALIDSequenceName)
209 sequenceName=IDTRKVALIDSequenceName)
211 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkPrepDataToxAODCfg
213 sequenceName=IDTRKVALIDSequenceName)
218 if not flags.Tracking.writeExtendedSi_PRDInfo:
219 from DerivationFrameworkInDet.InDetToolsConfig
import DFITkTSOSKernelCfg
221 sequenceName=IDTRKVALIDSequenceName)
224 sequenceName=IDTRKVALIDSequenceName)
230 """Main config fragment for IDTRKVALID"""
234 if flags.Detector.GeometryID:
236 if flags.Detector.GeometryITk:
242 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
243 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
244 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
246 "IDTRKVALIDSlimmingHelper",
247 NamesAndTypes = flags.Input.TypedCollections,
252 SmartCollections = []
255 IDTRKVALIDSlimmingHelper.AppendToDictionary.update({
256 "EventInfo":
"xAOD::EventInfo",
"EventInfoAux":
"xAOD::EventAuxInfo",
257 "Muons":
"xAOD::MuonContainer",
"MuonsAux":
"xAOD::MuonAuxContainer",
258 "Electrons":
"xAOD::ElectronContainer",
259 "ElectronsAux":
"xAOD::ElectronAuxContainer",
260 "Photons":
"xAOD::PhotonContainer",
261 "PhotonsAux":
"xAOD::PhotonAuxContainer",
262 "JetETMissNeutralParticleFlowObjects":
"xAOD::FlowElementContainer",
263 "JetETMissNeutralParticleFlowObjectsAux":
"xAOD::FlowElementAuxContainer",
264 "JetETMissChargedParticleFlowObjects":
"xAOD::FlowElementContainer",
265 "JetETMissChargedParticleFlowObjectsAux":
"xAOD::FlowElementAuxContainer",
266 "TauJets":
"xAOD::TauJetContainer",
267 "TauJetsAux":
"xAOD::TauJetAuxContainer",
268 "InDetTrackParticles":
"xAOD::TrackParticleContainer",
269 "InDetTrackParticlesAux":
"xAOD::TrackParticleAuxContainer",
270 "InDetLargeD0TrackParticles":
"xAOD::TrackParticleContainer",
271 "InDetLargeD0TrackParticlesAux":
"xAOD::TrackParticleAuxContainer",
272 "Kt4EMTopoOriginEventShape":
"xAOD::EventShape",
273 "Kt4EMTopoOriginEventShapeAux":
"xAOD::EventShapeAuxInfo",
274 "Kt4LCTopoOriginEventShape":
"xAOD::EventShape",
275 "Kt4LCTopoOriginEventShapeAux":
"xAOD::EventShapeAuxInfo",
276 "NeutralParticleFlowIsoCentralEventShape":
"xAOD::EventShape",
277 "NeutralParticleFlowIsoCentralEventShapeAux":
"xAOD::EventShapeAuxInfo",
278 "NeutralParticleFlowIsoForwardEventShape":
"xAOD::EventShape",
279 "NeutralParticleFlowIsoForwardEventShapeAux":
"xAOD::EventShapeAuxInfo",
280 "TopoClusterIsoCentralEventShape":
"xAOD::EventShape",
281 "TopoClusterIsoCentralEventShapeAux":
"xAOD::EventShapeAuxInfo",
282 "TopoClusterIsoForwardEventShape":
"xAOD::EventShape",
283 "TopoClusterIsoForwardEventShapeAux":
"xAOD::EventShapeAuxInfo",
284 "MET_Calo":
"xAOD::MissingETContainer",
285 "MET_CaloAux":
"xAOD::MissingETAuxContainer",
286 "MET_Track":
"xAOD::MissingETContainer",
287 "MET_TrackAux":
"xAOD::MissingETAuxContainer",
288 "MET_LocHadTopo":
"xAOD::MissingETContainer",
289 "MET_LocHadTopoRegions":
"xAOD::MissingETContainer",
290 "MET_LocHadTopoAux":
"xAOD::MissingETAuxContainer",
291 "MET_LocHadTopoRegionsAux":
"xAOD::MissingETAuxContainer",
292 "MET_Core_AntiKt4LCTopo":
"xAOD::MissingETContainer",
293 "MET_Reference_AntiKt4LCTopo":
"xAOD::MissingETContainer",
294 "MET_Core_AntiKt4LCTopoAux":
"xAOD::MissingETAuxContainer",
295 "MET_Reference_AntiKt4LCTopoAux":
"xAOD::MissingETAuxContainer"})
297 if flags.Detector.GeometryID:
298 if flags.InDet.DAODStorePixel:
299 IDTRKVALIDSlimmingHelper.AppendToDictionary.update({
300 "PixelClusters":
"xAOD::TrackMeasurementValidationContainer",
301 "PixelClustersAux":
"xAOD::TrackMeasurementValidationAuxContainer",
302 "PixelMSOSs":
"xAOD::TrackStateValidationContainer",
303 "PixelMSOSsAux":
"xAOD::TrackStateValidationAuxContainer"
305 if flags.InDet.DAODStoreSCT:
306 IDTRKVALIDSlimmingHelper.AppendToDictionary.update({
307 "SCT_Clusters":
"xAOD::TrackMeasurementValidationContainer",
308 "SCT_ClustersAux":
"xAOD::TrackMeasurementValidationAuxContainer",
309 "SCT_MSOSs":
"xAOD::TrackStateValidationContainer",
310 "SCT_MSOSsAux":
"xAOD::TrackStateValidationAuxContainer"
313 if flags.Detector.GeometryITk:
314 if flags.ITk.DAODStorePixel:
315 IDTRKVALIDSlimmingHelper.AppendToDictionary.update({
316 "ITkPixelMeasurements":
"xAOD::TrackMeasurementValidationContainer",
317 "ITkPixelMeasurementsAux":
"xAOD::TrackMeasurementValidationAuxContainer",
318 "ITkPixelMSOSs":
"xAOD::TrackStateValidationContainer",
319 "ITkPixelMSOSsAux":
"xAOD::TrackStateValidationAuxContainer"
321 if flags.ITk.DAODStoreStrip:
322 IDTRKVALIDSlimmingHelper.AppendToDictionary.update({
323 "ITkStripMeasurements":
"xAOD::TrackMeasurementValidationContainer",
324 "ITkStripMeasurementsAux":
"xAOD::TrackMeasurementValidationAuxContainer",
325 "ITkStripMSOSs":
"xAOD::TrackStateValidationContainer",
326 "ITkStripMSOSsAux":
"xAOD::TrackStateValidationAuxContainer"
329 SmartCollections += [
"Muons",
"Electrons",
"Photons"]
331 AllVariables += [
"EventInfo",
332 "JetETMissNeutralParticleFlowObjects",
333 "JetETMissChargedParticleFlowObjects",
334 "InDetTrackParticles",
335 "InDetLargeD0TrackParticles",
336 "Kt4EMTopoOriginEventShape",
337 "Kt4LCTopoOriginEventShape",
338 "NeutralParticleFlowIsoCentralEventShape",
339 "NeutralParticleFlowIsoForwardEventShape",
340 "TopoClusterIsoCentralEventShape",
341 "TopoClusterIsoForwardEventShape"]
343 if flags.Detector.GeometryID:
344 if flags.InDet.DAODStorePixel:
345 AllVariables += [
"PixelClusters",
"PixelMSOSs"]
346 if flags.InDet.DAODStoreSCT:
347 AllVariables += [
"SCT_Clusters",
"SCT_MSOSs"]
348 if flags.Detector.GeometryITk:
349 if flags.ITk.DAODStorePixel:
350 AllVariables += [
"ITkPixelMeasurements",
"ITkPixelMSOSs"]
351 if flags.ITk.DAODStoreStrip:
352 AllVariables += [
"ITkStripMeasurements",
"ITkStripMSOSs"]
354 IDTRKVALIDSlimmingHelper.AppendToDictionary.update({
355 "TauJets":
"xAOD::TauJetContainer",
356 "TauJetsAux":
"xAOD::TauJetAuxContainer",
357 "Kt4EMPFlowEventShape":
"xAOD::EventShape",
358 "Kt4EMPFlowEventShapeAux":
"xAOD::EventShapeAuxInfo",
359 "PrimaryVertices":
"xAOD::VertexContainer",
360 "PrimaryVerticesAux":
"xAOD::VertexAuxContainer",
361 "AntiKt4EMTopoJets":
"xAOD::JetContainer",
362 "AntiKt4EMTopoJetsAux":
"xAOD::JetAuxContainer",
363 "AntiKt4EMPFlowJets":
"xAOD::JetContainer",
364 "AntiKt4EMPFlowJetsAux":
"xAOD::JetAuxContainer",
365 "BTagging_AntiKt4EMTopo":
"xAOD::BTaggingContainer",
366 "BTagging_AntiKt4EMTopoAux":
"xAOD::BTaggingAuxContainer",
367 "BTagging_AntiKt4EMPFlow":
"xAOD::BTaggingContainer",
368 "BTagging_AntiKt4EMPFlowAux":
"xAOD::BTaggingAuxContainer"})
370 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"]
371 ExtraVariables += [
"PrimaryVertices.sumPt2.x.y.z"]
373 AllVariables += [
"Kt4EMPFlowEventShape",
374 "AntiKt4EMTopoJets",
"AntiKt4EMPFlowJets",
375 "BTagging_AntiKt4EMTopo",
"BTagging_AntiKt4EMPFlow"]
378 IDTRKVALIDSlimmingHelper.AppendToDictionary.update({
379 "AntiKt4TruthJets":
"xAOD::JetContainer",
380 "AntiKt4TruthJetsAux":
"xAOD::JetAuxContainer",
381 "JetInputTruthParticles":
"xAOD::TruthParticleContainer",
382 "JetInputTruthParticlesNoWZ":
"xAOD::TruthParticleContainer",
383 "TruthEvents":
"xAOD::TruthEventContainer",
384 "TruthEventsAux":
"xAOD::TruthEventAuxContainer",
385 "TruthParticles":
"xAOD::TruthParticleContainer",
386 "TruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
387 "egammaTruthParticles":
"xAOD::TruthParticleContainer",
388 "egammaTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
389 "MuonTruthParticles":
"xAOD::TruthParticleContainer",
390 "MuonTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
391 "LRTegammaTruthParticles":
"xAOD::TruthParticleContainer",
392 "LRTegammaTruthParticlesAux":
"xAOD::TruthParticleAuxContainer",
393 "TruthVertices":
"xAOD::TruthVertexContainer",
394 "TruthVerticesAux":
"xAOD::TruthVertexAuxContainer",
395 "MET_Truth":
"xAOD::MissingETContainer",
396 "MET_TruthRegions":
"xAOD::MissingETContainer",
397 "MET_TruthAux":
"xAOD::MissingETAuxContainer",
398 "MET_TruthRegionsAux":
"xAOD::MissingETAuxContainer"})
400 AllVariables += [
"AntiKt4TruthJets",
401 "JetInputTruthParticles",
402 "JetInputTruthParticlesNoWZ",
405 "egammaTruthParticles",
406 "MuonTruthParticles",
407 "LRTegammaTruthParticles",
410 list_aux = [
"BHadronsFinal",
"BHadronsInitial",
"BQuarksFinal",
411 "CHadronsFinal",
"CHadronsInitial",
"CQuarksFinal",
412 "HBosons",
"Partons",
"TQuarksFinal",
"TausFinal",
413 "WBosons",
"ZBosons"]
414 for item
in list_aux:
415 label =
"TruthLabel"+item
416 labelAux = label+
"Aux"
417 IDTRKVALIDSlimmingHelper.AppendToDictionary.update(
418 {label:
"xAOD::TruthParticleContainer",
419 labelAux:
"xAOD::TruthParticleAuxContainer"})
420 AllVariables += [label]
424 IDTRKVALIDSlimmingHelper.IncludeTriggerNavigation =
True
425 IDTRKVALIDSlimmingHelper.IncludeAdditionalTriggerContent =
True
427 IDTRKVALIDSlimmingHelper.AllVariables = AllVariables
428 IDTRKVALIDSlimmingHelper.StaticContent = StaticContent
429 IDTRKVALIDSlimmingHelper.SmartCollections = SmartCollections
430 IDTRKVALIDSlimmingHelper.ExtraVariables = ExtraVariables
433 IDTRKVALIDItemList = IDTRKVALIDSlimmingHelper.GetItemList()
435 ItemList=IDTRKVALIDItemList, AcceptAlgs=[
"IDTRKVALIDKernel"]))
438 flags,
"DAOD_IDTRKVALID", AcceptAlgs=[
"IDTRKVALIDKernel"],
439 createMetadata=[MetadataCategory.CutFlowMetaData]))