ATLAS Offline Software
TrigBmumuxComboHypo.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIG_TrigBmumuxComboHypo_H
6 #define TRIG_TrigBmumuxComboHypo_H
7 
8 #include <string>
9 #include <vector>
10 #include <utility>
11 
12 #include "Gaudi/Property.h"
16 #include "xAODMuon/MuonContainer.h"
20 
23 
26 
30 
33 
34 #include "ITrigBphysState.h"
36 
37 #include "Constants.h"
38 typedef struct PDG20 PDG;
39 
40 
46  public:
47  TrigBmumuxState() = delete;
48  TrigBmumuxState(const EventContext& context,
52  const InDet::BeamSpotData* beamSpotData = nullptr)
54  dimuons.setStore(&dimuonsStore);
55  }
56  virtual ~TrigBmumuxState() = default;
57 
58  // EFCB muon candidates from mergeMuonsFromDecisions()
59  struct Muon {
61  std::vector<ElementLink<TrigCompositeUtils::DecisionContainer>> decisionLinks;
63  };
64  std::vector<Muon> muons;
65 
66  // tracks from mergeTracksFromViews()
67  std::vector<ElementLink<xAOD::TrackParticleContainer>> tracks;
68  bool isCompositeRoI = false;
69 
70  // dimuon candidates from findDimuonCandidates()
73  std::vector<std::array<size_t, 2>> trigBphysMuonIndices; // {mu1, mu2} indices in state.muons for dimuon in state.dimuons
74 
75  // tracks to be fitted with given dimuon candidate from findBmumuxCandidates_selectTracks()
76  std::vector<ElementLink<xAOD::TrackParticleContainer>> selectedTracks;
77  std::map<const xAOD::TrackParticle*, double> selectedTrackZ0; // track z0 impact parameters wrt dimuon vertex
78 
79  // track combinations from findBmumuxCandidates_fit(makeCombinations = true)
80  std::map<size_t, size_t> trackCombinations; // key = track index for dimuon + track case OR state.getCombinationKey(trk1, trk2) for track + track case : number of found combinations
81 
82  // sorted vector of track combinations which failed vertex fit from findBmumuxCandidates_fastFit()
83  std::vector<size_t> badTrackCombinations;
84 
85  size_t getCombinationKey(size_t i1, size_t i2) const { size_t n = selectedTracks.size(); return (i1 < i2 ? i1 + n * i2 : i2 + n * i1); }
86  void addTrackCombination(size_t i1) { trackCombinations[i1]++; }
87  void addTrackCombination(size_t i1, size_t i2) { trackCombinations[getCombinationKey(i1, i2)]++; }
88  void addTrackCombination(size_t i1, size_t i2, size_t i3) { addTrackCombination(i1, i2); addTrackCombination(i1, i3); addTrackCombination(i2, i3); }
89  bool isBadCombination(size_t i1) const { return std::binary_search(badTrackCombinations.begin(), badTrackCombinations.end(), i1); }
90  bool isBadCombination(size_t i1, size_t i2, size_t i3) const { return (isBadCombination(getCombinationKey(i1, i2)) || isBadCombination(getCombinationKey(i1, i3)) || isBadCombination(getCombinationKey(i2, i3))); }
91 
93  if (!triggerObject) {
94  return StatusCode::FAILURE;
95  }
96  trigBphysCollection().push_back(triggerObject);
97  return StatusCode::SUCCESS;
98  }
99 
100 };
101 
102 
116  public:
117  TrigBmumuxComboHypo(const std::string& name, ISvcLocator* pSvcLocator);
119 
120  virtual StatusCode initialize() override;
121  virtual StatusCode execute(const EventContext& context) const override;
122 
123  enum Decay : size_t {
124  kPsi_2mu, // psi -> mu+ mu-
125  kB_2mu1trk, // B -> mu+ mu- trk1
126  kB_2mu2trk, // B -> mu+ mu- trk1 trk2
127  kDs, // D_s+ -> K+ K- pi+
128  kDplus, // D+ -> K- pi+ pi+
129  kD0, // D0 -> K- pi+
130  kB_PsiPi, // psi + pion from D*+
131  kFastFit_2trk, // trk1 + trk2
132  kFastFit_2mu1trk // dimuon + trk1
133  };
134 
135  private:
136 
142 
148 
154 
159 
164 
170  StatusCode findBmumuxCandidates_fastFit(TrigBmumuxState&, size_t dimuonIndex) const;
171 
176  StatusCode findBmumuxCandidates_fit(TrigBmumuxState&, size_t dimuonIndex, bool makeCombinations = false) const;
177 
183 
192  std::unique_ptr<xAOD::Vertex> fit(
193  const EventContext& context,
195  Decay decay = kPsi_2mu,
196  const xAOD::Vertex* dimuon = nullptr) const;
197 
207  TrigBmumuxState& state,
208  const xAOD::Vertex& vertex,
210  const std::vector<double>& trkMass = {PDG::mMuon, PDG::mMuon},
212 
217  bool isIdenticalTracks(const xAOD::TrackParticle* lhs, const xAOD::TrackParticle* rhs) const;
218  bool isIdenticalTracks(const xAOD::Muon* lhs, const xAOD::Muon* rhs) const;
223  bool isInSameRoI(const xAOD::Muon*, const xAOD::TrackParticle*) const;
224  bool passDimuonTrigger(const std::vector<const TrigCompositeUtils::DecisionIDContainer*>& previousDecisionIDs) const;
225 
229  bool isInMassRange(double mass, const std::pair<double, double>& range) const { return (mass > range.first && mass < range.second); }
235  double Lxy(const Amg::Vector3D& productionVertex, const xAOD::Vertex& decayVertex) const;
236 
243  xAOD::TrackParticle::GenVecFourMom_t momentum(const xAOD::Vertex& vertex, const std::vector<double>& trkMass) const;
244 
246  "TrackCollectionKey", "InDetTrackParticles", "input TrackParticle container name"};
248  "MuonCollectionKey", "Muons", "input EF Muon container name"};
250  "TrigBphysCollectionKey", "TrigBphysContainer", "output TrigBphysContainer name"};
252  m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"};
253 
254  // general properties
255  Gaudi::Property<double> m_deltaR {this,
256  "DeltaR", 0.01, "minimum deltaR between same-sign tracks (overlap removal)"};
257  Gaudi::Property<double> m_trkZ0 {this,
258  "TrkZ0", 50., "maximum z0 impact parameter of the track wrt the fitted dimuon vertex; no preselection if negative"};
259  Gaudi::Property<double> m_roiEtaWidth {this,
260  "RoiEtaWidth", 0.75, "extent of the RoI in eta from initial muon, to be check for SuperRoI"};
261  Gaudi::Property<double> m_roiPhiWidth {this,
262  "RoiPhiWidth", 0.75, "extent of the RoI in phi from initial muon, to be check for SuperRoI"};
263  Gaudi::Property<size_t> m_fitAttemptsWarningThreshold {this,
264  "FitAttemptsWarningThreshold", 200, "Events processing this many calls of the vertex fitter will generate a WARNING message (time-out protect)"};
265  Gaudi::Property<size_t> m_fitAttemptsBreakThreshold {this,
266  "FitAttemptsBreakThreshold", 1000, "Events processing this many calls of the vertex fitter will generate a second WARNING message and the loop over combinations will be terminated at this point (time-out protect)"};
267  Gaudi::Property<double> m_fastFit_2trk_chi2 {this,
268  "FastFit_2trk_chi2", 50., "maximum chi2 for fast fit of trk1 + trk2"};
269  Gaudi::Property<double> m_fastFit_2mu1trk_chi2 {this,
270  "FastFit_2mu1trk_chi2", 60., "maximum chi2 for fast fit of dimuon + trk1"};
271 
272  // dimuon properties
273  Gaudi::Property<bool> m_dimuon_rejectSameChargeTracks {this,
274  "Dimuon_rejectSameChargeTracks", true, "if true, the only (mu+, mu-) pairs will be kept (no wrong-charge combinations)"};
275  Gaudi::Property<std::pair<double, double>> m_dimuon_massRange {this,
276  "Dimuon_massRange", {100., 5500.}, "dimuon mass range"};
277  Gaudi::Property<double> m_dimuon_chi2 {this,
278  "Dimuon_chi2", 20., "maximum chi2 of the dimuon vertex"};
279 
280  // B+ -> mu+ mu- K+
281  Gaudi::Property<bool> m_BplusToMuMuKaon {this,
282  "BplusToMuMuKaon", true, "switch on/off B+ -> mu+ mu- K+ decay"};
283  Gaudi::Property<double> m_BplusToMuMuKaon_minKaonPt {this,
284  "BplusToMuMuKaon_minKaonPt", 100., "minimum pT of kaon track"};
285  Gaudi::Property<std::pair<double, double>> m_BplusToMuMuKaon_massRange {this,
286  "BplusToMuMuKaon_massRange", {4500., 5900.}, "B+ mass range"};
287  Gaudi::Property<float> m_BplusToMuMuKaon_chi2 {this,
288  "BplusToMuMuKaon_chi2", 50., "maximum chi2 of the fitted B+ vertex"};
289  Gaudi::Property<bool> m_BplusToMuMuKaon_useFastFit {this,
290  "BplusToMuMuKaon_useFastFit", false, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"};
291 
292  // B_c+ -> J/psi(-> mu+ mu-) pi+
293  Gaudi::Property<bool> m_BcToMuMuPion {this,
294  "BcToMuMuPion", true, "switch on/off B_c+ -> J/psi(-> mu+ mu-) pi+ decay"};
295  Gaudi::Property<double> m_BcToMuMuPion_minPionPt {this,
296  "BcToMuMuPion_minPionPt", 2000., "minimum pT of pion track"};
297  Gaudi::Property<std::pair<double, double>> m_BcToMuMuPion_dimuonMassRange {this,
298  "BcToMuMuPion_dimuonMassRange", {2500., 4300.}, "dimuon mass range for B_c+ decay"};
299  Gaudi::Property<std::pair<double, double>> m_BcToMuMuPion_massRange {this,
300  "BcToMuMuPion_massRange", {5500., 7300.}, "B_c+ mass range"};
301  Gaudi::Property<float> m_BcToMuMuPion_chi2 {this,
302  "BcToMuMuPion_chi2", 50., "maximum chi2 of the fitted B_c+ vertex"};
303  Gaudi::Property<bool> m_BcToMuMuPion_useFastFit {this,
304  "BcToMuMuPion_useFastFit", false, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"};
305 
306  // B_s0 -> mu+ mu- phi(-> K+ K-)
307  Gaudi::Property<bool> m_BsToMuMuPhi1020 {this,
308  "BsToMuMuPhi1020", true, "switch on/off B_s0 -> mu+ mu- phi(-> K+ K-) decay"};
309  Gaudi::Property<bool> m_BsToMuMuPhi1020_rejectSameChargeTracks {this,
310  "BsToMuMuPhi1020_rejectSameChargeTracks", true, "if true, the only (K+, K-) pairs will be kept (no wrong-charge combinations)"};
311  Gaudi::Property<double> m_BsToMuMuPhi1020_minKaonPt {this,
312  "BsToMuMuPhi1020_minKaonPt", 100., "minimum pT of kaon tracks"};
313  Gaudi::Property<std::pair<double, double>> m_BsToMuMuPhi1020_massRange {this,
314  "BsToMuMuPhi1020_massRange", {4800., 5800.}, "B_s0 mass range"};
315  Gaudi::Property<std::pair<double, double>> m_BsToMuMuPhi1020_phiMassRange {this,
316  "BsToMuMuPhi1020_phiMassRange", {940., 1100.}, "phi1020 mass range"};
317  Gaudi::Property<float> m_BsToMuMuPhi1020_chi2 {this,
318  "BsToMuMuPhi1020_chi2", 60., "maximum chi2 of the fitted B+ vertex"};
319  Gaudi::Property<bool> m_BsToMuMuPhi1020_useFastFit {this,
320  "BsToMuMuPhi1020_useFastFit", false, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"};
321 
322  // B0 -> mu+ mu- K*0(-> K+ pi-)
323  Gaudi::Property<bool> m_BdToMuMuKstar0 {this,
324  "BdToMuMuKstar0", true, "switch on/off B0 -> mu+ mu- K*0(-> K+ pi-) decay"};
325  Gaudi::Property<bool> m_BdToMuMuKstar0_rejectSameChargeTracks {this,
326  "BdToMuMuKstar0_rejectSameChargeTracks", true, "if true, the only (K+, pi-) and (K-, pi+) pairs will be kept (no wrong-charge combinations)"};
327  Gaudi::Property<double> m_BdToMuMuKstar0_minKaonPt {this,
328  "BdToMuMuKstar0_minKaonPt", 100., "minimum pT of kaon track"};
329  Gaudi::Property<double> m_BdToMuMuKstar0_minPionPt {this,
330  "BdToMuMuKstar0_minPionPt", 100., "minimum pT of pion track"};
331  Gaudi::Property<std::pair<double, double>> m_BdToMuMuKstar0_massRange {this,
332  "BdToMuMuKstar0_massRange", {4600., 5900.}, "B0 mass range"};
333  Gaudi::Property<std::pair<double, double>> m_BdToMuMuKstar0_KstarMassRange {this,
334  "BdToMuMuKstar0_KstarMassRange", {700., 1100.}, "K*0 mass range"};
335  Gaudi::Property<float> m_BdToMuMuKstar0_chi2 {this,
336  "BdToMuMuKstar0_chi2", 60., "maximum chi2 of the fitted B0 vertex"};
337  Gaudi::Property<bool> m_BdToMuMuKstar0_useFastFit {this,
338  "BdToMuMuKstar0_useFastFit", true, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"};
339 
340  // Lambda_b0 -> J/psi(-> mu+ mu-) p K-
341  Gaudi::Property<bool> m_LambdaBToMuMuProtonKaon {this,
342  "LambdaBToMuMuProtonKaon", true, "switch on/off Lambda_b0 -> J/psi(-> mu+ mu-) p K- decay"};
344  "LambdaBToMuMuProtonKaon_rejectSameChargeTracks", false, "if true, the only (p, K-) and (anti-p, K+) pairs will be kept (no wrong-charge combinations)"};
345  Gaudi::Property<double> m_LambdaBToMuMuProtonKaon_minProtonPt {this,
346  "LambdaBToMuMuProtonKaon_minProtonPt", 1000., "minimum pT of proton track"};
347  Gaudi::Property<double> m_LambdaBToMuMuProtonKaon_minKaonPt {this,
348  "LambdaBToMuMuProtonKaon_minKaonPt", 1000., "minimum pT of kaon track"};
349  Gaudi::Property<double> m_LambdaBToMuMuProtonKaon_minKstarMass {this,
350  "LambdaBToMuMuProtonKaon_minKstarMass", 1300., "min value for both mass(trk1=kaon, trk2=pion) and mass(trk1=pion, trk2=kaon)"};
351  Gaudi::Property<std::pair<double, double>> m_LambdaBToMuMuProtonKaon_dimuonMassRange {this,
352  "LambdaBToMuMuProtonKaon_dimuonMassRange", {2500., 4300.}, "dimuon mass range for Lambda_b0 decay"};
353  Gaudi::Property<std::pair<double, double>> m_LambdaBToMuMuProtonKaon_massRange {this,
354  "LambdaBToMuMuProtonKaon_massRange", {4800., 6400.}, "Lambda_b0 mass range"};
355  Gaudi::Property<float> m_LambdaBToMuMuProtonKaon_chi2 {this,
356  "LambdaBToMuMuProtonKaon_chi2", 60., "maximum chi2 of the fitted Lambda_b0 vertex"};
357  Gaudi::Property<bool> m_LambdaBToMuMuProtonKaon_useFastFit {this,
358  "LambdaBToMuMuProtonKaon_useFastFit", true, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"};
359 
360  // B_c+ -> J/psi(-> mu+ mu-) D_s+(->phi(-> K+ K-) pi+)
361  Gaudi::Property<bool> m_BcToDsMuMu {this,
362  "BcToDsMuMu", true, "switch on/off B_c+ -> J/psi(-> mu+ mu-) D_s+(->phi(-> K+ K-) pi+) decay"};
363  Gaudi::Property<double> m_BcToDsMuMu_minKaonPt {this,
364  "BcToDsMuMu_minKaonPt", 1000., "minimum pT of kaon track from phi(1020)"};
365  Gaudi::Property<double> m_BcToDsMuMu_minPionPt {this,
366  "BcToDsMuMu_minPionPt", 1000., "minimum pT of pion track from D_s+"};
367  Gaudi::Property<std::pair<double, double>> m_BcToDsMuMu_massRange {this,
368  "BcToDsMuMu_massRange", {5500., 7300.}, "B_c+ mass range"};
369  Gaudi::Property<std::pair<double, double>> m_BcToDsMuMu_dimuonMassRange {this,
370  "BcToDsMuMu_dimuonMassRange", {2500., 4300.}, "dimuon mass range for B_c+ -> J/psi D_s+ decay"};
371  Gaudi::Property<std::pair<double, double>> m_BcToDsMuMu_phiMassRange {this,
372  "BcToDsMuMu_phiMassRange", {940., 1100.}, "phi(1020) mass range"};
373  Gaudi::Property<std::pair<double, double>> m_BcToDsMuMu_DsMassRange {this,
374  "BcToDsMuMu_DsMassRange", {1750., 2100.}, "D_s+ mass range"};
375  Gaudi::Property<float> m_BcToDsMuMu_chi2 {this,
376  "BcToDsMuMu_chi2", 60., "maximum chi2 of the fitted B_c+ vertex"};
377  Gaudi::Property<bool> m_BcToDsMuMu_useFastFit {this,
378  "BcToDsMuMu_useFastFit", true, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"};
379 
380  // B_c+ -> J/psi(-> mu+ mu-) D+(-> K- pi+ pi+)
381  Gaudi::Property<bool> m_BcToDplusMuMu {this,
382  "BcToDplusMuMu", true, "switch on/off B_c+ -> J/psi(-> mu+ mu-) D+(-> K- pi+ pi+) decay"};
383  Gaudi::Property<double> m_BcToDplusMuMu_minKaonPt {this,
384  "BcToDplusMuMu_minKaonPt", 1000., "minimum pT of kaon track from D+"};
385  Gaudi::Property<double> m_BcToDplusMuMu_minPionPt {this,
386  "BcToDplusMuMu_minPionPt", 1000., "minimum pT of pion track from D+"};
387  Gaudi::Property<std::pair<double, double>> m_BcToDplusMuMu_massRange {this,
388  "BcToDplusMuMu_massRange", {5500., 7300.}, "B_c+ mass range"};
389  Gaudi::Property<std::pair<double, double>> m_BcToDplusMuMu_dimuonMassRange {this,
390  "BcToDplusMuMu_dimuonMassRange", {2500., 4300.}, "dimuon mass range for B_c+ -> J/psi D+ decay"};
391  Gaudi::Property<std::pair<double, double>> m_BcToDplusMuMu_DplusMassRange {this,
392  "BcToDplusMuMu_DplusMassRange", {1750., 2000.}, "D+ mass range"};
393  Gaudi::Property<float> m_BcToDplusMuMu_chi2 {this,
394  "BcToDplusMuMu_chi2", 60., "maximum chi2 of the fitted B_c+ vertex"};
395  Gaudi::Property<bool> m_BcToDplusMuMu_useFastFit {this,
396  "BcToDplusMuMu_useFastFit", true, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"};
397 
398  // B_c+ -> J/psi(-> mu+ mu-) D*+(-> D0(-> K- pi+) pi+)
399  Gaudi::Property<bool> m_BcToDstarMuMu {this,
400  "BcToDstarMuMu", true, "switch on/off partial reconstruction of B_c+ -> J/psi(-> mu+ mu-) D0(-> K- pi+) X decay"};
401  Gaudi::Property<bool> m_BcToDstarMuMu_makeDstar {this,
402  "BcToDstarMuMu_makeDstar", true, "switch on/off full reconstruction of B_c+ -> J/psi(-> mu+ mu-) D*+(-> D0(-> K- pi+) pi+) decay"};
403  Gaudi::Property<double> m_BcToDstarMuMu_minD0KaonPt {this,
404  "BcToDstarMuMu_minD0KaonPt", 1000., "minimum pT of kaon track from D0"};
405  Gaudi::Property<double> m_BcToDstarMuMu_minD0PionPt {this,
406  "BcToDstarMuMu_minD0PionPt", 1000., "minimum pT of pion track from D0"};
407  Gaudi::Property<double> m_BcToDstarMuMu_minDstarPionPt {this,
408  "BcToDstarMuMu_minDstarPionPt", 500., "minimum pT of pion track from D*+"};
409  Gaudi::Property<double> m_BcToDstarMuMu_maxDstarPionZ0 {this,
410  "BcToDstarMuMu_maxDstarPionZ0", 5., "maximum z0 impact parameter of the pion track from D*+ wrt the fitted dimuon vertex; no preselection if negative"};
411  Gaudi::Property<std::pair<double, double>> m_BcToDstarMuMu_massRange {this,
412  "BcToDstarMuMu_massRange", {5500., 7300.}, "B_c+ mass range"};
413  Gaudi::Property<std::pair<double, double>> m_BcToDstarMuMu_dimuonMassRange {this,
414  "BcToDstarMuMu_dimuonMassRange", {2500., 4300.}, "dimuon mass range for B_c+ -> J/psi D+ decay"};
415  Gaudi::Property<std::pair<double, double>> m_BcToDstarMuMu_D0MassRange {this,
416  "BcToDstarMuMu_D0MassRange", {1750., 2000.}, "D0 mass range"};
417  Gaudi::Property<std::pair<double, double>> m_BcToDstarMuMu_DstarMassRange {this,
418  "BcToDstarMuMu_DstarMassRange", {-1., 2110.}, "D*+ mass range"};
419  Gaudi::Property<float> m_BcToDstarMuMu_chi2 {this,
420  "BcToDstarMuMu_chi2", 60., "maximum chi2 of the fitted B_c+ vertex"};
421 
422  // external tools
423  ToolHandle<InDet::VertexPointEstimator> m_vertexPointEstimator {this,
424  "VertexPointEstimator", "", "tool to find starting point for the vertex fitter"};
425  ToolHandle<Trk::TrkVKalVrtFitter> m_vertexFitter {this,
426  "VertexFitter", "", "VKalVrtFitter tool to fit tracks into the common vertex"};
427  ToolHandle<Reco::ITrackToVertex> m_trackToVertexTool {this,
428  "TrackToVertexTool", "", "tool to extrapolate track to vertex or beamspot"};
429  ToolHandle<GenericMonitoringTool> m_monTool {this,
430  "MonTool", "", "monitoring tool"};
431 
433 
434  const static std::vector<std::vector<double>> s_trkMass;
435 
436 };
437 
438 #endif // TRIG_TrigBmumuxComboHypo_H
439 
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
TrigBmumuxComboHypo::m_fastFit_2trk_chi2
Gaudi::Property< double > m_fastFit_2trk_chi2
Definition: TrigBmumuxComboHypo.h:267
TrigBmumuxState::isBadCombination
bool isBadCombination(size_t i1, size_t i2, size_t i3) const
Definition: TrigBmumuxComboHypo.h:90
TrigBmumuxComboHypo::m_BcToDsMuMu_phiMassRange
Gaudi::Property< std::pair< double, double > > m_BcToDsMuMu_phiMassRange
Definition: TrigBmumuxComboHypo.h:371
xAOD::TrackParticle_v1::GenVecFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzM4D< double > > GenVecFourMom_t
Base 4 Momentum type for TrackParticle.
Definition: TrackParticle_v1.h:78
TrigBmumuxComboHypo::m_BcToDplusMuMu_massRange
Gaudi::Property< std::pair< double, double > > m_BcToDplusMuMu_massRange
Definition: TrigBmumuxComboHypo.h:387
TrigBmumuxComboHypo::m_BcToDstarMuMu_minDstarPionPt
Gaudi::Property< double > m_BcToDstarMuMu_minDstarPionPt
Definition: TrigBmumuxComboHypo.h:407
TrigBmumuxState::addTriggerObject
StatusCode addTriggerObject(xAOD::TrigBphys *triggerObject)
Definition: TrigBmumuxComboHypo.h:92
TrigBmumuxComboHypo::s_trkMass
static const std::vector< std::vector< double > > s_trkMass
Definition: TrigBmumuxComboHypo.h:434
TrigBmumuxComboHypo::m_BsToMuMuPhi1020_useFastFit
Gaudi::Property< bool > m_BsToMuMuPhi1020_useFastFit
Definition: TrigBmumuxComboHypo.h:319
TrigBmumuxState::addTrackCombination
void addTrackCombination(size_t i1, size_t i2)
Definition: TrigBmumuxComboHypo.h:87
TrigBmumuxComboHypo::m_BsToMuMuPhi1020_chi2
Gaudi::Property< float > m_BsToMuMuPhi1020_chi2
Definition: TrigBmumuxComboHypo.h:317
TrigBmumuxState::TrigBmumuxState
TrigBmumuxState(const EventContext &context, const TrigCompositeUtils::DecisionContainer &previousDecisions, TrigCompositeUtils::DecisionContainer &decisions, xAOD::TrigBphysContainer *trigBphysCollection=nullptr, const InDet::BeamSpotData *beamSpotData=nullptr)
Definition: TrigBmumuxComboHypo.h:48
TrigBmumuxComboHypo::m_BcToDstarMuMu
Gaudi::Property< bool > m_BcToDstarMuMu
Definition: TrigBmumuxComboHypo.h:399
xAOD::VertexAuxContainer_v1
Temporary container used until we have I/O for AuxStoreInternal.
Definition: VertexAuxContainer_v1.h:32
TrigBmumuxComboHypo::m_BcToDsMuMu_minKaonPt
Gaudi::Property< double > m_BcToDsMuMu_minKaonPt
Definition: TrigBmumuxComboHypo.h:363
VertexPointEstimator.h
Base_Fragment.mass
mass
Definition: Sherpa_i/share/common/Base_Fragment.py:59
TrigBmumuxComboHypo::m_roiPhiWidth
Gaudi::Property< double > m_roiPhiWidth
Definition: TrigBmumuxComboHypo.h:261
TrigBmumuxComboHypo::m_BcToDstarMuMu_minD0KaonPt
Gaudi::Property< double > m_BcToDstarMuMu_minD0KaonPt
Definition: TrigBmumuxComboHypo.h:403
Constants.h
Constants for algorithm.
TrigBmumuxComboHypo::m_BcToMuMuPion_minPionPt
Gaudi::Property< double > m_BcToMuMuPion_minPionPt
Definition: TrigBmumuxComboHypo.h:295
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon
Gaudi::Property< bool > m_LambdaBToMuMuProtonKaon
Definition: TrigBmumuxComboHypo.h:341
TrigBmumuxComboHypo::m_fitAttemptsBreakThreshold
Gaudi::Property< size_t > m_fitAttemptsBreakThreshold
Definition: TrigBmumuxComboHypo.h:265
TrigBmumuxComboHypo::m_BdToMuMuKstar0_rejectSameChargeTracks
Gaudi::Property< bool > m_BdToMuMuKstar0_rejectSameChargeTracks
Definition: TrigBmumuxComboHypo.h:325
TrigBmumuxComboHypo::m_BcToDplusMuMu_minPionPt
Gaudi::Property< double > m_BcToDplusMuMu_minPionPt
Definition: TrigBmumuxComboHypo.h:385
TrigBmumuxComboHypo::findBmumuxCandidates_fit
StatusCode findBmumuxCandidates_fit(TrigBmumuxState &, size_t dimuonIndex, bool makeCombinations=false) const
Perform fit of B decays for the topologies described above if makeCombinations = false.
Definition: TrigBmumuxComboHypo.cxx:394
TrigBmumuxComboHypo::kPsi_2mu
@ kPsi_2mu
Definition: TrigBmumuxComboHypo.h:124
PDG20::mMuon
static constexpr double mMuon
Definition: Trigger/TrigHypothesis/TrigBphysHypo/src/Constants.h:12
TrigBmumuxComboHypo::m_BplusToMuMuKaon_chi2
Gaudi::Property< float > m_BplusToMuMuKaon_chi2
Definition: TrigBmumuxComboHypo.h:287
TrigBmumuxComboHypo::m_BcToDstarMuMu_minD0PionPt
Gaudi::Property< double > m_BcToDstarMuMu_minD0PionPt
Definition: TrigBmumuxComboHypo.h:405
TrigBmumuxState::trigBphysMuonIndices
std::vector< std::array< size_t, 2 > > trigBphysMuonIndices
Definition: TrigBmumuxComboHypo.h:73
TrigBmumuxComboHypo::isInSameRoI
bool isInSameRoI(const xAOD::Muon *, const xAOD::TrackParticle *) const
Attempts to identify if the track is in the same RoI as the muon by comparing the angle with the RoI ...
Definition: TrigBmumuxComboHypo.cxx:1018
TrigBmumuxComboHypo::isIdenticalTracks
bool isIdenticalTracks(const xAOD::TrackParticle *lhs, const xAOD::TrackParticle *rhs) const
Attempts to identify identical tracks by selection on DeltaR.
Definition: TrigBmumuxComboHypo.cxx:1005
TrigBmumuxComboHypo::m_BplusToMuMuKaon
Gaudi::Property< bool > m_BplusToMuMuKaon
Definition: TrigBmumuxComboHypo.h:281
TrigBmumuxComboHypo::kDplus
@ kDplus
Definition: TrigBmumuxComboHypo.h:128
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_rejectSameChargeTracks
Gaudi::Property< bool > m_LambdaBToMuMuProtonKaon_rejectSameChargeTracks
Definition: TrigBmumuxComboHypo.h:343
TrigBmumuxComboHypo::kFastFit_2mu1trk
@ kFastFit_2mu1trk
Definition: TrigBmumuxComboHypo.h:132
TrigBmumuxState::dimuons
xAOD::VertexContainer dimuons
Definition: TrigBmumuxComboHypo.h:71
TrigBmumuxState::selectedTracks
std::vector< ElementLink< xAOD::TrackParticleContainer > > selectedTracks
Definition: TrigBmumuxComboHypo.h:76
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_minKaonPt
Gaudi::Property< double > m_LambdaBToMuMuProtonKaon_minKaonPt
Definition: TrigBmumuxComboHypo.h:347
TrigBmumuxComboHypo::m_BsToMuMuPhi1020_phiMassRange
Gaudi::Property< std::pair< double, double > > m_BsToMuMuPhi1020_phiMassRange
Definition: TrigBmumuxComboHypo.h:315
TrigBmumuxComboHypo::m_BcToDplusMuMu_minKaonPt
Gaudi::Property< double > m_BcToDplusMuMu_minKaonPt
Definition: TrigBmumuxComboHypo.h:383
TrigBmumuxComboHypo::m_BcToMuMuPion_chi2
Gaudi::Property< float > m_BcToMuMuPion_chi2
Definition: TrigBmumuxComboHypo.h:301
SG::ReadHandleKey< xAOD::TrackParticleContainer >
TrigBmumuxState::Muon::decisionLinks
std::vector< ElementLink< TrigCompositeUtils::DecisionContainer > > decisionLinks
Definition: TrigBmumuxComboHypo.h:61
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
TrigBmumuxComboHypo::kD0
@ kD0
Definition: TrigBmumuxComboHypo.h:129
TrigBmumuxComboHypo::m_BcToDsMuMu_massRange
Gaudi::Property< std::pair< double, double > > m_BcToDsMuMu_massRange
Definition: TrigBmumuxComboHypo.h:367
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
TrigBmumuxComboHypo::fit
std::unique_ptr< xAOD::Vertex > fit(const EventContext &context, const std::vector< ElementLink< xAOD::TrackParticleContainer >> &trackParticleLinks, Decay decay=kPsi_2mu, const xAOD::Vertex *dimuon=nullptr) const
Perform a vertex fit on selected tracks.
Definition: TrigBmumuxComboHypo.cxx:869
ComboHypo
Definition: ComboHypo.h:31
TrkVKalVrtFitter.h
TrigBmumuxComboHypo::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: TrigBmumuxComboHypo.h:252
ITrigBphysState.h
TrigBmumuxComboHypo::kDs
@ kDs
Definition: TrigBmumuxComboHypo.h:127
TrigBmumuxComboHypo::m_BcToDplusMuMu_DplusMassRange
Gaudi::Property< std::pair< double, double > > m_BcToDplusMuMu_DplusMassRange
Definition: TrigBmumuxComboHypo.h:391
PDG20
Definition: Trigger/TrigHypothesis/TrigBphysHypo/src/Constants.h:9
TrigBmumuxComboHypo::m_BcToDsMuMu_minPionPt
Gaudi::Property< double > m_BcToDsMuMu_minPionPt
Definition: TrigBmumuxComboHypo.h:365
TrigCompositeUtils.h
TrigBmumuxComboHypo::m_BsToMuMuPhi1020_massRange
Gaudi::Property< std::pair< double, double > > m_BsToMuMuPhi1020_massRange
Definition: TrigBmumuxComboHypo.h:313
TrigBmumuxComboHypo::m_BdToMuMuKstar0_massRange
Gaudi::Property< std::pair< double, double > > m_BdToMuMuKstar0_massRange
Definition: TrigBmumuxComboHypo.h:331
GenericMonitoringTool.h
TrigBmumuxComboHypo::m_BsToMuMuPhi1020
Gaudi::Property< bool > m_BsToMuMuPhi1020
Definition: TrigBmumuxComboHypo.h:307
TrigBmumuxComboHypo::m_BcToDstarMuMu_maxDstarPionZ0
Gaudi::Property< double > m_BcToDstarMuMu_maxDstarPionZ0
Definition: TrigBmumuxComboHypo.h:409
TrigBmumuxComboHypo::m_BsToMuMuPhi1020_minKaonPt
Gaudi::Property< double > m_BsToMuMuPhi1020_minKaonPt
Definition: TrigBmumuxComboHypo.h:311
TrigBmumuxComboHypo::m_trigBphysContainerKey
SG::WriteHandleKey< xAOD::TrigBphysContainer > m_trigBphysContainerKey
Definition: TrigBmumuxComboHypo.h:249
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
TrigBmumuxState::muons
std::vector< Muon > muons
Definition: TrigBmumuxComboHypo.h:64
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_dimuonMassRange
Gaudi::Property< std::pair< double, double > > m_LambdaBToMuMuProtonKaon_dimuonMassRange
Definition: TrigBmumuxComboHypo.h:351
TrigBmumuxComboHypo::m_BdToMuMuKstar0_chi2
Gaudi::Property< float > m_BdToMuMuKstar0_chi2
Definition: TrigBmumuxComboHypo.h:335
TrigBmumuxComboHypo::findBmumuxCandidates_fastFit
StatusCode findBmumuxCandidates_fastFit(TrigBmumuxState &, size_t dimuonIndex) const
Go through (dimuon+track) and (track+track) combinations found by findBmumuxCandidates_fit(makeCombin...
Definition: TrigBmumuxComboHypo.cxx:776
TrigBmumuxComboHypo::m_BcToDstarMuMu_dimuonMassRange
Gaudi::Property< std::pair< double, double > > m_BcToDstarMuMu_dimuonMassRange
Definition: TrigBmumuxComboHypo.h:413
ITrigBphysState::context
const EventContext & context() const
Definition: ITrigBphysState.h:42
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TrigBphys.h
TrigBmumuxComboHypo::createDecisionObjects
StatusCode createDecisionObjects(TrigBmumuxState &) const
Create a decision for each xAOD::TrigBphys object from state.trigBphysCollection() and save it to sta...
Definition: TrigBmumuxComboHypo.cxx:816
TrigBmumuxComboHypo::m_vertexPointEstimator
ToolHandle< InDet::VertexPointEstimator > m_vertexPointEstimator
Definition: TrigBmumuxComboHypo.h:423
TrigBmumuxComboHypo::m_BplusToMuMuKaon_minKaonPt
Gaudi::Property< double > m_BplusToMuMuKaon_minKaonPt
Definition: TrigBmumuxComboHypo.h:283
TrigBmumuxComboHypo::m_fitAttemptsWarningThreshold
Gaudi::Property< size_t > m_fitAttemptsWarningThreshold
Definition: TrigBmumuxComboHypo.h:263
TrigBmumuxState::Muon::link
ElementLink< xAOD::MuonContainer > link
Definition: TrigBmumuxComboHypo.h:60
TrigBmumuxComboHypo::m_BdToMuMuKstar0_minKaonPt
Gaudi::Property< double > m_BdToMuMuKstar0_minKaonPt
Definition: TrigBmumuxComboHypo.h:327
TrigBmumuxComboHypo::mergeTracksFromViews
StatusCode mergeTracksFromViews(TrigBmumuxState &) const
Go through state.previousDecisions() and fetch xAOD::TrackParticle objects associated with the neares...
Definition: TrigBmumuxComboHypo.cxx:185
TrigBmumuxComboHypo::kB_PsiPi
@ kB_PsiPi
Definition: TrigBmumuxComboHypo.h:130
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
TrigBmumuxComboHypo::TrigBmumuxComboHypo
TrigBmumuxComboHypo()=delete
TrigBmumuxComboHypo
EF hypothesis algorithm for B -> mu+ mu- X decays: B+ -> mu+ mu- K+ B_c+ -> J/psi(-> mu+ mu-) pi+ B_s...
Definition: TrigBmumuxComboHypo.h:115
xAOD::TauHelpers::trackParticleLinks
std::vector< ElementLink< xAOD::TrackParticleContainer > > trackParticleLinks(const xAOD::TauJet *tau, xAOD::TauJetParameters::TauTrackFlag flag=xAOD::TauJetParameters::TauTrackFlag::classifiedCharged)
Definition: TauxAODHelpers.cxx:22
TrigBmumuxComboHypo::m_BdToMuMuKstar0_KstarMassRange
Gaudi::Property< std::pair< double, double > > m_BdToMuMuKstar0_KstarMassRange
Definition: TrigBmumuxComboHypo.h:333
TrigBmumuxComboHypo::m_BcToDstarMuMu_D0MassRange
Gaudi::Property< std::pair< double, double > > m_BcToDstarMuMu_D0MassRange
Definition: TrigBmumuxComboHypo.h:415
TrigBmumuxComboHypo::kB_2mu2trk
@ kB_2mu2trk
Definition: TrigBmumuxComboHypo.h:126
TrigBmumuxComboHypo::findBmumuxCandidates
StatusCode findBmumuxCandidates(TrigBmumuxState &) const
Find B decays by appling next three subprocedures to each found dimuon candidate.
Definition: TrigBmumuxComboHypo.cxx:311
TrigBmumuxComboHypo::m_dimuon_rejectSameChargeTracks
Gaudi::Property< bool > m_dimuon_rejectSameChargeTracks
Definition: TrigBmumuxComboHypo.h:273
TrigBmumuxComboHypo::m_muonContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_muonContainerKey
Definition: TrigBmumuxComboHypo.h:247
ComboHypo.h
TrigBmumuxComboHypo::m_BplusToMuMuKaon_useFastFit
Gaudi::Property< bool > m_BplusToMuMuKaon_useFastFit
Definition: TrigBmumuxComboHypo.h:289
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
TrigBmumuxComboHypo::m_roiEtaWidth
Gaudi::Property< double > m_roiEtaWidth
Definition: TrigBmumuxComboHypo.h:259
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
TrigBmumuxState::~TrigBmumuxState
virtual ~TrigBmumuxState()=default
TrigBmumuxState::addTrackCombination
void addTrackCombination(size_t i1)
Definition: TrigBmumuxComboHypo.h:86
TrigBmumuxComboHypo::kFastFit_2trk
@ kFastFit_2trk
Definition: TrigBmumuxComboHypo.h:131
TrigBmumuxState::Muon::decisionIDs
TrigCompositeUtils::DecisionIDContainer decisionIDs
Definition: TrigBmumuxComboHypo.h:62
ITrackToVertex.h
TrigBmumuxComboHypo::m_BdToMuMuKstar0_useFastFit
Gaudi::Property< bool > m_BdToMuMuKstar0_useFastFit
Definition: TrigBmumuxComboHypo.h:337
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_chi2
Gaudi::Property< float > m_LambdaBToMuMuProtonKaon_chi2
Definition: TrigBmumuxComboHypo.h:355
TrigBmumuxState::getCombinationKey
size_t getCombinationKey(size_t i1, size_t i2) const
Definition: TrigBmumuxComboHypo.h:85
TrigBmumuxComboHypo::execute
virtual StatusCode execute(const EventContext &context) const override
Definition: TrigBmumuxComboHypo.cxx:100
TrigBmumuxComboHypo::m_BcToDsMuMu_chi2
Gaudi::Property< float > m_BcToDsMuMu_chi2
Definition: TrigBmumuxComboHypo.h:375
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
TrigBmumuxComboHypo::m_BcToDstarMuMu_massRange
Gaudi::Property< std::pair< double, double > > m_BcToDstarMuMu_massRange
Definition: TrigBmumuxComboHypo.h:411
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_minKstarMass
Gaudi::Property< double > m_LambdaBToMuMuProtonKaon_minKstarMass
Definition: TrigBmumuxComboHypo.h:349
TrigBmumuxComboHypo::m_BcToMuMuPion_useFastFit
Gaudi::Property< bool > m_BcToMuMuPion_useFastFit
Definition: TrigBmumuxComboHypo.h:303
TrigBmumuxComboHypo::m_BsToMuMuPhi1020_rejectSameChargeTracks
Gaudi::Property< bool > m_BsToMuMuPhi1020_rejectSameChargeTracks
Definition: TrigBmumuxComboHypo.h:309
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
TrigBmumuxComboHypo::findBmumuxCandidates_selectTracks
StatusCode findBmumuxCandidates_selectTracks(TrigBmumuxState &, size_t dimuonIndex) const
Select tracks in vicinity of given dimuon vertex.
Definition: TrigBmumuxComboHypo.cxx:337
TrigBmumuxComboHypo::m_BcToDsMuMu
Gaudi::Property< bool > m_BcToDsMuMu
Definition: TrigBmumuxComboHypo.h:361
Trk::trkMass
@ trkMass
Extended perigee: mass.
Definition: ParamDefs.h:81
TrigBmumuxComboHypo::momentum
xAOD::TrackParticle::GenVecFourMom_t momentum(const xAOD::Vertex &vertex, const std::vector< double > &trkMass) const
Calculate 4-momentum of the fitted vertex particle assuming the given masses.
Definition: TrigBmumuxComboHypo.cxx:1043
TrigBmumuxComboHypo::mergeMuonsFromDecisions
StatusCode mergeMuonsFromDecisions(TrigBmumuxState &) const
Go through state.previousDecisions(), fetch xAOD::Muons objects attached to decisions and save links ...
Definition: TrigBmumuxComboHypo.cxx:134
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
TrigBmumuxComboHypo::m_BcToDstarMuMu_chi2
Gaudi::Property< float > m_BcToDstarMuMu_chi2
Definition: TrigBmumuxComboHypo.h:419
ITrigBphysState::previousDecisions
const TrigCompositeUtils::DecisionContainer & previousDecisions() const
Definition: ITrigBphysState.h:43
MuonContainer.h
TrigBmumuxComboHypo::isInMassRange
bool isInMassRange(double mass, const std::pair< double, double > &range) const
Checks that the given mass value falls into the specified range.
Definition: TrigBmumuxComboHypo.h:229
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_minProtonPt
Gaudi::Property< double > m_LambdaBToMuMuProtonKaon_minProtonPt
Definition: TrigBmumuxComboHypo.h:345
TrigBmumuxComboHypo::m_BcToDsMuMu_DsMassRange
Gaudi::Property< std::pair< double, double > > m_BcToDsMuMu_DsMassRange
Definition: TrigBmumuxComboHypo.h:373
TrigBmumuxComboHypo::m_trackToVertexTool
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
Definition: TrigBmumuxComboHypo.h:427
SG::ReadCondHandleKey< InDet::BeamSpotData >
TrigBmumuxComboHypo::m_BcToDstarMuMu_makeDstar
Gaudi::Property< bool > m_BcToDstarMuMu_makeDstar
Definition: TrigBmumuxComboHypo.h:401
TrigBmumuxComboHypo::m_BcToMuMuPion
Gaudi::Property< bool > m_BcToMuMuPion
Definition: TrigBmumuxComboHypo.h:293
TrigBmumuxComboHypo::m_dimuon_chi2
Gaudi::Property< double > m_dimuon_chi2
Definition: TrigBmumuxComboHypo.h:277
TrigBmumuxComboHypo::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigBmumuxComboHypo.h:429
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
TrigBmumuxComboHypo::m_BdToMuMuKstar0
Gaudi::Property< bool > m_BdToMuMuKstar0
Definition: TrigBmumuxComboHypo.h:323
TrigBmumuxComboHypoTool.h
InDet::BeamSpotData
Definition: BeamSpotData.h:21
VertexContainer.h
TrigCompositeUtils::DecisionIDContainer
std::set< DecisionID > DecisionIDContainer
Definition: TrigComposite_v1.h:28
TrigBmumuxState
State class for TrigBmumuxComboHypo algorithm.
Definition: TrigBmumuxComboHypo.h:45
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
TrigBmumuxComboHypo::m_BcToDplusMuMu_useFastFit
Gaudi::Property< bool > m_BcToDplusMuMu_useFastFit
Definition: TrigBmumuxComboHypo.h:395
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_massRange
Gaudi::Property< std::pair< double, double > > m_LambdaBToMuMuProtonKaon_massRange
Definition: TrigBmumuxComboHypo.h:353
TrigBmumuxComboHypo::initialize
virtual StatusCode initialize() override
Definition: TrigBmumuxComboHypo.cxx:55
TrigBmumuxState::TrigBmumuxState
TrigBmumuxState()=delete
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
ITrigBphysState::decisions
TrigCompositeUtils::DecisionContainer & decisions()
Definition: ITrigBphysState.h:44
TrigBmumuxState::selectedTrackZ0
std::map< const xAOD::TrackParticle *, double > selectedTrackZ0
Definition: TrigBmumuxComboHypo.h:77
TrigBmumuxComboHypo::m_dimuon_massRange
Gaudi::Property< std::pair< double, double > > m_dimuon_massRange
Definition: TrigBmumuxComboHypo.h:275
TrigBmumuxComboHypo::m_BcToDstarMuMu_DstarMassRange
Gaudi::Property< std::pair< double, double > > m_BcToDstarMuMu_DstarMassRange
Definition: TrigBmumuxComboHypo.h:417
TrigBmumuxComboHypo::m_BcToMuMuPion_massRange
Gaudi::Property< std::pair< double, double > > m_BcToMuMuPion_massRange
Definition: TrigBmumuxComboHypo.h:299
TrigBmumuxComboHypo::m_BcToDplusMuMu_chi2
Gaudi::Property< float > m_BcToDplusMuMu_chi2
Definition: TrigBmumuxComboHypo.h:393
TrigBmumuxComboHypo::m_BplusToMuMuKaon_massRange
Gaudi::Property< std::pair< double, double > > m_BplusToMuMuKaon_massRange
Definition: TrigBmumuxComboHypo.h:285
TrigBmumuxComboHypo::kB_2mu1trk
@ kB_2mu1trk
Definition: TrigBmumuxComboHypo.h:125
TrigBmumuxState::isCompositeRoI
bool isCompositeRoI
Definition: TrigBmumuxComboHypo.h:68
TrigBmumuxComboHypo::m_deltaR
Gaudi::Property< double > m_deltaR
Definition: TrigBmumuxComboHypo.h:255
TrigBmumuxComboHypo::m_allowedIDs
TrigCompositeUtils::DecisionIDContainer m_allowedIDs
Definition: TrigBmumuxComboHypo.h:432
TrigBmumuxComboHypo::m_trackParticleContainerKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
Definition: TrigBmumuxComboHypo.h:245
TrigBmumuxComboHypo::Lxy
double Lxy(const Amg::Vector3D &productionVertex, const xAOD::Vertex &decayVertex) const
Calculate the Lxy (~distance between vertices) It is defined as the transverse distance between the p...
Definition: TrigBmumuxComboHypo.cxx:1026
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
TrigBmumuxComboHypo::Decay
Decay
Definition: TrigBmumuxComboHypo.h:123
ITrigBphysState
Base class for TrigBphys state objects.
Definition: ITrigBphysState.h:21
TrigBmumuxComboHypo::m_BcToDsMuMu_dimuonMassRange
Gaudi::Property< std::pair< double, double > > m_BcToDsMuMu_dimuonMassRange
Definition: TrigBmumuxComboHypo.h:369
TrigBmumuxComboHypo::findDimuonCandidates
StatusCode findDimuonCandidates(TrigBmumuxState &) const
Make all possible dimuon combinations from state.muons(), fit muon InDet tracks to the common vertex,...
Definition: TrigBmumuxComboHypo.cxx:239
TrigBmumuxState::badTrackCombinations
std::vector< size_t > badTrackCombinations
Definition: TrigBmumuxComboHypo.h:83
TrigBphysContainer.h
xAOD::TrigBphys_v1::MULTIMU
@ MULTIMU
Definition: TrigBphys_v1.h:55
TrigBmumuxState::isBadCombination
bool isBadCombination(size_t i1) const
Definition: TrigBmumuxComboHypo.h:89
TrigBmumuxState::addTrackCombination
void addTrackCombination(size_t i1, size_t i2, size_t i3)
Definition: TrigBmumuxComboHypo.h:88
TrigBmumuxComboHypo::m_fastFit_2mu1trk_chi2
Gaudi::Property< double > m_fastFit_2mu1trk_chi2
Definition: TrigBmumuxComboHypo.h:269
TrigBmumuxComboHypo::passDimuonTrigger
bool passDimuonTrigger(const std::vector< const TrigCompositeUtils::DecisionIDContainer * > &previousDecisionIDs) const
Definition: TrigBmumuxComboHypo.cxx:1055
TrigBmumuxState::dimuonsStore
xAOD::VertexAuxContainer dimuonsStore
Definition: TrigBmumuxComboHypo.h:72
TrigBmumuxComboHypo::makeTriggerObject
xAOD::TrigBphys * makeTriggerObject(TrigBmumuxState &state, const xAOD::Vertex &vertex, xAOD::TrigBphys::pType type=xAOD::TrigBphys::MULTIMU, const std::vector< double > &trkMass={PDG::mMuon, PDG::mMuon}, const ElementLink< xAOD::TrigBphysContainer > &dimuonLink=ElementLink< xAOD::TrigBphysContainer >()) const
Construct the trigger object that may be stored for debugging or matching.
Definition: TrigBmumuxComboHypo.cxx:932
TrigComposite.h
TrigBmumuxComboHypo::m_BcToDplusMuMu
Gaudi::Property< bool > m_BcToDplusMuMu
Definition: TrigBmumuxComboHypo.h:381
TrigBmumuxState::tracks
std::vector< ElementLink< xAOD::TrackParticleContainer > > tracks
Definition: TrigBmumuxComboHypo.h:67
TrigBmumuxComboHypo::m_BcToDplusMuMu_dimuonMassRange
Gaudi::Property< std::pair< double, double > > m_BcToDplusMuMu_dimuonMassRange
Definition: TrigBmumuxComboHypo.h:389
TrigBmumuxComboHypo::m_trkZ0
Gaudi::Property< double > m_trkZ0
Definition: TrigBmumuxComboHypo.h:257
xAOD::TrigBphys_v1
Class describing a Bphysics online composite object.
Definition: TrigBphys_v1.h:44
TrackParticleContainer.h
xAOD::TrigBphys_v1::pType
pType
enum for different particle types
Definition: TrigBphys_v1.h:48
TrigBmumuxState::trackCombinations
std::map< size_t, size_t > trackCombinations
Definition: TrigBmumuxComboHypo.h:80
VertexAuxContainer.h
ITrigBphysState::trigBphysCollection
xAOD::TrigBphysContainer & trigBphysCollection()
Definition: ITrigBphysState.h:45
TrigBmumuxComboHypo::m_vertexFitter
ToolHandle< Trk::TrkVKalVrtFitter > m_vertexFitter
Definition: TrigBmumuxComboHypo.h:425
TrigBmumuxComboHypo::m_BcToMuMuPion_dimuonMassRange
Gaudi::Property< std::pair< double, double > > m_BcToMuMuPion_dimuonMassRange
Definition: TrigBmumuxComboHypo.h:297
TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_useFastFit
Gaudi::Property< bool > m_LambdaBToMuMuProtonKaon_useFastFit
Definition: TrigBmumuxComboHypo.h:357
TrigBmumuxComboHypo::m_BcToDsMuMu_useFastFit
Gaudi::Property< bool > m_BcToDsMuMu_useFastFit
Definition: TrigBmumuxComboHypo.h:377
TrigBmumuxComboHypo::m_BdToMuMuKstar0_minPionPt
Gaudi::Property< double > m_BdToMuMuKstar0_minPionPt
Definition: TrigBmumuxComboHypo.h:329