ATLAS Offline Software
TrigBmumuxComboHypoConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentFactory import CompFactory
4 from TrigBphysHypo.TrigBmumuxComboHypoMonitoringConfig import TrigBmumuxComboHypoMonitoring, TrigBmumuxComboHypoToolMonitoring
5 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6 
7 from AthenaCommon.Logging import logging
8 log = logging.getLogger('TrigBmumuxComboHypoConfig')
9 
10 def BmumuxComboHypoCfg(flags, name):
11  log.debug('BmumuxComboHypoCfg.name = %s ', name)
12  suffix = 'Bmumux'
13  acc = ComponentAccumulator()
14  from TrigBphysHypo.TrigBPhyCommonConfig import TrigBPHY_TrkVKalVrtFitterCfg
15  from InDetConfig.InDetConversionFinderToolsConfig import BPHY_VertexPointEstimatorCfg
16  from TrackToVertex.TrackToVertexConfig import TrackToVertexCfg
17 
18  hypo = CompFactory.TrigBmumuxComboHypo(
19  name = 'BmumuxComboHypo',
20  VertexFitter = acc.popToolsAndMerge(TrigBPHY_TrkVKalVrtFitterCfg(flags, suffix)),
21  VertexPointEstimator = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(flags, 'VertexPointEstimator_'+suffix)),
22  TrackToVertexTool = acc.popToolsAndMerge(TrackToVertexCfg(flags,'TrackToVertexTool_'+suffix)),
23  CheckMultiplicityMap = False,
24  TrigBphysCollectionKey = 'HLT_Bmumux',
25  MuonCollectionKey = 'HLT_Muons_Bmumux',
26  TrackCollectionKey = 'HLT_IDTrack_Bmumux_IDTrig',
27  DeltaR = 0.01,
28  TrkZ0 = 50.,
29  FitAttemptsWarningThreshold = 200,
30  FitAttemptsBreakThreshold = 1000,
31  FastFit_2trk_chi2 = 50.,
32  FastFit_2mu1trk_chi2 = 60.,
33  # dimuon properties
34  Dimuon_rejectSameChargeTracks = True,
35  Dimuon_massRange = (100., 5500.),
36  Dimuon_chi2 = 20.,
37  # B+ -> mu+ mu- K+
38  BplusToMuMuKaon = True,
39  BplusToMuMuKaon_minKaonPt = 100.,
40  BplusToMuMuKaon_massRange = (4500., 5900.),
41  BplusToMuMuKaon_chi2 = 50.,
42  BplusToMuMuKaon_useFastFit = False,
43  # B_c+ -> J/psi(-> mu+ mu-) pi+
44  BcToMuMuPion = True,
45  BcToMuMuPion_minPionPt = 2000.,
46  BcToMuMuPion_dimuonMassRange = (2500., 4300.),
47  BcToMuMuPion_massRange = (5500., 7300.),
48  BcToMuMuPion_chi2 = 50.,
49  BcToMuMuPion_useFastFit = False,
50  # B_s0 -> mu+ mu- phi(-> K+ K-)
51  BsToMuMuPhi1020 = True,
52  BsToMuMuPhi1020_rejectSameChargeTracks = True,
53  BsToMuMuPhi1020_minKaonPt = 100.,
54  BsToMuMuPhi1020_massRange = (4800., 5800.),
55  BsToMuMuPhi1020_phiMassRange = (940., 1100.),
56  BsToMuMuPhi1020_chi2 = 60.,
57  BsToMuMuPhi1020_useFastFit = False,
58  # B0 -> mu+ mu- K*0(-> K+ pi-)
59  BdToMuMuKstar0 = True,
60  BdToMuMuKstar0_rejectSameChargeTracks = True,
61  BdToMuMuKstar0_minKaonPt = 100.,
62  BdToMuMuKstar0_minPionPt = 100.,
63  BdToMuMuKstar0_massRange = (4600., 5900.),
64  BdToMuMuKstar0_KstarMassRange = (700., 1100.),
65  BdToMuMuKstar0_chi2 = 60.,
66  BdToMuMuKstar0_useFastFit = True,
67  # Lambda_b0 -> J/psi(-> mu+ mu-) p K-
68  LambdaBToMuMuProtonKaon = True,
69  LambdaBToMuMuProtonKaon_rejectSameChargeTracks = False,
70  LambdaBToMuMuProtonKaon_minProtonPt = 1000.,
71  LambdaBToMuMuProtonKaon_minKaonPt = 1000.,
72  LambdaBToMuMuProtonKaon_minKstarMass = 1300.,
73  LambdaBToMuMuProtonKaon_dimuonMassRange = (2500., 4300.),
74  LambdaBToMuMuProtonKaon_massRange = (4800., 6400.),
75  LambdaBToMuMuProtonKaon_chi2 = 60.,
76  LambdaBToMuMuProtonKaon_useFastFit = True,
77  # B_c+ -> J/psi(-> mu+ mu-) D_s+(->phi(-> K+ K-) pi+)
78  BcToDsMuMu = True,
79  BcToDsMuMu_minKaonPt = 1000.,
80  BcToDsMuMu_minPionPt = 1000.,
81  BcToDsMuMu_massRange = (5500., 7300.),
82  BcToDsMuMu_dimuonMassRange = (2500., 4300.),
83  BcToDsMuMu_phiMassRange = (940., 1100.),
84  BcToDsMuMu_DsMassRange = (1750., 2100.),
85  BcToDsMuMu_chi2 = 60.,
86  BcToDsMuMu_useFastFit = True,
87  # B_c+ -> J/psi(-> mu+ mu-) D+(-> K- pi+ pi+)
88  BcToDplusMuMu = True,
89  BcToDplusMuMu_minKaonPt = 1000.,
90  BcToDplusMuMu_minPionPt = 1000.,
91  BcToDplusMuMu_massRange = (5500., 7300.),
92  BcToDplusMuMu_dimuonMassRange = (2500., 4300.),
93  BcToDplusMuMu_DplusMassRange = (1750., 2000.),
94  BcToDplusMuMu_chi2 = 60.,
95  BcToDplusMuMu_useFastFit = True,
96  # B_c+ -> J/psi(-> mu+ mu-) D*+(-> D0(-> K- pi+) pi+)
97  BcToDstarMuMu = True,
98  BcToDstarMuMu_makeDstar = True,
99  BcToDstarMuMu_minD0KaonPt = 1000.,
100  BcToDstarMuMu_minD0PionPt = 1000.,
101  BcToDstarMuMu_minDstarPionPt = 500.,
102  BcToDstarMuMu_maxDstarPionZ0 = 5.,
103  BcToDstarMuMu_massRange = (5500., 7300.),
104  BcToDstarMuMu_dimuonMassRange = (2500., 4300.),
105  BcToDstarMuMu_D0MassRange = (1750., 2000.),
106  BcToDstarMuMu_DstarMassRange = (-1., 2110.),
107  BcToDstarMuMu_chi2 = 60.,
108  MonTool = TrigBmumuxComboHypoMonitoring(flags, 'TrigBmumuxComboHypoMonitoring'))
109 
110  acc.addEventAlgo(hypo)
111  return acc
112 
113 
114 def TrigBmumuxComboHypoToolFromDict(flags, chainDict):
115 
116  topoAlgs = chainDict['chainName']
117  log.debug("Set for algorithm %s", topoAlgs)
118  tool = CompFactory.TrigBmumuxComboHypoTool(topoAlgs)
119  decay = chainDict['topo'][-1]
120  trigDecayDict = { # xAOD::TrigBphys::pType
121  'Bidperf': 6, # MULTIMU
122  'BpmumuKp': 7, # BKMUMU
123  'BcmumuPi': 21, # BCPIMUMU
124  'BsmumuPhi': 9, # BSPHIMUMU
125  'BdmumuKst': 8, # BDKSTMUMU
126  'LbPqKm': 22, # LBPQMUMU
127  'BcmumuDploose' : 13, # BCDPMUMU
128  'BcmumuDsloose' : 11, # BCDSMUMU
129  'BcmumuD0Xloose' : 19, # DZKPI
130  'BcmumuDstarloose' : 14, # BCDSTMUMU
131  'BpmuD0X' : 23, # B2D0MUX
132  'BdmuDpX' : 24, # BD2DMMUX
133  'BdmuDstarX' : 25, # BD2DSTMUX
134  'BsmuDsX' : 26, # BS2DSMUX
135  'LbmuLcX' : 27 # LB2LCMUX
136  }
137  tool.Decay = trigDecayDict[decay]
138  tool.isBmux = True if 'bBmux' in chainDict['topo'] else False
139  monGroups = ['bphysMon:online']
140  if any(group in monGroups for group in chainDict['monGroups']):
141  tool.MonTool = TrigBmumuxComboHypoToolMonitoring(flags, 'MonTool')
142  return tool
TrigBmumuxComboHypoMonitoringConfig.TrigBmumuxComboHypoToolMonitoring
def TrigBmumuxComboHypoToolMonitoring(flags, name)
Definition: TrigBmumuxComboHypoMonitoringConfig.py:15
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TrigBmumuxComboHypoMonitoringConfig.TrigBmumuxComboHypoMonitoring
def TrigBmumuxComboHypoMonitoring(flags, name)
Definition: TrigBmumuxComboHypoMonitoringConfig.py:5
TrigBmumuxComboHypoConfig.BmumuxComboHypoCfg
def BmumuxComboHypoCfg(flags, name)
Definition: TrigBmumuxComboHypoConfig.py:10
TrigBPhyCommonConfig.TrigBPHY_TrkVKalVrtFitterCfg
def TrigBPHY_TrkVKalVrtFitterCfg(flags, suffix, **kwargs)
Definition: TrigBPhyCommonConfig.py:3
TrigBmumuxComboHypoConfig.TrigBmumuxComboHypoToolFromDict
def TrigBmumuxComboHypoToolFromDict(flags, chainDict)
Definition: TrigBmumuxComboHypoConfig.py:114
python.InDetConversionFinderToolsConfig.BPHY_VertexPointEstimatorCfg
def BPHY_VertexPointEstimatorCfg(flags, name="BPHY_VertexPointEstimator", **kwargs)
Definition: InDetConversionFinderToolsConfig.py:69
TrackToVertexConfig.TrackToVertexCfg
def TrackToVertexCfg(flags, name="AtlasTrackToVertexTool", **kwargs)
Definition: TrackToVertexConfig.py:6