11 edm::
InputTag(iConfig.getUntrackedParameter(
"moduleLabel",
std::
string(
"generator")),
"unsmeared"))),
12 particleID(iConfig.getUntrackedParameter(
"ParticleID", 0)),
13 minpcut(iConfig.getUntrackedParameter(
"MinP", 0.)),
14 maxpcut(iConfig.getUntrackedParameter(
"MaxP", 10000.)),
15 minptcut(iConfig.getUntrackedParameter(
"MinPt", 0.)),
16 maxptcut(iConfig.getUntrackedParameter(
"MaxPt", 10000.)),
17 minetacut(iConfig.getUntrackedParameter(
"MinEta", -10.)),
18 maxetacut(iConfig.getUntrackedParameter(
"MaxEta", 10.)),
19 minrapcut(iConfig.getUntrackedParameter(
"MinRapidity", -20.)),
20 maxrapcut(iConfig.getUntrackedParameter(
"MaxRapidity", 20.)),
21 minphicut(iConfig.getUntrackedParameter(
"MinPhi", -3.5)),
22 maxphicut(iConfig.getUntrackedParameter(
"MaxPhi", 3.5)),
23 status(iConfig.getUntrackedParameter(
"Status", 0)),
24 motherIDs(iConfig.getUntrackedParameter(
"MotherIDs",
std::vector<
int>{0})),
25 daughterIDs(iConfig.getUntrackedParameter(
"DaughterIDs", std::vector<int>{0})),
26 daughterMinPts(iConfig.getUntrackedParameter(
"DaughterMinPts", std::vector<double>{0.})),
27 daughterMaxPts(iConfig.getUntrackedParameter(
"DaughterMaxPts", std::vector<double>{10000.})),
28 daughterMinEtas(iConfig.getUntrackedParameter(
"DaughterMinEtas", std::vector<double>{-10.})),
29 daughterMaxEtas(iConfig.getUntrackedParameter(
"DaughterMaxEtas", std::vector<double>{10.})),
30 processID(iConfig.getUntrackedParameter(
"ProcessID", 0)),
31 betaBoost(iConfig.getUntrackedParameter(
"BetaBoost", 0.)) {
46 for (HepMC::GenVertex::particle_iterator ancestor = particle->production_vertex()->particles_begin(HepMC::ancestors);
47 ancestor != particle->production_vertex()->particles_end(HepMC::ancestors);
53 if (
abs((*ancestor)->pdg_id()) ==
abs(IDtoMatch)) {
73 for (HepMC::GenEvent::particle_const_iterator
p = myGenEvent->particles_begin();
p != myGenEvent->particles_end();
76 rapidity = 0.5 *
log((mom.e() + mom.pz()) / (mom.e() - mom.pz()));
83 for (std::vector<int>::const_iterator motherID =
motherIDs.begin(); motherID !=
motherIDs.end(); ++motherID) {
85 if (
status == 0 && *motherID == 0) {
88 if (
status != 0 && *motherID == 0) {
89 if ((*p)->status() ==
status)
96 if (
status == 0 && *motherID != 0) {
102 if (
status != 0 && *motherID != 0) {
117 for (HepMC::GenVertex::particle_iterator dau = (*p)->end_vertex()->particles_begin(
HepMC::children);
HepMC::FourVector zboost(const HepMC::FourVector &, double)
PythiaFilterMultiAncestor(const edm::ParameterSet &)
~PythiaFilterMultiAncestor() override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< double > daughterMaxPts
bool isAncestor(HepMC::GenParticle *particle, int IDtoMatch)
std::vector< int > motherIDs
std::vector< double > daughterMinPts
bool filter(edm::Event &, const edm::EventSetup &) override
edm::EDGetTokenT< edm::HepMCProduct > token_
Abs< T >::type abs(const T &t)
std::vector< int > daughterIDs
std::vector< double > daughterMinEtas
const HepMC::GenEvent * GetEvent() const
std::vector< double > daughterMaxEtas
bool accepted(std::vector< std::string_view > const &, std::string_view)