File indexing completed on 2025-02-05 23:51:42
0001 #include "RecoEgamma/ElectronIdentification/plugins/ElectronIDSelectorCutBased.h"
0002
0003 ElectronIDSelectorCutBased::ElectronIDSelectorCutBased(const edm::ParameterSet& conf, edm::ConsumesCollector& iC)
0004 : conf_(conf) {
0005 std::string algorithm_ = conf.getParameter<std::string>("algorithm");
0006
0007 if (algorithm_ == "eIDClassBased")
0008 electronIDAlgo_ = new ClassBasedElectronID();
0009 else if (algorithm_ == "eIDCBClasses")
0010 electronIDAlgo_ = new PTDRElectronID();
0011 else if (algorithm_ == "eIDCB")
0012 electronIDAlgo_ = new CutBasedElectronID(conf, iC);
0013 else {
0014 throw cms::Exception("Configuration")
0015 << "Invalid algorithm parameter in ElectronIDSelectorCutBased: must be eIDCBClasses or eIDCB.";
0016 }
0017 }
0018
0019 void ElectronIDSelectorCutBased::fillPSetDescription(edm::ParameterSetDescription& desc) {
0020 desc.add<std::string>("algorithm", "");
0021 CutBasedElectronID::fillPSetDescription(desc);
0022 }
0023
0024 ElectronIDSelectorCutBased::~ElectronIDSelectorCutBased() { delete electronIDAlgo_; }
0025
0026 void ElectronIDSelectorCutBased::newEvent(const edm::Event& e, const edm::EventSetup& es) {
0027 electronIDAlgo_->setup(conf_);
0028 }
0029
0030 double ElectronIDSelectorCutBased::operator()(const reco::GsfElectron& ele,
0031 const edm::Event& e,
0032 const edm::EventSetup& es) {
0033 return electronIDAlgo_->result(&(ele), e, es);
0034 }