15 particleID(iConfig.getUntrackedParameter(
"ParticleID", 0)),
16 MomID(iConfig.getUntrackedParameter(
"MomID", 0)),
17 GrandMomID(iConfig.getUntrackedParameter(
"GrandMomID", 0)),
18 chargeconju(iConfig.getUntrackedParameter(
"ChargeConjugation",
true)),
19 nsisters(iConfig.getUntrackedParameter(
"NumberOfSisters", 0)),
20 naunts(iConfig.getUntrackedParameter(
"NumberOfAunts", 0)),
21 minptcut(iConfig.getUntrackedParameter(
"MinPt", 0.)),
22 maxptcut(iConfig.getUntrackedParameter(
"MaxPt", 14000.)),
23 minetacut(iConfig.getUntrackedParameter(
"MinEta", -10.)),
24 maxetacut(iConfig.getUntrackedParameter(
"MaxEta", 10.)),
25 countQEDCorPhotons(iConfig.getUntrackedParameter(
"countQEDCorPhotons",
false))
33 for(
unsigned int ilist=0; ilist<
exclsisIDs.size(); ++ilist) {
35 identicalParticle=
true;
38 edm::LogInfo(
"PythiaProbeFilter::PythiaProbeFilter") <<
"Creating pythia8 instance for particle properties" << endl;
54 for (
unsigned int checkNow: excludedList ){
55 if (current_part!=checkNow)
continue;
74 for ( HepMC::GenEvent::particle_const_iterator
p = myGenEvent->particles_begin();
p != myGenEvent->particles_end(); ++
p ) {
85 bool excludeTagParticle=
false;
87 if ( (*p)->production_vertex()) {
88 for ( HepMC::GenVertex::particle_iterator anc=(*p)->production_vertex()->particles_begin(
HepMC::parents); anc != (*p)->production_vertex()->particles_end(
HepMC::parents); ++anc ) {
91 int nsis=0;
int exclsis=0; std::vector<unsigned int> checklistSis;
92 if ((*anc)->end_vertex()){
93 for ( HepMC::GenVertex::particle_iterator sis=(*anc)->end_vertex()->particles_begin(
HepMC::children); sis != (*anc)->end_vertex()->particles_end(
HepMC::children); ++sis ) {
101 for(
unsigned int ilist=0; ilist<
exclsisIDs.size(); ++ilist) {
105 exclsis++; checklistSis.push_back(ilist);
108 exclsis++; checklistSis.push_back(ilist);
113 if (nsis==exclsis && nsis==
nsisters) {
114 excludeTagParticle=
true;
break;}
120 if ( (*p)->production_vertex() ) {
121 for ( HepMC::GenVertex::particle_iterator anc=(*p)->production_vertex()->particles_begin(
HepMC::parents); anc != (*p)->production_vertex()->particles_end(
HepMC::parents); ++anc ) {
124 int nsis=0;
int exclsis=0; std::vector<unsigned int> checklistSis;
125 int naunt=0;
int exclaunt=0; std::vector<unsigned int> checklistAunt;
126 if ((*anc)->end_vertex()){
127 for ( HepMC::GenVertex::particle_iterator sis=(*anc)->end_vertex()->particles_begin(
HepMC::children); sis != (*anc)->end_vertex()->particles_end(
HepMC::children); ++sis ) {
134 for(
unsigned int ilist=0; ilist<
exclsisIDs.size(); ++ilist) {
137 exclsis++; checklistSis.push_back(ilist);}
139 exclsis++; checklistSis.push_back(ilist); }
144 if (nsis!=exclsis || nsis!=
nsisters)
break;
145 if ( (*anc)->production_vertex() ) {
146 for ( HepMC::GenVertex::particle_iterator granc=(*anc)->production_vertex()->particles_begin(
HepMC::parents); granc != (*anc)->production_vertex()->particles_end(
HepMC::parents); ++granc ) {
151 for ( HepMC::GenVertex::particle_iterator aunt=(*granc)->end_vertex()->particles_begin(
HepMC::children); aunt != (*granc)->end_vertex()->particles_end(
HepMC::children); ++aunt ) {
152 if ((*aunt)->pdg_id()==(*anc)->pdg_id())
continue;
155 for(
unsigned int ilist=0; ilist<
exclauntIDs.size(); ++ilist) {
158 exclaunt++; checklistAunt.push_back(ilist); }
160 exclaunt++; checklistAunt.push_back(ilist); }
166 if (naunt==exclaunt && naunt==
naunts) {
167 excludeTagParticle=
true;
break;}
171 if (excludeTagParticle)
continue;
T getUntrackedParameter(std::string const &, T const &) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
~PythiaProbeFilter() override
bool filter(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
std::vector< int > exclsisIDs
const edm::EDGetTokenT< edm::HepMCProduct > token_
PythiaProbeFilter(const edm::ParameterSet &)
const HepMC::GenEvent * GetEvent() const
bool accepted(std::vector< std::string_view > const &, std::string_view)
bool AlreadyExcludedCheck(std::vector< unsigned int > excludedList, unsigned int current_part) const
std::vector< int > exclauntIDs
std::unique_ptr< Pythia8::Pythia > fLookupGen
const bool countQEDCorPhotons