67 unsigned int nTracks = importedTrackParticles->size();
68 if (nTracks==0)
return StatusCode::SUCCESS;
71 std::vector<bool> mask;
72 mask.assign(nTracks,
false);
80 return StatusCode::FAILURE;
82 unsigned int nMuons(importedMuons->size());
83 std::vector<const xAOD::Muon*> muToCheck; muToCheck.clear();
86 std::vector<int>
entries = m_parser->evaluateAsVector();
87 unsigned int nEntries =
entries.size();
89 if (nMuons != nEntries ) {
90 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used muons??");
91 return StatusCode::FAILURE;
94 for (
unsigned int i=0; i<nMuons; ++i)
if (
entries[i]==1) muToCheck.push_back((*importedMuons)[i]);
100 for (
const auto *muIt : *importedMuons) {
101 if (muIt->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle) !=
nullptr) {
104 if (muIt->muonType()==xAOD::Muon::MuonType::SiliconAssociatedForwardMuon &&
m_inDetSGKey.key() !=
"InDetForwardTrackParticles")
106 ATH_MSG_DEBUG(
"Skipping Forward Muon since we are not skimming InDetForwardParticles");
110 int index = muIt->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle)->index();
117 for (
auto & muIt : muToCheck) {
118 if (muIt->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle) !=
nullptr) {
120 if (muIt->muonType()==xAOD::Muon::MuonType::SiliconAssociatedForwardMuon &&
m_inDetSGKey.key() !=
"InDetForwardTrackParticles")
122 ATH_MSG_DEBUG(
"Skipping Forward Muon since we are not skimming InDetForwardParticles");
126 int index = muIt->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle)->index();
135 unsigned int n_pass=0;
136 for (
unsigned int i=0; i<nTracks; ++i) {
137 if (mask[i]) ++n_pass;
141 importedTrackParticles.
keep (mask);
143 return StatusCode::SUCCESS;
virtual StatusCode doThinning(const EventContext &ctx) const override
Gaudi::Property< std::string > m_selectionString
std::atomic< unsigned int > m_ntot
SG::ReadHandleKey< xAOD::MuonContainer > m_muonKey
MuonTrackParticleThinning(const std::string &t, const std::string &n, const IInterface *p)
virtual ~MuonTrackParticleThinning()
Gaudi::Property< float > m_coneSize
virtual StatusCode initialize() override
std::atomic< unsigned int > m_npass
SG::ThinningHandleKey< xAOD::TrackParticleContainer > m_inDetSGKey
virtual StatusCode finalize() override