Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:13:58

0001 #include "GeneratorInterface/Pythia8Interface/test/analyserhepmc/JetInputHepMC.h"
0002 
0003 JetInputHepMC::JetInputHepMC() : ptMin(0.0) {}
0004 
0005 JetInputHepMC::~JetInputHepMC() {}
0006 
0007 void JetInputHepMC::setIgnoredParticles(const std::vector<unsigned int> &particleIDs) {
0008   ignoreParticleIDs = particleIDs;
0009   std::sort(ignoreParticleIDs.begin(), ignoreParticleIDs.end());
0010 }
0011 
0012 static inline bool isContained(const std::vector<unsigned int> &list, int id) {
0013   unsigned int absId = (unsigned int)(id > 0 ? id : -id);
0014   std::vector<unsigned int>::const_iterator pos = std::lower_bound(list.begin(), list.end(), absId);
0015   return pos != list.end() && *pos == absId;
0016 }
0017 
0018 bool JetInputHepMC::isIgnored(int pdgId) const { return isContained(ignoreParticleIDs, pdgId); }
0019 
0020 JetInputHepMC::ParticleVector JetInputHepMC::operator()(const HepMC::GenEvent *event) const {
0021   ParticleVector particles;
0022   for (HepMC::GenEvent::particle_const_iterator iter = event->particles_begin(); iter != event->particles_end(); ++iter)
0023     particles.push_back(*iter);
0024 
0025   std::sort(particles.begin(), particles.end());
0026   unsigned int size = particles.size();
0027 
0028   ParticleBitmap selected(size, false);
0029   ParticleBitmap invalid(size, false);
0030 
0031   for (unsigned int i = 0; i < size; i++) {
0032     const HepMC::GenParticle *particle = particles[i];
0033     if (invalid[i])
0034       continue;
0035     if (particle->status() == 1)
0036       selected[i] = true;
0037   }
0038 
0039   ParticleVector result;
0040   for (unsigned int i = 0; i < size; i++) {
0041     const HepMC::GenParticle *particle = particles[i];
0042     if (!selected[i] || invalid[i])
0043       continue;
0044 
0045     //if (isIgnored(particle->pdg_id())) continue;
0046 
0047     if (particle->momentum().perp() >= ptMin)
0048       result.push_back(particle);
0049   }
0050 
0051   return result;
0052 }