Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
DRAW_ZMUMU.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaCommon.CFElements import seqAND
6 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import InvariantMassToolCfg
7 from PrimaryDPDMaker.DRAWCommonByteStream import DRAWCommonByteStreamCfg
8 
9 
10 def DRAW_ZmumuKernelCfg(flags, name="DRAW_ZMUMUKernel", **kwargs):
11 
12  result = ComponentAccumulator()
13  result.addSequence(seqAND("DRAWZMUMU_Sequence"))
14 
15  massEntryName = "DRZmumuMass"
16  # Object selection strings
17  sel_muon1 = 'Muons.pt > 25*GeV && Muons.ptcone40/Muons.pt < 0.3'
18  sel_muon2 = 'Muons.pt > 20*GeV && Muons.ptcone40/Muons.pt < 0.3'
19 
20  mass_tool = result.getPrimaryAndMerge(InvariantMassToolCfg(flags,
21  name="DRZmumuMassTool",
22  ContainerName="Muons",
23  ObjectRequirements=sel_muon1,
24  SecondObjectRequirements=sel_muon2,
25  MassHypothesis=105.66,
26  SecondMassHypothesis=105.66,
27  StoreGateEntryName=massEntryName,
28  InputDecorNames=["Muons.ptcone40"]))
29 
30  from DerivationFrameworkTools.DerivationFrameworkToolsConfig import AsgSelectionToolWrapperCfg
31  from MuonSelectorTools.MuonSelectorToolsConfig import MuonSelectionToolCfg
32  muon_sel_tool = result.popToolsAndMerge(MuonSelectionToolCfg(flags, name="DRAW_ZMUMU_MuonsSelector",
33  MaxEta=3, MuQuality=2 # Use Medium muons
34  ))
35  result.addPublicTool(muon_sel_tool)
36  muonSkimmingTool = result.getPrimaryAndMerge(AsgSelectionToolWrapperCfg(flags,
37  name="DRAW_ZMUMU_GoodMuon_SkimmingTool",
38  ContainerName="Muons",
39  StoreGateEntryName="isMedium_DRAWZmumu",
40  AsgSelectionTool=muon_sel_tool))
41 
42  dimuonMassString = "( count ( {mass} > 70*GeV && {mass} < 110*GeV ) >= 1 )".format(
43  mass=massEntryName)
44 
45  muonSkimmingString = "( count (Muons.pt > 20*GeV && Muons.isMedium_DRAWZmumu == 1) >= 1)"
46  from DerivationFrameworkTools.DerivationFrameworkToolsConfig import xAODStringSkimmingToolCfg
47  dimuonMassSkimmingTool = result.getPrimaryAndMerge(xAODStringSkimmingToolCfg(flags,
48  name="DRAW_ZMUMU_DiMuonMass_SkimmingTool",
49  expression="{mass} && {muon} ".format(mass=dimuonMassString,
50  muon=muonSkimmingString)))
51 
52  # needed for dynamic determination of lowest-unprescaled single-muon and dimuon triggers
53  from TriggerMenuMT.TriggerAPI.TriggerAPI import TriggerAPI
54  from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod, TriggerType
55  periods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future
56  TriggerAPI.setConfigFlags(flags)
57  allUnprescaledTriggers = TriggerAPI.getLowestUnprescaledAnyPeriod(
58  periods, TriggerType.mu) + ["HLT_noalg_L1MU14FCH", "L1_MU14FCH"]
59  print("DRAW_ZMUMU: will skim on an OR of the following muon triggers (list provided at run-time by the TriggerAPI):")
60  for trig in allUnprescaledTriggers:
61  print(" **** {trig}".format(trig=trig))
62 
63  from DerivationFrameworkTools.DerivationFrameworkToolsConfig import TriggerSkimmingToolCfg
64  triggerSkimmingTool = result.getPrimaryAndMerge(TriggerSkimmingToolCfg(flags,
65  name="DRAWZMUMUTriggerSkimmingTool",
66  TriggerListOR=allUnprescaledTriggers))
67 
68  # Event selection tool
69  from DerivationFrameworkTools.DerivationFrameworkToolsConfig import FilterCombinationANDCfg
70  DRAW_ZMUMU_SkimmingTool = result.getPrimaryAndMerge(FilterCombinationANDCfg(flags,
71  name="DRAW_ZMUMU_FinalFilter",
72  FilterList=[dimuonMassSkimmingTool,
73  triggerSkimmingTool]))
74 
75  kwargs.setdefault("AugmentationTools", [muonSkimmingTool, mass_tool])
76  kwargs.setdefault("SkimmingTools", [DRAW_ZMUMU_SkimmingTool])
77  kwargs.setdefault("doChronoStat", flags.Concurrency.NumThreads <= 1)
78  the_alg = CompFactory.DerivationFramework.DerivationKernel(name, **kwargs)
79  result.addEventAlgo(the_alg, primary=True)
80  return result
81 
82 
83 def DRAW_ZmumuCfg(flags):
84  acc = ComponentAccumulator()
85 
86  # Main algorithm (kernel)
87  acc.merge(DRAW_ZmumuKernelCfg(flags), sequenceName="DRAWZMUMU_Sequence")
88  acc.merge(DRAWCommonByteStreamCfg(flags,
89  formatName='DRAW_ZMUMU',
90  filename=flags.Output.DRAW_ZmumuFileName))
91 
92  return acc
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
python.DerivationFrameworkToolsConfig.FilterCombinationANDCfg
def FilterCombinationANDCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:59
python.DerivationFrameworkToolsConfig.InvariantMassToolCfg
def InvariantMassToolCfg(ConfigFlags, name, **kwargs)
Invariant mass tool config.
Definition: DerivationFrameworkToolsConfig.py:44
python.CFElements.seqAND
def seqAND(name, subs=[])
Definition: CFElements.py:25
python.DerivationFrameworkToolsConfig.AsgSelectionToolWrapperCfg
def AsgSelectionToolWrapperCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:11
python.DerivationFrameworkToolsConfig.xAODStringSkimmingToolCfg
def xAODStringSkimmingToolCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:29
python.DRAW_ZMUMU.DRAW_ZmumuKernelCfg
def DRAW_ZmumuKernelCfg(flags, name="DRAW_ZMUMUKernel", **kwargs)
Definition: DRAW_ZMUMU.py:10
python.DerivationFrameworkToolsConfig.TriggerSkimmingToolCfg
def TriggerSkimmingToolCfg(ConfigFlags, name, **kwargs)
Trigger skimming list.
Definition: DerivationFrameworkToolsConfig.py:38
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
python.MuonSelectorToolsConfig.MuonSelectionToolCfg
def MuonSelectionToolCfg(flags, name="MuonSelectionTool", **kwargs)
Standard configuration of the MuonSelectionTool used in reconstruction & validation jobs The snippet ...
Definition: MuonSelectorToolsConfig.py:16
python.DRAWCommonByteStream.DRAWCommonByteStreamCfg
def DRAWCommonByteStreamCfg(flags, formatName, filename)
Definition: DRAWCommonByteStream.py:9
python.DRAW_ZMUMU.DRAW_ZmumuCfg
def DRAW_ZmumuCfg(flags)
Definition: DRAW_ZMUMU.py:83