CMS 3D CMS Logo

List of all members | Public Member Functions
Pythia8PartonSelector Class Reference

Pythia8 parton selector derived from the base parton selector. More...

#include <PhysicsTools/JetMCAlgos/interface/Pythia8PartonSelector.h>

Inheritance diagram for Pythia8PartonSelector:
BasePartonSelector

Public Member Functions

 Pythia8PartonSelector ()
 
void run (const edm::Handle< reco::GenParticleCollection > &particles, std::unique_ptr< reco::GenParticleRefVector > &partons)
 
virtual ~Pythia8PartonSelector ()
 
- Public Member Functions inherited from BasePartonSelector
 BasePartonSelector ()
 
 ~BasePartonSelector ()
 

Detailed Description

Pythia8 parton selector derived from the base parton selector.

Definition at line 11 of file Pythia8PartonSelector.h.

Constructor & Destructor Documentation

Pythia8PartonSelector::Pythia8PartonSelector ( )

This is a Pythia8-specific parton selector that selects all partons that don't have other partons as daughters, i.e., partons from the end of the parton showering sequence. An explanation of the particle status codes returned by Pythia8 can be found in Pythia8 online manual (http://home.thep.lu.se/~torbjorn/pythia81html/ParticleProperties.html).

Definition at line 12 of file Pythia8PartonSelector.cc.

13 {
14 }
Pythia8PartonSelector::~Pythia8PartonSelector ( )
virtual

Definition at line 16 of file Pythia8PartonSelector.cc.

17 {
18 }

Member Function Documentation

void Pythia8PartonSelector::run ( const edm::Handle< reco::GenParticleCollection > &  particles,
std::unique_ptr< reco::GenParticleRefVector > &  partons 
)
virtual

Reimplemented from BasePartonSelector.

Definition at line 21 of file Pythia8PartonSelector.cc.

References mps_fire::i, CandMCTagUtils::isParton(), and mps_update::status.

23 {
24  // loop over particles and select partons
25  for(reco::GenParticleCollection::const_iterator it = particles->begin(); it != particles->end(); ++it)
26  {
27  int status = it->status();
28  if( status==1 ) continue; // skip stable particles
29  if( status==2 ) continue; // skip decayed Standard Model hadrons and leptons
30  if( !CandMCTagUtils::isParton( *it ) ) continue; // skip particle if not a parton
31 
32  // check if the parton has other partons as daughters
33  int nparton_daughters = 0;
34  for(unsigned i=0; i<it->numberOfDaughters(); ++i)
35  {
36  if( CandMCTagUtils::isParton( *(it->daughter(i)) ) )
37  ++nparton_daughters;
38  }
39 
40  if( nparton_daughters==0 )
41  partons->push_back( reco::GenParticleRef( particles, it - particles->begin() ) );
42  }
43 
44  return;
45 }
bool isParton(const reco::Candidate &c)
Definition: CandMCTag.cc:48