38 if config.dataType()
is DataType.Data:
return
41 if self.truthParticleContainersToFix
is not None:
42 partContainers = self.truthParticleContainersToFix
43 elif config.isPhyslite():
45 "TruthBoson",
"TruthBosonsWithDecayParticles",
46 "TruthElectrons",
"TruthMuons",
"TruthPhotons",
"TruthNeutrinos",
48 "TruthTop",
"TruthBottom",
49 "TruthForwardProtons",
50 "TruthBSM",
"TruthBSMWithDecayParticles",
55 "TruthBoson",
"TruthBosonsWithDecayParticles",
56 "TruthElectrons",
"TruthMuons",
"TruthPhotons",
"TruthNeutrinos",
57 "TruthTaus",
"TruthTausWithDecayParticles",
58 "TruthTop",
"TruthBottom",
"TruthCharm",
"TruthHFWithDecayParticles",
59 "TruthForwardProtons",
"TruthPileupParticles",
60 "TruthBSM",
"TruthBSMWithDecayParticles",
65 if self.truthVertexContainersToFix
is not None:
66 vertContainers = self.truthVertexContainersToFix
67 elif config.isPhyslite():
69 "TruthBosonsWithDecayVertices",
70 "TruthBSMWithDecayVertices"
74 "TruthBosonsWithDecayVertices",
75 "TruthHFWithDecayVertices",
76 "TruthTausWithDecayVertices",
77 "TruthBSMWithDecayVertices"
81 if DualUseConfig.isAthena:
83 ars = config.createService(
"AddressRemappingSvc",
"AddressRemappingSvc")
84 pps = config.createService(
"ProxyProviderSvc",
"ProxyProviderSvc")
85 if "AddressRemappingSvc" not in pps.ProviderNames:
86 pps.ProviderNames += [
"AddressRemappingSvc"]
87 for container
in partContainers:
88 ars.TypeKeyRenameMaps += [
89 f
"xAOD::TruthParticleContainer#{container}->InFile{container}",
90 f
"xAOD::AuxContainerBase#{container}Aux.->InFile{container}Aux.",
92 for container
in vertContainers:
93 ars.TypeKeyRenameMaps += [
94 f
"xAOD::TruthVertexContainer#{container}->InFile{container}",
95 f
"xAOD::AuxContainerBase#{container}Aux.->InFile{container}Aux.",
99 for container
in partContainers:
100 alg = config.createAlgorithm(
101 "xAODMaker::TruthParticleFixerAlg",
102 "TruthParticleFixerAlg_" + container,
105 alg.InputContainer = (
106 container
if not DualUseConfig.isAthena
else f
"InFile{container}"
108 alg.OutputContainer = container
111 containers_without_parent_child_links = [
112 "TruthBosonsWithDecayParticles",
113 "TruthTausWithDecayParticles",
114 "BornLeptons",
"TruthPileupParticles",
115 "TruthForwardProtons",
116 "TruthBSMWithDecayParticles"]
117 if DualUseConfig.isAthena
and container
not in containers_without_parent_child_links:
118 alg.LinkPrefixToRemove =
"InFile"
119 alg.ParticleLinks = [
"parentLinks",
"childLinks"]
121 for container
in vertContainers:
122 alg = config.createAlgorithm(
123 "xAODMaker::TruthVertexFixerAlg",
124 "TruthVertexFixerAlg_" + container,
127 alg.InputContainer = (
128 container
if not DualUseConfig.isAthena
else f
"InFile{container}"
130 alg.OutputContainer = container
132 if DualUseConfig.isAthena :
133 alg.LinkPrefixToRemove =
"InFile"