Skip to content

Commit

Permalink
Adding selector by size and sorter by pT
Browse files Browse the repository at this point in the history
  • Loading branch information
kjvbrt committed Nov 15, 2023
1 parent 1416be0 commit 81db22c
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
17 changes: 17 additions & 0 deletions analyzers/dataframe/FCCAnalyses/ReconstructedParticle.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,19 @@ namespace ReconstructedParticle{
};


/**
* \brief Analyzer to select specified number of reconstructed particles
*
* \param size Desired number of particles
*/
struct selUpTo {
selUpTo(const size_t size);
const size_t m_size;
edm4hep::ReconstructedParticleCollection operator() (
const edm4hep::ReconstructedParticleCollection& inColl);
};


/// return reconstructed particles
ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> get(ROOT::VecOps::RVec<int> index, ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> in);

Expand Down Expand Up @@ -194,6 +207,10 @@ namespace ReconstructedParticle{
/// get number of b-jets
int getJet_ntags(ROOT::VecOps::RVec<bool> in);

/// reorder input ReconstructedParticles by pT
edm4hep::ReconstructedParticleCollection
sortByPt(const edm4hep::ReconstructedParticleCollection& inParticles);

}//end NS ReconstructedParticle

}//end NS FCCAnalyses
Expand Down
44 changes: 44 additions & 0 deletions analyzers/dataframe/src/ReconstructedParticle.cc
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,22 @@ edm4hep::ReconstructedParticleCollection selPDG::operator() (
}


selUpTo::selUpTo(const size_t size) : m_size(size) {};

edm4hep::ReconstructedParticleCollection selUpTo::operator() (
const edm4hep::ReconstructedParticleCollection& inColl) {
edm4hep::ReconstructedParticleCollection result;
result.setSubsetCollection();

for (const auto& particle: inColl) {
if (result.size() >= m_size) {
break;
}
result.push_back(particle);
}

return result;
}


resonanceBuilder::resonanceBuilder(float arg_resonance_mass) {m_resonance_mass = arg_resonance_mass;}
Expand Down Expand Up @@ -501,6 +517,34 @@ int getJet_ntags(ROOT::VecOps::RVec<bool> in) {
return result;
}


edm4hep::ReconstructedParticleCollection
sortByPt(const edm4hep::ReconstructedParticleCollection& inColl) {
edm4hep::ReconstructedParticleCollection outColl;
outColl.setSubsetCollection();

std::vector<edm4hep::ReconstructedParticle> rpVec;
for (const auto& particle: inColl) {
rpVec.emplace_back(particle);
}

auto pt = [] (const auto& particle) {
return std::sqrt(std::pow(particle.getMomentum().x, 2) +
std::pow(particle.getMomentum().y, 2));
};

std::sort(rpVec.begin(), rpVec.end(),
[&pt](const auto& lhs, const auto& rhs) {
return pt(lhs) > pt(rhs);
});

for (const auto& particle: rpVec) {
outColl.push_back(particle);
}

return outColl;
}

}//end NS ReconstructedParticle

}//end NS FCCAnalyses

0 comments on commit 81db22c

Please sign in to comment.