const ElectronCollection TopPairEMuReferenceSelection::goodElectrons(const EventPtr event) const { const ElectronCollection allElectrons(event->Electrons()); ElectronCollection goodIsolatedElectrons; for (unsigned int index = 0; index < allElectrons.size(); ++index) { const ElectronPointer electron(allElectrons.at(index)); if (isGoodElectron(electron) && isIsolatedElectron(electron)) { goodIsolatedElectrons.push_back(electron); } } return goodIsolatedElectrons; }
bool QCDPFRelIsoEPlusJetsSelection::hasExactlyOneIsolatedLepton(const EventPtr event) const { const ElectronCollection allElectrons(event->Electrons()); unsigned int nGoodElectrons(0), nGoodIsolatedElectrons(0); for (unsigned int index = 0; index < allElectrons.size(); ++index) { const ElectronPointer electron(allElectrons.at(index)); if (isGoodElectron(electron)) { ++nGoodElectrons; if (isIsolated(electron)) ++nGoodIsolatedElectrons; } } return nGoodElectrons > 0 && nGoodIsolatedElectrons < 2; }
const LeptonPointer QCDPFRelIsoEPlusJetsSelection::signalLepton(const EventPtr event) const { // if (!hasExactlyOneIsolatedLepton(event)) { // cerr << "An error occurred in QCD*Selection in event = " << event->eventnumber(); // cerr << ", run = " << event->runnumber() << ", lumi = " << event->lumiblock() << "!" << endl; // cerr << "File = " << event->file() << endl; // cerr // << "Access exception: No signal lepton could be found. Event doesn't pass 'hasExactlyOneIsolatedLepton' selection" // << endl; // throw "Access exception: No signal lepton could be found. Event doesn't pass 'hasExactlyOneIsolatedLepton' selection"; // } const ElectronCollection allElectrons(event->Electrons()); ElectronCollection goodElectrons; for (unsigned int index = 0; index < allElectrons.size(); ++index) { const ElectronPointer electron(allElectrons.at(index)); if (isGoodElectron(electron)) { goodElectrons.push_back(electron); } } return MostIsolatedElectron(goodElectrons); }