18 const std::string& name,
19 ISvcLocator* pSvcLocator ) :
41 return StatusCode::FAILURE;
44 return StatusCode::SUCCESS;
56 ATH_MSG_ERROR(
"Failed to retrieve track particles container" );
57 return StatusCode::FAILURE;
64 return StatusCode::FAILURE;
69 ATH_MSG_DEBUG(
"All decorations already exist. Exiting gracefully" );
70 return StatusCode::SUCCESS;
74 std::vector< IDTPM::OptionalDecoration<xAOD::TrackParticleContainer, ElementMuonLink_t> >
77 if( mu_decor.empty() ) {
79 return StatusCode::FAILURE;
87 return StatusCode::SUCCESS;
104 if( muon->muonType() != xAOD::Muon::Combined )
continue;
108 *( muon->combinedTrackParticleLink() ) :
109 *( muon->inDetTrackParticleLink() );
113 return StatusCode::FAILURE;
116 if( muTrack == &track ) {
121 ATH_MSG_DEBUG(
"Found matched muon (pt=" << muon->pt() <<
"). Decorating track." );
127 if( muon->quality() <= xAOD::Muon::Tight ) {
132 if( muon->quality() <= xAOD::Muon::Medium ) {
137 if( muon->quality() <= xAOD::Muon::Loose ) {
142 if( muon->quality() <= xAOD::Muon::VeryLoose ) {
146 return StatusCode::SUCCESS;
151 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
Algorithm to decorate offline tracks with the corresponding offline muon object (if required for trig...
An algorithm that can be simultaneously executed in multiple threads.
bool toContainedElement(BaseConstReference data, ElementType element, IProxyDict *sg=0)
Set from element pointer and a reference to the container (storable)
SG::ReadHandleKey< xAOD::MuonContainer > m_muonsName
ElementLink< xAOD::MuonContainer > ElementMuonLink_t
OfflineMuonDecoratorAlg(const std::string &name, ISvcLocator *pSvcLocator)
Local includes.
std::vector< IDTPM::WriteKeyAccessorPair< xAOD::TrackParticleContainer, ElementMuonLink_t > > m_decor_mu
virtual StatusCode execute(const EventContext &ctx) const override
BooleanProperty m_useCombinedMuonTracks
const std::vector< std::string > m_decor_mu_names
virtual StatusCode initialize() override
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_offlineTrkParticlesName
StatusCode decorateMuonTrack(const xAOD::TrackParticle &track, std::vector< IDTPM::OptionalDecoration< xAOD::TrackParticleContainer, ElementMuonLink_t > > &mu_decor, const xAOD::MuonContainer &muons) const
const_pointer_type ptr()
Dereference the pointer.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::pair< SG::WriteDecorHandle< ContainerType, VariableType >, bool > OptionalDecoration
bool decorationsAllExist(const T_Cont &container, const std::vector< WriteKeyAccessorPair< T_Cont, T > > &keys, bool verbose=false)
Like above - FIXME: maybe not needed.
void createDecoratorKeysAndAccessor(T_Parent &parent, const SG::ReadHandleKey< T_Cont > &container_key, const std::string &prefix, const std::vector< std::string > &decor_names, std::vector< WriteKeyAccessorPair< T_Cont, T > > &decor_out)
create a pair composed of a WriteDecorHandleKey to create a decorator handle and an accessor to check...
std::vector< OptionalDecoration< T_Cont, T > > createDecoratorsIfNeeded(const T_Cont &container, const std::vector< WriteKeyAccessorPair< T_Cont, T > > &keys, const EventContext &ctx, bool verbose=false)
create/book the decorations if they do not exist already
void decorateOrRejectQuietly(const T_Cont_Elm &particle, OptionalDecoration< T_Cont, T > &decorator, const T &value)
Safe method to fill the decoration if decor flag is true.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Muon_v1 Muon
Reference the current persistent version:
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".