ATLAS Offline Software
Loading...
Searching...
No Matches
TrigBmumuxComboHypoConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentFactory import CompFactory
4from TrigBphysHypo.TrigBmumuxComboHypoMonitoringConfig import TrigBmumuxComboHypoMonitoring, TrigBmumuxComboHypoToolMonitoring
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6
7from AthenaCommon.Logging import logging
8log = logging.getLogger('TrigBmumuxComboHypoConfig')
9
10def 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
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
TrigBmumuxComboHypoToolFromDict(flags, chainDict)