|
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef TRIG_TrigBmuxComboHypo_H
6 #define TRIG_TrigBmuxComboHypo_H
12 #include "Gaudi/Property.h"
71 std::vector<xAOD::TrigBphys*> triggerObjects(
n,
nullptr);
72 for (
size_t i = 0;
i <
n;
i++) {
75 return triggerObjects;
116 std::unique_ptr<xAOD::Vertex>
fit(
117 const EventContext& context,
128 std::unique_ptr<Trk::VxCascadeInfo>
fitCascade(
129 const EventContext& context,
145 const std::vector<double>&
trkMass)
const;
156 std::vector<xAOD::TrigBphys*>& triggerObjects,
192 "TrackCollectionKey",
"InDetTrackParticles",
"input TrackParticle container name"};
194 "MuonCollectionKey",
"Muons",
"input EF Muon container name"};
196 "TrigBphysCollectionKey",
"TrigBphysContainer",
"output TrigBphysContainer name"};
198 m_beamSpotKey {
this,
"BeamSpotKey",
"BeamSpotData",
"SG key for beam spot"};
202 "MakeCascadeFit",
true,
"perform cascade fit of the partially reconstructed decays"};
204 "CascadeChi2", 50.,
"maximum chi2 of the cascade fit"};
206 "DeltaR", 0.01,
"minimum deltaR between same-sign tracks (overlap removal)"};
208 "TrkZ0", 10.,
"maximum of |z0_trk - z0_muon|, where z0_trk(z0_muon) is impact parameter of the track(muon) wrt BeamSpot; no preselection if negative"};
210 "RoiEtaWidth", 0.75,
"extent of the RoI in eta from initial muon, to be check for SuperRoI"};
212 "RoiPhiWidth", 0.75,
"extent of the RoI in phi from initial muon, to be check for SuperRoI"};
214 "FitAttemptsWarningThreshold", 200,
"Events processing this many calls of the vertex fitter will generate a WARNING message (time-out protect)"};
216 "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)"};
220 "BToD0",
true,
"switch on/off B+ -> mu+ nu_mu anti-D0(-> K+ pi-) decay"};
222 "BToD0_makeDstar",
true,
"switch on/off B0 -> mu+ nu_mu D*-(-> anti-D0(-> K+ pi-) pi-) decay"};
224 "BToD0_minD0KaonPt", 1000.,
"minimum pT of kaon track from D0"};
226 "BToD0_minD0PionPt", 1000.,
"minimum pT of pion track from D0"};
228 "BToD0_minD0Pt", -1.,
"minimum pT of D0"};
230 "BToD0_minDstarPt", 5500.,
"minimum pT of D*-"};
232 "BToD0_minDstarPionPt", 1000.,
"minimum pT of pion track from D*-"};
234 "BToD0_maxDstarPionZ0", 5.,
"maximum z0 impact parameter of the pion track from D*+ wrt the fitted D0 vertex; no preselection if negative"};
236 "BToD0_massRange", {-1., 10000.},
"B+/B0 mass range"};
238 "BToD0_D0MassRange", {1750., 2000.},
"D0 mass range"};
240 "BToD0_DstarMassRange", {-1., 2110.},
"D*+ mass range"};
242 "BToD0_chi2", 20.,
"maximum chi2 of the fitted D0 vertex"};
244 "BToD0_LxyB", 0.1,
"Lxy(B+,BeamSpot) for B+ -> mu+ nu_mu anti-D0"};
246 "BToD0_LxyBd", 0.05,
"Lxy(B0,BeamSpot) for B0 -> mu+ nu_mu D*-"};
248 "BToD0_LxyD0", 0.,
"Lxy(D0,B+/B0) for both B+ and B0 decays"};
252 "BdToD",
true,
"switch on/off B0 -> mu+ nu_mu D-(-> K+ pi- pi-) decay"};
254 "BdToD_minKaonPt", 1250.,
"minimum pT of kaon track from D-"};
256 "BdToD_minPionPt", 1000.,
"minimum pT of pion track from D-"};
258 "BdToD_minDPt", 4500.,
"minimum pT of D-"};
260 "BdToD_massRange", {-1., 10000.},
"B0 mass range"};
262 "BdToD_DMassRange", {1750., 2000.},
"D+ mass range"};
264 "BdToD_chi2", 27.,
"maximum chi2 of the fitted D- vertex"};
266 "BdToD_LxyBd", 0.1,
"Lxy(B0,BeamSpot) for B0 -> mu+ nu_mu D-"};
268 "BdToD_LxyD", 0.05,
"Lxy(D-,B0) for D- -> K+ pi- pi-"};
272 "BsToDs",
true,
"switch on/off B_s0 -> mu+ nu_mu D_s-(->phi(-> K+ K-) pi-) decay"};
274 "BsToDs_minKaonPt", 1000.,
"minimum pT of kaon track from phi(1020)"};
276 "BsToDs_minPionPt", 1000.,
"minimum pT of pion track from D_s-"};
278 "BsToDs_minDsPt", 5500.,
"minimum pT of D_s-"};
280 "BsToDs_massRange", {-1., 10000.},
"B_s0 mass range"};
282 "BsToDs_phiMassRange", {940., 1100.},
"phi(1020) mass range"};
284 "BsToDs_DsMassRange", {1750., 2100.},
"D_s- mass range"};
286 "BsToDs_chi2", 27.,
"maximum chi2 of the fitted D_s- vertex"};
288 "BsToDs_LxyBs", 0.1,
"Lxy(B_s0,BeamSpot) for B_s0 -> mu+ nu_mu D_s-"};
290 "BsToDs_LxyDs", 0.02,
"Lxy(D_s-,B_s0) for D_s- -> phi pi-"};
294 "LambdaBToLambdaC",
true,
"switch on/off Lambda_b0 -> mu+ nu_mu anti-Lambda_c-(-> anti-p K+ pi-) decay"};
296 "LambdaBToLambdaC_minProtonPt", 2750.,
"minimum pT of proton track"};
298 "LambdaBToLambdaC_minKaonPt", 1250.,
"minimum pT of kaon track"};
300 "LambdaBToLambdaC_minPionPt", 1000.,
"minimum pT of pion track"};
302 "LambdaBToLambdaC_minLambdaCPt", 5500.,
"minimum pT of Lambda_c-"};
304 "LambdaBToLambdaC_massRange", {-1., 10000.},
"Lambda_b0 mass range"};
306 "LambdaBToLambdaC_LambdaCMassRange", {2190., 2390.},
"Lambda_c- mass range"};
308 "LambdaBToLambdaC_chi2", 27.,
"maximum chi2 of the fitted Lambda_c- vertex"};
310 "LambdaBToLambdaC_LxyLb", 0.1,
"Lxy(Lambda_b0,BeamSpot) for Lambda_b0 -> mu- anti-nu_mu Lambda_c+"};
312 "LambdaBToLambdaC_LxyLc", 0.02,
"Lxy(Lambda_c+,Lambda_b0) for Lambda_c+-> p K- pi+"};
316 "VertexPointEstimator",
"",
"tool to find starting point for the vertex fitter"};
318 "VertexFitter",
"",
"VKalVrtFitter tool to fit tracks into the common vertex"};
320 "TrackToVertexTool",
"",
"tool to extrapolate track to vertex or beamspot"};
322 "MonTool",
"",
"monitoring tool"};
326 const static std::vector<std::vector<std::vector<double>>>
s_trkMass;
329 #endif // TRIG_TrigBmuxComboHypo_H
Gaudi::Property< std::pair< double, double > > m_BdToD_massRange
static const std::vector< std::vector< std::vector< double > > > s_trkMass
Property holding a SG store/key/clid from which a ReadHandle is made.
ToolHandle< Trk::TrkVKalVrtFitter > m_vertexFitter
SG::ReadHandleKey< xAOD::MuonContainer > m_muonContainerKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
StatusCode findBmuxCandidates(TrigBmuxState &) const
Gaudi::Property< double > m_BdToD_minKaonPt
Gaudi::Property< double > m_LambdaBToLambdaC_minKaonPt
Gaudi::Property< float > m_LambdaBToLambdaC_chi2
Gaudi::Property< double > m_BdToD_minPionPt
Gaudi::Property< double > m_deltaR
Gaudi::Property< float > m_BsToDs_LxyBs
Gaudi::Property< float > m_BdToD_chi2
Gaudi::Property< double > m_BsToDs_minKaonPt
bool isInMassRange(double mass, const std::pair< double, double > &range) const
Checks that the given mass value falls into the specified range.
Gaudi::Property< double > m_BdToD_minDPt
virtual StatusCode execute(const EventContext &context) const override
Gaudi::Property< float > m_BToD0_LxyD0
TrigBmuxState(const EventContext &context, const TrigCompositeUtils::DecisionContainer &previousDecisions, TrigCompositeUtils::DecisionContainer &decisions, xAOD::TrigBphysContainer *trigBphysCollection=nullptr, const InDet::BeamSpotData *beamSpotData=nullptr)
This class provides conversion from CSC RDO data to CSC Digits.
Gaudi::Property< float > m_LambdaBToLambdaC_LxyLc
StatusCode fillTriggerObject(xAOD::TrigBphys &triggerObject, xAOD::TrigBphys::pType type, const xAOD::Vertex &vertex, const std::vector< double > &trkMass) const
Fill the trigger object that may be stored for debugging or matching.
Gaudi::Property< double > m_BToD0_minDstarPt
Gaudi::Property< double > m_roiEtaWidth
Gaudi::Property< float > m_BsToDs_chi2
Gaudi::Property< bool > m_LambdaBToLambdaC
SG::WriteHandleKey< xAOD::TrigBphysContainer > m_trigBphysContainerKey
ElementLink< TrigCompositeUtils::DecisionContainer > decisionLink
Gaudi::Property< double > m_BToD0_minD0Pt
ToolHandle< InDet::VertexPointEstimator > m_vertexPointEstimator
TrigBmuxComboHypo()=delete
Gaudi::Property< std::pair< double, double > > m_BToD0_D0MassRange
Gaudi::Property< size_t > m_fitAttemptsBreakThreshold
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
Gaudi::Property< bool > m_BToD0
Gaudi::Property< std::pair< double, double > > m_BsToDs_phiMassRange
xAOD::TrigBphys * addTriggerObject(size_t muonIndex)
Property holding a SG store/key/clid from which a WriteHandle is made.
Gaudi::Property< size_t > m_fitAttemptsWarningThreshold
virtual ~TrigBmuxState()=default
EF hypothesis algorithm for B -> mu+ nu_mu X decays: B+ -> mu+ nu_mu anti-D0(-> K+ pi-) B0 -> mu+ nu_...
const EventContext & context() const
Gaudi::Property< float > m_cascadeChi2
Gaudi::Property< bool > m_BsToDs
std::vector< xAOD::TrigBphys * > addTriggerObjects(size_t n, size_t muonIndex)
::StatusCode StatusCode
StatusCode definition for legacy code.
double getTrkImpactParameterZ0(const EventContext &ctx, const xAOD::TrackParticle &track, const Amg::Vector3D &vertex) const
Returns the longitudinal impact parameter z0 of the track w.r.t.
Gaudi::Property< double > m_trkZ0
State class for TrigBmuxComboHypo algorithm.
std::vector< ElementLink< xAOD::TrackParticleContainer > > trackParticleLinks(const xAOD::TauJet *tau, xAOD::TauJetParameters::TauTrackFlag flag=xAOD::TauJetParameters::TauTrackFlag::classifiedCharged)
Gaudi::Property< double > m_LambdaBToLambdaC_minProtonPt
Gaudi::Property< std::pair< double, double > > m_BsToDs_DsMassRange
const T * back() const
Access the last element in the collection as an rvalue.
Header file to be included by clients of the Monitored infrastructure.
Gaudi::Property< std::pair< double, double > > m_BdToD_DMassRange
std::unique_ptr< xAOD::Vertex > fit(const EventContext &context, const std::vector< ElementLink< xAOD::TrackParticleContainer >> &trackParticleLinks, Decay decay) const
Perform a vertex fit on selected tracks.
ElementLink implementation for ROOT usage.
Property holding a SG store/key/clid from which a WriteHandle is made.
Gaudi::Property< float > m_BToD0_LxyBd
StatusCode createDecisionObjects(TrigBmuxState &) const
virtual StatusCode initialize() override
Gaudi::Property< bool > m_makeCascadeFit
std::vector< size_t > trigBphysMuonIndices
Gaudi::Property< float > m_LambdaBToLambdaC_LxyLb
@ trkMass
Extended perigee: mass.
std::vector< Muon > muons
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Gaudi::Property< std::pair< double, double > > m_BToD0_massRange
Eigen::Matrix< double, 3, 1 > Vector3D
std::unique_ptr< Trk::VxCascadeInfo > fitCascade(const EventContext &context, const std::vector< ElementLink< xAOD::TrackParticleContainer >> &trackParticleLinks, Decay decay) const
Perform a cascade vertex fit on selected tracks.
const TrigCompositeUtils::DecisionContainer & previousDecisions() const
ToolHandle< GenericMonitoringTool > m_monTool
TrigCompositeUtils::DecisionIDContainer decisionIDs
Gaudi::Property< float > m_BToD0_chi2
StatusCode fillTriggerObjects(std::vector< xAOD::TrigBphys * > &triggerObjects, xAOD::TrigBphys::pType type, const Trk::VxCascadeInfo &vxCascadeInfo, const Amg::Vector3D &beamSpotPosition) const
Fill the trigger object that may be stored for debugging or matching for a cascade vertex.
std::set< DecisionID > DecisionIDContainer
double Lxy(const Amg::Vector3D &productionVertex, const Amg::Vector3D &decayVertex, const std::vector< TLorentzVector > &momenta) const
Returns the transverse decay length of a particle Lxy in [mm].
Class describing a Vertex.
Gaudi::Property< double > m_BToD0_minDstarPionPt
Gaudi::Property< float > m_BsToDs_LxyDs
Gaudi::Property< bool > m_BToD0_makeDstar
Gaudi::Property< float > m_BToD0_LxyB
Gaudi::Property< double > m_BToD0_minD0PionPt
Gaudi::Property< float > m_BdToD_LxyD
bool isInSameRoI(const xAOD::Muon *, const xAOD::TrackParticle *) const
Checks that the given track is close enough to the muon, i.e.
Gaudi::Property< double > m_roiPhiWidth
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
Gaudi::Property< double > m_BToD0_maxDstarPionZ0
TrigCompositeUtils::DecisionContainer & decisions()
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_BToD0_DstarMassRange
Gaudi::Property< double > m_BsToDs_minDsPt
Gaudi::Property< double > m_LambdaBToLambdaC_minPionPt
Gaudi::Property< std::pair< double, double > > m_LambdaBToLambdaC_massRange
Class describing a TrackParticle.
Gaudi::Property< float > m_BdToD_LxyBd
Base class for TrigBphys state objects.
TrigCompositeUtils::DecisionIDContainer m_allowedIDs
Gaudi::Property< double > m_BToD0_minD0KaonPt
Gaudi::Property< double > m_BsToDs_minPionPt
ElementLink< xAOD::MuonContainer > link
Gaudi::Property< std::pair< double, double > > m_LambdaBToLambdaC_LambdaCMassRange
Class describing a Bphysics online composite object.
pType
enum for different particle types
xAOD::TrigBphysContainer & trigBphysCollection()
Gaudi::Property< double > m_LambdaBToLambdaC_minLambdaCPt
Gaudi::Property< std::pair< double, double > > m_BsToDs_massRange
Gaudi::Property< bool > m_BdToD