11 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
12 from AthenaConfiguration.ComponentFactory
import CompFactory
13 from AthenaConfiguration.Enums
import MetadataCategory
18 """Configure the derivation framework driving algorithm (kernel) for HIGG1D2"""
22 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
26 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
27 CaloDecoratorKernelCfg)
31 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg, MuonTrackParticleThinningCfg
32 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import GenericTruthThinningCfg
36 HIGG1D2_thinning_expression =
"InDetTrackParticles.DFCommonTightPrimary && abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta) < 3.0*mm && InDetTrackParticles.pt > 10*GeV"
40 name =
"HIGG1D2TrackParticleThinningTool",
41 StreamName = kwargs[
'StreamName'],
42 SelectionString = HIGG1D2_thinning_expression,
43 InDetTrackParticlesKey =
"InDetTrackParticles"))
46 HIGG1D2MuonTPThinningTool = acc.getPrimaryAndMerge(
49 name =
"HIGG1D2MuonTPThinningTool",
50 StreamName = kwargs[
'StreamName'],
52 InDetTrackParticlesKey =
"InDetTrackParticles"
57 HIGG1D2ElectronTPThinningTool = (
58 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
59 name =
"HIGG1D2ElectronTPThinningTool",
60 StreamName = kwargs[
'StreamName'],
65 acc.addPublicTool(HIGG1D2ElectronTPThinningTool)
68 HIGG1D2PhotonTPThinningTool = (
69 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
70 name =
"HIGG1D2PhotonTPThinningTool",
71 StreamName = kwargs[
'StreamName'],
73 GSFConversionVerticesKey =
"GSFConversionVertices",
77 acc.addPublicTool(HIGG1D2PhotonTPThinningTool)
80 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import CaloClusterThinningCfg
82 HIGG1D2CCTCThinningTool = acc.getPrimaryAndMerge(
85 name =
"HIGG1D2CCTCThinningTool",
86 StreamName = kwargs[
'StreamName'],
88 SelectionString =
"Electrons.pt>4*GeV",
89 TopoClCollectionSGKey =
"CaloCalTopoClusters",
94 thinningTools = [HIGG1D2TrackParticleThinningTool,
95 HIGG1D2MuonTPThinningTool,
96 HIGG1D2ElectronTPThinningTool,
97 HIGG1D2PhotonTPThinningTool,
98 HIGG1D2CCTCThinningTool]
101 from DerivationFrameworkEGamma.EGammaToolsConfig
import PhotonVertexSelectionWrapperKernelCfg
105 if flags.Input.isMC :
106 truth_cond_1 =
"((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))"
107 truth_cond_2 =
"((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16))"
108 truth_cond_3 =
"((abs(TruthParticles.pdgId) == 6))"
109 truth_cond_4 =
"((abs(TruthParticles.pdgId) == 22) && (TruthParticles.pt > 1*GeV))"
110 truth_cond_finalState =
'(TruthParticles.status == 1 && TruthParticles.barcode < 200000)'
111 truth_expression =
'('+truth_cond_1+
' || '+truth_cond_2 +
' || '+truth_cond_3 +
' || '+truth_cond_4+
') || ('+truth_cond_finalState+
')'
115 name =
"HIGG1D2GenericTruthThinningTool",
116 StreamName = kwargs[
'StreamName'],
117 ParticleSelectionString = truth_expression,
118 PreserveDescendants =
False,
119 PreserveGeneratorDescendants =
True,
120 PreserveAncestors =
True))
121 acc.addPublicTool(HIGG1D2GenericTruthThinningTool)
122 thinningTools.append(HIGG1D2GenericTruthThinningTool)
125 from DerivationFrameworkHiggs.SkimmingToolHIGG1Config
import SkimmingToolHIGG1Cfg
126 from DerivationFrameworkHiggs.HIGG1TriggerContent
import expressionTriggers, mergedTriggers
128 SkipTriggerRequirement = flags.Input.isMC
or not flags.Reco.EnableTrigger
132 if not SkipTriggerRequirement:
135 if float(flags.Beam.Energy) == 6500000.0:
138 elif float(flags.Beam.Energy) == 6800000.0:
142 TriggerExp = expressionTriggers[MenuType]
143 TriggerMerged = mergedTriggers[MenuType]
146 from ROOT
import egammaPID
148 MergedElectronIsEM = CompFactory.AsgElectronIsEMSelector(
"MergedElectronIsEM")
149 MergedElectronIsEM.ConfigFile =
"ElectronPhotonSelectorTools/trigger/rel21_20161021/ElectronIsEMMergedTightSelectorCutDefs.conf"
150 MergedElectronIsEM.isEMMask = egammaPID.ElectronTightHLT
151 acc.addPublicTool(MergedElectronIsEM)
155 name =
"HIGG1D2SkimmingTool",
157 ReqireLArError =
True,
158 RequireTrigger =
not SkipTriggerRequirement,
159 IncludeDoublePhotonPreselection =
False,
160 RequirePreselection =
False,
161 RequireKinematic =
False,
162 RequireQuality =
False,
163 RequireIsolation =
False,
164 RequireInvariantMass =
False,
165 Triggers = TriggerExp,
166 MergedElectronTriggers = TriggerMerged,
167 IncludeSingleElectronPreselection =
False,
168 IncludeDoubleElectronPreselection =
False,
169 IncludeSingleMuonPreselection =
False,
170 IncludePhotonDoubleElectronPreselection =
True,
171 IncludeDoubleMuonPreselection =
True,
172 IncludePhotonMergedElectronPreselection =
True,
173 IncludeHighPtPhotonElectronPreselection =
True,
174 MinimumPhotonPt = 9.9*GeV,
175 MinimumElectronPt = 4.4*GeV,
176 MinimumMergedElectronPt = 18*GeV,
177 MinimumMuonPt = 2.9*GeV,
181 MergedElectronCutTool = MergedElectronIsEM))
183 acc.addPublicTool(skimmingTool)
186 from DerivationFrameworkHiggs.MergedElectronConfig
import MergedElectronDetailsDecoratorCfg
188 name =
"HIGG1D2MergedElectronDetailsDecorator"))
189 augmentationTools = [HIGG1D2MergedElectronDetailsDecorator]
193 from IsolationSelection.IsolationSelectionConfig
import IsoCloseByAlgsCfg
194 contNames = [
"Muons",
"Electrons",
"Photons"]
195 acc.merge(
IsoCloseByAlgsCfg(flags, suff =
"_HIGG1D2", isPhysLite =
False, containerNames = contNames, stream_name = kwargs[
'StreamName']))
198 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
200 SkimmingTools = [skimmingTool],
201 ThinningTools = thinningTools,
202 AugmentationTools = augmentationTools))
210 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
211 HIGG1D2TriggerListsHelper = TriggerListsHelper(flags)
213 acc.merge(
HIGG1D2KernelCfg(flags, name=
"HIGG1D2Kernel", StreamName =
'StreamDAOD_HIGG1D2', TriggerListsHelper = HIGG1D2TriggerListsHelper))
216 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
217 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
218 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
220 HIGG1D2SlimmingHelper =
SlimmingHelper(
"HIGG1D2SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
221 HIGG1D2SlimmingHelper.SmartCollections = [
"EventInfo",
226 "InDetTrackParticles",
227 "AntiKt4EMPFlowJets",
228 "BTagging_AntiKt4EMPFlow"]
231 HIGG1D2SlimmingHelper.IncludeTriggerNavigation =
False
232 HIGG1D2SlimmingHelper.IncludeJetTriggerContent =
False
233 HIGG1D2SlimmingHelper.IncludeMuonTriggerContent =
False
234 HIGG1D2SlimmingHelper.IncludeEGammaTriggerContent =
False
235 HIGG1D2SlimmingHelper.IncludeJetTauEtMissTriggerContent =
False
236 HIGG1D2SlimmingHelper.IncludeTauTriggerContent =
False
237 HIGG1D2SlimmingHelper.IncludeEtMissTriggerContent =
False
238 HIGG1D2SlimmingHelper.IncludeBJetTriggerContent =
False
239 HIGG1D2SlimmingHelper.IncludeBPhysTriggerContent =
False
240 HIGG1D2SlimmingHelper.IncludeMinBiasTriggerContent =
False
243 HIGG1D2SlimmingHelper.AllVariables = [
"Electrons",
"Photons",
"egammaClusters",
"GSFConversionVertices",
"PrimaryVertices",
"MET_Track",
"CaloCalTopoClusters"]
245 HIGG1D2SlimmingHelper.ExtraVariables = [
"Photons.zvertex",
246 "Muons.quality.EnergyLoss.energyLossType.etcone20.ptconecoreTrackPtrCorrection",
247 "MuonClusterCollection.eta_sampl.phi_sampl",
248 "GSFTrackParticles.parameterX.parameterY.parameterZ.parameterPX.parameterPY.parameterPZ.parameterPosition.vx.vy.eProbabilityHT",
249 "InDetTrackParticles.vx.vy.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
250 "AntiKt4EMPFlowJets.Jvt.JVFCorr",
251 "CombinedMuonTrackParticles.z0.vz",
252 "BTagging_AntiKt4EMTopo.MV1_discriminant",
253 "ExtrapolatedMuonTrackParticles.z0.vz",
254 "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.TTVA_AMVFVertices_forReco.TTVA_AMVFWeights_forReco.TTVA_AMVFVertices_forHiggs.TTVA_AMVFWeights_forHiggs.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
255 "EventInfo.hardScatterVertexLink.timeStampNSOffset"]
258 from DerivationFrameworkFlavourTag.BTaggingContent
import BTaggingStandardContent, BTaggingXbbContent
260 HIGG1D2SlimmingHelper.ExtraVariables +=
BTaggingXbbContent(
"AntiKt4EMPFlowJets", flags)
264 HIGG1D2SlimmingHelper.AppendToDictionary = {
'TruthEvents':
'xAOD::TruthEventContainer',
'TruthEventsAux':
'xAOD::TruthEventAuxContainer',
265 'MET_Truth':
'xAOD::MissingETContainer',
'MET_TruthAux':
'xAOD::MissingETAuxContainer',
266 'TruthElectrons':
'xAOD::TruthParticleContainer',
'TruthElectronsAux':
'xAOD::TruthParticleAuxContainer',
267 'TruthMuons':
'xAOD::TruthParticleContainer',
'TruthMuonsAux':
'xAOD::TruthParticleAuxContainer',
268 'TruthPhotons':
'xAOD::TruthParticleContainer',
'TruthPhotonsAux':
'xAOD::TruthParticleAuxContainer',
269 'TruthBoson':
'xAOD::TruthParticleContainer',
'TruthBosonAux':
'xAOD::TruthParticleAuxContainer',
270 'BornLeptons':
'xAOD::TruthParticleContainer',
'BornLeptonsAux':
'xAOD::TruthParticleAuxContainer',
271 'TruthBosonsWithDecayParticles':
'xAOD::TruthParticleContainer',
'TruthBosonsWithDecayParticlesAux':
'xAOD::TruthParticleAuxContainer',
272 'TruthBosonsWithDecayVertices':
'xAOD::TruthVertexContainer',
'TruthBosonsWithDecayVerticesAux':
'xAOD::TruthVertexAuxContainer',
273 'HardScatterParticles':
'xAOD::TruthParticleContainer',
'HardScatterParticlesAux':
'xAOD::TruthParticleAuxContainer',
274 'HardScatterVertices':
'xAOD::TruthVertexContainer',
'HardScatterVerticesAux':
'xAOD::TruthVertexAuxContainer',
275 'TruthHFWithDecayParticles':
'xAOD::TruthParticleContainer',
'TruthHFWithDecayParticlesAux':
'xAOD::TruthParticleAuxContainer',
276 'TruthPrimaryVertices':
'xAOD::TruthVertexContainer',
'TruthPrimaryVerticesAux':
'xAOD::TruthVertexAuxContainer'}
278 from DerivationFrameworkMCTruth.MCTruthCommonConfig
import addTruth3ContentToSlimmerTool
280 HIGG1D2SlimmingHelper.AllVariables += [
'TruthHFWithDecayParticles',
281 'AntiKt4TruthDressedWZJets',
282 'AntiKt4TruthWZJets',
284 'TruthPrimaryVertices',
292 HIGG1D2SlimmingHelper.ExtraVariables += [
"Electrons.TruthLink",
297 HIGG1D2SlimmingHelper.AppendToDictionary.update({
'MET_Track':
'xAOD::MissingETContainer',
'MET_TrackAux':
'xAOD::MissingETAuxContainer'})
301 if flags.Trigger.EDMVersion == 2:
302 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
304 OutputContainerPrefix =
"TrigMatch_",
305 TriggerList = HIGG1D2TriggerListsHelper.Run2TriggerNamesTau)
307 OutputContainerPrefix =
"TrigMatch_",
308 TriggerList = HIGG1D2TriggerListsHelper.Run2TriggerNamesNoTau)
310 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
311 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
315 HIGG1D2ItemList = HIGG1D2SlimmingHelper.GetItemList()
316 acc.merge(
OutputStreamCfg(flags,
"DAOD_HIGG1D2", ItemList=HIGG1D2ItemList, AcceptAlgs=[
"HIGG1D2Kernel"]))
317 acc.merge(
SetupMetaDataForStreamCfg(flags,
"DAOD_HIGG1D2", AcceptAlgs=[
"HIGG1D2Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))