62 const EventContext& ctx = Gaudi::Hive::currentContext();
69 unsigned int nTracks = importedTrackParticles->size();
70 if (nTracks==0)
return StatusCode::SUCCESS;
73 std::vector<bool> mask;
74 mask.assign(nTracks,
false);
82 return StatusCode::FAILURE;
84 unsigned int nMuons(importedMuons->size());
85 std::vector<const xAOD::Muon*> muToCheck; muToCheck.clear();
88 std::vector<int>
entries = m_parser->evaluateAsVector();
89 unsigned int nEntries =
entries.size();
91 if (nMuons != nEntries ) {
92 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used muons??");
93 return StatusCode::FAILURE;
96 for (
unsigned int i=0; i<nMuons; ++i)
if (
entries[i]==1) muToCheck.push_back((*importedMuons)[i]);
102 for (
const auto *muIt : *importedMuons) {
103 if (muIt->inDetTrackParticleLink().isValid()) {
106 if (muIt->muonType()==xAOD::Muon::SiliconAssociatedForwardMuon &&
m_inDetSGKey.key() !=
"InDetForwardTrackParticles")
108 ATH_MSG_DEBUG(
"Skipping Forward Muon since we are not skimming InDetForwardParticles");
112 int index = muIt->inDetTrackParticleLink().index();
119 for (
auto & muIt : muToCheck) {
120 if (muIt->inDetTrackParticleLink().isValid()) {
122 if (muIt->muonType()==xAOD::Muon::SiliconAssociatedForwardMuon &&
m_inDetSGKey.key() !=
"InDetForwardTrackParticles")
124 ATH_MSG_DEBUG(
"Skipping Forward Muon since we are not skimming InDetForwardParticles");
128 int index = muIt->inDetTrackParticleLink().index();
137 unsigned int n_pass=0;
138 for (
unsigned int i=0; i<nTracks; ++i) {
139 if (mask[i]) ++n_pass;
143 importedTrackParticles.
keep (mask);
145 return StatusCode::SUCCESS;
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
virtual StatusCode doThinning() const override
SG::ThinningHandleKey< xAOD::TrackParticleContainer > m_inDetSGKey
virtual StatusCode finalize() override