|
ATLAS Offline Software
|
EF hypothesis algorithm for B -> mu+ mu- X decays: B+ -> mu+ mu- K+ B_c+ -> J/psi(-> mu+ mu-) pi+ B_s0 -> mu+ mu- phi1020(-> K+, K-) B0 -> mu+ mu- K*0(-> K+ pi-) Lambda_b0 -> J/psi(-> mu+ mu-) p K- B_c+ -> J/psi(-> mu+ mu-) D_s+(->phi(-> K+ K-) pi+) B_c+ -> J/psi(-> mu+ mu-) D+(-> K- pi+ pi+) B_c+ -> J/psi(-> mu+ mu-) D*+(-> D0(-> K- pi+) pi+) partial (lost pion from D*+) and full reconstruction.
More...
#include <TrigBmumuxComboHypo.h>
|
| TrigBmumuxComboHypo (const std::string &name, ISvcLocator *pSvcLocator) |
|
| TrigBmumuxComboHypo ()=delete |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | execute (const EventContext &context) const override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
StatusCode | mergeMuonsFromDecisions (TrigBmumuxState &) const |
| Go through state.previousDecisions(), fetch xAOD::Muons objects attached to decisions and save links to them in state.muons(). More...
|
|
StatusCode | mergeTracksFromViews (TrigBmumuxState &) const |
| Go through state.previousDecisions() and fetch xAOD::TrackParticle objects associated with the nearest SG::View. More...
|
|
StatusCode | findDimuonCandidates (TrigBmumuxState &) const |
| Make all possible dimuon combinations from state.muons(), fit muon InDet tracks to the common vertex, dimuon vertices are stored in state.dimuons() and in state.trigBphysCollection() (as xAOD::TrigBphys objects). More...
|
|
StatusCode | findBmumuxCandidates (TrigBmumuxState &) const |
| Find B decays by appling next three subprocedures to each found dimuon candidate. More...
|
|
StatusCode | findBmumuxCandidates_selectTracks (TrigBmumuxState &, size_t dimuonIndex) const |
| Select tracks in vicinity of given dimuon vertex. More...
|
|
StatusCode | findBmumuxCandidates_fastFit (TrigBmumuxState &, size_t dimuonIndex) const |
| Go through (dimuon+track) and (track+track) combinations found by findBmumuxCandidates_fit(makeCombinations = true) Perform fast fit if combination occurred more than five times. More...
|
|
StatusCode | findBmumuxCandidates_fit (TrigBmumuxState &, size_t dimuonIndex, bool makeCombinations=false) const |
| Perform fit of B decays for the topologies described above if makeCombinations = false. More...
|
|
StatusCode | createDecisionObjects (TrigBmumuxState &) const |
| Create a decision for each xAOD::TrigBphys object from state.trigBphysCollection() and save it to state.decisions(); use hypoTools() to assign correct decisionIDs according to xAOD::TrigBphys::particleType() More...
|
|
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. More...
|
|
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. More...
|
|
bool | isIdenticalTracks (const xAOD::TrackParticle *lhs, const xAOD::TrackParticle *rhs) const |
| Attempts to identify identical tracks by selection on DeltaR. More...
|
|
bool | isIdenticalTracks (const xAOD::Muon *lhs, const xAOD::Muon *rhs) const |
|
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 limits. More...
|
|
bool | passDimuonTrigger (const std::vector< const TrigCompositeUtils::DecisionIDContainer * > &previousDecisionIDs) const |
|
bool | isInMassRange (double mass, const std::pair< double, double > &range) const |
| Checks that the given mass value falls into the specified range. More...
|
|
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 production and decay vertices projected along the transverse momentum of the particle. More...
|
|
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. More...
|
|
StatusCode | copyDecisions (const Combo::LegDecisionsMap &passingLegs, const EventContext &context) const |
| iterates over the inputs and for every object (no filtering) crates output object linked to input moving the decisions that are mentioned in the passing set More...
|
|
StatusCode | extractFeatureAndRoI (const HLT::Identifier &chainLegId, const ElementLink< TrigCompositeUtils::DecisionContainer > &EL, SG::sgkey_t &featureKey, TrigCompositeUtils::Decision::index_type &featureIndex, SG::sgkey_t &roiKey, TrigCompositeUtils::Decision::index_type &roiIndex, bool &roiFullscan, bool &objectRequestsNoMultiplicityCheck, SG::SGKeyMap< std::set< uint32_t >> &priorFeaturesMap) const |
| For a given Decision node from a HypoAlg, extracts type-less identification data on the node's Feature and seeding ROI. More...
|
|
StatusCode | fillDecisionsMap (Combo::LegDecisionsMap &dmap, const EventContext &context) const |
| iterates over all inputs, associating inputs to legs More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
SG::ReadHandleKey< xAOD::TrackParticleContainer > | m_trackParticleContainerKey |
|
SG::ReadHandleKey< xAOD::MuonContainer > | m_muonContainerKey |
|
SG::WriteHandleKey< xAOD::TrigBphysContainer > | m_trigBphysContainerKey |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"} |
|
Gaudi::Property< double > | m_deltaR |
|
Gaudi::Property< double > | m_trkZ0 |
|
Gaudi::Property< double > | m_roiEtaWidth |
|
Gaudi::Property< double > | m_roiPhiWidth |
|
Gaudi::Property< size_t > | m_fitAttemptsWarningThreshold |
|
Gaudi::Property< size_t > | m_fitAttemptsBreakThreshold |
|
Gaudi::Property< double > | m_fastFit_2trk_chi2 |
|
Gaudi::Property< double > | m_fastFit_2mu1trk_chi2 |
|
Gaudi::Property< bool > | m_dimuon_rejectSameChargeTracks |
|
Gaudi::Property< std::pair< double, double > > | m_dimuon_massRange |
|
Gaudi::Property< double > | m_dimuon_chi2 |
|
Gaudi::Property< bool > | m_BplusToMuMuKaon |
|
Gaudi::Property< double > | m_BplusToMuMuKaon_minKaonPt |
|
Gaudi::Property< std::pair< double, double > > | m_BplusToMuMuKaon_massRange |
|
Gaudi::Property< float > | m_BplusToMuMuKaon_chi2 |
|
Gaudi::Property< bool > | m_BplusToMuMuKaon_useFastFit |
|
Gaudi::Property< bool > | m_BcToMuMuPion |
|
Gaudi::Property< double > | m_BcToMuMuPion_minPionPt |
|
Gaudi::Property< std::pair< double, double > > | m_BcToMuMuPion_dimuonMassRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToMuMuPion_massRange |
|
Gaudi::Property< float > | m_BcToMuMuPion_chi2 |
|
Gaudi::Property< bool > | m_BcToMuMuPion_useFastFit |
|
Gaudi::Property< bool > | m_BsToMuMuPhi1020 |
|
Gaudi::Property< bool > | m_BsToMuMuPhi1020_rejectSameChargeTracks |
|
Gaudi::Property< double > | m_BsToMuMuPhi1020_minKaonPt |
|
Gaudi::Property< std::pair< double, double > > | m_BsToMuMuPhi1020_massRange |
|
Gaudi::Property< std::pair< double, double > > | m_BsToMuMuPhi1020_phiMassRange |
|
Gaudi::Property< float > | m_BsToMuMuPhi1020_chi2 |
|
Gaudi::Property< bool > | m_BsToMuMuPhi1020_useFastFit |
|
Gaudi::Property< bool > | m_BdToMuMuKstar0 |
|
Gaudi::Property< bool > | m_BdToMuMuKstar0_rejectSameChargeTracks |
|
Gaudi::Property< double > | m_BdToMuMuKstar0_minKaonPt |
|
Gaudi::Property< double > | m_BdToMuMuKstar0_minPionPt |
|
Gaudi::Property< std::pair< double, double > > | m_BdToMuMuKstar0_massRange |
|
Gaudi::Property< std::pair< double, double > > | m_BdToMuMuKstar0_KstarMassRange |
|
Gaudi::Property< float > | m_BdToMuMuKstar0_chi2 |
|
Gaudi::Property< bool > | m_BdToMuMuKstar0_useFastFit |
|
Gaudi::Property< bool > | m_LambdaBToMuMuProtonKaon |
|
Gaudi::Property< bool > | m_LambdaBToMuMuProtonKaon_rejectSameChargeTracks |
|
Gaudi::Property< double > | m_LambdaBToMuMuProtonKaon_minProtonPt |
|
Gaudi::Property< double > | m_LambdaBToMuMuProtonKaon_minKaonPt |
|
Gaudi::Property< double > | m_LambdaBToMuMuProtonKaon_minKstarMass |
|
Gaudi::Property< std::pair< double, double > > | m_LambdaBToMuMuProtonKaon_dimuonMassRange |
|
Gaudi::Property< std::pair< double, double > > | m_LambdaBToMuMuProtonKaon_massRange |
|
Gaudi::Property< float > | m_LambdaBToMuMuProtonKaon_chi2 |
|
Gaudi::Property< bool > | m_LambdaBToMuMuProtonKaon_useFastFit |
|
Gaudi::Property< bool > | m_BcToDsMuMu |
|
Gaudi::Property< double > | m_BcToDsMuMu_minKaonPt |
|
Gaudi::Property< double > | m_BcToDsMuMu_minPionPt |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDsMuMu_massRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDsMuMu_dimuonMassRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDsMuMu_phiMassRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDsMuMu_DsMassRange |
|
Gaudi::Property< float > | m_BcToDsMuMu_chi2 |
|
Gaudi::Property< bool > | m_BcToDsMuMu_useFastFit |
|
Gaudi::Property< bool > | m_BcToDplusMuMu |
|
Gaudi::Property< double > | m_BcToDplusMuMu_minKaonPt |
|
Gaudi::Property< double > | m_BcToDplusMuMu_minPionPt |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDplusMuMu_massRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDplusMuMu_dimuonMassRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDplusMuMu_DplusMassRange |
|
Gaudi::Property< float > | m_BcToDplusMuMu_chi2 |
|
Gaudi::Property< bool > | m_BcToDplusMuMu_useFastFit |
|
Gaudi::Property< bool > | m_BcToDstarMuMu |
|
Gaudi::Property< bool > | m_BcToDstarMuMu_makeDstar |
|
Gaudi::Property< double > | m_BcToDstarMuMu_minD0KaonPt |
|
Gaudi::Property< double > | m_BcToDstarMuMu_minD0PionPt |
|
Gaudi::Property< double > | m_BcToDstarMuMu_minDstarPionPt |
|
Gaudi::Property< double > | m_BcToDstarMuMu_maxDstarPionZ0 |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDstarMuMu_massRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDstarMuMu_dimuonMassRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDstarMuMu_D0MassRange |
|
Gaudi::Property< std::pair< double, double > > | m_BcToDstarMuMu_DstarMassRange |
|
Gaudi::Property< float > | m_BcToDstarMuMu_chi2 |
|
ToolHandle< InDet::VertexPointEstimator > | m_vertexPointEstimator |
|
ToolHandle< Trk::TrkVKalVrtFitter > | m_vertexFitter |
|
ToolHandle< Reco::ITrackToVertex > | m_trackToVertexTool |
|
ToolHandle< GenericMonitoringTool > | m_monTool |
|
TrigCompositeUtils::DecisionIDContainer | m_allowedIDs |
|
SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainer > | m_inputs { this, "HypoInputDecisions", {}, "Input Decisions" } |
|
SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainer > | m_outputs { this, "HypoOutputDecisions", {}, "Output Decisions" } |
|
Gaudi::Property< bool > | m_requireUniqueROI |
|
Gaudi::Property< Combo::MultiplicityReqMap > | m_multiplicitiesReqMap |
|
Gaudi::Property< Combo::LegMap > | m_legToInputCollectionMap |
|
Gaudi::Property< bool > | m_checkMultiplicityMap |
|
ToolHandleArray< ComboHypoToolBase > | m_hypoTools {this, "ComboHypoTools", {}, "Tools to perform selection"} |
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
EF hypothesis algorithm for B -> mu+ mu- X decays: B+ -> mu+ mu- K+ B_c+ -> J/psi(-> mu+ mu-) pi+ B_s0 -> mu+ mu- phi1020(-> K+, K-) B0 -> mu+ mu- K*0(-> K+ pi-) Lambda_b0 -> J/psi(-> mu+ mu-) p K- B_c+ -> J/psi(-> mu+ mu-) D_s+(->phi(-> K+ K-) pi+) B_c+ -> J/psi(-> mu+ mu-) D+(-> K- pi+ pi+) B_c+ -> J/psi(-> mu+ mu-) D*+(-> D0(-> K- pi+) pi+) partial (lost pion from D*+) and full reconstruction.
Definition at line 115 of file TrigBmumuxComboHypo.h.
◆ StoreGateSvc_t
◆ Decay
Enumerator |
---|
kPsi_2mu | |
kB_2mu1trk | |
kB_2mu2trk | |
kDs | |
kDplus | |
kD0 | |
kB_PsiPi | |
kFastFit_2trk | |
kFastFit_2mu1trk | |
Definition at line 123 of file TrigBmumuxComboHypo.h.
◆ TrigBmumuxComboHypo() [1/2]
TrigBmumuxComboHypo::TrigBmumuxComboHypo |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ TrigBmumuxComboHypo() [2/2]
TrigBmumuxComboHypo::TrigBmumuxComboHypo |
( |
| ) |
|
|
delete |
◆ cardinality()
unsigned int AthReentrantAlgorithm::cardinality |
( |
| ) |
const |
|
overridevirtualinherited |
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 55 of file AthReentrantAlgorithm.cxx.
◆ copyDecisions()
iterates over the inputs and for every object (no filtering) crates output object linked to input moving the decisions that are mentioned in the passing set
Definition at line 86 of file ComboHypo.cxx.
88 for (
auto const& element : passingLegs) {
89 passing.insert(element.first);
92 ATH_MSG_DEBUG(
"Copying "<<passing.size()<<
" positive decision IDs to outputs");
94 for (
size_t input_counter = 0; input_counter <
m_inputs.size(); ++input_counter ) {
97 auto outDecisions = outputHandle.
ptr();
99 if ( inputHandle.isValid() ) {
101 for (
const Decision* inputDecision : *inputHandle) {
108 ATH_MSG_DEBUG(
"Searching this element in the map: ("<<thisEL.dataID() <<
" , " << thisEL.index()<<
")");
113 const std::vector<ElementLink<DecisionContainer>>&
Comb=passingLegs.at(
c);
117 ATH_MSG_DEBUG(
" Adding "<< cID <<
" because EL is found in the passingLegs map");
118 finalIds.insert( cID.
numeric() );
121 finalIds.insert( mainChain.
numeric() );
127 ATH_MSG_DEBUG(
"New decision (Container Index:" << input_counter <<
", Element Index:"<< newDec->
index() <<
") has "
136 ATH_MSG_DEBUG(
"Output Handle " <<
m_outputs.at(input_counter).key() <<
" with " << outputHandle->
size() <<
" Decision objects");
140 ATH_MSG_DEBUG(
" Decision object #" <<
d->index() <<
" with " << objDecisions.size()<<
" positive decision IDs");
148 return StatusCode::SUCCESS;
◆ createDecisionObjects()
StatusCode TrigBmumuxComboHypo::createDecisionObjects |
( |
TrigBmumuxState & |
state | ) |
const |
|
private |
Create a decision for each xAOD::TrigBphys object from state.trigBphysCollection() and save it to state.decisions(); use hypoTools() to assign correct decisionIDs according to xAOD::TrigBphys::particleType()
Definition at line 816 of file TrigBmumuxComboHypo.cxx.
822 ATH_MSG_DEBUG(
"Found xAOD::TrigBphys object: mass = " << triggerObject->mass() );
829 if (!dimuonTriggerObject) {
830 ATH_MSG_ERROR(
"Failed to found a valid link for preceding dimuon trigger object" );
831 return StatusCode::FAILURE;
837 auto dimuonIndex = dimuonTriggerObject->
index();
840 ATH_MSG_ERROR(
"Failed to find original muons the dimuon vertex had been built from" );
841 return StatusCode::FAILURE;
847 std::vector<const DecisionIDContainer*> previousDecisionIDs;
853 previousDecisionIDs.push_back(&
muon.decisionIDs);
861 ATH_CHECK(
tool->decideOnSingleObject(decision, previousDecisionIDs) );
865 return StatusCode::SUCCESS;
◆ decisionsInput()
◆ decisionsOutput()
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode TrigBmumuxComboHypo::execute |
( |
const EventContext & |
context | ) |
const |
|
overridevirtual |
Reimplemented from ComboHypo.
Definition at line 100 of file TrigBmumuxComboHypo.cxx.
106 ATH_CHECK( previousDecisionsHandle.isValid() );
107 ATH_MSG_DEBUG(
"Running with " << previousDecisionsHandle->size() <<
" previous decisions" );
112 ATH_CHECK( trigBphysHandle.record(std::make_unique<xAOD::TrigBphysContainer>(),
113 std::make_unique<xAOD::TrigBphysAuxContainer>()) );
118 auto state = std::make_unique<TrigBmumuxState>(context, *previousDecisionsHandle, *outputDecisionsHandle, trigBphysHandle.ptr(), *beamSpotHandle);
123 if (!state->dimuons.empty()) {
129 ATH_MSG_DEBUG(
"TrigBmumuxComboHypo::execute() terminates with StatusCode::SUCCESS" );
130 return StatusCode::SUCCESS;
◆ extractFeatureAndRoI()
For a given Decision node from a HypoAlg, extracts type-less identification data on the node's Feature and seeding ROI.
- Parameters
-
[in] | chainLegId | The HLT::Identifer of the chain (leg) we're extracting features for. |
[in] | EL | The Decision node from the HypoAlg, expected to have a "feature" link attached to it. Expected to be able to locate a "initialRoI" in its history if RequireUniqueROI=True. |
[out] | featureKey | Type-less SG Key hash of the collection hosting the Decision node's feature . |
[out] | featureIndex | Index inside the featureKey collection. |
[out] | roiKey | Type-less SG Key hash of the collection hosting the Decision node's initial ROI collection. |
[out] | roiIndex | Index inside the roiKey collection. |
[out] | roiIsFullscan | Flag indicating if the located initial ROI has the FullScan flag enabled. Triggers special behaviour allowing the ROI to satisfy arbitrary multiplicities in an arbitrary number of legs. |
[out] | objectRequestsNoMultiplicityCheck | Flag indicating of the DecisionObject requested not be included in the multiplicity computation. Triggers special behaviour allowing the DecisionObject to satisfy arbitrary multiplicities in an arbitrary number of legs. |
[in,out] | priorFeaturesMap | Data structure collating for a given feature (key) what the prior features were integrated over all previous steps (value set). |
Definition at line 379 of file ComboHypo.cxx.
398 ATH_MSG_ERROR(
"We are only expecting to search from a single navigation node in extractFeatureAndRoI");
399 return StatusCode::FAILURE;
403 std::vector<SG::sgkey_t>
keys;
404 std::vector<uint32_t> clids;
405 std::vector<Decision::index_type> indicies;
406 std::vector<const Decision*> sources;
408 std::set<const Decision*> fullyExploredFrom;
413 const Decision* featureSource =
nullptr;
416 featureKey =
keys.at(0);
417 featureIndex = indicies.at(0);
418 featureSource = sources.at(0);
421 objectRequestsNoMultiplicityCheck = (featureSource and featureSource->
hasDetail<int32_t>(
"noCombo") and featureSource->
getDetail<int32_t>(
"noCombo") == 1);
423 if (foundFeature and priorFeaturesMap.count(featureKey + featureIndex) == 0) {
424 const std::string* key_str =
evtStore()->keyToString(featureKey);
425 ATH_MSG_DEBUG(
"Note: Will use feature hash " << featureKey + featureIndex <<
", for " << (key_str ? *key_str :
"UNKNOWN") <<
" index=" << featureIndex);
428 if (
keys.size() > 1) {
429 for (
size_t i = 1;
i <
keys.size(); ++
i) {
431 if (featureKey + featureIndex ==
keys.at(
i) + indicies.at(
i)) {
434 priorFeaturesMap[featureKey + featureIndex].insert(
keys.at(
i) + indicies.at(
i));
437 priorFeaturesMap.insert( std::pair<
uint32_t, std::set<uint32_t>>(featureKey + featureIndex, std::set<uint32_t>()) );
448 roiIsFullscan = (*(roiEL))->isFullscan();
450 const std::string* roi_str =
evtStore()->keyToString(roiKey);
451 ATH_MSG_DEBUG(
"Note: Located fallback-ROI, if used this will have feature hash =" << roiKey + roiIndex <<
", for " << (roi_str ? *roi_str :
"UNKNOWN") <<
" index=" << roiIndex);
455 if (!foundFeature && !foundROI) {
456 ATH_MSG_WARNING(
"Did not find the feature or initialRoI for " << dEL.dataID() <<
" index " << dEL.index());
459 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ fillDecisionsMap()
iterates over all inputs, associating inputs to legs
Definition at line 463 of file ComboHypo.cxx.
464 for (
size_t inputContainerIndex = 0; inputContainerIndex <
m_inputs.size(); ++inputContainerIndex ) {
466 if ( !inputHandle.isValid() ) {
467 ATH_MSG_ERROR(
"No input ReadHandle from " << inputHandle.key() );
468 return StatusCode::FAILURE;
470 ATH_MSG_DEBUG(
"-- Found ReadHandle from " << inputHandle.key() <<
" with "<< inputHandle->size() <<
" elements:" );
471 for (
const Decision* decision : *inputHandle ) {
472 ATH_MSG_DEBUG(
"-- -- Input Decision #"<< decision->index() <<
" with "<<
decisionIDs( decision ).
size() <<
" active IDs. Populating the multiplicity map:" );
475 int32_t chainLeg = 0;
484 ATH_MSG_VERBOSE(
"-- -- -- Ignoring the DecsionID " <<
id <<
" on leg " << chainLeg <<
" as it does not correspond to any of the " <<
m_legToInputCollectionMap.size() <<
" chains this Alg is processing.");
489 const std::vector<int>& legToInputCollectionIndex =
it->second;
490 const size_t requiredInputContainerIndex =
static_cast<size_t>(legToInputCollectionIndex.at(chainLeg));
491 if (requiredInputContainerIndex != inputContainerIndex) {
492 ATH_MSG_VERBOSE(
"-- -- -- Ignoring the DecisionID " <<
id <<
" on leg " << chainLeg <<
" as we are only permitted to accept passing objects on leg #" << chainLeg <<
" of " << chainID.
name()
493 <<
" which come from input collection index " << requiredInputContainerIndex <<
" (which is " <<
m_inputs.at(requiredInputContainerIndex).key() <<
")"
494 <<
". Not the current index " << inputContainerIndex <<
" (which is " <<
m_inputs.at(inputContainerIndex).key() <<
")");
507 for (
const auto&
entry: dmap){
509 const std::vector<ElementLink<DecisionContainer>>&
decisions =
entry.second;
512 ATH_MSG_DEBUG(
" Decision: (ContainerKey:"<<
d.dataID()<<
", DecisionElementIndex:"<<
d.index()<<
")");
519 return StatusCode::SUCCESS;
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ findBmumuxCandidates()
StatusCode TrigBmumuxComboHypo::findBmumuxCandidates |
( |
TrigBmumuxState & |
state | ) |
const |
|
private |
Find B decays by appling next three subprocedures to each found dimuon candidate.
Definition at line 311 of file TrigBmumuxComboHypo.cxx.
313 std::vector<int> nSelectedTrk;
319 for (
size_t dimuonIndex = 0; dimuonIndex < state.
dimuons.
size(); ++dimuonIndex) {
330 mon_nTrk = state.
tracks.size();
333 return StatusCode::SUCCESS;
◆ findBmumuxCandidates_fastFit()
StatusCode TrigBmumuxComboHypo::findBmumuxCandidates_fastFit |
( |
TrigBmumuxState & |
state, |
|
|
size_t |
dimuonIndex |
|
) |
| const |
|
private |
Go through (dimuon+track) and (track+track) combinations found by findBmumuxCandidates_fit(makeCombinations = true) Perform fast fit if combination occurred more than five times.
If fast fit fails, put combination into state.badTrackCombinations().
Definition at line 776 of file TrigBmumuxComboHypo.cxx.
783 std::vector<ElementLink<xAOD::TrackParticleContainer>> trackParticleLinks_2mu1trk(dimuon->
trackParticleLinks());
784 trackParticleLinks_2mu1trk.emplace_back();
787 std::vector<ElementLink<xAOD::TrackParticleContainer>> trackParticleLinks_2trk(2);
790 size_t iterations = 0;
792 if (
item.second < 5)
continue;
812 return StatusCode::SUCCESS;
◆ findBmumuxCandidates_fit()
StatusCode TrigBmumuxComboHypo::findBmumuxCandidates_fit |
( |
TrigBmumuxState & |
state, |
|
|
size_t |
dimuonIndex, |
|
|
bool |
makeCombinations = false |
|
) |
| const |
|
private |
Perform fit of B decays for the topologies described above if makeCombinations = false.
Otherwise add simple combinations to state.trackCombinations().
Definition at line 394 of file TrigBmumuxComboHypo.cxx.
401 ATH_CHECK( dimuonTriggerObjectEL.isValid() );
404 std::vector<ElementLink<xAOD::TrackParticleContainer>> trackParticleLinks_vtx1(dimuon->
trackParticleLinks());
405 trackParticleLinks_vtx1.emplace_back();
408 std::vector<ElementLink<xAOD::TrackParticleContainer>> trackParticleLinks_vtx2(trackParticleLinks_vtx1);
409 trackParticleLinks_vtx2.emplace_back();
412 std::vector<ElementLink<xAOD::TrackParticleContainer>> trackParticleLinks_vtx3(3);
418 size_t iterations = 0;
420 bool isOverWarningThreshold =
false;
422 for (
size_t itrk1 = 0; itrk1 < selectedTracks.size(); ++itrk1) {
425 trackParticleLinks_vtx1[2] = selectedTracks[itrk1];
427 auto charge1 = trk1->
charge();
429 std::unique_ptr<xAOD::Vertex> vtx1;
430 bool makeFit_vtx1 = !makeCombinations;
431 bool passFastFit_vtx1 = (!makeCombinations && !state.
isBadCombination(itrk1));
441 makeFit_vtx1 =
false;
459 makeFit_vtx1 =
false;
470 for (
size_t itrk2 = itrk1 + 1; itrk2 < selectedTracks.size(); ++itrk2) {
473 trackParticleLinks_vtx2[2] = selectedTracks[itrk1];
474 trackParticleLinks_vtx2[3] = selectedTracks[itrk2];
476 auto charge2 = trk2->
charge();
478 std::unique_ptr<xAOD::Vertex> vtx2;
479 bool makeFit_vtx2 = !makeCombinations;
496 makeFit_vtx2 =
false;
519 makeFit_vtx2 =
false;
541 makeFit_vtx2 =
false;
565 makeFit_vtx2 =
false;
588 makeFit_vtx2 =
false;
598 for (
size_t itrk3 = 0; itrk3 < selectedTracks.size(); ++itrk3) {
600 if (itrk3 == itrk1 || itrk3 == itrk2)
continue;
602 trackParticleLinks_vtx3[0] = selectedTracks[itrk1];
603 trackParticleLinks_vtx3[1] = selectedTracks[itrk2];
604 trackParticleLinks_vtx3[2] = selectedTracks[itrk3];
608 std::unique_ptr<xAOD::Vertex> vtx3;
609 bool makeFit_vtx3 = !makeCombinations;
610 bool passFastFit_vtx3 = (!makeCombinations && !state.
isBadCombination(itrk1, itrk2, itrk3));
617 charge1 * charge2 < 0. &&
628 vtx3 =
fit(state.
context(), trackParticleLinks_vtx3,
kDs, dimuon);
629 makeFit_vtx3 =
false;
643 charge1 * charge2 > 0. && charge1 *
charge3 < 0. &&
654 makeFit_vtx3 =
false;
669 isOverWarningThreshold =
true;
672 ATH_MSG_WARNING(
"Dimuon + tracks: the number of fit attempts has exceeded the limit; breaking the loop at this point" );
680 isOverWarningThreshold =
false;
683 std::vector<ElementLink<xAOD::TrackParticleContainer>> trackParticleLinks_D0(2);
685 for (
size_t itrk1 = 0; itrk1 < selectedTracks.size(); ++itrk1) {
688 trackParticleLinks_D0[0] = selectedTracks[itrk1];
691 auto charge1 = trk1->
charge();
693 for (
size_t itrk2 = 0; itrk2 < selectedTracks.size(); ++itrk2) {
694 if (itrk2 == itrk1)
continue;
697 trackParticleLinks_D0[1] = selectedTracks[itrk2];
700 auto charge2 = trk2->
charge();
702 std::unique_ptr<xAOD::Vertex>
D0;
703 if (charge1 * charge2 < 0. &&
711 bool isValidD0 =
false;
714 ATH_MSG_DEBUG(
"Partially reconstructed B_c+(-> mu+ mu- D0 X) candidate has been created" );
722 for (
size_t itrk3 = 0; itrk3 < selectedTracks.size(); ++itrk3) {
724 if (itrk3 == itrk1 || itrk3 == itrk2)
continue;
727 trackParticleLinks_vtx1[2] = selectedTracks[itrk3];
738 ATH_MSG_DEBUG(
"Decay vertex(mu+ mu- D*+.pi+) for B_c+ candidate has been created" );
742 ATH_CHECK( triggerObjectEL_vtx1.isValid() );
745 auto Bc_vtx2 =
fit(state.
context(), trackParticleLinks_D0,
kD0, Bc_vtx1.get());
748 ATH_MSG_DEBUG(
"Fully reconstructed B_c+(-> mu+ mu- D*+) candidate has been created" );
761 isOverWarningThreshold =
true;
764 ATH_MSG_WARNING(
"B_c+ -> mu+ mu- D*+: the number of fit attempts has exceeded the limit; breaking the loop at this point" );
772 return StatusCode::SUCCESS;
◆ findBmumuxCandidates_selectTracks()
StatusCode TrigBmumuxComboHypo::findBmumuxCandidates_selectTracks |
( |
TrigBmumuxState & |
state, |
|
|
size_t |
dimuonIndex |
|
) |
| const |
|
private |
Select tracks in vicinity of given dimuon vertex.
Definition at line 337 of file TrigBmumuxComboHypo.cxx.
342 selectedTracks.clear();
343 selectedTrackZ0.clear();
347 std::vector<const xAOD::Muon*> muons(2,
nullptr);
349 for (
size_t i = 0;
i < 2; ++
i) {
350 const auto&
muon = state.
muons.at(muonIndices[
i]);
351 muons[
i] = *
muon.link;
360 for (
const auto& trackEL : state.
tracks) {
364 if (perigee && std::abs(perigee->parameters()[
Trk::z0]) <
m_trkZ0) {
365 selectedTracks.push_back(trackEL);
366 selectedTrackZ0[*trackEL] = perigee->parameters()[
Trk::z0];
370 selectedTracks.push_back(trackEL);
371 selectedTrackZ0[*trackEL] = -1000.;
376 if (selectedTracks.size() < 2) {
377 ATH_MSG_DEBUG(
"Found no tracks consistent with dimuon vertex " << dimuonIndex );
378 selectedTracks.clear();
379 selectedTrackZ0.clear();
380 return StatusCode::SUCCESS;
382 std::sort(selectedTracks.begin(), selectedTracks.end(), [p_mu=mu1->
genvecP4()](
const auto& lhs,
const auto& rhs){ return ROOT::Math::VectorUtil::DeltaR(p_mu, (*lhs)->genvecP4()) > ROOT::Math::VectorUtil::DeltaR(p_mu, (*rhs)->genvecP4()); });
384 std::sort(selectedTracks.begin(), selectedTracks.end(), [p_mu=mu2->
genvecP4()](
const auto& lhs,
const auto& rhs){ return ROOT::Math::VectorUtil::DeltaR(p_mu, (*lhs)->genvecP4()) > ROOT::Math::VectorUtil::DeltaR(p_mu, (*rhs)->genvecP4()); });
386 std::sort(selectedTracks.begin(), selectedTracks.end(), [](
const auto& lhs,
const auto& rhs){ return ((*lhs)->pt() > (*rhs)->pt()); });
388 ATH_MSG_DEBUG(
"Found " << selectedTracks.size() <<
" tracks consistent with dimuon vertex " << dimuonIndex );
390 return StatusCode::SUCCESS;
◆ findDimuonCandidates()
StatusCode TrigBmumuxComboHypo::findDimuonCandidates |
( |
TrigBmumuxState & |
state | ) |
const |
|
private |
Make all possible dimuon combinations from state.muons(), fit muon InDet tracks to the common vertex, dimuon vertices are stored in state.dimuons() and in state.trigBphysCollection() (as xAOD::TrigBphys objects).
Definition at line 239 of file TrigBmumuxComboHypo.cxx.
244 const auto& muons = state.
muons;
246 std::vector<const DecisionIDContainer*> previousDecisionIDs(2,
nullptr);
248 for (
size_t itrk1 = 0; itrk1 < muons.size(); ++itrk1) {
251 previousDecisionIDs[0] = &muons[itrk1].decisionIDs;
255 auto charge1 = trk1->
charge();
257 for (
size_t itrk2 = itrk1 + 1; itrk2 < muons.size(); ++itrk2) {
260 previousDecisionIDs[1] = &muons[itrk2].decisionIDs;
264 auto charge2 = trk2->
charge();
273 ATH_MSG_DEBUG(
"muon pair is rejected by opposite charge check" );
278 ATH_MSG_DEBUG(
"muon pair did not pass passDimuonTrigger() check" );
283 ATH_MSG_DEBUG(
"muon pair is out of the requested mass range" );
294 ATH_MSG_ERROR(
"xAOD::Vertex could not be converted to xAOD::TrigBphys object: please enable MakeExtendedVertex option in vertex fitter " <<
m_vertexFitter->name() );
295 return StatusCode::FAILURE;
307 return StatusCode::SUCCESS;
◆ fit()
Perform a vertex fit on selected tracks.
- Parameters
-
context | the event context used to make the vertex threadsafe. |
trackParticleLinks | the trackParticles to fit |
decay | the decay enumerator to specify the mass contraints |
dimuon | The dimuon vertex position can be used as the initial position to increase effeciency |
- Returns
- The fitted vertex - null if fit fails or is very low quality
Definition at line 869 of file TrigBmumuxComboHypo.cxx.
878 ATH_MSG_WARNING(
"At least two tracks should be given to the vertex fitter" );
882 std::vector<const xAOD::TrackParticle*> tracklist(
trackParticleLinks.size(),
nullptr);
891 if (decay != Decay::kPsi_2mu && decay != Decay::kB_PsiPi && decay != Decay::kFastFit_2trk) {
892 ATH_MSG_WARNING(
"Already fitted dimuon vertex should be provided for B -> mu1 mu2 trk1 .. trkN decay as a starting point for fitter" );
896 const Trk::Perigee& perigee1 = tracklist[0]->perigeeParameters();
897 const Trk::Perigee& perigee2 = tracklist[1]->perigeeParameters();
901 ATH_MSG_VERBOSE(
"Starting point: (" << startingPoint(0) <<
", " << startingPoint(1) <<
", " << startingPoint(2) <<
")" );
907 if (decay == Decay::kDs || decay == Decay::kDplus || decay == Decay::kD0) {
912 std::unique_ptr<xAOD::Vertex>
vertex(
m_vertexFitter->fit(tracklist, startingPoint, *fitterState));
918 ATH_MSG_VERBOSE(
"Fit is successful, but vertex chi2 is too high, we are not going to save it (chi2 = " <<
vertex->chiSquared() <<
")" );
◆ hypoTools() [1/2]
◆ hypoTools() [2/2]
◆ initialize()
StatusCode TrigBmumuxComboHypo::initialize |
( |
| ) |
|
|
overridevirtual |
Reimplemented from ComboHypo.
Definition at line 55 of file TrigBmumuxComboHypo.cxx.
75 if (
item.second.size() > 1) {
76 for (
size_t i = 0;
i <
item.second.size();
i++) {
93 ATH_MSG_DEBUG(
"No GenericMonitoringTool configured: no monitoring histograms will be available" );
96 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, InDet::SiSPGNNTrackMaker, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ isIdenticalTracks() [1/2]
◆ isIdenticalTracks() [2/2]
Attempts to identify identical tracks by selection on DeltaR.
- Returns
- true if 'identical', false otherwise
Definition at line 1005 of file TrigBmumuxComboHypo.cxx.
◆ isInMassRange()
bool TrigBmumuxComboHypo::isInMassRange |
( |
double |
mass, |
|
|
const std::pair< double, double > & |
range |
|
) |
| const |
|
inlineprivate |
◆ isInSameRoI()
Attempts to identify if the track is in the same RoI as the muon by comparing the angle with the RoI limits.
- Returns
- true if in same RoI
Definition at line 1018 of file TrigBmumuxComboHypo.cxx.
1020 auto p_mu =
muon->genvecP4();
1021 auto p_trk =
track->genvecP4();
1022 return (ROOT::Math::VectorUtil::DeltaPhi(p_mu, p_trk) <
m_roiPhiWidth && std::abs(p_mu.eta() - p_trk.eta()) <
m_roiEtaWidth);
◆ legToInputCollectionMap()
◆ Lxy()
Calculate the Lxy (~distance between vertices) It is defined as the transverse distance between the production and decay vertices projected along the transverse momentum of the particle.
- Returns
- The Lxy value in [mm]
Definition at line 1026 of file TrigBmumuxComboHypo.cxx.
1028 XYVector
R(decayVertex.
x() - productionVertex.x(), decayVertex.
y() - productionVertex.y());
1033 for (
const auto&
track : tracks) {
1035 if (!perigee)
return -100.;
1039 return R.Dot(
pT.unit());
◆ makeTriggerObject()
Construct the trigger object that may be stored for debugging or matching.
- Parameters
-
state | Event object containing the current events selections |
type | decay type enumerator. Corresponds to EDM definitions |
trkMass | Track mass hypothesis for mass calculations |
dimuonLink | Associated dimuon container |
- Returns
- Pointer to the TrigBphys object
Definition at line 932 of file TrigBmumuxComboHypo.cxx.
944 std::vector<xAOD::TrackParticle::GenVecFourMom_t> momenta;
945 if (!
vertex.vxTrackAtVertexAvailable())
return nullptr;
946 for (
size_t i = 0;
i <
vertex.vxTrackAtVertex().size(); ++
i) {
948 if (!perigee)
return nullptr;
950 momenta.emplace_back(
p.x(),
p.y(),
p.z(),
trkMass[
i]);
953 if (isCascadeDecay) {
954 momentum += ROOT::Math::PtEtaPhiMVector(dimuon->
pt(), dimuon->
eta(), dimuon->
phi(), dimuon->
mass());
958 result->makePrivateStore();
965 mass +=
PDG::mJpsi - (isCascadeDecay ? dimuon->
mass() : (momenta[0] + momenta[1]).M());
981 result->setTrackParticleLinks(
vertex.trackParticleLinks());
985 result->setLowerChainLink(dimuonLink);
989 "TrigBphys object:\n\t " <<
990 "roiId: " <<
result->roiId() <<
"\n\t " <<
991 "particleType: " <<
result->particleType() <<
"\n\t " <<
992 "level: " <<
result->level() <<
"\n\t " <<
993 "eta: " <<
result->eta() <<
"\n\t " <<
994 "phi: " <<
result->phi() <<
"\n\t " <<
995 "mass: " <<
result->mass() <<
"\n\t " <<
996 "fitmass: " <<
result->fitmass() <<
"\n\t " <<
997 "chi2/NDF: " <<
result->fitchi2() <<
" / " <<
result->fitndof() <<
"\n\t " <<
998 "vertex: (" <<
result->fitx() <<
", " <<
result->fity() <<
", " <<
result->fitz() <<
")" <<
"\n\t " <<
999 "Lxy: " <<
result->lxy() );
◆ mergeMuonsFromDecisions()
StatusCode TrigBmumuxComboHypo::mergeMuonsFromDecisions |
( |
TrigBmumuxState & |
state | ) |
const |
|
private |
Go through state.previousDecisions(), fetch xAOD::Muons objects attached to decisions and save links to them in state.muons().
Definition at line 134 of file TrigBmumuxComboHypo.cxx.
136 auto& muons = state.
muons;
144 if (!
muon->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle))
continue;
147 auto itr = std::find_if(muons.begin(), muons.end(), [
this,
muon](
const auto&
x){ return isIdenticalTracks(muon, *x.link); });
148 if (itr == muons.end()) {
149 muons.push_back({muonEL, std::vector<ElementLink<DecisionContainer>>(1, decisionEL),
DecisionIDContainer()});
152 (*itr).decisionLinks.push_back(decisionEL);
158 std::sort(muons.begin(), muons.end(), [](
const auto& lhs,
const auto& rhs){ return ((*lhs.link)->pt() > (*rhs.link)->pt()); });
161 for (
auto&
item : muons) {
168 ATH_MSG_DEBUG(
"Dump found muons before vertex fit: " << muons.size() <<
" candidates" );
169 for (
const auto&
item : muons) {
181 return StatusCode::SUCCESS;
◆ mergeTracksFromViews()
StatusCode TrigBmumuxComboHypo::mergeTracksFromViews |
( |
TrigBmumuxState & |
state | ) |
const |
|
private |
Go through state.previousDecisions() and fetch xAOD::TrackParticle objects associated with the nearest SG::View.
Enable overlap removal to get collection of unique objects at state.tracks().
Definition at line 185 of file TrigBmumuxComboHypo.cxx.
187 auto& tracks = state.
tracks;
190 size_t viewCounter = 0;
194 auto view = *viewLinkInfo.link;
198 const auto roi = *roiLinkInfo.link;
204 std::vector<ElementLink<xAOD::TrackParticleContainer>> tracksFromView;
205 tracksFromView.reserve(tracksHandle->size());
206 for (
size_t idx = 0;
idx < tracksHandle->size(); ++
idx) {
207 tracksFromView.emplace_back(ViewHelper::makeLink<xAOD::TrackParticleContainer>(
view, tracksHandle,
idx));
210 for (
const auto& trackEL : tracksFromView) {
212 if (
track->definingParametersCovMatrixVec().empty())
continue;
214 if (viewCounter == 0 ||
215 std::find_if(tracks.begin(), tracks.end(),
216 [
this,
track](
const auto&
x){ return isIdenticalTracks(track, *x); }) == tracks.end()) {
217 tracks.emplace_back(trackEL);
221 if (roi->composite()) {
226 std::sort(tracks.begin(), tracks.end(), [](
const auto& lhs,
const auto& rhs){ return ((*lhs)->pt() > (*rhs)->pt()); });
229 ATH_MSG_DEBUG(
"Dump found tracks before vertex fit: " << tracks.size() <<
" candidates" );
230 for (
const auto& trackEL : tracks) {
235 return StatusCode::SUCCESS;
◆ momentum()
Calculate 4-momentum of the fitted vertex particle assuming the given masses.
- Parameters
-
vertex | the fitted vertex linking to the original tracks |
the | mass hypothesis for the given tracks in the vertex |
- Returns
- The 4-momentum of the vertexed hypothesis
Definition at line 1043 of file TrigBmumuxComboHypo.cxx.
1046 for (
size_t i = 0;
i <
vertex.vxTrackAtVertex().
size(); ++
i) {
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ passDimuonTrigger()
Definition at line 1055 of file TrigBmumuxComboHypo.cxx.
1057 if (previousDecisionIDs.size() != 2) {
1058 ATH_MSG_WARNING(
"TrigBmumuxComboHypo::passDimuonTrigger() expects exactly two containers with previous decision IDs" );
1063 const std::vector<HLT::Identifier>& legDecisionIDs =
tool->legDecisionIds();
1064 if (legDecisionIDs.size() == 1 &&
tool->legMultiplicity().at(0) >= 2) {
1066 const DecisionID id = legDecisionIDs[0].numeric();
1069 else if (legDecisionIDs.size() == 2) {
1073 for (
size_t i = 0;
i < 2; ++
i) {
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ sysExecute()
StatusCode AthReentrantAlgorithm::sysExecute |
( |
const EventContext & |
ctx | ) |
|
|
overridevirtualinherited |
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ sysInitialize()
StatusCode AthReentrantAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ triggerMultiplicityMap()
◆ updateVHKA()
◆ m_allowedIDs
◆ m_BcToDplusMuMu
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BcToDplusMuMu |
|
private |
Initial value:{this,
"BcToDplusMuMu", true, "switch on/off B_c+ -> J/psi(-> mu+ mu-) D+(-> K- pi+ pi+) decay"}
Definition at line 381 of file TrigBmumuxComboHypo.h.
◆ m_BcToDplusMuMu_chi2
Gaudi::Property<float> TrigBmumuxComboHypo::m_BcToDplusMuMu_chi2 |
|
private |
Initial value:{this,
"BcToDplusMuMu_chi2", 60., "maximum chi2 of the fitted B_c+ vertex"}
Definition at line 393 of file TrigBmumuxComboHypo.h.
◆ m_BcToDplusMuMu_dimuonMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDplusMuMu_dimuonMassRange |
|
private |
Initial value:{this,
"BcToDplusMuMu_dimuonMassRange", {2500., 4300.}, "dimuon mass range for B_c+ -> J/psi D+ decay"}
Definition at line 389 of file TrigBmumuxComboHypo.h.
◆ m_BcToDplusMuMu_DplusMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDplusMuMu_DplusMassRange |
|
private |
Initial value:{this,
"BcToDplusMuMu_DplusMassRange", {1750., 2000.}, "D+ mass range"}
Definition at line 391 of file TrigBmumuxComboHypo.h.
◆ m_BcToDplusMuMu_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDplusMuMu_massRange |
|
private |
Initial value:{this,
"BcToDplusMuMu_massRange", {5500., 7300.}, "B_c+ mass range"}
Definition at line 387 of file TrigBmumuxComboHypo.h.
◆ m_BcToDplusMuMu_minKaonPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToDplusMuMu_minKaonPt |
|
private |
Initial value:{this,
"BcToDplusMuMu_minKaonPt", 1000., "minimum pT of kaon track from D+"}
Definition at line 383 of file TrigBmumuxComboHypo.h.
◆ m_BcToDplusMuMu_minPionPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToDplusMuMu_minPionPt |
|
private |
Initial value:{this,
"BcToDplusMuMu_minPionPt", 1000., "minimum pT of pion track from D+"}
Definition at line 385 of file TrigBmumuxComboHypo.h.
◆ m_BcToDplusMuMu_useFastFit
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BcToDplusMuMu_useFastFit |
|
private |
Initial value:{this,
"BcToDplusMuMu_useFastFit", true, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"}
Definition at line 395 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BcToDsMuMu |
|
private |
Initial value:{this,
"BcToDsMuMu", true, "switch on/off B_c+ -> J/psi(-> mu+ mu-) D_s+(->phi(-> K+ K-) pi+) decay"}
Definition at line 361 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu_chi2
Gaudi::Property<float> TrigBmumuxComboHypo::m_BcToDsMuMu_chi2 |
|
private |
Initial value:{this,
"BcToDsMuMu_chi2", 60., "maximum chi2 of the fitted B_c+ vertex"}
Definition at line 375 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu_dimuonMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDsMuMu_dimuonMassRange |
|
private |
Initial value:{this,
"BcToDsMuMu_dimuonMassRange", {2500., 4300.}, "dimuon mass range for B_c+ -> J/psi D_s+ decay"}
Definition at line 369 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu_DsMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDsMuMu_DsMassRange |
|
private |
Initial value:{this,
"BcToDsMuMu_DsMassRange", {1750., 2100.}, "D_s+ mass range"}
Definition at line 373 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDsMuMu_massRange |
|
private |
Initial value:{this,
"BcToDsMuMu_massRange", {5500., 7300.}, "B_c+ mass range"}
Definition at line 367 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu_minKaonPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToDsMuMu_minKaonPt |
|
private |
Initial value:{this,
"BcToDsMuMu_minKaonPt", 1000., "minimum pT of kaon track from phi(1020)"}
Definition at line 363 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu_minPionPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToDsMuMu_minPionPt |
|
private |
Initial value:{this,
"BcToDsMuMu_minPionPt", 1000., "minimum pT of pion track from D_s+"}
Definition at line 365 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu_phiMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDsMuMu_phiMassRange |
|
private |
Initial value:{this,
"BcToDsMuMu_phiMassRange", {940., 1100.}, "phi(1020) mass range"}
Definition at line 371 of file TrigBmumuxComboHypo.h.
◆ m_BcToDsMuMu_useFastFit
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BcToDsMuMu_useFastFit |
|
private |
Initial value:{this,
"BcToDsMuMu_useFastFit", true, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"}
Definition at line 377 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BcToDstarMuMu |
|
private |
Initial value:{this,
"BcToDstarMuMu", true, "switch on/off partial reconstruction of B_c+ -> J/psi(-> mu+ mu-) D0(-> K- pi+) X decay"}
Definition at line 399 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_chi2
Gaudi::Property<float> TrigBmumuxComboHypo::m_BcToDstarMuMu_chi2 |
|
private |
Initial value:{this,
"BcToDstarMuMu_chi2", 60., "maximum chi2 of the fitted B_c+ vertex"}
Definition at line 419 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_D0MassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDstarMuMu_D0MassRange |
|
private |
Initial value:{this,
"BcToDstarMuMu_D0MassRange", {1750., 2000.}, "D0 mass range"}
Definition at line 415 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_dimuonMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDstarMuMu_dimuonMassRange |
|
private |
Initial value:{this,
"BcToDstarMuMu_dimuonMassRange", {2500., 4300.}, "dimuon mass range for B_c+ -> J/psi D+ decay"}
Definition at line 413 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_DstarMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDstarMuMu_DstarMassRange |
|
private |
Initial value:{this,
"BcToDstarMuMu_DstarMassRange", {-1., 2110.}, "D*+ mass range"}
Definition at line 417 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_makeDstar
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BcToDstarMuMu_makeDstar |
|
private |
Initial value:{this,
"BcToDstarMuMu_makeDstar", true, "switch on/off full reconstruction of B_c+ -> J/psi(-> mu+ mu-) D*+(-> D0(-> K- pi+) pi+) decay"}
Definition at line 401 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToDstarMuMu_massRange |
|
private |
Initial value:{this,
"BcToDstarMuMu_massRange", {5500., 7300.}, "B_c+ mass range"}
Definition at line 411 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_maxDstarPionZ0
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToDstarMuMu_maxDstarPionZ0 |
|
private |
Initial value:{this,
"BcToDstarMuMu_maxDstarPionZ0", 5., "maximum z0 impact parameter of the pion track from D*+ wrt the fitted dimuon vertex; no preselection if negative"}
Definition at line 409 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_minD0KaonPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToDstarMuMu_minD0KaonPt |
|
private |
Initial value:{this,
"BcToDstarMuMu_minD0KaonPt", 1000., "minimum pT of kaon track from D0"}
Definition at line 403 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_minD0PionPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToDstarMuMu_minD0PionPt |
|
private |
Initial value:{this,
"BcToDstarMuMu_minD0PionPt", 1000., "minimum pT of pion track from D0"}
Definition at line 405 of file TrigBmumuxComboHypo.h.
◆ m_BcToDstarMuMu_minDstarPionPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToDstarMuMu_minDstarPionPt |
|
private |
Initial value:{this,
"BcToDstarMuMu_minDstarPionPt", 500., "minimum pT of pion track from D*+"}
Definition at line 407 of file TrigBmumuxComboHypo.h.
◆ m_BcToMuMuPion
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BcToMuMuPion |
|
private |
Initial value:{this,
"BcToMuMuPion", true, "switch on/off B_c+ -> J/psi(-> mu+ mu-) pi+ decay"}
Definition at line 293 of file TrigBmumuxComboHypo.h.
◆ m_BcToMuMuPion_chi2
Gaudi::Property<float> TrigBmumuxComboHypo::m_BcToMuMuPion_chi2 |
|
private |
Initial value:{this,
"BcToMuMuPion_chi2", 50., "maximum chi2 of the fitted B_c+ vertex"}
Definition at line 301 of file TrigBmumuxComboHypo.h.
◆ m_BcToMuMuPion_dimuonMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToMuMuPion_dimuonMassRange |
|
private |
Initial value:{this,
"BcToMuMuPion_dimuonMassRange", {2500., 4300.}, "dimuon mass range for B_c+ decay"}
Definition at line 297 of file TrigBmumuxComboHypo.h.
◆ m_BcToMuMuPion_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BcToMuMuPion_massRange |
|
private |
Initial value:{this,
"BcToMuMuPion_massRange", {5500., 7300.}, "B_c+ mass range"}
Definition at line 299 of file TrigBmumuxComboHypo.h.
◆ m_BcToMuMuPion_minPionPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BcToMuMuPion_minPionPt |
|
private |
Initial value:{this,
"BcToMuMuPion_minPionPt", 2000., "minimum pT of pion track"}
Definition at line 295 of file TrigBmumuxComboHypo.h.
◆ m_BcToMuMuPion_useFastFit
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BcToMuMuPion_useFastFit |
|
private |
Initial value:{this,
"BcToMuMuPion_useFastFit", false, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"}
Definition at line 303 of file TrigBmumuxComboHypo.h.
◆ m_BdToMuMuKstar0
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BdToMuMuKstar0 |
|
private |
Initial value:{this,
"BdToMuMuKstar0", true, "switch on/off B0 -> mu+ mu- K*0(-> K+ pi-) decay"}
Definition at line 323 of file TrigBmumuxComboHypo.h.
◆ m_BdToMuMuKstar0_chi2
Gaudi::Property<float> TrigBmumuxComboHypo::m_BdToMuMuKstar0_chi2 |
|
private |
Initial value:{this,
"BdToMuMuKstar0_chi2", 60., "maximum chi2 of the fitted B0 vertex"}
Definition at line 335 of file TrigBmumuxComboHypo.h.
◆ m_BdToMuMuKstar0_KstarMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BdToMuMuKstar0_KstarMassRange |
|
private |
Initial value:{this,
"BdToMuMuKstar0_KstarMassRange", {700., 1100.}, "K*0 mass range"}
Definition at line 333 of file TrigBmumuxComboHypo.h.
◆ m_BdToMuMuKstar0_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BdToMuMuKstar0_massRange |
|
private |
Initial value:{this,
"BdToMuMuKstar0_massRange", {4600., 5900.}, "B0 mass range"}
Definition at line 331 of file TrigBmumuxComboHypo.h.
◆ m_BdToMuMuKstar0_minKaonPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BdToMuMuKstar0_minKaonPt |
|
private |
Initial value:{this,
"BdToMuMuKstar0_minKaonPt", 100., "minimum pT of kaon track"}
Definition at line 327 of file TrigBmumuxComboHypo.h.
◆ m_BdToMuMuKstar0_minPionPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BdToMuMuKstar0_minPionPt |
|
private |
Initial value:{this,
"BdToMuMuKstar0_minPionPt", 100., "minimum pT of pion track"}
Definition at line 329 of file TrigBmumuxComboHypo.h.
◆ m_BdToMuMuKstar0_rejectSameChargeTracks
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BdToMuMuKstar0_rejectSameChargeTracks |
|
private |
Initial value:{this,
"BdToMuMuKstar0_rejectSameChargeTracks", true, "if true, the only (K+, pi-) and (K-, pi+) pairs will be kept (no wrong-charge combinations)"}
Definition at line 325 of file TrigBmumuxComboHypo.h.
◆ m_BdToMuMuKstar0_useFastFit
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BdToMuMuKstar0_useFastFit |
|
private |
Initial value:{this,
"BdToMuMuKstar0_useFastFit", true, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"}
Definition at line 337 of file TrigBmumuxComboHypo.h.
◆ m_beamSpotKey
◆ m_BplusToMuMuKaon
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BplusToMuMuKaon |
|
private |
Initial value:{this,
"BplusToMuMuKaon", true, "switch on/off B+ -> mu+ mu- K+ decay"}
Definition at line 281 of file TrigBmumuxComboHypo.h.
◆ m_BplusToMuMuKaon_chi2
Gaudi::Property<float> TrigBmumuxComboHypo::m_BplusToMuMuKaon_chi2 |
|
private |
Initial value:{this,
"BplusToMuMuKaon_chi2", 50., "maximum chi2 of the fitted B+ vertex"}
Definition at line 287 of file TrigBmumuxComboHypo.h.
◆ m_BplusToMuMuKaon_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BplusToMuMuKaon_massRange |
|
private |
Initial value:{this,
"BplusToMuMuKaon_massRange", {4500., 5900.}, "B+ mass range"}
Definition at line 285 of file TrigBmumuxComboHypo.h.
◆ m_BplusToMuMuKaon_minKaonPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BplusToMuMuKaon_minKaonPt |
|
private |
Initial value:{this,
"BplusToMuMuKaon_minKaonPt", 100., "minimum pT of kaon track"}
Definition at line 283 of file TrigBmumuxComboHypo.h.
◆ m_BplusToMuMuKaon_useFastFit
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BplusToMuMuKaon_useFastFit |
|
private |
Initial value:{this,
"BplusToMuMuKaon_useFastFit", false, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"}
Definition at line 289 of file TrigBmumuxComboHypo.h.
◆ m_BsToMuMuPhi1020
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BsToMuMuPhi1020 |
|
private |
Initial value:{this,
"BsToMuMuPhi1020", true, "switch on/off B_s0 -> mu+ mu- phi(-> K+ K-) decay"}
Definition at line 307 of file TrigBmumuxComboHypo.h.
◆ m_BsToMuMuPhi1020_chi2
Gaudi::Property<float> TrigBmumuxComboHypo::m_BsToMuMuPhi1020_chi2 |
|
private |
Initial value:{this,
"BsToMuMuPhi1020_chi2", 60., "maximum chi2 of the fitted B+ vertex"}
Definition at line 317 of file TrigBmumuxComboHypo.h.
◆ m_BsToMuMuPhi1020_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BsToMuMuPhi1020_massRange |
|
private |
Initial value:{this,
"BsToMuMuPhi1020_massRange", {4800., 5800.}, "B_s0 mass range"}
Definition at line 313 of file TrigBmumuxComboHypo.h.
◆ m_BsToMuMuPhi1020_minKaonPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_BsToMuMuPhi1020_minKaonPt |
|
private |
Initial value:{this,
"BsToMuMuPhi1020_minKaonPt", 100., "minimum pT of kaon tracks"}
Definition at line 311 of file TrigBmumuxComboHypo.h.
◆ m_BsToMuMuPhi1020_phiMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_BsToMuMuPhi1020_phiMassRange |
|
private |
Initial value:{this,
"BsToMuMuPhi1020_phiMassRange", {940., 1100.}, "phi1020 mass range"}
Definition at line 315 of file TrigBmumuxComboHypo.h.
◆ m_BsToMuMuPhi1020_rejectSameChargeTracks
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BsToMuMuPhi1020_rejectSameChargeTracks |
|
private |
Initial value:{this,
"BsToMuMuPhi1020_rejectSameChargeTracks", true, "if true, the only (K+, K-) pairs will be kept (no wrong-charge combinations)"}
Definition at line 309 of file TrigBmumuxComboHypo.h.
◆ m_BsToMuMuPhi1020_useFastFit
Gaudi::Property<bool> TrigBmumuxComboHypo::m_BsToMuMuPhi1020_useFastFit |
|
private |
Initial value:{this,
"BsToMuMuPhi1020_useFastFit", false, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"}
Definition at line 319 of file TrigBmumuxComboHypo.h.
◆ m_checkMultiplicityMap
Gaudi::Property<bool> ComboHypo::m_checkMultiplicityMap |
|
privateinherited |
Initial value:{ this, "CheckMultiplicityMap", true,
"Perform a consistency check of the MultiplicitiesMap"}
Definition at line 64 of file ComboHypo.h.
◆ m_deltaR
Gaudi::Property<double> TrigBmumuxComboHypo::m_deltaR |
|
private |
Initial value:{this,
"DeltaR", 0.01, "minimum deltaR between same-sign tracks (overlap removal)"}
Definition at line 255 of file TrigBmumuxComboHypo.h.
◆ m_detStore
◆ m_dimuon_chi2
Gaudi::Property<double> TrigBmumuxComboHypo::m_dimuon_chi2 |
|
private |
Initial value:{this,
"Dimuon_chi2", 20., "maximum chi2 of the dimuon vertex"}
Definition at line 277 of file TrigBmumuxComboHypo.h.
◆ m_dimuon_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_dimuon_massRange |
|
private |
Initial value:{this,
"Dimuon_massRange", {100., 5500.}, "dimuon mass range"}
Definition at line 275 of file TrigBmumuxComboHypo.h.
◆ m_dimuon_rejectSameChargeTracks
Gaudi::Property<bool> TrigBmumuxComboHypo::m_dimuon_rejectSameChargeTracks |
|
private |
Initial value:{this,
"Dimuon_rejectSameChargeTracks", true, "if true, the only (mu+, mu-) pairs will be kept (no wrong-charge combinations)"}
Definition at line 273 of file TrigBmumuxComboHypo.h.
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.h.
◆ m_fastFit_2mu1trk_chi2
Gaudi::Property<double> TrigBmumuxComboHypo::m_fastFit_2mu1trk_chi2 |
|
private |
Initial value:{this,
"FastFit_2mu1trk_chi2", 60., "maximum chi2 for fast fit of dimuon + trk1"}
Definition at line 269 of file TrigBmumuxComboHypo.h.
◆ m_fastFit_2trk_chi2
Gaudi::Property<double> TrigBmumuxComboHypo::m_fastFit_2trk_chi2 |
|
private |
Initial value:{this,
"FastFit_2trk_chi2", 50., "maximum chi2 for fast fit of trk1 + trk2"}
Definition at line 267 of file TrigBmumuxComboHypo.h.
◆ m_fitAttemptsBreakThreshold
Gaudi::Property<size_t> TrigBmumuxComboHypo::m_fitAttemptsBreakThreshold |
|
private |
Initial value:{this,
"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)"}
Definition at line 265 of file TrigBmumuxComboHypo.h.
◆ m_fitAttemptsWarningThreshold
Gaudi::Property<size_t> TrigBmumuxComboHypo::m_fitAttemptsWarningThreshold |
|
private |
Initial value:{this,
"FitAttemptsWarningThreshold", 200, "Events processing this many calls of the vertex fitter will generate a WARNING message (time-out protect)"}
Definition at line 263 of file TrigBmumuxComboHypo.h.
◆ m_hypoTools
◆ m_inputs
◆ m_LambdaBToMuMuProtonKaon
Gaudi::Property<bool> TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon", true, "switch on/off Lambda_b0 -> J/psi(-> mu+ mu-) p K- decay"}
Definition at line 341 of file TrigBmumuxComboHypo.h.
◆ m_LambdaBToMuMuProtonKaon_chi2
Gaudi::Property<float> TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_chi2 |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon_chi2", 60., "maximum chi2 of the fitted Lambda_b0 vertex"}
Definition at line 355 of file TrigBmumuxComboHypo.h.
◆ m_LambdaBToMuMuProtonKaon_dimuonMassRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_dimuonMassRange |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon_dimuonMassRange", {2500., 4300.}, "dimuon mass range for Lambda_b0 decay"}
Definition at line 351 of file TrigBmumuxComboHypo.h.
◆ m_LambdaBToMuMuProtonKaon_massRange
Gaudi::Property<std::pair<double, double> > TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_massRange |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon_massRange", {4800., 6400.}, "Lambda_b0 mass range"}
Definition at line 353 of file TrigBmumuxComboHypo.h.
◆ m_LambdaBToMuMuProtonKaon_minKaonPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_minKaonPt |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon_minKaonPt", 1000., "minimum pT of kaon track"}
Definition at line 347 of file TrigBmumuxComboHypo.h.
◆ m_LambdaBToMuMuProtonKaon_minKstarMass
Gaudi::Property<double> TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_minKstarMass |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon_minKstarMass", 1300., "min value for both mass(trk1=kaon, trk2=pion) and mass(trk1=pion, trk2=kaon)"}
Definition at line 349 of file TrigBmumuxComboHypo.h.
◆ m_LambdaBToMuMuProtonKaon_minProtonPt
Gaudi::Property<double> TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_minProtonPt |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon_minProtonPt", 1000., "minimum pT of proton track"}
Definition at line 345 of file TrigBmumuxComboHypo.h.
◆ m_LambdaBToMuMuProtonKaon_rejectSameChargeTracks
Gaudi::Property<bool> TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_rejectSameChargeTracks |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon_rejectSameChargeTracks", false, "if true, the only (p, K-) and (anti-p, K+) pairs will be kept (no wrong-charge combinations)"}
Definition at line 343 of file TrigBmumuxComboHypo.h.
◆ m_LambdaBToMuMuProtonKaon_useFastFit
Gaudi::Property<bool> TrigBmumuxComboHypo::m_LambdaBToMuMuProtonKaon_useFastFit |
|
private |
Initial value:{this,
"LambdaBToMuMuProtonKaon_useFastFit", true, "true: perform vertex fit depending on only if fast fit; false: always perform vertex fit"}
Definition at line 357 of file TrigBmumuxComboHypo.h.
◆ m_legToInputCollectionMap
Gaudi::Property< Combo::LegMap > ComboHypo::m_legToInputCollectionMap |
|
privateinherited |
Initial value:{this, "LegToInputCollectionMap", {},
"Map from the chain name to the per-leg index in this algorithm's ReadHandleKeyArray which should be used as the source of incoming Decision Objects on the leg.",
"mapMergeNoReplace<std::string, std::vector<int>>"}
Definition at line 60 of file ComboHypo.h.
◆ m_monTool
◆ m_multiplicitiesReqMap
Initial value:{this, "MultiplicitiesMap", {},
"Map from the chain name to multiplicities required at each input",
"mapMergeNoReplace<std::string, std::vector<int>>"}
Definition at line 56 of file ComboHypo.h.
◆ m_muonContainerKey
Initial value:{this,
"MuonCollectionKey", "Muons", "input EF Muon container name"}
Definition at line 247 of file TrigBmumuxComboHypo.h.
◆ m_outputs
◆ m_requireUniqueROI
Gaudi::Property<bool> ComboHypo::m_requireUniqueROI |
|
privateinherited |
Initial value:{this, "RequireUniqueROI", false,
"Require each Feature in each leg of the combination to come from a unique L1 seeding ROI."}
Definition at line 53 of file ComboHypo.h.
◆ m_roiEtaWidth
Gaudi::Property<double> TrigBmumuxComboHypo::m_roiEtaWidth |
|
private |
Initial value:{this,
"RoiEtaWidth", 0.75, "extent of the RoI in eta from initial muon, to be check for SuperRoI"}
Definition at line 259 of file TrigBmumuxComboHypo.h.
◆ m_roiPhiWidth
Gaudi::Property<double> TrigBmumuxComboHypo::m_roiPhiWidth |
|
private |
Initial value:{this,
"RoiPhiWidth", 0.75, "extent of the RoI in phi from initial muon, to be check for SuperRoI"}
Definition at line 261 of file TrigBmumuxComboHypo.h.
◆ m_trackParticleContainerKey
Initial value:{this,
"TrackCollectionKey", "InDetTrackParticles", "input TrackParticle container name"}
Definition at line 245 of file TrigBmumuxComboHypo.h.
◆ m_trackToVertexTool
Initial value:{this,
"TrackToVertexTool", "", "tool to extrapolate track to vertex or beamspot"}
Definition at line 427 of file TrigBmumuxComboHypo.h.
◆ m_trigBphysContainerKey
Initial value:{this,
"TrigBphysCollectionKey", "TrigBphysContainer", "output TrigBphysContainer name"}
Definition at line 249 of file TrigBmumuxComboHypo.h.
◆ m_trkZ0
Gaudi::Property<double> TrigBmumuxComboHypo::m_trkZ0 |
|
private |
Initial value:{this,
"TrkZ0", 50., "maximum z0 impact parameter of the track wrt the fitted dimuon vertex; no preselection if negative"}
Definition at line 257 of file TrigBmumuxComboHypo.h.
◆ m_varHandleArraysDeclared
◆ m_vertexFitter
Initial value:{this,
"VertexFitter", "", "VKalVrtFitter tool to fit tracks into the common vertex"}
Definition at line 425 of file TrigBmumuxComboHypo.h.
◆ m_vertexPointEstimator
Initial value:{this,
"VertexPointEstimator", "", "tool to find starting point for the vertex fitter"}
Definition at line 423 of file TrigBmumuxComboHypo.h.
◆ m_vhka
◆ s_trkMass
const std::vector< std::vector< double > > TrigBmumuxComboHypo::s_trkMass |
|
staticprivate |
The documentation for this class was generated from the following files:
Gaudi::Property< double > m_fastFit_2trk_chi2
Gaudi::Property< Combo::MultiplicityReqMap > m_multiplicitiesReqMap
Gaudi::Property< std::pair< double, double > > m_BcToDsMuMu_phiMassRange
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzM4D< double > > GenVecFourMom_t
Base 4 Momentum type for TrackParticle.
Gaudi::Property< std::pair< double, double > > m_BcToDplusMuMu_massRange
Gaudi::Property< double > m_BcToDstarMuMu_minDstarPionPt
StatusCode addTriggerObject(xAOD::TrigBphys *triggerObject)
static const std::vector< std::vector< double > > s_trkMass
Gaudi::Property< bool > m_BsToMuMuPhi1020_useFastFit
float x() const
Returns the x position.
Gaudi::Property< float > m_BsToMuMuPhi1020_chi2
Group
Properties of a chain group.
Gaudi::Property< bool > m_BcToDstarMuMu
Gaudi::Property< double > m_BcToDsMuMu_minKaonPt
const SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainer > & decisionsOutput() const
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
void recursiveGetDecisions(const Decision *start, NavGraph &navGraph, const DecisionIDContainer &ids, const bool enforceDecisionOnStartNode)
Search back in time from "node" and locate all paths back through Decision objects for a given chain.
std::string find(const std::string &s)
return a remapped string
TrigCompositeUtils::DecisionID numeric() const
numeric ID
Gaudi::Property< double > m_roiPhiWidth
Gaudi::Property< double > m_BcToDstarMuMu_minD0KaonPt
float charge() const
Returns the charge.
Decision * newDecisionIn(DecisionContainer *dc, const std::string &name)
Helper method to create a Decision object, place it in the container and return a pointer to it.
Gaudi::Property< double > m_BcToMuMuPion_minPionPt
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Gaudi::Property< bool > m_LambdaBToMuMuProtonKaon
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Gaudi::Property< size_t > m_fitAttemptsBreakThreshold
const std::vector< NavGraphNode * > & finalNodes() const
Get all final nodes.
Gaudi::Property< bool > m_BdToMuMuKstar0_rejectSameChargeTracks
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
Gaudi::Property< double > m_BcToDplusMuMu_minPionPt
StatusCode findBmumuxCandidates_fit(TrigBmumuxState &, size_t dimuonIndex, bool makeCombinations=false) const
Perform fit of B decays for the topologies described above if makeCombinations = false.
SG::ReadHandle< T > makeHandle(const SG::View *view, const SG::ReadHandleKey< T > &rhKey, const EventContext &context)
navigate from the TrigComposite to nearest view and fetch object from it
static constexpr double mMuon
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
float fitx() const
accessor method: x position of vertex
Gaudi::Property< float > m_BplusToMuMuKaon_chi2
Gaudi::Property< double > m_BcToDstarMuMu_minD0PionPt
std::vector< std::array< size_t, 2 > > trigBphysMuonIndices
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 ...
bool isIdenticalTracks(const xAOD::TrackParticle *lhs, const xAOD::TrackParticle *rhs) const
Attempts to identify identical tracks by selection on DeltaR.
Gaudi::Property< bool > m_BplusToMuMuKaon
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
void insertDecisionIDs(const Decision *src, Decision *dest)
Appends the decision IDs of src to the dest decision object.
DecisionIDContainer passedDecisionIDs(const Decision *d, const T &required)
return DecisionIDs in Decision object that match the required ones
const T * get(size_type n) const
Access an element, as an rvalue.
bool msgLvl(const MSG::Level lvl) const
xAOD::VertexContainer dimuons
bool hasDetail(const std::string &name) const
Check if a given type of detail is available.
std::vector< ElementLink< xAOD::TrackParticleContainer > > selectedTracks
Gaudi::Property< double > m_LambdaBToMuMuProtonKaon_minKaonPt
const std::string & comboHypoAlgNodeName()
SG::WriteHandle< DecisionContainer > createAndStore(const SG::WriteHandleKey< DecisionContainer > &key, const EventContext &ctx)
Creates and right away records the DecisionContainer with the key.
Gaudi::Property< std::pair< double, double > > m_BsToMuMuPhi1020_phiMassRange
const Amg::Vector3D & position() const
Returns the 3-pos.
float mass() const
accessor method: mass
Gaudi::Property< double > m_BcToDplusMuMu_minKaonPt
Gaudi::Property< float > m_BcToMuMuPion_chi2
#define ATH_MSG_VERBOSE(x)
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Amg::Vector3D beamSpotPosition() const
Gaudi::Property< std::pair< double, double > > m_BcToDsMuMu_massRange
float pt() const
accessor method: pt
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.
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
virtual void setOwner(IDataHandleHolder *o)=0
Gaudi::Property< std::pair< double, double > > m_BcToDplusMuMu_DplusMassRange
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Gaudi::Property< double > m_BcToDsMuMu_minPionPt
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Gaudi::Property< std::pair< double, double > > m_BsToMuMuPhi1020_massRange
Gaudi::Property< std::pair< double, double > > m_BdToMuMuKstar0_massRange
Gaudi::Property< bool > m_BsToMuMuPhi1020
Gaudi::Property< double > m_BcToDstarMuMu_maxDstarPionZ0
Gaudi::Property< double > m_BsToMuMuPhi1020_minKaonPt
ComboHypo(const std::string &name, ISvcLocator *pSvcLocator)
SG::WriteHandleKey< xAOD::TrigBphysContainer > m_trigBphysContainerKey
std::vector< Muon > muons
Gaudi::Property< std::pair< double, double > > m_LambdaBToMuMuProtonKaon_dimuonMassRange
Gaudi::Property< float > m_BdToMuMuKstar0_chi2
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
StatusCode findBmumuxCandidates_fastFit(TrigBmumuxState &, size_t dimuonIndex) const
Go through (dimuon+track) and (track+track) combinations found by findBmumuxCandidates_fit(makeCombin...
ToolHandleArray< ComboHypoToolBase > & hypoTools()
Gaudi::Property< std::pair< double, double > > m_BcToDstarMuMu_dimuonMassRange
const std::string & initialRoIString()
const EventContext & context() const
const std::vector< ElementLink< DecisionContainer > > getLinkToPrevious(const Decision *d)
returns links to previous decision object 'seed'
bool typelessFindLinks(const Decision *start, const std::string &linkName, std::vector< sgkey_t > &keyVec, std::vector< uint32_t > &clidVec, std::vector< Decision::index_type > &indexVec, std::vector< const Decision * > &sourceVec, const unsigned int behaviour, std::set< const Decision * > *fullyExploredFrom)
search back the TC links for the object of type T linked to the one of TC (recursively) Returns the l...
::StatusCode StatusCode
StatusCode definition for legacy code.
pointer_type ptr()
Dereference the pointer.
CalibratedSpacePoint::Covariance_t inverse(const CalibratedSpacePoint::Covariance_t &mat)
Inverts the parsed matrix.
StatusCode createDecisionObjects(TrigBmumuxState &) const
Create a decision for each xAOD::TrigBphys object from state.trigBphysCollection() and save it to sta...
ToolHandle< InDet::VertexPointEstimator > m_vertexPointEstimator
Gaudi::Property< double > m_BplusToMuMuKaon_minKaonPt
Gaudi::Property< size_t > m_fitAttemptsWarningThreshold
Default, invalid implementation of ClassID_traits.
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Gaudi::Property< double > m_BdToMuMuKstar0_minKaonPt
StatusCode mergeTracksFromViews(TrigBmumuxState &) const
Go through state.previousDecisions() and fetch xAOD::TrackParticle objects associated with the neares...
ToolHandleArray< ComboHypoToolBase > m_hypoTools
ElementLink< DecisionContainer > decisionToElementLink(const Decision *d, const EventContext &ctx)
Takes a raw pointer to a Decision and returns an ElementLink to the Decision.
std::vector< ElementLink< xAOD::TrackParticleContainer > > trackParticleLinks(const xAOD::TauJet *tau, xAOD::TauJetParameters::TauTrackFlag flag=xAOD::TauJetParameters::TauTrackFlag::classifiedCharged)
Structure to hold a transient Directed Acyclic Graph (DAG) structure. NavGraph is populated from,...
Gaudi::Property< std::pair< double, double > > m_BdToMuMuKstar0_KstarMassRange
Gaudi::Property< std::pair< double, double > > m_BcToDstarMuMu_D0MassRange
const Combo::MultiplicityReqMap & triggerMultiplicityMap() const
StatusCode findBmumuxCandidates(TrigBmumuxState &) const
Find B decays by appling next three subprocedures to each found dimuon candidate.
const TrackParticle * trackParticle(size_t i) const
Get the pointer to a given track that was used in vertex reco.
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : GenVector form.
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Gaudi::Property< bool > m_dimuon_rejectSameChargeTracks
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
float z() const
Returns the z position.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainer > m_outputs
SG::ReadHandleKey< xAOD::MuonContainer > m_muonContainerKey
Class used to describe composite objects in the HLT.
float fitz() const
accessor method: z position of vertex
size_t index() const
Return the index of this element within its container.
Gaudi::Property< bool > m_BplusToMuMuKaon_useFastFit
Gaudi::Property< double > m_roiEtaWidth
static constexpr double mProton
void addTrackCombination(size_t i1)
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Gaudi::Property< bool > m_BdToMuMuKstar0_useFastFit
virtual void renounce()=0
Gaudi::Property< float > m_LambdaBToMuMuProtonKaon_chi2
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
const std::string & featureString()
virtual StatusCode initialize() override
Gaudi::Property< float > m_BcToDsMuMu_chi2
Gaudi::Property< Combo::LegMap > m_legToInputCollectionMap
Gaudi::Property< std::pair< double, double > > m_BcToDstarMuMu_massRange
Gaudi::Property< double > m_LambdaBToMuMuProtonKaon_minKstarMass
Gaudi::Property< bool > m_BcToMuMuPion_useFastFit
Gaudi::Property< bool > m_BsToMuMuPhi1020_rejectSameChargeTracks
StatusCode findBmumuxCandidates_selectTracks(TrigBmumuxState &, size_t dimuonIndex) const
Select tracks in vicinity of given dimuon vertex.
Gaudi::Property< bool > m_BcToDsMuMu
@ trkMass
Extended perigee: mass.
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.
xAOD::TrigComposite Decision
StatusCode mergeMuonsFromDecisions(TrigBmumuxState &) const
Go through state.previousDecisions(), fetch xAOD::Muons objects attached to decisions and save links ...
virtual StatusCode sysInitialize() override
Override sysInitialize.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
float phi() const
accessor method: phi
Gaudi::Property< float > m_BcToDstarMuMu_chi2
SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainer > m_inputs
const TrigCompositeUtils::DecisionContainer & previousDecisions() const
HLT::Identifier createLegName(const HLT::Identifier &chainIdentifier, size_t counter)
Generate the HLT::Identifier which corresponds to a specific leg of a given chain.
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_LambdaBToMuMuProtonKaon_minProtonPt
Gaudi::Property< std::pair< double, double > > m_BcToDsMuMu_DsMassRange
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
Gaudi::Property< bool > m_BcToDstarMuMu_makeDstar
Gaudi::Property< bool > m_BcToMuMuPion
const Amg::Vector3D & momentum() const
Access method for the momentum.
const ElementLink< TrackParticleContainer > & inDetTrackParticleLink() const
Returns an ElementLink to the InnerDetector TrackParticle used in identification of this muon.
const std::string & seedString()
Gaudi::Property< double > m_dimuon_chi2
ToolHandle< GenericMonitoringTool > m_monTool
bool isLegId(const HLT::Identifier &legIdentifier)
Recognise whether the chain ID is a leg ID.
Gaudi::Property< bool > m_BdToMuMuKstar0
int32_t getIndexFromLeg(const HLT::Identifier &legIdentifier)
Extract the numeric index of a leg identifier.
std::set< DecisionID > DecisionIDContainer
float chiSquared() const
Returns the of the vertex fit as float.
Class describing a Vertex.
Gaudi::Property< bool > m_BcToDplusMuMu_useFastFit
Gaudi::Property< std::pair< double, double > > m_LambdaBToMuMuProtonKaon_massRange
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
const TrigBphys_v1 * lowerChain() const
accessor method: lowerChain decay particle
#define ATH_MSG_WARNING(x)
Transient utility class to represent a node in a graph (m_decisionObject), and a vector of edges (m_f...
TrigCompositeUtils::DecisionContainer & decisions()
float y() const
Returns the y position.
std::map< const xAOD::TrackParticle *, double > selectedTrackZ0
static constexpr double mPion
Gaudi::Property< std::pair< double, double > > m_dimuon_massRange
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
std::string name() const
reports human redable name if it is enabled or, empty string
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Gaudi::Property< std::pair< double, double > > m_BcToDstarMuMu_DstarMassRange
Gaudi::Property< std::pair< double, double > > m_BcToMuMuPion_massRange
const SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainer > & decisionsInput() const
const std::string & roiString()
Gaudi::Property< float > m_BcToDplusMuMu_chi2
Gaudi::Property< std::pair< double, double > > m_BplusToMuMuKaon_massRange
Gaudi::Property< double > m_deltaR
TrigCompositeUtils::DecisionIDContainer m_allowedIDs
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
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...
HLT::Identifier getIDFromLeg(const HLT::Identifier &legIdentifier)
Generate the HLT::Identifier which corresponds to the chain name from the leg name.
static constexpr double mKaon
Class describing a TrackParticle.
float fity() const
accessor method: y position of vertex
Declare a monitored scalar variable.
std::vector< Trk::VxTrackAtVertex > & vxTrackAtVertex()
Non-const access to the VxTrackAtVertex vector.
static constexpr double mJpsi
Gaudi::Property< std::pair< double, double > > m_BcToDsMuMu_dimuonMassRange
StatusCode findDimuonCandidates(TrigBmumuxState &) const
Make all possible dimuon combinations from state.muons(), fit muon InDet tracks to the common vertex,...
std::vector< size_t > badTrackCombinations
bool getDetail(const std::string &name, TYPE &value) const
Get an TYPE detail from the object.
float eta() const
accessor method: eta
bool isBadCombination(size_t i1) const
static constexpr double mD0
Gaudi::Property< double > m_fastFit_2mu1trk_chi2
bool passDimuonTrigger(const std::vector< const TrigCompositeUtils::DecisionIDContainer * > &previousDecisionIDs) const
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.
bool vxTrackAtVertexAvailable() const
Check if VxTrackAtVertices are attached to the object.
Gaudi::Property< bool > m_BcToDplusMuMu
std::vector< ElementLink< xAOD::TrackParticleContainer > > tracks
size_type size() const noexcept
Returns the number of elements in the collection.
const std::string & viewString()
Gaudi::Property< std::pair< double, double > > m_BcToDplusMuMu_dimuonMassRange
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Gaudi::Property< double > m_trkZ0
Class describing a Bphysics online composite object.
std::map< size_t, size_t > trackCombinations
xAOD::TrigBphysContainer & trigBphysCollection()
ToolHandle< Trk::TrkVKalVrtFitter > m_vertexFitter
Gaudi::Property< std::pair< double, double > > m_BcToMuMuPion_dimuonMassRange
Gaudi::Property< bool > m_LambdaBToMuMuProtonKaon_useFastFit
bool typelessFindLink(const Decision *start, const std::string &linkName, sgkey_t &key, uint32_t &clid, Decision::index_type &index, const Decision *&source, const bool suppressMultipleLinksWarning)
Perform a recursive search for ElementLinks of any time and name 'linkName', starting from Decision o...
Gaudi::Property< bool > m_BcToDsMuMu_useFastFit
Gaudi::Property< double > m_BdToMuMuKstar0_minPionPt