Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <TrigMultiTrkComboHypo.h>
|
| TrigMultiTrkComboHypo (const std::string &name, ISvcLocator *pSvcLocator) |
|
| TrigMultiTrkComboHypo ()=delete |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | execute (const EventContext &context) const override |
|
template<typename T > |
StatusCode | mergeLeptonsFromDecisions (TrigMultiTrkState< T > &state) const |
|
template<typename T > |
StatusCode | findMultiLeptonCandidates (TrigMultiTrkState< T > &state) const |
|
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 | mergeTracksFromViews (TrigMultiTrkStateBase &) const |
| Go through state.previousDecisions() and fetch xAOD::TrackParticle objects associated with the nearest SG::View. More...
|
|
template<typename CONTAINER > |
StatusCode | mergeTracksFromDecisions (TrigMultiTrkStateBase &) const |
| Go through state.previousDecisions(), fetch xAOD::Muons/xAODElectron objects attached to decisions and save links to the their xAOD::TrackParticle objects in state.tracks(). More...
|
|
template<typename CONTAINER > |
StatusCode | mergeLeptonsFromDecisions (TrigMultiTrkState< CONTAINER > &) const |
| Go through state.previousDecisions(), fetch xAOD::Muons/xAODElectron objects attached to decisions and save links to them in state.leptons(). More...
|
|
template<typename CONTAINER > |
StatusCode | findMultiLeptonCandidates (TrigMultiTrkState< CONTAINER > &) const |
| Make all possible combinations from state.leptons(), fit tracks to the common vertex, create xAOD::TrigBphys objects and put them into state.trigBphysCollection() More...
|
|
StatusCode | filterTrackCombinations (TrigMultiTrkStateBase &) const |
| Make all possible combinations from state.tracks(), fit tracks to the common vertex and set state.isEventAccepted to true if at least one good combination is found; no xAOD::TrigBphys objects will be created. More...
|
|
StatusCode | processMergedElectrons (TrigMultiTrkState< xAOD::ElectronContainer > &) const |
| Make all possible combinations from electrons originating from the same BPH-0DR3-EM7J15 cluster, only one track should pass e5_lhvloose requirements; initialRoI word will be saved into xAOD::TrigBphys objects. More...
|
|
StatusCode | findMuTrkCandidates (TrigMultiTrkState< xAOD::MuonContainer > &) const |
| Build J/psi candidates from muon from SG::View and tracks from the same SG::View, to be used for Tag-and-Probe PEB chains (similar to HLT_mu6_bJpsimutrk_MuonTrkPEB_L1MU5VF) More...
|
|
StatusCode | copyDecisionObjects (TrigMultiTrkStateBase &) const |
| All appropriate decisions from state.previousDecisions() will be copied to state.decisions() if flag state.isEventAccepted() is set by filterTrackCombinations() method; to be used only in Streamer mode. More...
|
|
StatusCode | copyAdditionalDecisionObjects (TrigMultiTrkStateBase &) const |
| For chains from CombinedSlice (similar to 'HLT_e9_lhvloose_e5_lhvloose_bBeeM6000_mu4_L1BPH-0M9-EM7-EM5_MU6') we have decisionsInput().size() > 1, so that we should copy decisions created by EmptySteps from muon part. More...
|
|
StatusCode | createDecisionObjects (TrigMultiTrkStateBase &) const |
| Create a decision for each xAOD::TrigBphys object from state.trigBphysCollection() and save it to state.decisions(); use hypoTools() to assign correct decisionIDs, not compatible with Streamer mode. More...
|
|
std::unique_ptr< xAOD::Vertex > | fit (const std::vector< ElementLink< xAOD::TrackParticleContainer >> &trackParticleLinks, const std::vector< double > &particleMasses, Trk::IVKalState &fitterState) const |
| Perform a vertex fit on selected tracks. More...
|
|
xAOD::TrigBphys * | makeTrigBPhys (const xAOD::Vertex &vertex, const std::vector< double > &particleMasses, const xAOD::Vertex &beamSpot, const Trk::IVKalState &fitterState) 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 | isIdenticalTracks (const xAOD::Electron *lhs, const xAOD::Electron *rhs) const |
|
bool | isInMassRange (double mass, size_t idx) const |
|
bool | passedDeltaRcut (const std::vector< xAOD::TrackParticle::GenVecFourMom_t > &momenta) const |
|
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 {this, "TrackCollectionKey", "Tracks", "input TrackParticle container name"} |
|
SG::WriteHandleKey< xAOD::TrigBphysContainer > | m_trigBphysContainerKey {this, "TrigBphysCollectionKey", "TrigBphysContainer", "output TrigBphysContainer name"} |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"} |
|
Gaudi::Property< std::vector< unsigned int > > | m_nTrk |
|
Gaudi::Property< std::vector< int > > | m_nTrkCharge |
|
Gaudi::Property< std::vector< std::vector< double > > > | m_trkMass |
|
Gaudi::Property< std::vector< std::vector< double > > > | m_trkPt |
|
Gaudi::Property< std::vector< std::pair< double, double > > > | m_massRange |
|
Gaudi::Property< bool > | m_applyOverlapRemoval |
|
Gaudi::Property< bool > | m_combineInputDecisionCollections |
|
Gaudi::Property< bool > | m_useLeptonMomentum |
|
Gaudi::Property< bool > | m_checkMultiplicity |
|
Gaudi::Property< float > | m_deltaR |
|
Gaudi::Property< float > | m_deltaRMax |
|
Gaudi::Property< float > | m_deltaRMin |
|
Gaudi::Property< float > | m_chi2 |
|
Gaudi::Property< bool > | m_isStreamer |
|
Gaudi::Property< bool > | m_isMuTrkMode |
|
Gaudi::Property< bool > | m_doElectrons |
|
Gaudi::Property< std::string > | m_trigLevel |
|
Gaudi::Property< std::vector< std::string > > | m_mergedElectronChains |
|
Gaudi::Property< double > | m_caloClusterEtThreshold |
|
ToolHandle< InDet::VertexPointEstimator > | m_vertexPointEstimator {this, "VertexPointEstimator", "", "tool to find starting point for the vertex fitter"} |
|
ToolHandle< Trk::TrkVKalVrtFitter > | m_vertexFitter {this, "VertexFitter", "", "VKalVrtFitter tool to fit tracks into the common vertex"} |
|
ToolHandle< Trk::V0Tools > | m_v0Tools {this, "V0Tools", "", "tool to calculate Lxy/LxyError of dimuon candidate wrt beam spot"} |
|
ToolHandle< GenericMonitoringTool > | m_monTool {this, "MonTool", "", "monitoring tool"} |
|
TrigCompositeUtils::DecisionIDContainer | m_allowedIDs |
|
TrigCompositeUtils::DecisionIDContainer | m_resolvedElectronIDs |
|
TrigCompositeUtils::DecisionIDContainer | m_mergedElectronIDs |
|
double | m_trkPtMin = 0.0 |
|
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 |
|
Definition at line 138 of file TrigMultiTrkComboHypo.h.
◆ StoreGateSvc_t
◆ TrigMultiTrkComboHypo() [1/2]
TrigMultiTrkComboHypo::TrigMultiTrkComboHypo |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ TrigMultiTrkComboHypo() [2/2]
TrigMultiTrkComboHypo::TrigMultiTrkComboHypo |
( |
| ) |
|
|
delete |
◆ cardinality()
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 75 of file AthCommonReentrantAlgorithm.cxx.
◆ copyAdditionalDecisionObjects()
For chains from CombinedSlice (similar to 'HLT_e9_lhvloose_e5_lhvloose_bBeeM6000_mu4_L1BPH-0M9-EM7-EM5_MU6') we have decisionsInput().size() > 1, so that we should copy decisions created by EmptySteps from muon part.
Definition at line 897 of file TrigMultiTrkComboHypo.cxx.
904 CHECK( previousDecisionsHandle.isValid() );
905 ATH_MSG_DEBUG(
"Running with "<< previousDecisionsHandle->size() <<
" previous decisions" );
907 for (
const Decision* previousDecision : *previousDecisionsHandle) {
922 return StatusCode::SUCCESS;
◆ copyDecisionObjects()
◆ 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()
Create a decision for each xAOD::TrigBphys object from state.trigBphysCollection() and save it to state.decisions(); use hypoTools() to assign correct decisionIDs, not compatible with Streamer mode.
Definition at line 858 of file TrigMultiTrkComboHypo.cxx.
862 ATH_MSG_DEBUG(
"Found xAOD::TrigBphys: mass / chi2 = " << triggerObject->mass() <<
" / " << triggerObject->fitchi2() );
870 std::vector<const DecisionIDContainer*> previousDecisionIDs;
881 decision->setDetail<int32_t>(
"noCombo", 1);
893 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 TrigMultiTrkComboHypo::execute |
( |
const EventContext & |
context | ) |
const |
|
overridevirtual |
Reimplemented from ComboHypo.
Definition at line 209 of file TrigMultiTrkComboHypo.cxx.
215 CHECK( previousDecisionsHandle.isValid() );
216 ATH_MSG_DEBUG(
"Running with "<< previousDecisionsHandle->size() <<
" previous decisions" );
224 beamSpotData = *beamSpotHandle;
227 std::unique_ptr<TrigMultiTrkState<xAOD::MuonContainer>> muonState;
228 std::unique_ptr<TrigMultiTrkState<xAOD::ElectronContainer>> electronState;
231 electronState = std::make_unique<TrigMultiTrkState<xAOD::ElectronContainer>>(context, *previousDecisionsHandle, *outputDecisionsHandle,
nullptr, beamSpotData);
232 commonState = electronState.get();
235 muonState = std::make_unique<TrigMultiTrkState<xAOD::MuonContainer>>(context, *previousDecisionsHandle, *outputDecisionsHandle,
nullptr, beamSpotData);
236 commonState = muonState.get();
244 ATH_CHECK( mergeTracksFromDecisions<xAOD::L2CombinedMuonContainer>(*commonState) );
247 ATH_CHECK( (
m_doElectrons ? mergeTracksFromDecisions<xAOD::ElectronContainer>(*commonState) : mergeTracksFromDecisions<xAOD::MuonContainer>(*commonState)) );
254 ATH_CHECK( trigBphysHandle.record(std::make_unique<xAOD::TrigBphysContainer>(),
255 std::make_unique<xAOD::TrigBphysAuxContainer>()) );
256 commonState->setTrigBphysCollection(trigBphysHandle.ptr());
273 ATH_MSG_DEBUG(
"TrigMultiTrkHypo::execute() terminates with StatusCode::SUCCESS" );
274 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()
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.
◆ 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()
◆ filterTrackCombinations()
Make all possible combinations from state.tracks(), fit tracks to the common vertex and set state.isEventAccepted to true if at least one good combination is found; no xAOD::TrigBphys objects will be created.
Definition at line 491 of file TrigMultiTrkComboHypo.cxx.
493 const auto& tracks = state.
tracks();
503 mon_nAcceptedTrk, mon_nVertexFitterCalls, mon_isEventAccepted,
506 for (
size_t iTrk = 0; iTrk <
m_nTrk.size(); ++iTrk) {
508 size_t nTrk =
m_nTrk[iTrk];
510 if (tracks.size() < nTrk) {
511 ATH_MSG_DEBUG(
"Could not build a subset of " << nTrk <<
" tracks from collection which contains only " << tracks.size() <<
" objects" );
514 ATH_MSG_DEBUG(
"Consider combinations of " << nTrk <<
" tracks from collection which contains " << tracks.size() <<
" objects until find a good one" );
516 std::vector<ElementLink<xAOD::TrackParticleContainer>> tracklist(nTrk);
517 std::vector<xAOD::TrackParticle::GenVecFourMom_t>
p(nTrk);
521 std::vector<char>
idx(tracks.size(), 0);
525 bool isValidCombination =
true;
528 for (
size_t i = 0;
i <
idx.size(); ++
i) {
529 if (!
idx[
i])
continue;
530 const auto& trackEL = tracks[
i];
531 tracklist[j] = trackEL;
532 const auto track = *trackEL;
535 totalCharge +=
static_cast<int>(
track->charge());
537 isValidCombination =
false;
545 ATH_MSG_DEBUG(
"Dump found tracks before vertex fit: pT / eta / phi / charge" );
546 for (
size_t i = 0;
i < tracklist.size(); ++
i) {
547 const auto track = *tracklist[
i];
559 ++mon_nVertexFitterCalls;
562 ATH_MSG_DEBUG(
"Filter found a subset of tracks which passed the rough selection: stop looking for other combinations" );
566 }
while (prev_perm(
idx));
570 ATH_MSG_DEBUG(
"Filter could not find a good subset of tracks" );
575 return StatusCode::SUCCESS;
◆ findMultiLeptonCandidates() [1/2]
template<typename CONTAINER >
StatusCode TrigMultiTrkComboHypo::findMultiLeptonCandidates |
( |
TrigMultiTrkState< CONTAINER > & |
| ) |
const |
|
private |
Make all possible combinations from state.leptons(), fit tracks to the common vertex, create xAOD::TrigBphys objects and put them into state.trigBphysCollection()
combination is a selection of items from a collection, such that the order of items does not matter leptons/tracks have already been sorted over pT, the algorithm will keep this order in created subsets of tracks, i.e. for nTrk = 2 combinations are [0, 1], [0, 2], ..., [1, 2], [1, 3], ... for nTrk = 3 combinations are [0, 1, 2], [0, 1, 3], ..., [0, 2, 3], [0, 2, 4], ..., [1, 2, 3], [1, 2, 4], ...
◆ findMultiLeptonCandidates() [2/2]
template<typename T >
StatusCode TrigMultiTrkComboHypo::findMultiLeptonCandidates |
( |
TrigMultiTrkState< T > & |
state | ) |
const |
Definition at line 580 of file TrigMultiTrkComboHypo.cxx.
583 const auto& leptons = state.
leptons();
591 std::vector<float> trkMassBeforeFit;
592 std::vector<float> bphysMass;
593 std::vector<float> d0track1, d0track2;
594 std::vector<float> pttrack1, pttrack2;
595 std::vector<float> etatrack1, etatrack2;
596 std::vector<int> bphysCharge;
613 mon_nAcceptedTrk, mon_nCombination, mon_nCombinationBeforeFit, mon_nBPhysObject,
614 mon_trkMassBeforeFit, mon_bphysChi2, mon_bphysLxy, mon_bphysFitMass, mon_bphysMass, mon_bphysCharge, mon_d0track1, mon_d0track2,
615 mon_timer, mon_pttrack1, mon_pttrack2, mon_etatrack1, mon_etatrack2);
617 for (
size_t iTrk = 0; iTrk <
m_nTrk.size(); ++iTrk) {
618 size_t nTrk =
m_nTrk[iTrk];
620 if (leptons.size() < nTrk) {
621 ATH_MSG_DEBUG(
"Could not build a subset of " << nTrk <<
" legs from collection which contains only " << leptons.size() <<
" objects" );
624 ATH_MSG_DEBUG(
"Consider all combinations of " << nTrk <<
" legs from collection which contains " << leptons.size() <<
" objects" );
626 std::vector<size_t> leptonIndices(nTrk);
627 std::vector<ElementLink<xAOD::TrackParticleContainer>> tracklist(nTrk);
628 std::vector<xAOD::TrackParticle::GenVecFourMom_t>
p(nTrk);
630 std::vector<char> combination(leptons.size(), 0);
631 std::fill(combination.begin(), combination.begin() + nTrk, 1);
634 bool isValidCombination =
true;
637 for (
size_t i = 0;
i < combination.size(); ++
i) {
638 if (!combination[
i])
continue;
639 leptonIndices[j] =
i;
640 auto leg = *leptons[
i].link;
641 charge +=
static_cast<int>(lround(
leg->charge()));
644 trackEL =
leg->inDetTrackParticleLink();
647 trackEL =
leg->trackParticleLink();
649 tracklist[j] = trackEL;
651 p[j] =
leg->genvecP4();
655 p[j] = (*trackEL)->genvecP4();
659 isValidCombination =
false;
667 ATH_MSG_DEBUG(
"Dump found leptons before vertex fit: pT / eta / phi / charge" );
668 for (
size_t i = 0;
i < tracklist.size(); ++
i) {
669 const auto track = *tracklist[
i];
678 trkMassBeforeFit.push_back(
mass * 0.001);
681 mon_nCombinationBeforeFit++;
690 bphysMass.push_back(
mass * 0.001);
691 bphysCharge.push_back(
charge);
692 d0track1.push_back((*tracklist[0])->
d0());
693 d0track2.push_back((*tracklist[1])->
d0());
694 pttrack1.push_back((*tracklist[0])->
pt() * 0.001);
695 pttrack2.push_back((*tracklist[1])->
pt() * 0.001);
696 etatrack1.push_back((*tracklist[0])->
eta());
697 etatrack2.push_back((*tracklist[1])->
eta());
699 }
while (prev_perm(combination));
701 return StatusCode::SUCCESS;
◆ findMuTrkCandidates()
Build J/psi candidates from muon from SG::View and tracks from the same SG::View, to be used for Tag-and-Probe PEB chains (similar to HLT_mu6_bJpsimutrk_MuonTrkPEB_L1MU5VF)
Definition at line 765 of file TrigMultiTrkComboHypo.cxx.
767 ATH_MSG_DEBUG(
"Try to find muon + track combinations from the same SG::View" );
772 const std::vector<double> particleMasses(2,
PDG::mMuon);
780 const auto muon = *muonEL;
781 if (!
muon->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle))
continue;
782 if (!
muon->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle))
continue;
783 const auto muonInDetTrack =
muon->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle);
784 auto muonMomentum = muonInDetTrack->genvecP4();
790 muons.push_back({muonEL, std::vector<ElementLink<DecisionContainer>>(1, decisionEL),
decisionIDs});
792 ATH_MSG_DEBUG(
"Found muon (CombinedTrackParticle): " <<
muon->pt() <<
" / " <<
muon->eta() <<
" / " <<
muon->phi() <<
" / " <<
muon->charge() );
796 auto view = *viewLinkInfo.link;
803 std::vector<ElementLink<xAOD::TrackParticleContainer>> tracklist(2);
804 tracklist[0] =
muon->inDetTrackParticleLink();
805 for (
size_t idx = 0;
idx < tracksHandle->size(); ++
idx) {
812 if (
m_nTrkCharge[0] >= 0 && muonInDetTrack->charge() *
track->charge() > 0.)
continue;
814 tracklist[1] = ViewHelper::makeLink<xAOD::TrackParticleContainer>(
view, tracksHandle,
idx);
816 ATH_MSG_DEBUG(
"Dump found muon+track pair before vertex fit: pT / eta / phi / charge" <<
endmsg <<
817 " muon: " << muonMomentum.Pt() <<
" / " << muonMomentum.Eta() <<
" / " << muonMomentum.Phi() <<
" / " <<
muon->charge() <<
endmsg <<
821 auto vertex =
fit(tracklist, particleMasses, *fitterState);
829 return StatusCode::SUCCESS;
◆ fit()
Perform a vertex fit on selected tracks.
- Parameters
-
trackParticleLinks | the trackParticles to fit |
trkMass | Track mass hypothesis for mass calculations |
fitterState | The temporary state object |
- Returns
- The fitted vertex - null if fit fails or is very low quality
Definition at line 926 of file TrigMultiTrkComboHypo.cxx.
932 std::vector<const xAOD::TrackParticle*> tracklist(
trackParticleLinks.size(),
nullptr);
936 const Trk::Perigee& perigee1 = tracklist[0]->perigeeParameters();
937 const Trk::Perigee& perigee2 = tracklist[1]->perigeeParameters();
942 ATH_MSG_DEBUG(
"Starting point: (" << startingPoint(0) <<
", " << startingPoint(1) <<
", " << startingPoint(2) <<
")" );
944 m_vertexFitter->setMassInputParticles(particleMasses, fitterState);
945 std::unique_ptr<xAOD::Vertex>
vertex(
m_vertexFitter->fit(tracklist, startingPoint, fitterState));
951 ATH_MSG_DEBUG(
"Fit is successful, but vertex chi2 is too high, we are not going to save it (chi2 = " <<
vertex->chiSquared() <<
" > " <<
m_chi2.value() <<
")" );
◆ hypoTools() [1/2]
◆ hypoTools() [2/2]
◆ initialize()
StatusCode TrigMultiTrkComboHypo::initialize |
( |
| ) |
|
|
overridevirtual |
Reimplemented from ComboHypo.
Definition at line 70 of file TrigMultiTrkComboHypo.cxx.
79 ATH_MSG_INFO(
"totalCharge value is not specified, no charge selection for track combinations will be used" );
84 ATH_MSG_INFO(
"trackMasses value is not specified, muon/electron mass will be used" );
90 ATH_MSG_INFO(
"trackPtThresholds value is not specified" );
92 m_trkPt.value().emplace_back(std::vector<double>(
n, -100.));
103 for (
size_t i = 0;
i <
m_nTrk.size(); ++
i) {
115 for (
size_t i = 0;
i <
m_nTrk.size(); ++
i) {
117 for (
size_t j = 0; j <
m_nTrk[
i]; ++j) {
129 ATH_MSG_DEBUG(
"Configured to run in a streamer mode: no trigger objects will be created" );
132 ATH_MSG_ERROR(
"Could not create trigger objects from tracks or L2 CB muons, use the streamer mode for L2 step" );
133 return StatusCode::FAILURE;
147 return StatusCode::FAILURE;
161 if (
item.second.size() > 1) {
162 for (
size_t i = 0;
i <
item.second.size();
i++) {
176 bool isMergedElectronChain =
false;
179 isMergedElectronChain =
true;
202 ATH_MSG_DEBUG(
"No GenericMonitoringTool configured: no monitoring histograms will be available" );
205 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()
◆ isIdenticalTracks() [1/3]
◆ isIdenticalTracks() [2/3]
◆ isIdenticalTracks() [3/3]
Attempts to identify identical tracks by selection on DeltaR.
- Returns
- true if 'identical', false otherwise
Definition at line 1014 of file TrigMultiTrkComboHypo.cxx.
◆ isInMassRange()
bool TrigMultiTrkComboHypo::isInMassRange |
( |
double |
mass, |
|
|
size_t |
idx |
|
) |
| const |
|
private |
◆ legToInputCollectionMap()
◆ makeTrigBPhys()
Construct the trigger object that may be stored for debugging or matching.
- Parameters
-
vertex | Fitted Vertex object |
particleMasses | Track mass hypothesis for mass calculations |
beamSpot | The beamspot vertex |
fitterState | Vertexer state object |
- Returns
- Pointer to the TrigBphys object
Definition at line 962 of file TrigMultiTrkComboHypo.cxx.
968 double invariantMass = 0.;
969 double invariantMassError = 0.;
970 if (!
m_vertexFitter->VKalGetMassError(invariantMass, invariantMassError, fitterState).isSuccess()) {
971 ATH_MSG_DEBUG(
"Warning from TrkVKalVrtFitter: can not calculate uncertainties" );
972 invariantMass = -9999.;
976 for (
size_t i = 0;
i <
vertex.nTrackParticles(); ++
i) {
977 auto p =
vertex.trackParticle(
i)->genvecP4();
978 p.SetM(particleMasses[
i]);
983 result->makePrivateStore();
987 result->setFitmass(invariantMass);
993 result->setTrackParticleLinks(
vertex.trackParticleLinks());
998 "TrigBphys objects:\n\t " <<
999 "roiId: " <<
result->roiId() <<
"\n\t " <<
1000 "particleType: " <<
result->particleType() <<
"\n\t " <<
1001 "level: " <<
result->level() <<
"\n\t " <<
1002 "eta: " <<
result->eta() <<
"\n\t " <<
1003 "phi: " <<
result->phi() <<
"\n\t " <<
1004 "mass: " <<
result->mass() <<
"\n\t " <<
1005 "fitmass: " <<
result->fitmass() <<
"\n\t " <<
1006 "chi2/NDF: " <<
result->fitchi2() <<
" / " <<
result->fitndof() <<
"\n\t " <<
1007 "vertex: (" <<
result->fitx() <<
", " <<
result->fity() <<
", " <<
result->fitz() <<
")\n\t " <<
1008 "Lxy/LxyError: " <<
result->lxy() <<
" / " <<
result->lxyError() );
◆ mergeLeptonsFromDecisions() [1/2]
template<typename CONTAINER >
StatusCode TrigMultiTrkComboHypo::mergeLeptonsFromDecisions |
( |
TrigMultiTrkState< CONTAINER > & |
| ) |
const |
|
private |
Go through state.previousDecisions(), fetch xAOD::Muons/xAODElectron objects attached to decisions and save links to them in state.leptons().
◆ mergeLeptonsFromDecisions() [2/2]
template<typename T >
StatusCode TrigMultiTrkComboHypo::mergeLeptonsFromDecisions |
( |
TrigMultiTrkState< T > & |
state | ) |
const |
Definition at line 279 of file TrigMultiTrkComboHypo.cxx.
281 auto& leptons = state.
leptons();
285 std::map<const Decision*, int> decisionToInputCollectionIndexMap;
286 for (
const auto& decision : previousDecisions) decisionToInputCollectionIndexMap.emplace(decision, 0);
290 CHECK( previousDecisionsHandle.isValid() );
292 for (
const Decision* decision : *previousDecisionsHandle) {
293 previousDecisions.push_back(decision);
294 decisionToInputCollectionIndexMap.emplace(decision,
static_cast<int>(
k));
300 for (
const Decision* decision : previousDecisions) {
310 leptonEL = leptonLinkInfo.link;
313 const auto lepton = *leptonEL;
315 if (!lepton->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle))
continue;
316 if (!lepton->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle))
continue;
319 if (!lepton->trackParticle())
continue;
322 ATH_MSG_ERROR(
"mergeLeptonsFromDecisions(): no scenario for the provided CONTAINER is specified" );
323 return StatusCode::FAILURE;
327 auto itr = leptons.end();
329 itr = std::find_if(leptons.begin(), leptons.end(),
330 [
this, lepton = lepton](
const auto&
x){ return this->isIdenticalTracks(lepton, *x.link); });
332 if (itr == leptons.end()) {
333 leptons.push_back({leptonEL, std::vector<ElementLink<DecisionContainer>>(1, decisionEL),
DecisionIDContainer()});
336 (*itr).decisionLinks.push_back(decisionEL);
342 std::sort(leptons.begin(), leptons.end(), [](
const auto& lhs,
const auto& rhs){ return ((*lhs.link)->pt() > (*rhs.link)->pt()); });
346 for (
auto&
item : leptons) {
349 auto decisionIndex = decisionToInputCollectionIndexMap[*decisionEL];
354 if (legToInputCollectionIndexMap.at(
chain).at(legIndex) == decisionIndex)
item.decisionIDs.insert(
id);
364 ATH_MSG_DEBUG(
"Dump found leptons before vertex fit: " << leptons.size() <<
" candidates" );
365 for (
const auto&
item : leptons) {
366 const auto lepton = *
item.link;
369 track = lepton->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle);
372 track = lepton->trackParticle();
375 ATH_MSG_DEBUG(
" lepton pt (muon: CombinedTrackParticle): " << lepton->pt() <<
" / " << lepton->eta() <<
" / " << lepton->phi() <<
" / " << lepton->charge() );
383 return StatusCode::SUCCESS;
◆ mergeTracksFromDecisions()
template<typename CONTAINER >
Go through state.previousDecisions(), fetch xAOD::Muons/xAODElectron objects attached to decisions and save links to the their xAOD::TrackParticle objects in state.tracks().
Definition at line 438 of file TrigMultiTrkComboHypo.cxx.
440 auto& tracks = state.
tracks();
449 const auto lepton = *leptonEL;
453 if (!lepton->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle))
continue;
454 if (!lepton->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle))
continue;
455 trackEL = lepton->inDetTrackParticleLink();
458 if (!lepton->idTrack())
continue;
459 trackEL = lepton->idTrackLink();
462 if (!lepton->trackParticle())
continue;
463 trackEL = lepton->trackParticleLink();
466 ATH_MSG_ERROR(
"mergeTracksFromDecisions(): no scenario for the provided CONTAINER is specified" );
467 return StatusCode::FAILURE;
470 if (!trackEL.
isValid())
continue;
472 std::find_if(tracks.begin(), tracks.end(),
473 [
this,
track = *trackEL](
const auto&
x){ return this->isIdenticalTracks(track, *x); }) == tracks.end()) {
474 tracks.emplace_back(trackEL);
477 std::sort(tracks.begin(), tracks.end(), [](
const auto& lhs,
const auto& rhs){ return ((*lhs)->pt() > (*rhs)->pt()); });
480 ATH_MSG_DEBUG(
"Dump found tracks before vertex fit: " << tracks.size() <<
" candidates" );
481 for (
const auto& trackEL : tracks) {
487 return StatusCode::SUCCESS;
◆ mergeTracksFromViews()
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 387 of file TrigMultiTrkComboHypo.cxx.
389 auto& tracks = state.
tracks();
392 std::set<const SG::View*> views;
399 if (views.find(
view) != views.end())
continue;
405 std::vector<ElementLink<xAOD::TrackParticleContainer>> tracksFromView;
406 tracksFromView.reserve(tracksHandle->size());
407 for (
size_t idx = 0;
idx < tracksHandle->size(); ++
idx) {
408 tracksFromView.emplace_back(ViewHelper::makeLink<xAOD::TrackParticleContainer>(
view, tracksHandle,
idx));
411 for (
const auto& trackEL : tracksFromView) {
416 std::find_if(tracks.begin(), tracks.end(),
417 [
this,
track](
const auto&
x){ return isIdenticalTracks(track, *x); }) == tracks.end()) {
418 tracks.emplace_back(trackEL);
423 std::sort(tracks.begin(), tracks.end(), [](
const auto& lhs,
const auto& rhs){ return ((*lhs)->pt() > (*rhs)->pt()); });
426 ATH_MSG_DEBUG(
"Dump found tracks before vertex fit: " << tracks.size() <<
" candidates" );
427 for (
const auto& trackEL : tracks) {
433 return StatusCode::SUCCESS;
◆ 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.
◆ passedDeltaRcut()
◆ processMergedElectrons()
Make all possible combinations from electrons originating from the same BPH-0DR3-EM7J15 cluster, only one track should pass e5_lhvloose requirements; initialRoI word will be saved into xAOD::TrigBphys objects.
Definition at line 705 of file TrigMultiTrkComboHypo.cxx.
707 ATH_MSG_DEBUG(
"Try to find electrons originating from the same EM cluster" );
710 auto& leptons = state.
leptons();
713 ATH_MSG_DEBUG(
"no chains similar to BPH-0DR3-EM7J15 have been requested, should not look for close-by electrons" );
714 return StatusCode::SUCCESS;
726 if (!
electron->trackParticle())
continue;
735 leptons.push_back({electronEL, std::vector<ElementLink<DecisionContainer>>(1, decisionEL),
decisionIDs});
740 auto initialRoI = *roiInfo.link;
743 std::vector<ElementLink<xAOD::TrackParticleContainer>> tracklist(2);
744 tracklist[0] =
electron->trackParticleLink();
747 if (electronFromView ==
electron)
continue;
748 if (!electronFromView->trackParticle())
continue;
750 tracklist[1] = electronFromView->trackParticleLink();
753 auto vertex =
fit(tracklist, particleMasses, *fitterState);
756 trigBphys->
setRoiId(initialRoI->roiWord());
761 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
◆ sysExecute()
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 85 of file AthCommonReentrantAlgorithm.cxx.
◆ sysInitialize()
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 61 of file AthCommonReentrantAlgorithm.cxx.
110 if (
sc.isFailure()) {
118 if ( cs.retrieve().isFailure() ) {
120 return StatusCode::SUCCESS;
122 if (cs->regHandle(
this,*
h).isFailure()) {
123 sc = StatusCode::FAILURE;
124 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_applyOverlapRemoval
Gaudi::Property<bool> TrigMultiTrkComboHypo::m_applyOverlapRemoval |
|
private |
Initial value:{this, "applyOverlapRemoval", true,
"apply overlap removal for the close-by same-sign objects from different views"}
Definition at line 274 of file TrigMultiTrkComboHypo.h.
◆ m_beamSpotKey
◆ m_caloClusterEtThreshold
Gaudi::Property<double> TrigMultiTrkComboHypo::m_caloClusterEtThreshold |
|
private |
Initial value:{this, "caloClusterEtThreshold", 5.,
"minimum transverse energy of the cluster, associated with close-by electron"}
Definition at line 300 of file TrigMultiTrkComboHypo.h.
◆ m_checkMultiplicity
Gaudi::Property<bool> TrigMultiTrkComboHypo::m_checkMultiplicity |
|
private |
Initial value:{this, "checkMultiplicity", false,
"check that we have enough leptons to fire the chain, needed for HLT_mu6_2mu4_bJpsi_L1MU5VF_3MU3VF"}
Definition at line 280 of file TrigMultiTrkComboHypo.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_chi2
Gaudi::Property<float> TrigMultiTrkComboHypo::m_chi2 |
|
private |
◆ m_combineInputDecisionCollections
Gaudi::Property<bool> TrigMultiTrkComboHypo::m_combineInputDecisionCollections |
|
private |
Initial value:{this, "combineInputDecisionCollections", false,
"combine objects attached to decisions from different input collections, needed for HLT_mu4_ivarloose_mu4_b10invmAB120vtx20_L12MU3V chains"}
Definition at line 276 of file TrigMultiTrkComboHypo.h.
◆ m_deltaR
Gaudi::Property<float> TrigMultiTrkComboHypo::m_deltaR |
|
private |
Initial value:{this, "deltaR", 0.01,
"minimum deltaR between same-sign tracks (overlap removal)"}
Definition at line 282 of file TrigMultiTrkComboHypo.h.
◆ m_deltaRMax
Gaudi::Property<float> TrigMultiTrkComboHypo::m_deltaRMax |
|
private |
◆ m_deltaRMin
Gaudi::Property<float> TrigMultiTrkComboHypo::m_deltaRMin |
|
private |
Initial value:{this, "deltaRMin", std::numeric_limits<float>::lowest(),
"maximum deltaR between tracks in a candidate"}
Definition at line 286 of file TrigMultiTrkComboHypo.h.
◆ m_detStore
◆ m_doElectrons
Gaudi::Property<bool> TrigMultiTrkComboHypo::m_doElectrons |
|
private |
Initial value:{this, "doElectrons", false,
"use electrons if true, otherwise use muons"}
Definition at line 294 of file TrigMultiTrkComboHypo.h.
◆ m_evtStore
◆ m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 114 of file AthCommonReentrantAlgorithm.h.
◆ m_hypoTools
◆ m_inputs
◆ m_isMuTrkMode
Gaudi::Property<bool> TrigMultiTrkComboHypo::m_isMuTrkMode |
|
private |
Initial value:{this, "isMuTrkMode", false,
"make pairs between muon from SG::View and tracks from the same SG::View"}
Definition at line 292 of file TrigMultiTrkComboHypo.h.
◆ m_isStreamer
Gaudi::Property<bool> TrigMultiTrkComboHypo::m_isStreamer |
|
private |
Initial value:{this, "isStreamer", false,
"if true we do not create trigger objects, just copy all appropriate decisions to the next step or break the chain"}
Definition at line 290 of file TrigMultiTrkComboHypo.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_massRange
Gaudi::Property<std::vector<std::pair<double, double> > > TrigMultiTrkComboHypo::m_massRange |
|
private |
Initial value:{this, "massRange", { {0., 100000.} },
"range of the invariant mass of the track combinations"}
Definition at line 272 of file TrigMultiTrkComboHypo.h.
◆ m_mergedElectronChains
Gaudi::Property<std::vector<std::string> > TrigMultiTrkComboHypo::m_mergedElectronChains |
|
private |
Initial value:{this, "mergedElectronChains", {"BPH-0DR3-EM7J15"},
"patterns for BPH-0DR3-EM7J15 like chains"}
Definition at line 298 of file TrigMultiTrkComboHypo.h.
◆ m_mergedElectronIDs
◆ m_monTool
ToolHandle<GenericMonitoringTool> TrigMultiTrkComboHypo::m_monTool {this, "MonTool", "", "monitoring tool"} |
|
private |
◆ 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_nTrk
Gaudi::Property<std::vector<unsigned int> > TrigMultiTrkComboHypo::m_nTrk |
|
private |
Initial value:{this, "nTracks", {2},
"number of tracks to be fitted into the common vertex"}
Definition at line 264 of file TrigMultiTrkComboHypo.h.
◆ m_nTrkCharge
Gaudi::Property<std::vector<int> > TrigMultiTrkComboHypo::m_nTrkCharge |
|
private |
Initial value:{this, "totalCharge", {},
"magnitude of the total charge to accept, negative is none"}
Definition at line 266 of file TrigMultiTrkComboHypo.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_resolvedElectronIDs
◆ m_trackParticleContainerKey
◆ m_trigBphysContainerKey
◆ m_trigLevel
Gaudi::Property<std::string> TrigMultiTrkComboHypo::m_trigLevel |
|
private |
Initial value:{this, "trigLevel", "EF",
"trigger Level to set for created TrigBphys objects: L2, L2IO, L2MT or EF"}
Definition at line 296 of file TrigMultiTrkComboHypo.h.
◆ m_trkMass
Gaudi::Property<std::vector<std::vector<double> > > TrigMultiTrkComboHypo::m_trkMass |
|
private |
Initial value:{this, "trackMasses", {},
"track masses for vertex reco (one per track); muon mass is used by default"}
Definition at line 268 of file TrigMultiTrkComboHypo.h.
◆ m_trkPt
Gaudi::Property<std::vector<std::vector<double> > > TrigMultiTrkComboHypo::m_trkPt |
|
private |
Initial value:{this, "trackPtThresholds", { {3650., 3650.} },
"minimum track transverse momenta (one per track, sorted descending)"}
Definition at line 270 of file TrigMultiTrkComboHypo.h.
◆ m_trkPtMin
double TrigMultiTrkComboHypo::m_trkPtMin = 0.0 |
|
private |
◆ m_useLeptonMomentum
Gaudi::Property<bool> TrigMultiTrkComboHypo::m_useLeptonMomentum |
|
private |
Initial value:{this, "useLeptonMomentum", false,
"use 4-momentum of the xAOD::Muon to make fast calculation of the xAOD::TrigBphys mass, needed for consistency with TrigComboHypoTool::compute()"}
Definition at line 278 of file TrigMultiTrkComboHypo.h.
◆ m_v0Tools
ToolHandle<Trk::V0Tools> TrigMultiTrkComboHypo::m_v0Tools {this, "V0Tools", "", "tool to calculate Lxy/LxyError of dimuon candidate wrt beam spot"} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vertexFitter
ToolHandle<Trk::TrkVKalVrtFitter> TrigMultiTrkComboHypo::m_vertexFitter {this, "VertexFitter", "", "VKalVrtFitter tool to fit tracks into the common vertex"} |
|
private |
◆ m_vertexPointEstimator
ToolHandle<InDet::VertexPointEstimator> TrigMultiTrkComboHypo::m_vertexPointEstimator {this, "VertexPointEstimator", "", "tool to find starting point for the vertex fitter"} |
|
private |
◆ m_vhka
The documentation for this class was generated from the following files:
const std::string trackMomentum
Gaudi::Property< Combo::MultiplicityReqMap > m_multiplicitiesReqMap
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzM4D< double > > GenVecFourMom_t
Base 4 Momentum type for TrackParticle.
TrigCompositeUtils::DecisionIDContainer m_mergedElectronIDs
StatusCode createDecisionObjects(TrigMultiTrkStateBase &) const
Create a decision for each xAOD::TrigBphys object from state.trigBphysCollection() and save it to sta...
xAOD::ElectronContainer * electronContainer
Group
Properties of a chain group.
const xAOD::Vertex & beamSpot() const
const SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainer > & decisionsOutput() const
StatusCode filterTrackCombinations(TrigMultiTrkStateBase &) const
Make all possible combinations from state.tracks(), fit tracks to the common vertex and set state....
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.
Gaudi::Property< float > m_deltaR
std::string find(const std::string &s)
return a remapped string
TrigCompositeUtils::DecisionID numeric() const
numeric ID
Gaudi::Property< bool > m_combineInputDecisionCollections
StatusCode mergeLeptonsFromDecisions(TrigMultiTrkState< CONTAINER > &) const
Go through state.previousDecisions(), fetch xAOD::Muons/xAODElectron objects attached to decisions an...
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.
Scalar eta() const
pseudorapidity method
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
const std::vector< NavGraphNode * > & finalNodes() const
Get all final nodes.
StatusCode copyDecisionObjects(TrigMultiTrkStateBase &) const
All appropriate decisions from state.previousDecisions() will be copied to state.decisions() if flag ...
Gaudi::Property< float > m_deltaRMin
Gaudi::Property< bool > m_isStreamer
Gaudi::Property< bool > m_doElectrons
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)
Gaudi::Property< std::vector< std::vector< double > > > m_trkMass
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.
Gaudi::Property< std::string > m_trigLevel
DecisionIDContainer passedDecisionIDs(const Decision *d, const T &required)
return DecisionIDs in Decision object that match the required ones
bool msgLvl(const MSG::Level lvl) const
bool hasDetail(const std::string &name) const
Check if a given type of detail is available.
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.
std::unique_ptr< xAOD::Vertex > fit(const std::vector< ElementLink< xAOD::TrackParticleContainer >> &trackParticleLinks, const std::vector< double > &particleMasses, Trk::IVKalState &fitterState) const
Perform a vertex fit on selected tracks.
std::vector< LEPTON > & leptons()
Gaudi::Property< bool > m_checkMultiplicity
Gaudi::Property< bool > m_applyOverlapRemoval
Gaudi::Property< std::vector< int > > m_nTrkCharge
#define ATH_MSG_VERBOSE(x)
std::vector< ElementLink< xAOD::TrackParticleContainer > > & tracks()
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
StatusCode processMergedElectrons(TrigMultiTrkState< xAOD::ElectronContainer > &) const
Make all possible combinations from electrons originating from the same BPH-0DR3-EM7J15 cluster,...
bool isValid() const
Test to see if the link can be dereferenced.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
ToolHandle< InDet::VertexPointEstimator > m_vertexPointEstimator
Gaudi::Property< std::vector< std::string > > m_mergedElectronChains
virtual void setOwner(IDataHandleHolder *o)=0
StatusCode mergeTracksFromViews(TrigMultiTrkStateBase &) const
Go through state.previousDecisions() and fetch xAOD::TrackParticle objects associated with the neares...
const ElementLink< TrackParticleContainer > & trackParticleLink(size_t index=0) const
ElementLink to the xAOD::TrackParticle/s that match the electron candidate.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
void setRoiId(uint32_t id)
set method: roiId
ComboHypo(const std::string &name, ISvcLocator *pSvcLocator)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
Gaudi::Property< double > m_caloClusterEtThreshold
ToolHandleArray< ComboHypoToolBase > & hypoTools()
const std::string & initialRoIString()
ToolHandle< GenericMonitoringTool > m_monTool
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.
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
Default, invalid implementation of ClassID_traits.
Gaudi::Property< bool > m_useLeptonMomentum
void setMass(float)
Set the mass of the object.
Gaudi::Property< bool > m_isMuTrkMode
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
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,...
std::vector< std::vector< size_t > > & trigBphysLegIndices()
bool isInMassRange(double mass, size_t idx) const
#define CHECK(...)
Evaluate an expression and check for errors.
float fitchi2() const
accessor method: chi2 from vertex fit
TrigCompositeUtils::DecisionIDContainer m_allowedIDs
const Combo::MultiplicityReqMap & triggerMultiplicityMap() const
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : GenVector form.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
xAOD::TrigBphys * makeTrigBPhys(const xAOD::Vertex &vertex, const std::vector< double > &particleMasses, const xAOD::Vertex &beamSpot, const Trk::IVKalState &fitterState) const
Construct the trigger object that may be stored for debugging or matching.
SG::WriteHandleKeyArray< TrigCompositeUtils::DecisionContainer > m_outputs
virtual TrigCompositeUtils::DecisionIDContainer & getDecisionIDs(size_t)=0
Class used to describe composite objects in the HLT.
size_t index() const
Return the index of this element within its container.
StatusCode copyAdditionalDecisionObjects(TrigMultiTrkStateBase &) const
For chains from CombinedSlice (similar to 'HLT_e9_lhvloose_e5_lhvloose_bBeeM6000_mu4_L1BPH-0M9-EM7-EM...
static constexpr double mElectron
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
void fill(H5::Group &out_file, size_t iterations)
ElementLink implementation for ROOT usage.
const std::string & featureString()
virtual StatusCode initialize() override
virtual void addTrigBphysObject(xAOD::TrigBphys *trigBphysObject, const std::vector< size_t > &legIndices) override final
Gaudi::Property< Combo::LegMap > m_legToInputCollectionMap
xAOD::TrigComposite Decision
Gaudi::Property< std::vector< std::pair< double, double > > > m_massRange
StatusCode findMuTrkCandidates(TrigMultiTrkState< xAOD::MuonContainer > &) const
Build J/psi candidates from muon from SG::View and tracks from the same SG::View, to be used for Tag-...
double charge(const T &p)
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainer > m_inputs
bool isIdenticalTracks(const xAOD::TrackParticle *lhs, const xAOD::TrackParticle *rhs) const
Attempts to identify identical tracks by selection on DeltaR.
Gaudi::Property< std::vector< std::vector< double > > > m_trkPt
StatusCode findMultiLeptonCandidates(TrigMultiTrkState< CONTAINER > &) const
Make all possible combinations from state.leptons(), fit tracks to the common vertex,...
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.
Gaudi::Property< float > m_deltaRMax
ToolHandle< Trk::V0Tools > m_v0Tools
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
void linkToPrevious(Decision *d, const std::string &previousCollectionKey, size_t previousIndex)
Links to the previous object, location of previous 'seed' decision supplied by hand.
const ElementLink< TrackParticleContainer > & inDetTrackParticleLink() const
Returns an ElementLink to the InnerDetector TrackParticle used in identification of this muon.
const std::string & seedString()
bool isLegId(const HLT::Identifier &legIdentifier)
Recognise whether the chain ID is a leg ID.
accumulate
Update flags based on parser line args.
int32_t getIndexFromLeg(const HLT::Identifier &legIdentifier)
Extract the numeric index of a leg identifier.
std::set< DecisionID > DecisionIDContainer
const Combo::LegMap & legToInputCollectionMap() const
Gaudi::Property< std::vector< unsigned int > > m_nTrk
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.
#define ATH_MSG_WARNING(x)
void setEventAccepted(bool flag=true)
Transient utility class to represent a node in a graph (m_decisionObject), and a vector of edges (m_f...
TrigCompositeUtils::DecisionContainer & decisions()
void decisionIDs(const Decision *d, DecisionIDContainer &destination)
Extracts DecisionIDs stored in the Decision object.
TrigCompositeUtils::DecisionIDContainer m_resolvedElectronIDs
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.
const SG::ReadHandleKeyArray< TrigCompositeUtils::DecisionContainer > & decisionsInput() const
virtual bool checkMultiplicity(const std::vector< int > &legMultiplicity, const std::vector< HLT::Identifier > &legDecisionIDs) const =0
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthConfigFlags beamSpot(AthConfigFlags flags, str instanceName, str recoMode)
virtual std::vector< ElementLink< TrigCompositeUtils::DecisionContainer > > & getDecisionLinks(size_t)=0
bool passedDeltaRcut(const std::vector< xAOD::TrackParticle::GenVecFourMom_t > &momenta) const
HLT::Identifier getIDFromLeg(const HLT::Identifier &legIdentifier)
Generate the HLT::Identifier which corresponds to the chain name from the leg name.
Class describing a TrackParticle.
const T * at(size_type n) const
Access an element, as an rvalue.
Declare a monitored scalar variable.
float lxy() const
accessor method: lxy
bool getDetail(const std::string &name, TYPE &value) const
Get an TYPE detail from the object.
Set * set_intersection(Set *set1, Set *set2)
Perform an intersection of two sets.
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
int isEventAccepted() const
std::vector< size_t > & getTrigBphysLegIndices(size_t idx)
bool isAnyIDPassing(const Decision *d, const DecisionIDContainer &required)
Checks if any of the DecisionIDs passed in arg required is availble in Decision object.
size_type size() const noexcept
Returns the number of elements in the collection.
const std::string & viewString()
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Class describing a Bphysics online composite object.
SG::WriteHandleKey< xAOD::TrigBphysContainer > m_trigBphysContainerKey
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
xAOD::TrigBphysContainer & trigBphysCollection()
ToolHandle< Trk::TrkVKalVrtFitter > m_vertexFitter
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< float > m_chi2