20 const std::string& name, ISvcLocator* loc )
56 return StatusCode::SUCCESS;
66 ATH_MSG_DEBUG(
"Retrieved " << tracks->size() <<
" tracks..." );
70 ATH_MSG_DEBUG(
"Retrieved " << electrons->size() <<
" electrons..." );
74 ATH_MSG_DEBUG(
"Retrieved " << muons->size() <<
" muons..." );
85 decor_lepton_id(*track) = 0;
86 decor_muon_quality(*track) = -1;
87 decor_muon_qOverPratio(*track) = -99.;
88 decor_muon_momentumBalanceSignificance(*track) = -99.;
89 decor_muon_scatteringNeighbourSignificance(*track) = -99.;
93 for (
const auto electron : *electrons ) {
98 if ( !track ) {
continue; }
102 if (!LH_selection) {
continue; }
105 decor_lepton_id(*track) = -11 * electron->charge();
110 for (
const auto muon : *muons ) {
116 auto track = muon->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle);
117 if ( !track) {
continue; }
120 auto ms_track = muon->trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
121 if (!ms_track) {
continue; }
123 float momBalSig = 0.;
124 float scatNeighSig = 0.;
125 muon->parameter(momBalSig, xAOD::Muon::ParamDef::momentumBalanceSignificance);
126 muon->parameter(scatNeighSig, xAOD::Muon::ParamDef::scatteringNeighbourSignificance);
129 decor_lepton_id(*track) = -13 * muon->charge();
130 decor_muon_quality(*track) =
static_cast<int>(
m_muonID_tool->getQuality(*muon));
131 decor_muon_qOverPratio(*track) = track->qOverP() / ms_track->qOverP();
132 decor_muon_momentumBalanceSignificance(*track) = momBalSig;
133 decor_muon_scatteringNeighbourSignificance(*track) = scatNeighSig;
136 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define CHECK(...)
Evaluate an expression and check for errors.
Handle class for reading a decoration on an object.
Handle class for adding a decoration to an object.
An algorithm that can be simultaneously executed in multiple threads.
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_muon_qOverPratio
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_lepton_id
ToolHandle< IAsgElectronLikelihoodTool > m_electronID_tool
ToolHandle< CP::IMuonSelectionTool > m_muonID_tool
virtual StatusCode initialize() override
SG::ReadHandleKey< xAOD::ElectronContainer > m_ElectronContainerKey
virtual StatusCode execute(const EventContext &) const override
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_muon_momentumBalanceSignificance
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_muon_quality
TrackLeptonDecoratorAlg(const std::string &name, ISvcLocator *pSvcLocator)
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_dec_muon_scatteringNeighbourSignificance
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_MuonContainerKey
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Handle class for adding a decoration to an object.
const xAOD::TrackParticle * getOriginalTrackParticle(const xAOD::Electron *el)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the electron.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".