@@ -22,13 +22,17 @@ PythiaFilterMotherSister::PythiaFilterMotherSister(const edm::ParameterSet& iCon
2222 maxrapcut(iConfig.getUntrackedParameter(" MaxRapidity" , 20 .)),
2323 minphicut(iConfig.getUntrackedParameter(" MinPhi" , -3.5 )),
2424 maxphicut(iConfig.getUntrackedParameter(" MaxPhi" , 3.5 )),
25+ betaBoost(iConfig.getUntrackedParameter(" BetaBoost" , 0 .)),
2526 motherIDs(iConfig.getUntrackedParameter(" MotherIDs" , std::vector<int >{0 })),
2627 sisterID(iConfig.getUntrackedParameter(" SisterID" , 0 )),
27- betaBoost(iConfig.getUntrackedParameter(" BetaBoost" , 0 .)),
2828 maxSisDisplacement(iConfig.getUntrackedParameter(" MaxSisterDisplacement" , -1 .)),
29- minTrackPt(iConfig.getUntrackedParameter(" MinTrackPt" , 0 .)),
30- minLeptonPt(iConfig.getUntrackedParameter(" MinLeptonPt" , 0 .)) {
31- // now do what ever initialization is needed
29+ nephewIDs(iConfig.getUntrackedParameter(" NephewIDs" , std::vector<int >{0 })),
30+ minNephewPts(iConfig.getUntrackedParameter(" MinNephewPts" , std::vector<double >{0 .}))
31+ {
32+ if (nephewIDs.size () != minNephewPts.size ()) {
33+ throw cms::Exception (" BadConfig" ) << " PythiaFilterMotherSister: "
34+ << " 'nephewIDs' and 'minNephewPts' need same length." ;
35+ }
3236}
3337
3438PythiaFilterMotherSister::~PythiaFilterMotherSister () {
@@ -68,20 +72,18 @@ bool PythiaFilterMotherSister::filter(edm::StreamID, edm::Event& iEvent, const e
6872 ++dau) {
6973 // find the daugther you're interested in
7074 if (abs ((*dau)->pdg_id ()) == abs (sisterID)) {
71- int failTrackPt = 0 ;
72- int failLeptonPt = 0 ;
75+ int failNephewPt = 0 ;
7376 // check pt of the nephews
7477 for (HepMC::GenVertex::particle_iterator nephew = (*dau)->end_vertex ()->particles_begin (HepMC::children);
7578 nephew != (*dau)->end_vertex ()->particles_end (HepMC::children);
7679 ++nephew) {
7780 int nephew_pdgId = abs ((*nephew)->pdg_id ());
78- if (minLeptonPt > 0 . and (nephew_pdgId == 11 or nephew_pdgId == 13 or nephew_pdgId == 15 ))
79- failLeptonPt += ((*nephew)-> momentum (). perp () < minLeptonPt);
80- if (minTrackPt > 0 . and nephew_pdgId == 211 )
81- failTrackPt += ((*nephew)-> momentum (). perp () < minTrackPt);
81+ for ( unsigned int i = 0 ; i < nephewIDs. size (); i++) {
82+ if (nephew_pdgId == abs (nephewIDs. at (i)))
83+ failNephewPt += ((*nephew)-> momentum (). perp () < minNephewPts. at (i));
84+ }
8285 }
83- if (failLeptonPt > 0 or failTrackPt > 0 )
84- return false ;
86+ if (failNephewPt > 0 ) return false ;
8587 // calculate displacement of the sister particle, from production to decay
8688 HepMC::GenVertex* v1 = (*dau)->production_vertex ();
8789 HepMC::GenVertex* v2 = (*dau)->end_vertex ();
0 commit comments