Skip to content

Commit 4322712

Browse files
committed
ids and pts are now configurable parameters
1 parent 277911e commit 4322712

File tree

2 files changed

+18
-19
lines changed

2 files changed

+18
-19
lines changed

GeneratorInterface/GenFilters/plugins/PythiaFilterMotherSister.cc

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3438
PythiaFilterMotherSister::~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();

GeneratorInterface/GenFilters/plugins/PythiaFilterMotherSister.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,12 @@ class PythiaFilterMotherSister : public edm::global::EDFilter<> {
6161
const double maxrapcut;
6262
const double minphicut;
6363
const double maxphicut;
64+
const double betaBoost;
6465

65-
//const int status;
6666
std::vector<int> motherIDs;
67-
const int sisterID;
68-
//const int processID;
69-
70-
const double betaBoost;
67+
const int sisterID;
7168
const double maxSisDisplacement;
72-
const double minTrackPt;
73-
const double minLeptonPt;
69+
std::vector<int> nephewIDs;
70+
std::vector<double> minNephewPts;
7471
};
7572
#endif

0 commit comments

Comments
 (0)