ATLAS Offline Software
Loading...
Searching...
No Matches
python.HIGG1D1 Namespace Reference

Functions

 HIGG1D1KernelCfg (flags, name='HIGG1D1Kernel', **kwargs)
 HIGG1D1Cfg (flags)

Function Documentation

◆ HIGG1D1Cfg()

python.HIGG1D1.HIGG1D1Cfg ( flags)

Definition at line 245 of file HIGG1D1.py.

245def HIGG1D1Cfg(flags):
246
247 acc = ComponentAccumulator()
248
249 from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
250 HIGG1D1TriggerListsHelper = TriggerListsHelper(flags)
251
252 acc.merge(HIGG1D1KernelCfg(flags, name="HIGG1D1Kernel", StreamName = 'StreamDAOD_HIGG1D1', TriggerListsHelper = HIGG1D1TriggerListsHelper))
253
254
255 # ============================
256 # Define contents of the format
257 # =============================
258 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
259 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
260 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
261
262 HIGG1D1SlimmingHelper = SlimmingHelper("HIGG1D1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
263 HIGG1D1SlimmingHelper.SmartCollections = ["EventInfo",
264 "Electrons",
265 "Photons",
266 "Muons",
267 "PrimaryVertices",
268 "InDetTrackParticles",
269 "AntiKt4EMTopoJets",
270 "AntiKt4EMPFlowJets",
271
272 "MET_Baseline_AntiKt4EMTopo",
273 "MET_Baseline_AntiKt4EMPFlow",
274 "TauJets",
275 "DiTauJets",
276 "DiTauJetsLowPt",
277 "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets"]
278
279 excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
280 StaticContent = []
281 StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
282 StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
283 StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
284 StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
285 StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
286 StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
287
288 HIGG1D1SlimmingHelper.StaticContent = StaticContent
289
290 # Trigger content
291 HIGG1D1SlimmingHelper.IncludeTriggerNavigation = False
292 HIGG1D1SlimmingHelper.IncludeJetTriggerContent = False
293 HIGG1D1SlimmingHelper.IncludeMuonTriggerContent = False
294 HIGG1D1SlimmingHelper.IncludeEGammaTriggerContent = False
295 HIGG1D1SlimmingHelper.IncludeTauTriggerContent = False
296 HIGG1D1SlimmingHelper.IncludeEtMissTriggerContent = False
297 HIGG1D1SlimmingHelper.IncludeBJetTriggerContent = False
298 HIGG1D1SlimmingHelper.IncludeBPhysTriggerContent = False
299 HIGG1D1SlimmingHelper.IncludeMinBiasTriggerContent = False
300
301 # Truth containers
302 if flags.Input.isMC:
303 HIGG1D1SlimmingHelper.AppendToDictionary = {
304 'TruthEvents':'xAOD::TruthEventContainer',
305 'TruthEventsAux':'xAOD::TruthEventAuxContainer',
306 'MET_Truth':'xAOD::MissingETContainer',
307 'MET_TruthAux':'xAOD::MissingETAuxContainer',
308 'TruthElectrons':'xAOD::TruthParticleContainer',
309 'TruthElectronsAux':'xAOD::TruthParticleAuxContainer',
310 'TruthMuons':'xAOD::TruthParticleContainer',
311 'TruthMuonsAux':'xAOD::TruthParticleAuxContainer',
312 'TruthPhotons':'xAOD::TruthParticleContainer',
313 'TruthPhotonsAux':'xAOD::TruthParticleAuxContainer',
314 'TruthTaus':'xAOD::TruthParticleContainer',
315 'TruthTausAux':'xAOD::TruthParticleAuxContainer',
316 'TruthNeutrinos':'xAOD::TruthParticleContainer',
317 'TruthNeutrinosAux':'xAOD::TruthParticleAuxContainer',
318 'TruthBSM':'xAOD::TruthParticleContainer',
319 'TruthBSMAux':'xAOD::TruthParticleAuxContainer',
320 'TruthBoson':'xAOD::TruthParticleContainer',
321 'TruthBosonAux':'xAOD::TruthParticleAuxContainer',
322 'TruthTop':'xAOD::TruthParticleContainer',
323 'TruthTopAux':'xAOD::TruthParticleAuxContainer',
324 'TruthForwardProtons':'xAOD::TruthParticleContainer',
325 'TruthForwardProtonsAux':'xAOD::TruthParticleAuxContainer',
326 'BornLeptons':'xAOD::TruthParticleContainer',
327 'BornLeptonsAux':'xAOD::TruthParticleAuxContainer',
328 'TruthBosonsWithDecayParticles':'xAOD::TruthParticleContainer',
329 'TruthBosonsWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
330 'TruthBosonsWithDecayVertices':'xAOD::TruthVertexContainer',
331 'TruthBosonsWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
332 'TruthBSMWithDecayParticles':'xAOD::TruthParticleContainer',
333 'TruthBSMWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
334 'TruthBSMWithDecayVertices':'xAOD::TruthVertexContainer',
335 'TruthBSMWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
336 'TruthHFWithDecayParticles':'xAOD::TruthParticleContainer',
337 'TruthHFWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
338 'TruthHFWithDecayVertices':'xAOD::TruthVertexContainer',
339 'TruthHFWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
340 'TruthCharm':'xAOD::TruthParticleContainer',
341 'TruthCharmAux':'xAOD::TruthParticleAuxContainer',
342 'TruthPrimaryVertices':'xAOD::TruthVertexContainer',
343 'TruthPrimaryVerticesAux':'xAOD::TruthVertexAuxContainer'
344 }
345
346 from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
347 addTruth3ContentToSlimmerTool(HIGG1D1SlimmingHelper)
348 HIGG1D1SlimmingHelper.AllVariables += ["TruthHFWithDecayParticles",
349 "TruthHFWithDecayVertices",
350 "TruthCharm",
351 "TruthPileupParticles",
352 "InTimeAntiKt4TruthJets",
353 "OutOfTimeAntiKt4TruthJets",
354 "AntiKt4TruthDressedWZJets",
355 "AntiKt4TruthWZJets",
356 "TruthEvents",
357 "TruthPrimaryVertices",
358 "TruthVertices",
359 "TruthParticles"]
360
361 HIGG1D1SlimmingHelper.ExtraVariables += ["Electrons.TruthLink",
362 "Muons.TruthLink",
363 "Photons.TruthLink",
364 "AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt",
365 "AntiKt4EMPFlowJets.QGTransformer_ConstScore.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt",
366 "TruthPrimaryVertices.t.x.y.z",
367 "EventInfo.DFCommonJetsCustomVtx_eventClean_LooseBad.DFCommonJetsCustomVtx_eventClean_TightBad.hardScatterVertexLink.timeStampNSOffset",
368 "TauJets.dRmax.etOverPtLeadTrk"]
369 if flags.Reco.EnableTrigger:
370 HIGG1D1SlimmingHelper.ExtraVariables += [
371 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
372 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"
373 ]
374
375 # Additional content for HIGG1D1
376 HIGG1D1SlimmingHelper.AppendToDictionary.update({
377 "AntiKt4EMPFlowCustomVtxJets": "xAOD::JetContainer",
378 "AntiKt4EMPFlowCustomVtxJetsAux":"xAOD::JetAuxContainer",
379 "METAssoc_AntiKt4EMPFlowCustomVtx": "xAOD::MissingETAssociationMap",
380 "METAssoc_AntiKt4EMPFlowCustomVtxAux":"xAOD::MissingETAuxAssociationMap",
381 "MET_Core_AntiKt4EMPFlowCustomVtx": "xAOD::MissingETContainer",
382 "MET_Core_AntiKt4EMPFlowCustomVtxAux":"xAOD::MissingETAuxContainer",
383 "HggPrimaryVertices":"xAOD::VertexContainer",
384 "HggPrimaryVerticesAux":"xAOD::ShallowAuxContainer",
385 "Kt4EMPFlowCustomVtxEventShape":"xAOD::EventShape",
386 "Kt4EMPFlowCustomVtxEventShapeAux":"xAOD::EventShapeAuxInfo",
387 "Kt4EMPFlowEventShape":"xAOD::EventShape",
388 "Kt4EMPFlowEventShapeAux":"xAOD::EventShapeAuxInfo",
389 "ZeeRefittedPrimaryVertices":"xAOD::VertexContainer",
390 "ZeeRefittedPrimaryVerticesAux":"xAOD::VertexAuxContainer",
391 "AFPSiHitContainer":"xAOD::AFPSiHitContainer",
392 "AFPSiHitContainerAux":"xAOD::AFPSiHitAuxContainer",
393 "AFPToFHitContainer":"xAOD::AFPToFHitContainer",
394 "AFPToFHitContainerAux":"xAOD::AFPToFHitAuxContainer",
395 "AFPVertexContainer":"xAOD::AFPVertexContainer",
396 "AFPVertexContainerAux":"xAOD::AFPVertexAuxContainer",
397 "AFPToFTrackContainer":"xAOD::AFPToFTrackContainer",
398 "AFPToFTrackContainerAux":"xAOD::AFPToFTrackAuxContainer",
399 })
400
401 HIGG1D1SlimmingHelper.AllVariables += [
402 "HggPrimaryVertices",
403 "ZeeRefittedPrimaryVertices",
404 "AntiKt4EMPFlowCustomVtxJets",
405 "Kt4EMPFlowCustomVtxEventShape",
406 "Kt4EMPFlowEventShape",
407 "METAssoc_AntiKt4EMPFlowCustomVtx",
408 "MET_Core_AntiKt4EMPFlowCustomVtx"
409 ]
410
411 # Add AFP information
412 HIGG1D1SlimmingHelper.AllVariables += ["AFPSiHitContainer",
413 "AFPToFHitContainer",
414 "AFPVertexContainer",
415 "AFPToFTrackContainer"]
416 # Add Btagging information
417 from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
418 HIGG1D1SlimmingHelper.ExtraVariables += BTaggingStandardContent(flags, "AntiKt4EMPFlowCustomVtxJets")
419 HIGG1D1SlimmingHelper.ExtraVariables += BTaggingStandardContent(flags, "AntiKt4EMPFlowJets")
420
421 # is this really needed given Photons are in the AllVariables list ?
422 from DerivationFrameworkEGamma.PhotonsCPDetailedContent import PhotonsCPDetailedContent
423 HIGG1D1SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
424
425
426 # Add the variables for Gain and Cluster energy
427 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (
428 getGainDecorations, getClusterEnergyPerLayerDecorations )
429 gainDecorations = getGainDecorations(acc, flags, 'HIGG1D1Kernel')
430 HIGG1D1SlimmingHelper.ExtraVariables.extend(gainDecorations)
431 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(
432 acc, 'HIGG1D1Kernel' )
433 HIGG1D1SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
434
435 # Add HTXS variables
436 HIGG1D1SlimmingHelper.ExtraVariables.extend(["EventInfo.HTXS_prodMode",
437 "EventInfo.HTXS_errorCode",
438 "EventInfo.HTXS_Stage0_Category",
439 "EventInfo.HTXS_Stage1_Category_pTjet25",
440 "EventInfo.HTXS_Stage1_Category_pTjet30",
441 "EventInfo.HTXS_Stage1_FineIndex_pTjet30",
442 "EventInfo.HTXS_Stage1_FineIndex_pTjet25",
443 "EventInfo.HTXS_Stage1_2_Category_pTjet25",
444 "EventInfo.HTXS_Stage1_2_Category_pTjet30",
445 "EventInfo.HTXS_Stage1_2_FineIndex_pTjet30",
446 "EventInfo.HTXS_Stage1_2_FineIndex_pTjet25",
447 "EventInfo.HTXS_Stage1_2_Fine_Category_pTjet25",
448 "EventInfo.HTXS_Stage1_2_Fine_Category_pTjet30",
449 "EventInfo.HTXS_Stage1_2_Fine_FineIndex_pTjet30",
450 "EventInfo.HTXS_Stage1_2_Fine_FineIndex_pTjet25",
451 "EventInfo.HTXS_Njets_pTjet25",
452 "EventInfo.HTXS_Njets_pTjet30",
453 "EventInfo.HTXS_isZ2vvDecay",
454 "EventInfo.HTXS_Higgs_eta",
455 "EventInfo.HTXS_Higgs_m",
456 "EventInfo.HTXS_Higgs_phi",
457 "EventInfo.HTXS_Higgs_pt",
458 "EventInfo.HTXS_V_jets30_eta",
459 "EventInfo.HTXS_V_jets30_m",
460 "EventInfo.HTXS_V_jets30_phi",
461 "EventInfo.HTXS_V_jets30_pt",
462 "EventInfo.HTXS_V_pt"])
463
464 # Add variables from MaxCell decorator and PhotonPointing decorator
465 HIGG1D1SlimmingHelper.ExtraVariables.extend(["Electrons.maxEcell_time",
466 "Electrons.maxEcell_energy",
467 "Electrons.maxEcell_gain",
468 "Electrons.maxEcell_onlId",
469 "Photons.maxEcell_time",
470 "Photons.maxEcell_energy",
471 "Photons.maxEcell_gain",
472 "Photons.maxEcell_onlId",
473 "Photons.zvertex"])
474 # Add TTVA variables
475 HIGG1D1SlimmingHelper.ExtraVariables.extend(["InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.TTVA_AMVFVertices_forReco.TTVA_AMVFWeights_forReco.TTVA_AMVFVertices_forHiggs.TTVA_AMVFWeights_forHiggs.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers"])
476
477 # Trigger content
478 HIGG1D1SlimmingHelper.IncludeTriggerNavigation = False
479 HIGG1D1SlimmingHelper.IncludeJetTriggerContent = False
480 HIGG1D1SlimmingHelper.IncludeMuonTriggerContent = False
481 HIGG1D1SlimmingHelper.IncludeEGammaTriggerContent = False
482 HIGG1D1SlimmingHelper.IncludeTauTriggerContent = False
483 HIGG1D1SlimmingHelper.IncludeEtMissTriggerContent = False
484 HIGG1D1SlimmingHelper.IncludeBJetTriggerContent = False
485 HIGG1D1SlimmingHelper.IncludeBPhysTriggerContent = False
486 HIGG1D1SlimmingHelper.IncludeMinBiasTriggerContent = False
487
488 # Trigger matching
489 # Run 2
490 if flags.Trigger.EDMVersion == 2:
491 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
492 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = HIGG1D1SlimmingHelper,
493 OutputContainerPrefix = "TrigMatch_",
494 TriggerList = HIGG1D1TriggerListsHelper.Run2TriggerNamesTau)
495 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = HIGG1D1SlimmingHelper,
496 OutputContainerPrefix = "TrigMatch_",
497 TriggerList = HIGG1D1TriggerListsHelper.Run2TriggerNamesNoTau)
498 # Run 3, or Run 2 with navigation conversion
499 if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
500 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
501 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(HIGG1D1SlimmingHelper)
502
503 # Output stream
504 HIGG1D1ItemList = HIGG1D1SlimmingHelper.GetItemList()
505 acc.merge(OutputStreamCfg(flags, "DAOD_HIGG1D1", ItemList=HIGG1D1ItemList, AcceptAlgs=["HIGG1D1Kernel"]))
506 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HIGG1D1", AcceptAlgs=["HIGG1D1Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))
507
508 return acc

◆ HIGG1D1KernelCfg()

python.HIGG1D1.HIGG1D1KernelCfg ( flags,
name = 'HIGG1D1Kernel',
** kwargs )
Configure the derivation framework driving algorithm (kernel) for HIGG1D1

Definition at line 15 of file HIGG1D1.py.

15def HIGG1D1KernelCfg(flags, name='HIGG1D1Kernel', **kwargs):
16 """Configure the derivation framework driving algorithm (kernel) for HIGG1D1"""
17 acc = ComponentAccumulator()
18
19 # Common augmentations
20 from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
21 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs['TriggerListsHelper']))
22
23 # Diphoton Vertex creation
24 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig import ZeeVertexRefitterCfg, DiPhotonVertexCfg
25 from DerivationFrameworkHiggs.HIGG1D1CustomJetsConfig import HIGG1D1CustomJetsCfg, HIGG1D1CustomJetsCleaningCfg
26 acc.merge(ZeeVertexRefitterCfg(flags))
27 acc.merge(DiPhotonVertexCfg(flags))
28
29 #CustomJetsConfig
30 acc.merge(HIGG1D1CustomJetsCfg(flags))
31 acc.merge(HIGG1D1CustomJetsCleaningCfg(flags))
32
33 # Reorder event cleaning / decoration locking to run at this
34 # point in the algorithm sequence.
35 # See comments in JetCommonConfig.AddEventCleanFlagsCfg.
36 seq = acc.getSequence('AthAlgSeq')
37 cleanSeqs = [acc.getSequence ('EventCleanSeq'),
38 acc.getSequence ('EventCleanLockSeq')]
39 seq.Members = [a for a in seq.Members if a not in cleanSeqs] + cleanSeqs
40
41 from BTagging.FlavorTaggingConfig import FlavorTaggingCfg
42 acc.merge(FlavorTaggingCfg(flags, 'AntiKt4EMPFlowCustomVtxJets', 'HggPrimaryVertices', trackAugmenterPrefix='btagIpHgg_'))
43
44 #Custom MET
45 from DerivationFrameworkJetEtMiss.METCommonConfig import METCustomVtxCfg
46 acc.merge(METCustomVtxCfg(flags, 'HggPrimaryVertices', 'AntiKt4EMPFlowCustomVtx', 'CHSGCustomVtxParticleFlowObjects'))
47
48 # Thinning tools...
49 from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg, MuonTrackParticleThinningCfg, TauTrackParticleThinningCfg, DiTauTrackParticleThinningCfg
50 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import GenericTruthThinningCfg
51 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import GenericObjectThinningCfg
52
53 thinningTools = []
54
55 # Truth thinning
56 if flags.Input.isMC:
57 truth_conditions = ["((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))", # W, Z and Higgs
58 "((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16))", # Leptons
59 "((abs(TruthParticles.pdgId) == 6))", # Top quark
60 "((abs(TruthParticles.pdgId) == 22) && (TruthParticles.pt > 1*GeV))", # Photon
61 "(abs(TruthParticles.pdgId) >= 1000000)", # BSM
62 "(TruthParticles.isGenStable)"] # stable particles
63 truth_expression = f'({" || ".join(truth_conditions)})'
64
65 HIGG1D1GenericTruthThinningTool = acc.getPrimaryAndMerge(GenericTruthThinningCfg(
66 flags,
67 name = "HIGG1D1GenericTruthThinningTool",
68 StreamName = kwargs['StreamName'],
69 ParticleSelectionString = truth_expression,
70 PreserveDescendants = False,
71 PreserveGeneratorDescendants = True,
72 PreserveAncestors = True))
73 thinningTools.append(HIGG1D1GenericTruthThinningTool)
74
75 # Inner detector group recommendations for indet tracks in analysis
76 # https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/DaodRecommendations
77 HIGG1D1_thinning_expression = "InDetTrackParticles.DFCommonTightPrimary && \
78 abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta) < 3.0*mm && \
79 InDetTrackParticles.pt > 10*GeV"
80 HIGG1D1TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
81 flags,
82 name = "HIGG1D1TrackParticleThinningTool",
83 StreamName = kwargs['StreamName'],
84 SelectionString = HIGG1D1_thinning_expression,
85 InDetTrackParticlesKey = "InDetTrackParticles"))
86
87 # Include inner detector tracks associated with muons
88 HIGG1D1MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(
89 flags,
90 name = "HIGG1D1MuonTPThinningTool",
91 StreamName = kwargs['StreamName'],
92 MuonKey = "Muons",
93 InDetTrackParticlesKey = "InDetTrackParticles"))
94
95 # Only keep tau tracks (and associated ID tracks) classified as charged tracks
96 HIGG1D1TauTPThinningTool = acc.getPrimaryAndMerge(TauTrackParticleThinningCfg(
97 flags,
98 name = "HIGG1D1TauTPThinningTool",
99 StreamName = kwargs['StreamName'],
100 TauKey = "TauJets",
101 InDetTrackParticlesKey = "InDetTrackParticles",
102 DoTauTracksThinning = True,
103 TauTracksKey = "TauTracks"))
104
105 # ID tracks associated with high-pt di-tau
106 HIGG1D1DiTauTPThinningTool = acc.getPrimaryAndMerge(DiTauTrackParticleThinningCfg(
107 flags,
108 name = "HIGG1D1DiTauTPThinningTool",
109 StreamName = kwargs['StreamName'],
110 DiTauKey = "DiTauJets",
111 InDetTrackParticlesKey = "InDetTrackParticles"))
112
113
114 HIGG1D1DiTauLowPtThinningTool = acc.getPrimaryAndMerge(GenericObjectThinningCfg(flags,
115 name = "PHYSDiTauLowPtThinningTool",
116 StreamName = kwargs['StreamName'],
117 ContainerName = "DiTauJetsLowPt",
118 SelectionString = "DiTauJetsLowPt.nSubjets > 1"))
119
120 # ID tracks associated with low-pt ditau
121 HIGG1D1DiTauLowPtTPThinningTool = acc.getPrimaryAndMerge(DiTauTrackParticleThinningCfg(flags,
122 name = "PHYSDiTauLowPtTPThinningTool",
123 StreamName = kwargs['StreamName'],
124 DiTauKey = "DiTauJetsLowPt",
125 InDetTrackParticlesKey = "InDetTrackParticles",
126 SelectionString = "DiTauJetsLowPt.nSubjets > 1"))
127
128
129 # SkimmingTool
130 from DerivationFrameworkHiggs.SkimmingToolHIGG1Config import SkimmingToolHIGG1Cfg
131
132 # Requires something in this list of triggers
133 SkipTriggerRequirement = (flags.Input.isMC and float(flags.Beam.Energy) == 4000000.0) or not flags.Reco.EnableTrigger
134 # 8 TeV MC does not have trigger information
135 print("HIGG1D1.py SkipTriggerRequirement", SkipTriggerRequirement)
136 TriggerExp = []
137 if not SkipTriggerRequirement:
138 if float(flags.Beam.Energy) == 4000000.0:
139 # 8 TeV data
140 TriggerExp = ["EF_g35_loose_g25_loose"]
141 if float(flags.Beam.Energy) == 6500000.0:
142 # 13 TeV MC
143 TriggerExp = ["HLT_g35_medium_g25_medium",
144 "HLT_g35_medium_g25_medium_L12EM20VH",
145 "HLT_g35_medium_g25_medium_L12EM15VH",
146 "HLT_g35_loose_g25_loose",
147 "HLT_g35_loose_g25_loose_L12EM15VH",
148 "HLT_g120_loose",
149 "HLT_g140_loose",
150 "HLT_3g20_loose",
151 "HLT_3g15_loose",
152 "HLT_2g6_tight_icalotight_L1J50",
153 "HLT_2g6_tight_icalotight_L1J100",
154 "HLT_2g6_loose_L1J50",
155 "HLT_2g6_loose_L1J100",
156 "HLT_2g50_loose",
157 "HLT_2g25_tight_L12EM20VH",
158 "HLT_2g25_loose_g15_loose",
159 "HLT_2g22_tight",
160 "HLT_2g22_tight_L12EM15VHI",
161 "HLT_2g22_tight_icalovloose",
162 "HLT_2g22_tight_icalovloose_L12EM15VHI",
163 "HLT_2g22_tight_icalotight_L12EM15VHI",
164 "HLT_2g20_tight",
165 "HLT_2g20_tight_icalovloose_L12EM15VHI",
166 "HLT_2g20_tight_icalotight_L12EM15VHI",
167 "HLT_2g20_loose",
168 "HLT_2g20_loose_L12EM15",
169 "HLT_2g20_loose_g15_loose",
170 "HLT_2g50_loose_L12EM20VH"
171 ]
172 if float(flags.Beam.Energy) == 6800000.0:
173 # 13.6 TeV
174 TriggerExp = ["HLT_g35_medium_g25_medium_L12EM20VH",
175 "HLT_g35_medium_g25_medium_L12eEM24L",
176 "HLT_g140_loose_L1EM22VHI",
177 "HLT_g140_loose_L1eEM26M"
178 "HLT_g120_loose_L1EM22VHI",
179 "HLT_g120_loose_L1eEM26M",
180 "HLT_2g9_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM9",
181 "HLT_2g9_loose_25dphiAA_invmAA80_L12EM7",
182 "HLT_2g50_loose_L12EM20VH",
183 "HLT_2g50_loose_L12eEM24L",
184 "HLT_2g25_loose_g15_loose_L12EM20VH",
185 "HLT_2g25_loose_g15_loose_L12eEM24L",
186 "HLT_2g22_tight_L12EM15VHI",
187 "HLT_2g22_tight_L12eEM18M",
188 "HLT_2g20_tight_icaloloose_L12EM15VHI",
189 "HLT_2g20_tight_icaloloose_L12eEM18M",
190 "HLT_2g20_loose_L12EM15VH",
191 "HLT_2g20_loose_L12eEM18L",
192 "HLT_2g15_tight_L1DPHI-M70-2eEM15M",
193 "HLT_2g15_tight_25dphiAA_L1DPHI-M70-2eEM15M",
194 "HLT_2g15_tight_25dphiAA_L12EM7",
195 "HLT_2g15_tight_25dphiAA_invmAA80_L12EM7",
196 "HLT_2g15_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM15M",
197 "HLT_2g15_loose_25dphiAA_invmAA80_L12EM7",
198 ]
199 print("HIGG1D1.py Skimming Tool Triggers:", ",".join(TriggerExp))
200 skimmingTool = acc.popToolsAndMerge( SkimmingToolHIGG1Cfg(flags,RequireTrigger=not SkipTriggerRequirement,Triggers=TriggerExp) )
201 acc.addPublicTool(skimmingTool)
202
203
204 # Finally the kernel itself
205 thinningTools += [HIGG1D1TrackParticleThinningTool,
206 HIGG1D1MuonTPThinningTool,
207 HIGG1D1TauTPThinningTool,
208 HIGG1D1DiTauTPThinningTool,
209 HIGG1D1DiTauLowPtThinningTool,
210 HIGG1D1DiTauLowPtTPThinningTool]
211
212 augmentationTools = []
213
214 #====================================================================
215 # Common calo decoration tools
216 #====================================================================
217
218 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (
219 CaloDecoratorKernelCfg, ClusterEnergyPerLayerDecoratorCfg)
220 acc.merge(CaloDecoratorKernelCfg(flags))
221
222 # Adding missing cluster energy decorators
223 cluster_sizes = (3,5), (5,7), (7,7)
224 for neta, nphi in cluster_sizes:
225 cename = "ClusterEnergyPerLayerDecorator_%sx%s" % (neta, nphi)
226 ClusterEnergyPerLayerDecorator = acc.popToolsAndMerge( ClusterEnergyPerLayerDecoratorCfg(flags, neta = neta, nphi=nphi, name=cename ))
227 acc.addPublicTool(ClusterEnergyPerLayerDecorator)
228 augmentationTools.append(ClusterEnergyPerLayerDecorator)
229
230 #====================================================================
231 # Truth categories decoration tool
232 #====================================================================
233 if flags.Input.isMC:
234 from DerivationFrameworkHiggs.TruthCategoriesConfig import TruthCategoriesDecoratorCfg
235 acc.merge(TruthCategoriesDecoratorCfg(flags, name="TruthCategoriesDecorator"))
236
237 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
238 acc.addEventAlgo(DerivationKernel(name,
239 SkimmingTools = [skimmingTool],
240 ThinningTools = thinningTools,
241 AugmentationTools = augmentationTools))
242 return acc
243
244
void print(char *figname, TCanvas *c1)