5#ifndef TRIG_TrigBhhComboHypo_H
6#define TRIG_TrigBhhComboHypo_H
12#include "Gaudi/Property.h"
58 std::vector<ElementLink<TrigCompositeUtils::DecisionContainer>>
decisionLinks;
64 std::vector<ElementLink<xAOD::TrackParticleContainer>>
tracks;
80 virtual StatusCode
execute(
const EventContext& context)
const override;
115 std::unique_ptr<xAOD::Vertex>
fit(
116 const EventContext& context,
146 double Lxy(
const Amg::Vector3D& productionVertex,
const Amg::Vector3D& decayVertex,
const std::vector<xAOD::TrackParticle::GenVecFourMom_t>& momenta)
const;
149 "TrackCollectionKey",
"InDetTrackParticles",
"input TrackParticle container name"};
151 "TrigBphysCollectionKey",
"TrigBphysContainer",
"output TrigBphysContainer name"};
153 m_beamSpotKey {
this,
"BeamSpotKey",
"BeamSpotData",
"SG key for beam spot"};
157 "if True, remove tracks accosiated with muons from m_trackParticleContainer"};
159 "DeltaR", 0.01,
"minimum deltaR between same-sign tracks (overlap removal)"};
161 "Bhh_trackPtThreshold", 2000.,
"minimum track transverse momenta"};
163 "Bhh_massRange", {4500., 6500.},
"B0/B_s0 mass range"};
165 "Bhh_chi2", 20.,
"maximum chi2 of the fitted B0 vertex"};
167 "FitAttemptsWarningThreshold", 200,
"Events processing this many calls of the vertex fitter will generate a WARNING message (time-out protect)"};
169 "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)"};
173 "VertexPointEstimator",
"",
"tool to find starting point for the vertex fitter"};
175 "VertexFitter",
"",
"VKalVrtFitter tool to fit tracks into the common vertex"};
177 "MonTool",
"",
"monitoring tool"};
Header file to be included by clients of the Monitored infrastructure.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
ComboHypo(const std::string &name, ISvcLocator *pSvcLocator)
ElementLink implementation for ROOT usage.
TrigCompositeUtils::DecisionContainer & decisions()
const TrigCompositeUtils::DecisionContainer & previousDecisions() const
xAOD::TrigBphysContainer & trigBphysCollection()
const EventContext & context() const
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid from which a WriteHandle is made.
ToolHandle< InDet::VertexPointEstimator > m_vertexPointEstimator
StatusCode fillTriggerObject(xAOD::TrigBphys &triggerObject, const xAOD::Vertex &vertex, const Amg::Vector3D &productionVertex, const std::vector< double > &trkMass={PDG::mKaon, PDG::mKaon}) const
Fill the trigger object that may be stored for debugging or matching.
Gaudi::Property< double > m_chi2
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
TrigBhhComboHypo()=delete
StatusCode mergeMuonsFromDecisions(TrigBhhState &) const
Go through state.previousDecisions(), fetch xAOD::Muons objects attached to decisions and save links ...
ToolHandle< Trk::TrkVKalVrtFitter > m_vertexFitter
TrigBhhComboHypo(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< double > m_trkPt
virtual StatusCode execute(const EventContext &context) const override
bool isIdenticalTracks(const xAOD::TrackParticle *lhs, const xAOD::TrackParticle *rhs) const
Returns false for the tracks with opposite charges.
Gaudi::Property< std::pair< double, double > > m_massRange
SG::WriteHandleKey< xAOD::TrigBphysContainer > m_trigBphysContainerKey
ToolHandle< GenericMonitoringTool > m_monTool
bool isIdenticalTracks(const xAOD::Muon *lhs, const xAOD::Muon *rhs) const
TrigCompositeUtils::DecisionIDContainer m_allowedIDs
Gaudi::Property< double > m_deltaR
Gaudi::Property< size_t > m_fitAttemptsBreakThreshold
virtual StatusCode initialize() override
std::unique_ptr< xAOD::Vertex > fit(const EventContext &context, const std::vector< ElementLink< xAOD::TrackParticleContainer > > &trackParticleLinks, const std::vector< double > &trkMass={PDG::mKaon, PDG::mKaon}) const
Perform a vertex fit on selected tracks.
Gaudi::Property< bool > m_applyMuonRemoval
double Lxy(const Amg::Vector3D &productionVertex, const Amg::Vector3D &decayVertex, const std::vector< xAOD::TrackParticle::GenVecFourMom_t > &momenta) const
Returns the transverse decay length of a particle Lxy in [mm].
Gaudi::Property< size_t > m_fitAttemptsWarningThreshold
StatusCode findBhhCandidates(TrigBhhState &) const
Make all possible combinations from state.tracks(), fit tracks to the common vertex,...
StatusCode mergeTracksFromViews(TrigBhhState &) const
Go through state.previousDecisions() and fetch xAOD::TrackParticle objects associated with the neares...
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
StatusCode createDecisionObjects(TrigBhhState &) const
Create a decision for each xAOD::TrigBphys object from state.trigBphysCollection() and use hypoTools(...
State class for TrigBhhComboHypo algorithm.
std::vector< ElementLink< xAOD::TrackParticleContainer > > tracks
TrigBhhState(const EventContext &context, const TrigCompositeUtils::DecisionContainer &previousDecisions, TrigCompositeUtils::DecisionContainer &decisions, xAOD::TrigBphysContainer *trigBphysCollection=nullptr, const InDet::BeamSpotData *beamSpotData=nullptr)
virtual ~TrigBhhState()=default
std::vector< Muon > muons
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
std::set< DecisionID > DecisionIDContainer
xAOD::TrigCompositeContainer DecisionContainer
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
Muon_v1 Muon
Reference the current persistent version:
TrigBphysContainer_v1 TrigBphysContainer
static constexpr double mKaon
std::vector< ElementLink< TrigCompositeUtils::DecisionContainer > > decisionLinks
ElementLink< xAOD::MuonContainer > link
TrigCompositeUtils::DecisionIDContainer decisionIDs