14 particleID(iConfig.getUntrackedParameter(
"ParticleID", 0)),
15 minpcut(iConfig.getUntrackedParameter(
"MinP", 0.)),
16 maxpcut(iConfig.getUntrackedParameter(
"MaxP", 10000.)),
17 minptcut(iConfig.getUntrackedParameter(
"MinPt", 0.)),
18 maxptcut(iConfig.getUntrackedParameter(
"MaxPt", 10000.)),
19 minetacut(iConfig.getUntrackedParameter(
"MinEta", -10.)),
20 maxetacut(iConfig.getUntrackedParameter(
"MaxEta", 10.)),
21 minrapcut(iConfig.getUntrackedParameter(
"MinRapidity", -20.)),
22 maxrapcut(iConfig.getUntrackedParameter(
"MaxRapidity", 20.)),
23 minphicut(iConfig.getUntrackedParameter(
"MinPhi", -3.5)),
24 maxphicut(iConfig.getUntrackedParameter(
"MaxPhi", 3.5)),
25 status(iConfig.getUntrackedParameter(
"Status", 0)),
26 motherIDs(iConfig.getUntrackedParameter(
"MotherIDs",
std::vector<
int>{0})),
27 processID(iConfig.getUntrackedParameter(
"ProcessID", 0)),
28 betaBoost(iConfig.getUntrackedParameter(
"BetaBoost",0.))
60 for ( HepMC::GenEvent::particle_const_iterator
p = myGenEvent->particles_begin();
61 p != myGenEvent->particles_end(); ++
p ) {
63 rapidity = 0.5*
log( (mom.e()+mom.pz()) / (mom.e()-mom.pz()) );
68 && (*p)->momentum().perp() >
minptcut 69 && (*p)->momentum().perp() <
maxptcut 78 for(std::vector<int>::const_iterator motherID =
motherIDs.begin(); motherID !=
motherIDs.end(); ++motherID) {
79 if (
status == 0 && *motherID == 0){
82 if (
status != 0 && *motherID == 0){
83 if ((*p)->status() ==
status)
87 HepMC::GenParticle* mother = (*((*p)->production_vertex()->particles_in_const_begin()));
89 if (
status == 0 && *motherID != 0){
90 if (
abs(mother->pdg_id()) ==
abs(*motherID)) {
94 if (
status != 0 && *motherID != 0){
96 if ((*p)->status() ==
status &&
abs(mother->pdg_id()) ==
abs(*motherID)){
121 }
else { accepted =
true; }
124 return true; }
else {
return false;}
HepMC::FourVector zboost(const HepMC::FourVector &, double)
~PythiaFilterMultiMother() override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Abs< T >::type abs(const T &t)
PythiaFilterMultiMother(const edm::ParameterSet &)
std::vector< int > motherIDs
const HepMC::GenEvent * GetEvent() const
bool accepted(std::vector< std::string_view > const &, std::string_view)
bool filter(edm::Event &, const edm::EventSetup &) override
edm::EDGetTokenT< edm::HepMCProduct > token_