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

Functions

 HIGG9D1KernelCfg (flags, name='HIGG9D1Kernel', **kwargs)
 HIGG9D1Cfg (flags)

Variables

 log_HIGG9D1 = logging.getLogger('HIGG9D1')
str streamName = "StreamDAOD_HIGG9D1"

Function Documentation

◆ HIGG9D1Cfg()

python.HIGG9D1.HIGG9D1Cfg ( flags)

Definition at line 399 of file HIGG9D1.py.

399def HIGG9D1Cfg(flags):
400 log_HIGG9D1.info('****************** STARTING HIGG9D1 ******************')
401
402 acc = ComponentAccumulator()
403
404 # Get the lists of triggers needed for trigger matching.
405 # This is needed at this scope (for the slimming) and further down in the config chain
406 # for actually configuring the matching, so we create it here and pass it down
407 # TODO: this should ideally be called higher up to avoid it being run multiple times in a train
408 from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
409 HIGG9D1TriggerListsHelper = TriggerListsHelper(flags)
410
411 # dedicated augmentations
412 acc.merge(HIGG9D1KernelCfg(flags, name="HIGG9D1Kernel", StreamName = streamName, TriggerListsHelper = HIGG9D1TriggerListsHelper))
413
414 # =============================
415 # Define contents of the format
416 # =============================
417 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
418 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
419 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
420
421 HIGG9D1SlimmingHelper = SlimmingHelper("HIGG9D1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
422 HIGG9D1SlimmingHelper.SmartCollections = [
423 "EventInfo",
424 "Electrons",
425 "Photons",
426 "Muons",
427 "PrimaryVertices",
428 "InDetTrackParticles",
429 "AntiKt4EMTopoJets",
430 "AntiKt4EMPFlowJets",
431
432 "MET_Baseline_AntiKt4EMTopo",
433 "MET_Baseline_AntiKt4EMPFlow",
434 "TauJets",
435 "TauJets_MuonRM",
436 "DiTauJets",
437 "DiTauJetsLowPt",
438 "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
439 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"]
440
441 if flags.Tau.TauEleRM_isAvailable:
442 HIGG9D1SlimmingHelper.SmartCollections.append("TauJets_EleRM")
443
444 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import getDefaultAllVariables
445 AllVariables = getDefaultAllVariables()
446 AllVariables += ["PrimaryVertices"]
447 AllVariables += ["CombinedMuonTrackParticles"]
448
449 doLRT = flags.Tracking.doLargeD0
450 AllVariables += ["InDetTrackParticles", "InDetLargeD0TrackParticles"] if doLRT else ["InDetTrackParticles"]
451 AllVariables += ["Muons", "MuonsLRT"] if doLRT else ["Muons"]
452 AllVariables += ["MuonSegments"]
453
454 # Additional content (shallow copy of PrimaryVertices)
455 HIGG9D1SlimmingHelper.AppendToDictionary.update({
456 "HIGG9D1_DiphotonPrimaryVertices" : "xAOD::VertexContainer",
457 "HIGG9D1_DiphotonPrimaryVerticesAux" : "xAOD::ShallowAuxContainer"
458 })
459 AllVariables += ["HIGG9D1_DiphotonPrimaryVertices"]
460
461 HIGG9D1_Jpsi = acc.getPublicTool("HIGG9D1_Jpsi")
462 HIGG9D1_Upsi = acc.getPublicTool("HIGG9D1_Upsi")
463
464 StaticContent = []
465 if HIGG9D1_Jpsi.RefitPV:
466 StaticContent += [ "xAOD::VertexContainer#%s" % HIGG9D1_Jpsi.RefPVContainerName ]
467 StaticContent += [ "xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % HIGG9D1_Jpsi.RefPVContainerName ]
468 if HIGG9D1_Upsi.RefitPV:
469 StaticContent += [ "xAOD::VertexContainer#%s" % HIGG9D1_Upsi.RefPVContainerName ]
470 StaticContent += [ "xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % HIGG9D1_Upsi.RefPVContainerName ]
471 StaticContent += [ "xAOD::VertexContainer#%s" % HIGG9D1_Jpsi.OutputVtxContainerName ]
472 StaticContent += [ "xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % HIGG9D1_Jpsi.OutputVtxContainerName ]
473 StaticContent += [ "xAOD::VertexContainer#%s" % HIGG9D1_Upsi.OutputVtxContainerName ]
474 StaticContent += [ "xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % HIGG9D1_Upsi.OutputVtxContainerName ]
475
476 excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
477 StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
478 StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
479 StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
480 StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
481 StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
482 StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
483
484 # Extra CP content
485 from DerivationFrameworkEGamma.PhotonsCPDetailedContent import PhotonsCPDetailedContent
486 HIGG9D1SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
487
488 from DerivationFrameworkEGamma.ElectronsCPDetailedContent import (ElectronsCPDetailedContent, GSFTracksCPDetailedContent, ElectronsAddAmbiguityContent)
489 HIGG9D1SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
490 HIGG9D1SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
491 HIGG9D1SlimmingHelper.ExtraVariables += ElectronsAddAmbiguityContent
492
493 from DerivationFrameworkTau.TauJetsCPContent import TauJetsCPContent
494 HIGG9D1SlimmingHelper.ExtraVariables += TauJetsCPContent
495
496 from DerivationFrameworkTau.TauJets_LepRMCPContent import (TauJets_EleRMCPContent, TauJets_MuonRMCPContent)
497 HIGG9D1SlimmingHelper.ExtraVariables += TauJets_EleRMCPContent
498 HIGG9D1SlimmingHelper.ExtraVariables += TauJets_MuonRMCPContent
499
500 StaticContent += ["xAOD::TauJetContainer#TauJets_MuonRM"]
501 StaticContent += ["xAOD::TauJetAuxContainer#TauJets_MuonRMAux.-VertexedClusters"]
502 StaticContent += ["xAOD::VertexContainer#TauSecondaryVertices_MuonRM"]
503 StaticContent += ["xAOD::VertexAuxContainer#TauSecondaryVertices_MuonRMAux.-vxTrackAtVertex"]
504
505 HIGG9D1SlimmingHelper.StaticContent = StaticContent
506
507 HIGG9D1SlimmingHelper.ExtraVariables += [
508 "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.IsoFixedCone5PtPUsub",
509 "AntiKt4EMPFlowJets.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.GhostPartons.isJvtHS.isJvtPU.IsoFixedCone5PtPUsub",
510 "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
511 "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ.HF_Classification.HF_SimpleClassification",
512 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
513 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
514
515 # FTAG Xbb extra content
516 extraList = []
517 for tagger in ["GN2Xv01", "GN2Xv02"]:
518 for score in ["phbb", "phcc", "ptop", "pqcd"]:
519 extraList.append(f"{tagger}_{score}")
520 HIGG9D1SlimmingHelper.ExtraVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets." + ".".join(extraList)]
521
522 # Large-Radius jet regression extra content
523 extraListReg = []
524 modelName = "bJR10v00"
525 for score in ["mass", "pt"]:
526 extraListReg.append(f"{modelName}_{score}")
527 HIGG9D1SlimmingHelper.ExtraVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets." + ".".join(extraListReg)]
528
529 # Truth content
530 if flags.Input.isMC:
531 from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
532 addTruth3ContentToSlimmerTool(HIGG9D1SlimmingHelper)
533 HIGG9D1SlimmingHelper.ExtraVariables += ["Electrons.TruthLink","Muons.TruthLink","Photons.TruthLink","AntiKt4TruthDressedWZJets.IsoFixedCone5Pt"]
534
535 AllVariables += ["TruthLHEParticles","TruthHFWithDecayParticles","TruthHFWithDecayVertices","TruthCharm","TruthPileupParticles","InTimeAntiKt4TruthJets","OutOfTimeAntiKt4TruthJets",
536 "TruthPrimaryVertices","TruthEvents","TruthParticles","TruthVertices","TruthElectrons","TruthMuons","TruthTaus"]
537
538 from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTauAndDownstreamParticlesCfg
539 acc.merge(AddTauAndDownstreamParticlesCfg(flags))
540 AllVariables += ["TruthTausWithDecayParticles","TruthTausWithDecayVertices"]
541
542 HIGG9D1SlimmingHelper.SmartCollections += [
543 "AntiKt4TruthDressedWZJets",
544 "AntiKt4TruthWZJets",
545 "AntiKt4TruthJets"
546 ]
547
548 # Extra isolation content
549 EgammaExtraContent= [
550 "ptcone20","ptcone30","ptcone40", "ptvarcone20", "ptvarcone30", "ptvarcone40", "topoetcone20", "topoetcone30",
551 "neflowisol20", "neflowisol30", "neflowisol40",
552 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500" ,"ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000",
553 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500","ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
554 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500","ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
555 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt500", "ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000",
556 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt500", "ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
557 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt500", "ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
558 "topoetconecoreConeEnergyCorrection", "isoSelIsOK", "topoetcone20_CloseByCorr"
559 ]
560
561 ElectronsExtraContent = [ ".".join( ["Electrons", "deltaPhiRescaled2", "deltaPhiFromLastMeasurement", "originalTrackParticle", "ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000", "ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt1000", "ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000_CloseByCorr", "ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt1000_CloseByCorr"] + EgammaExtraContent ) ]
562
563 PhotonsExtraContent = [ ".".join(["Photons", "topoetcone40", "topoetcone40_CloseByCorr", "ptcone20_CloseByCorr"] + EgammaExtraContent ) ]
564
565 MuonsExtraContent = [ ".".join( [
566 "Muons",
567 "MeasEnergyLoss.MeasEnergyLossSigma.EnergyLossSigma.ParamEnergyLoss",
568 "ParamEnergyLossSigmaMinus.ParamEnergyLossSigmaPlus.clusterLink.scatteringCurvatureSignificance",
569 "deltaPhiRescaled2.deltaPhiFromLastMeasurement.scatteringNeighbourSignificance",
570 "ptcone20.ptcone30.ptcone40.ptvarcone20.ptvarcone30.ptvarcone40.topoetcone30",
571 "neflowisol20.neflowisol30.neflowisol40.ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500",
572 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
573 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500",
574 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
575 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone30_Nonprompt_All_MaxWeightTTVA_pt500",
576 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
577 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
578 "msInnerMatchChi2", "isoSelIsOK", "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500_CloseByCorr",
579 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000_CloseByCorr", "neflowisol20_CloseByCorr", "topoetcone20_CloseByCorr"
580 ] ) ]
581
582 HIGG9D1SlimmingHelper.ExtraVariables += ElectronsExtraContent
583 HIGG9D1SlimmingHelper.ExtraVariables += PhotonsExtraContent
584 HIGG9D1SlimmingHelper.ExtraVariables += MuonsExtraContent
585
586 from IsolationSelection.IsolationSelectionConfig import setupIsoCloseBySlimmingVariables
587 setupIsoCloseBySlimmingVariables(HIGG9D1SlimmingHelper)
588
589 from LeptonTaggers.LeptonTaggersConfig import GetExtraPLITVariablesForDxAOD
590 HIGG9D1SlimmingHelper.ExtraVariables += GetExtraPLITVariablesForDxAOD()
591
592 HIGG9D1SlimmingHelper.AllVariables = AllVariables
593
594 # Trigger content
595 HIGG9D1SlimmingHelper.IncludeTriggerNavigation = False
596 HIGG9D1SlimmingHelper.IncludeJetTriggerContent = False
597 HIGG9D1SlimmingHelper.IncludeMuonTriggerContent = False
598 HIGG9D1SlimmingHelper.IncludeEGammaTriggerContent = False
599 HIGG9D1SlimmingHelper.IncludeTauTriggerContent = False
600 HIGG9D1SlimmingHelper.IncludeEtMissTriggerContent = False
601 HIGG9D1SlimmingHelper.IncludeBJetTriggerContent = False
602 HIGG9D1SlimmingHelper.IncludeBPhysTriggerContent = False
603 HIGG9D1SlimmingHelper.IncludeMinBiasTriggerContent = False
604 # Compact b-jet trigger matching info
605 HIGG9D1SlimmingHelper.IncludeBJetTriggerByYearContent = True
606
607 # Trigger matching
608 # Run 2
609 if flags.Trigger.EDMVersion == 2:
610 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
611 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = HIGG9D1SlimmingHelper,
612 OutputContainerPrefix = "TrigMatch_",
613 TriggerList = HIGG9D1TriggerListsHelper.Run2TriggerNamesTau)
614 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = HIGG9D1SlimmingHelper,
615 OutputContainerPrefix = "TrigMatch_",
616 TriggerList = HIGG9D1TriggerListsHelper.Run2TriggerNamesNoTau)
617 # Run 3, or Run 2 with navigation conversion
618 if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
619 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
620 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(HIGG9D1SlimmingHelper)
621
622 # L1 trigger objects
623 from Campaigns.Utils import getDataYear
624 if getDataYear(flags) >= 2024:
625 # Run 3 with Phase I jet RoIs.
626 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddjFexRoIsToSlimmingHelper
627 AddjFexRoIsToSlimmingHelper(SlimmingHelper = HIGG9D1SlimmingHelper)
628 elif getDataYear(flags) >= 2015:
629 # Run 2 and early Run 3, legacy L1 RoIs
630 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddLegacyL1JetRoIsToSlimmingHelper
631 AddLegacyL1JetRoIsToSlimmingHelper(SlimmingHelper = HIGG9D1SlimmingHelper)
632
633 # Output stream
634 HIGG9D1ItemList = HIGG9D1SlimmingHelper.GetItemList()
635 acc.merge(OutputStreamCfg(flags, "DAOD_HIGG9D1", ItemList=HIGG9D1ItemList, AcceptAlgs=["HIGG9D1Kernel"]))
636 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HIGG9D1", AcceptAlgs=["HIGG9D1Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData, MetadataCategory.TruthMetaData]))
637 acc.printConfig(withDetails=True, summariseProps=True, onlyComponents = [], printDefaults=True)
638 return acc

◆ HIGG9D1KernelCfg()

python.HIGG9D1.HIGG9D1KernelCfg ( flags,
name = 'HIGG9D1Kernel',
** kwargs )
Configure the derivation framework driving algorithm (kernel) for HIGG9D1

Definition at line 15 of file HIGG9D1.py.

15def HIGG9D1KernelCfg(flags, name='HIGG9D1Kernel', **kwargs):
16 """Configure the derivation framework driving algorithm (kernel) for HIGG9D1"""
17 acc = ComponentAccumulator()
18
19 doLRT = flags.Tracking.doLargeD0
20 if doLRT:
21 log_HIGG9D1.info("flags.Tracking.doLargeD0 is True")
22 else:
23 log_HIGG9D1.info("flags.Tracking.doLargeD0 is False")
24
25 mainMuonInput = "StdWithLRTMuons" if doLRT else "Muons"
26 mainIDInput = "InDetWithLRTTrackParticles" if doLRT else "InDetTrackParticles"
27 if doLRT:
28 from DerivationFrameworkLLP.LLPToolsConfig import LRTMuonMergerAlg
29 from AthenaConfiguration.Enums import LHCPeriod
30 acc.merge(LRTMuonMergerAlg( flags,
31 PromptMuonLocation = "Muons",
32 LRTMuonLocation = "MuonsLRT",
33 OutputMuonLocation = mainMuonInput,
34 CreateViewCollection = True,
35 UseRun3WP = flags.GeoModel.Run is LHCPeriod.Run3 ))
36 from DerivationFrameworkInDet.InDetToolsConfig import InDetLRTMergeCfg
37 acc.merge(InDetLRTMergeCfg( flags, OutputTrackParticleLocation = mainIDInput ))
38
39 MuonToRelink = [ "Muons", "MuonsLRT" ] if doLRT else []
40 TrkToRelink = ["InDetTrackParticles", "InDetLargeD0TrackParticles"] if doLRT else []
41
42 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import (
43 BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg,
44 BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg,
45 AugOriginalCountsCfg)
46
47 # Adds primary vertex counts and track counts to EventInfo before they are thinned
48 HIGG9D1_AugOriginalCounts = acc.popToolsAndMerge(
49 AugOriginalCountsCfg(flags, name = "HIGG9D1_AugOriginalCounts"))
50 acc.addPublicTool(HIGG9D1_AugOriginalCounts)
51
52 V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(flags, "HIGG9D1"))
53 vkalvrt = acc.popToolsAndMerge(BPHY_TrkVKalVrtFitterCfg(flags, "HIGG9D1"))
54 acc.addPublicTool(vkalvrt)
55 acc.addPublicTool(V0Tools)
56 TrackSelector = acc.popToolsAndMerge(BPHY_InDetDetailedTrackSelectorToolCfg(flags, "HIGG9D1"))
57 acc.addPublicTool(TrackSelector)
58 vpest = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(flags, "HIGG9D1"))
59 acc.addPublicTool(vpest)
60
61 from JpsiUpsilonTools.JpsiUpsilonToolsConfig import PrimaryVertexRefittingToolCfg
62 pvRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags))
63 acc.addPublicTool(pvRefitter)
64
65 HIGG9D1JpsiFinder = CompFactory.Analysis.JpsiFinder(
66 name = "HIGG9D1JpsiFinder",
67 muAndMu = True,
68 muAndTrack = False,
69 TrackAndTrack = False,
70 assumeDiMuons = True, # If true, will assume dimu hypothesis and use PDG value for mu mass
71 trackThresholdPt = 2400.,
72 invMassLower = 2600.0,
73 invMassUpper = 3500.0,
74 Chi2Cut = 20.,
75 oppChargesOnly = True,
76 atLeastOneComb = True,
77 useCombinedMeasurement = False, # Only takes effect if combOnly=True
78 muonCollectionKey = mainMuonInput,
79 TrackParticleCollection = mainIDInput,
80 V0VertexFitterTool = None, # V0 vertex fitter
81 useV0Fitter = False, # if False a TrkVertexFitterTool will be used
82 TrkVertexFitterTool = vkalvrt, # VKalVrt vertex fitter
83 TrackSelectorTool = TrackSelector,
84 VertexPointEstimator = vpest,
85 useMCPCuts = False )
86 acc.addPublicTool(HIGG9D1JpsiFinder)
87
88 HIGG9D1UpsiFinder = CompFactory.Analysis.JpsiFinder(
89 name = "HIGG9D1UpsiFinder",
90 muAndMu = True,
91 muAndTrack = False,
92 TrackAndTrack = False,
93 assumeDiMuons = True, # If true, will assume dimu hypothesis and use PDG value for mu mass
94 trackThresholdPt = 2400.,
95 invMassLower = 8900.0,
96 invMassUpper = 9900.0,
97 Chi2Cut = 20.,
98 oppChargesOnly = True,
99 atLeastOneComb = True,
100 useCombinedMeasurement = False, # Only takes effect if combOnly=True
101 muonCollectionKey = mainMuonInput,
102 TrackParticleCollection = mainIDInput,
103 V0VertexFitterTool = None, # V0 vertex fitter
104 useV0Fitter = False, # if False a TrkVertexFitterTool will be used
105 TrkVertexFitterTool = vkalvrt, # VKalVrt vertex fitter
106 TrackSelectorTool = TrackSelector,
107 VertexPointEstimator = vpest,
108 useMCPCuts = False )
109 acc.addPublicTool(HIGG9D1UpsiFinder)
110
111 HIGG9D1_Jpsi = CompFactory.DerivationFramework.Reco_Vertex(
112 name = "HIGG9D1_Jpsi",
113 VertexSearchTool = HIGG9D1JpsiFinder,
114 OutputVtxContainerName = "HIGG9D1_JpsiCandidates",
115 PVContainerName = "PrimaryVertices",
116 RefPVContainerName = "HIGG9D1_JpsiRefittedPrimaryVertices",
117 RefitPV = True,
118 MaxPVrefit = 100,
119 V0Tools = V0Tools,
120 RelinkTracks = TrkToRelink,
121 RelinkMuons = MuonToRelink,
122 PVRefitter = pvRefitter,
123 DoVertexType = 7)
124 acc.addPublicTool(HIGG9D1_Jpsi)
125
126 HIGG9D1_Upsi = CompFactory.DerivationFramework.Reco_Vertex(
127 name = "HIGG9D1_Upsi",
128 VertexSearchTool = HIGG9D1UpsiFinder,
129 OutputVtxContainerName = "HIGG9D1_UpsiCandidates",
130 PVContainerName = "PrimaryVertices",
131 RefPVContainerName = "HIGG9D1_UpsiRefittedPrimaryVertices",
132 RefitPV = True,
133 MaxPVrefit = 100,
134 V0Tools = V0Tools,
135 RelinkTracks = TrkToRelink,
136 RelinkMuons = MuonToRelink,
137 PVRefitter = pvRefitter,
138 DoVertexType = 7)
139 acc.addPublicTool(HIGG9D1_Upsi)
140
141 from InDetConfig.InDetTrackSelectionToolConfig import InDetTrackSelectionTool_Loose_Cfg
142 HIGG9D1_isoTrackSelTool = acc.popToolsAndMerge(InDetTrackSelectionTool_Loose_Cfg(
143 flags,
144 name = "HIGG9D1_isoTrackSelTool",
145 maxZ0SinTheta = 3.0,
146 minPt = 500.))
147
148 from IsolationAlgs.IsoToolsConfig import TrackIsolationToolCfg
149 HIGG9D1_TrackIsoTool = acc.popToolsAndMerge(TrackIsolationToolCfg(
150 flags,
151 name = "HIGG9D1_TrackIsoTool",
152 TrackSelectionTool = HIGG9D1_isoTrackSelTool))
153 acc.addPublicTool(HIGG9D1_TrackIsoTool)
154
155 HIGG9D1_JpsiVtxTrkIsoDecor = CompFactory.DerivationFramework.VertexTrackIsolation(
156 name = "HIGG9D1_JpsiVtxTrkIsoDecor",
157 TrackIsoTool = HIGG9D1_TrackIsoTool,
158 TrackContainer = "InDetTrackParticles",
159 InputVertexContainer = "HIGG9D1_JpsiCandidates",
160 FixElecExclusion = False,
161 IncludeV0 = False)
162 acc.addPublicTool(HIGG9D1_JpsiVtxTrkIsoDecor)
163
164 HIGG9D1_UpsiVtxTrkIsoDecor = CompFactory.DerivationFramework.VertexTrackIsolation(
165 name = "HIGG9D1_UpsiVtxTrkIsoDecor",
166 TrackIsoTool = HIGG9D1_TrackIsoTool,
167 TrackContainer = "InDetTrackParticles",
168 InputVertexContainer = "HIGG9D1_UpsiCandidates",
169 FixElecExclusion = False,
170 IncludeV0 = False)
171 acc.addPublicTool(HIGG9D1_UpsiVtxTrkIsoDecor)
172
173 # New subsequence
174 from AthenaCommon.CFElements import seqAND
175 acc.addSequence( seqAND("HIGG9D1Sequence") )
176
177 # Common augmentations
178 from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
179 acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = kwargs['TriggerListsHelper']), sequenceName="HIGG9D1Sequence")
180
181
184 HIGG9D1_onia_skim = CompFactory.DerivationFramework.AnyVertexSkimmingTool(name = "HIGG9D1_onia_skim", VertexContainerNames = ["HIGG9D1_JpsiCandidates", "HIGG9D1_UpsiCandidates"])
185 acc.addPublicTool(HIGG9D1_onia_skim)
186
187 HIGG9D1_onia_skimKernel = CompFactory.DerivationFramework.DerivationKernel(
188 "HIGG9D1_onia_skimKernel",
189 AugmentationTools = [ HIGG9D1_AugOriginalCounts, HIGG9D1_Jpsi, HIGG9D1_Upsi, HIGG9D1_JpsiVtxTrkIsoDecor, HIGG9D1_UpsiVtxTrkIsoDecor ],
190 SkimmingTools = [ HIGG9D1_onia_skim ])
191 # Add skimming tool to subsequence
192 acc.addEventAlgo(HIGG9D1_onia_skimKernel, sequenceName="HIGG9D1Sequence")
193
194
195 from DerivationFrameworkFlavourTag.FtagDerivationConfig import JetCollectionsBTaggingCfg
196 acc.merge(JetCollectionsBTaggingCfg(flags, ["AntiKt4EMPFlowJets"]), sequenceName="HIGG9D1Sequence")
197
198
201
202
204 HIGG9D1_smallR_EMPFlow_2j_sel = "count(AntiKt4EMPFlowJets.pt > 18*GeV && abs(AntiKt4EMPFlowJets.eta) < 2.8) >= 2"
205 HIGG9D1_smallR_EMPFlow_1j_sel = "count(AntiKt4EMPFlowJets.pt > 33*GeV && abs(AntiKt4EMPFlowJets.eta) < 2.8) >= 1"
206 # https://gitlab.cern.ch/atlas/athena/-/blob/main/PhysicsAnalysis/JetTagging/JetTagPerformanceCalibration/xAODBTaggingEfficiency/Root/BTaggingSelectionTool.cxx
207 # fraction_c (0.2), fraction_tau (0.01) and cutvalue (0.844) from TDirectory "GN2v01/AntiKt4EMPFlowJets/FixedCutBEff_77" of
208 # /cvmfs/atlas.cern.ch/repo/sw/database/GroupData/xAODBTaggingEfficiency/13TeV/MC20_2024-10-17_GN2v01_v1.root (run-2) and
209 # /cvmfs/atlas.cern.ch/repo/sw/database/GroupData/xAODBTaggingEfficiency/13p6TeV/MC23_2024-10-17_GN2v01_v1.root (run-3)
210 HIGG9D1_smallR_EMPFlow_1b_sel = "count(AntiKt4EMPFlowJets.pt > 18*GeV && abs(AntiKt4EMPFlowJets.eta) < 2.8 && log(BTagging_AntiKt4EMPFlow.GN2v01_pb/(0.2*BTagging_AntiKt4EMPFlow.GN2v01_pc + (1.-0.2-0.01)*BTagging_AntiKt4EMPFlow.GN2v01_pu + 0.01*BTagging_AntiKt4EMPFlow.GN2v01_ptau))>=0.844) >= 1"
211
212 HIGG9D1_bjet_sel = "%s && %s && %s" % (HIGG9D1_smallR_EMPFlow_2j_sel, HIGG9D1_smallR_EMPFlow_1j_sel, HIGG9D1_smallR_EMPFlow_1b_sel)
213 HIGG9D1_bb_skim = CompFactory.DerivationFramework.xAODStringSkimmingTool(name = "HIGG9D1_bb_skim", expression = HIGG9D1_bjet_sel)
214 acc.addPublicTool(HIGG9D1_bb_skim)
215
216
217 HIGG9D1_tauTrks = '(TauJets.nTracks + TauJets.nTracksIsolation >= 1 && TauJets.nTracks + TauJets.nTracksIsolation <= 8)'
218 HIGG9D1_tauLead = '(TauJets.pt > 23.0*GeV || TauJets.ptFinalCalib > 23.0*GeV)'
219 HIGG9D1_tauSubl = '(TauJets.pt > 18.0*GeV || TauJets.ptFinalCalib > 18.0*GeV)'
220 HIGG9D1_tauId = 'TauJets.DFTauRNNLoose'
221 HIGG9D1_tauReq0 = 'count( '+HIGG9D1_tauSubl+' && '+HIGG9D1_tauTrks+' ) >= 2'
222 HIGG9D1_tauReq1 = 'count( '+HIGG9D1_tauSubl+' && '+HIGG9D1_tauTrks+' && '+HIGG9D1_tauId+' ) >= 1'
223 HIGG9D1_tauReq2 = 'count( '+HIGG9D1_tauLead+' && '+HIGG9D1_tauTrks+' ) >= 1'
224 HIGG9D1_tau_sel = "%s && %s && %s" % (HIGG9D1_tauReq0, HIGG9D1_tauReq1, HIGG9D1_tauReq2)
225
226 HIGG9D1_tautau_skim = CompFactory.DerivationFramework.xAODStringSkimmingTool(name = "HIGG9D1_tautau_skim", expression = HIGG9D1_tau_sel)
227 acc.addPublicTool(HIGG9D1_tautau_skim)
228
229
230 from DerivationFrameworkHiggs.SkimmingToolHIGG1Config import SkimmingToolHIGG1Cfg
231 HIGG9D1_yy_skim = acc.popToolsAndMerge(SkimmingToolHIGG1Cfg(
232 flags,
233 name = "HIGG9D1_yy_skim",
234 RequireGRL = False,
235 ReqireLArError = True,
236 RequireTrigger = False,
237 RequirePreselection = True,
238 RequireKinematic = False,
239 RequireQuality = False, # True: "Tight" ID; False: DFCommonPhotonsIsEMLoose
240 RequireIsolation = False, # dummy
241 RequireInvariantMass = False,
242 IncludeSingleMergedElectronPreselection = False,
243 IncludeSingleElectronPreselection = False,
244 IncludeDoubleElectronPreselection = False,
245 IncludeSingleMuonPreselection = False,
246 IncludeDoubleMuonPreselection = False,
247 IncludePhotonDoubleElectronPreselection = False,
248 IncludePhotonMergedElectronPreselection = False,
249 IncludeHighPtPhotonElectronPreselection = False,
250 IncludeDoublePhotonPreselection = True, # di-photon requirement
251 MinimumPhotonPt = 4800.0,
252 RemoveCrack = True,
253 MaxEta = 2.47))
254 acc.addPublicTool(HIGG9D1_yy_skim)
255
256 # Combine skims with OR
257 HIGG9D1_bb_tautau_yy_skim = CompFactory.DerivationFramework.FilterCombinationOR(
258 name = "HIGG9D1_bb_tautau_yy_skim",
259 FilterList = [HIGG9D1_bb_skim, HIGG9D1_tautau_skim, HIGG9D1_yy_skim])
260 acc.addPublicTool(HIGG9D1_bb_tautau_yy_skim)
261
262 # Common calo decoration tools
263 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (CaloDecoratorKernelCfg, ClusterEnergyPerLayerDecoratorCfg)
264 acc.merge(CaloDecoratorKernelCfg(flags), sequenceName="HIGG9D1Sequence")
265
266 # Adding missing cluster energy decorators
267 augmentationTools = []
268 cluster_sizes = (3,5), (5,7), (7,7)
269 for neta, nphi in cluster_sizes:
270 cename = "ClusterEnergyPerLayerDecorator_%sx%s" % (neta, nphi)
271 ClusterEnergyPerLayerDecorator = acc.popToolsAndMerge( ClusterEnergyPerLayerDecoratorCfg(flags, neta = neta, nphi=nphi, name=cename ))
272 acc.addPublicTool(ClusterEnergyPerLayerDecorator)
273 augmentationTools.append(ClusterEnergyPerLayerDecorator)
274
275 HIGG9D1_bb_tautau_yy_skimKernel = CompFactory.DerivationFramework.DerivationKernel(
276 "HIGG9D1_bb_tautau_yy_skimKernel",
277 AugmentationTools = augmentationTools,
278 SkimmingTools = [ HIGG9D1_bb_tautau_yy_skim ])
279 # Add skimming tool to subsequence
280 acc.addEventAlgo(HIGG9D1_bb_tautau_yy_skimKernel, sequenceName="HIGG9D1Sequence")
281
282 from IsolationAlgs.DerivationTrackIsoConfig import DerivationTrackIsoCfg
283 acc.merge(DerivationTrackIsoCfg(flags, object_types=("Electrons", "Photons", "Muons"), sequenceName="HIGG9D1Sequence"))
284
285 # IFF augmentation - Adding Lepton Taggers
286 from LeptonTaggers.LeptonTaggersConfig import DecoratePLITAlgsCfg
287 acc.merge(DecoratePLITAlgsCfg(flags), sequenceName="HIGG9D1Sequence")
288
289 from IsolationSelection.IsolationSelectionConfig import IsoCloseByAlgsCfg
290 contNames = [ "Muons", "Electrons", "Photons" ]
291 acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite = False, containerNames = contNames, useSelTools = True, stream_name = kwargs['StreamName']), sequenceName="HIGG9D1Sequence")
292
293 # diphoton vertex augmentation
294 from DerivationFrameworkEGamma.EGammaToolsConfig import PhotonVertexSelectionWrapperKernelCfg
295 acc.merge(PhotonVertexSelectionWrapperKernelCfg(flags), sequenceName="HIGG9D1Sequence")
296 from DerivationFrameworkHiggs.HIGG1D1CustomVertexConfig import DiphotonVertexDecoratorCfg
297 DiphotonVertexDecorator = acc.popToolsAndMerge(DiphotonVertexDecoratorCfg(
298 flags,
299 MinimumPhotonPt = 4800.0,
300 DiphotonVertexName = "HIGG9D1_DiphotonPrimaryVertices"))
301 acc.addPublicTool(DiphotonVertexDecorator)
302 acc.addEventAlgo(CompFactory.DerivationFramework.CommonAugmentation(name = "DiphotonVertexAugmentation", AugmentationTools = [DiphotonVertexDecorator]), sequenceName="HIGG9D1Sequence")
303
304 #================
305 # Thinning tools
306 #================
307 # Include inner detector tracks associated with muons
308 HIGG9D1MuonTPThinningTool = CompFactory.DerivationFramework.MuonTrackParticleThinning(
309 name = "HIGG9D1MuonTPThinningTool",
310 StreamName = kwargs['StreamName'],
311 MuonKey = "Muons",
312 InDetTrackParticlesKey = "InDetTrackParticles")
313 acc.addPublicTool(HIGG9D1MuonTPThinningTool)
314
315 # Include inner detector tracks associated with electonrs
316 HIGG9D1ElectronTPThinningTool = CompFactory.DerivationFramework.EgammaTrackParticleThinning(
317 name = "HIGG9D1ElectronTPThinningTool",
318 SGKey = "Electrons",
319 StreamName = kwargs['StreamName'],
320 GSFTrackParticlesKey = "GSFTrackParticles",
321 InDetTrackParticlesKey = "InDetTrackParticles")
322 acc.addPublicTool(HIGG9D1ElectronTPThinningTool)
323
324 # Include inner detector tracks associated with photons
325 HIGG9D1PhotonTPThinningTool = CompFactory.DerivationFramework.EgammaTrackParticleThinning(
326 name = "HIGG9D1PhotonTPThinningTool",
327 SGKey = "Photons",
328 StreamName = kwargs['StreamName'],
329 GSFTrackParticlesKey = "GSFTrackParticles",
330 GSFConversionVerticesKey = "GSFConversionVertices",
331 InDetTrackParticlesKey = "InDetTrackParticles")
332 acc.addPublicTool(HIGG9D1PhotonTPThinningTool)
333
334 # Include inner detector tracks associated with taus
335 HIGG9D1TauTPThinningTool = CompFactory.DerivationFramework.TauTrackParticleThinning(
336 name = "HIGG9D1TauTPThinningTool",
337 StreamName = kwargs['StreamName'],
338 TauKey = "TauJets",
339 InDetTrackParticlesKey = "InDetTrackParticles",
340 DoTauTracksThinning = True,
341 TauTracksKey = "TauTracks")
342 acc.addPublicTool(HIGG9D1TauTPThinningTool)
343
344 # ID tracks associated to vertices
345 HIGG9D1_ThinVtxTracks = CompFactory.DerivationFramework.Thin_vtxTrk(
346 name = "HIGG9D1_ThinVtxTracks",
347 StreamName = kwargs['StreamName'],
348 TrackParticleContainerName = "InDetTrackParticles",
349 VertexContainerNames = [ HIGG9D1_Jpsi.OutputVtxContainerName, HIGG9D1_Upsi.OutputVtxContainerName ],
350 IgnoreFlags = True )
351 acc.addPublicTool(HIGG9D1_ThinVtxTracks)
352
353 thinningTools = [HIGG9D1MuonTPThinningTool,
354 HIGG9D1ElectronTPThinningTool,
355 HIGG9D1PhotonTPThinningTool,
356 HIGG9D1TauTPThinningTool,
357 HIGG9D1_ThinVtxTracks]
358
359
360 if flags.Input.isMC:
361 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import MenuTruthThinningCfg
362 HIGG9D1TruthTool = acc.getPrimaryAndMerge(MenuTruthThinningCfg(
363 flags = flags,
364 name = "HIGG9D1TruthTool",
365 StreamName = kwargs['StreamName'],
366 ParticlesKey = "TruthParticles",
367 VerticesKey = "TruthVertices",
368 WritePartons = False,
369 WriteHadrons = True,
370 WriteBHadrons = True,
371 WriteCHadrons = True,
372 WriteGeant = False,
373 WriteTauHad = True,
374 WriteBSM = True,
375 WriteBosons = True,
376 WriteBSMProducts = True,
377 WriteBosonProducts = False,
378 WriteTopAndDecays = True,
379 WriteEverything = False,
380 WriteAllLeptons = True,
381 WriteNotPhysical = False,
382 PreserveDescendants = False,
383 PreserveGeneratorDescendants = True,
384 PreserveAncestors = True))
385 acc.addPublicTool(HIGG9D1TruthTool)
386 thinningTools.append(HIGG9D1TruthTool)
387
388 #===================================================
389 # HEAVY FLAVOR CLASSIFICATION FOR ttbar+jets EVENTS
390 #===================================================
391 from DerivationFrameworkMCTruth.HFClassificationCommonConfig import HFClassificationCommonCfg
392 acc.merge(HFClassificationCommonCfg(flags), sequenceName="HIGG9D1Sequence")
393
394 # Apply thinning
395 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name, ThinningTools = thinningTools), sequenceName="HIGG9D1Sequence")
396
397 return acc
398

Variable Documentation

◆ log_HIGG9D1

python.HIGG9D1.log_HIGG9D1 = logging.getLogger('HIGG9D1')

Definition at line 11 of file HIGG9D1.py.

◆ streamName

str python.HIGG9D1.streamName = "StreamDAOD_HIGG9D1"

Definition at line 13 of file HIGG9D1.py.