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