Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #include "GeneratorInterface/Core/interface/TaggedProtonHepMCFilter.h"
0002 
0003 TaggedProtonHepMCFilter::TaggedProtonHepMCFilter(const edm::ParameterSet &iConfig)
0004     : xiMin_(iConfig.getParameter<double>("xiMin")),
0005       xiMax_(iConfig.getParameter<double>("xiMax")),
0006       oneOverbeamEnergy_(2.0 / iConfig.getParameter<double>("comEnergy")),
0007       nProtons_(iConfig.getParameter<int>("nProtons")) {}
0008 
0009 bool TaggedProtonHepMCFilter::filter(const HepMC::GenEvent *evt) {
0010   // Going through the particle list, and count good protons
0011   int nGoodProtons = 0;
0012   for (HepMC::GenEvent::particle_const_iterator particle = evt->particles_begin(); particle != evt->particles_end();
0013        ++particle) {
0014     if ((*particle)->pdg_id() == proton_PDGID_ && 1 == (*particle)->status()) {
0015       HepMC::FourVector p4 = (*particle)->momentum();
0016       double xi = (1.0 - std::abs(p4.pz()) * oneOverbeamEnergy_);
0017       if (xi > xiMin_ && xi < xiMax_)
0018         nGoodProtons++;
0019       if (nGoodProtons >= nProtons_)
0020         return true;
0021     }
0022   }
0023   return false;
0024 }