![]() |
![]() |
#include <IsoDepositIsolator.h>
Public Types | |
typedef edm::ValueMap < reco::IsoDeposit > | Isolation |
Public Member Functions | |
virtual void | beginEvent (const edm::Event &event, const edm::EventSetup &eventSetup) |
virtual std::string | description () const |
virtual void | endEvent () |
IsoDepositIsolator (const edm::ParameterSet &conf, bool withCut) | |
IsoDepositIsolator () | |
virtual | ~IsoDepositIsolator () |
Protected Types | |
enum | Mode { Sum, Sum2, SumRelative, Sum2Relative, Max, MaxRelative, Count } |
Protected Member Functions | |
virtual float | getValue (const edm::ProductID &id, size_t index) const |
Protected Attributes | |
float | deltaR_ |
reco::isodeposit::EventDependentAbsVetos | evdepVetos_ |
edm::Handle< Isolation > | handle_ |
Mode | mode_ |
bool | skipDefaultVeto_ |
reco::isodeposit::AbsVetos | vetos_ |
Definition at line 10 of file IsoDepositIsolator.h.
Reimplemented from pat::helper::BaseIsolator.
Definition at line 12 of file IsoDepositIsolator.h.
enum pat::helper::IsoDepositIsolator::Mode [protected] |
Definition at line 22 of file IsoDepositIsolator.h.
{ Sum, Sum2, SumRelative, Sum2Relative, Max, MaxRelative, Count };
pat::helper::IsoDepositIsolator::IsoDepositIsolator | ( | ) | [inline] |
Definition at line 14 of file IsoDepositIsolator.h.
{}
IsoDepositIsolator::IsoDepositIsolator | ( | const edm::ParameterSet & | conf, |
bool | withCut | ||
) |
Definition at line 13 of file IsoDepositIsolator.cc.
References Count, evdepVetos_, Exception, edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), IsoDepositVetoFactory::make(), Max, MaxRelative, mode, mode_, skipDefaultVeto_, Sum, Sum2, Sum2Relative, SumRelative, and vetos_.
: BaseIsolator(conf,withCut), deltaR_(conf.getParameter<double>("deltaR")), mode_(Sum), skipDefaultVeto_(false) { if (conf.exists("mode")) { std::string mode = conf.getParameter<std::string>("mode"); if (mode == "sum") mode_ = Sum; else if (mode == "sumRelative") mode_ = SumRelative; else if (mode == "max") mode_ = Max; else if (mode == "maxRelative") mode_ = MaxRelative; else if (mode == "sum2") mode_ = Sum2; else if (mode == "sum2Relative") mode_ = Sum2Relative; else if (mode == "count") mode_ = Count; else throw cms::Exception("Not Implemented") << "Mode '" << mode << "' not implemented. " << "Supported modes are 'sum', 'sumRelative', 'max', 'maxRelative', 'sum2', 'sum2Relative', 'count'." << "New methods can be easily implemented if requested."; } if (conf.exists("veto")) { vetos_.push_back(new ConeVeto(Direction(), conf.getParameter<double>("veto"))); } if (conf.exists("threshold")) { vetos_.push_back(new ThresholdVeto(conf.getParameter<double>("threshold"))); } if (conf.exists("skipDefaultVeto")) { skipDefaultVeto_ = conf.getParameter<bool>("skipDefaultVeto"); } if (conf.exists("vetos")) { // expert configuration if (!vetos_.empty()) throw cms::Exception("Configuration") << "You can't both configure this module with 'veto'/'threshold' AND with 'vetos'!"; if (!conf.exists("skipDefaultVeto")) throw cms::Exception("Configuration") << "When using the expert configuration variable 'vetos' you must specify the value for 'skipDefaultVeto' too."; typedef std::vector<std::string> vstring; vstring vetos = conf.getParameter< vstring >("vetos"); reco::isodeposit::EventDependentAbsVeto *evdep = 0; for (vstring::const_iterator it = vetos.begin(), ed = vetos.end(); it != ed; ++it) { vetos_.push_back( IsoDepositVetoFactory::make( it->c_str(), evdep ) ); if (evdep != 0) evdepVetos_.push_back(evdep); } } }
IsoDepositIsolator::~IsoDepositIsolator | ( | ) | [virtual] |
Definition at line 58 of file IsoDepositIsolator.cc.
References vetos_.
void IsoDepositIsolator::beginEvent | ( | const edm::Event & | event, |
const edm::EventSetup & | eventSetup | ||
) | [virtual] |
Implements pat::helper::BaseIsolator.
Definition at line 65 of file IsoDepositIsolator.cc.
References evdepVetos_, handle_, and pat::helper::BaseIsolator::input_.
{ event.getByLabel(input_, handle_); for (EventDependentAbsVetos::iterator it = evdepVetos_.begin(), ed = evdepVetos_.end(); it != ed; ++it) { (*it)->setEvent(event,eventSetup); } }
std::string IsoDepositIsolator::description | ( | ) | const [virtual] |
Implements pat::helper::BaseIsolator.
Definition at line 78 of file IsoDepositIsolator.cc.
References deltaR_, edm::InputTag::encode(), and pat::helper::BaseIsolator::input_.
void IsoDepositIsolator::endEvent | ( | ) | [virtual] |
Implements pat::helper::BaseIsolator.
Definition at line 73 of file IsoDepositIsolator.cc.
References edm::HandleBase::clear(), and handle_.
float IsoDepositIsolator::getValue | ( | const edm::ProductID & | id, |
size_t | index | ||
) | const [protected, virtual] |
Implements pat::helper::BaseIsolator.
Definition at line 86 of file IsoDepositIsolator.cc.
References reco::IsoDeposit::candEnergy(), Count, reco::IsoDeposit::countWithin(), deltaR_, eta(), reco::IsoDeposit::eta(), Exception, handle_, Max, MaxRelative, reco::IsoDeposit::maxWithin(), mode_, phi, reco::IsoDeposit::phi(), skipDefaultVeto_, Sum, Sum2, Sum2Relative, reco::IsoDeposit::sum2Within(), SumRelative, reco::IsoDeposit::sumWithin(), and vetos_.
{ const reco::IsoDeposit &dep = handle_->get(id, index); double eta = dep.eta(), phi = dep.phi(); // better to center on the deposit direction that could be, e.g., the impact point at calo for (AbsVetos::const_iterator it = vetos_.begin(), ed = vetos_.end(); it != ed; ++it) { (const_cast<AbsVeto *>(*it))->centerOn(eta, phi); // I need the const_cast to be able to 'move' the veto } switch (mode_) { case Count: return dep.countWithin(deltaR_, vetos_, skipDefaultVeto_); case Sum: return dep.sumWithin(deltaR_, vetos_, skipDefaultVeto_); case SumRelative: return dep.sumWithin(deltaR_, vetos_, skipDefaultVeto_) / dep.candEnergy() ; case Sum2: return dep.sum2Within(deltaR_, vetos_, skipDefaultVeto_); case Sum2Relative: return dep.sum2Within(deltaR_, vetos_, skipDefaultVeto_) / (dep.candEnergy() * dep.candEnergy()) ; case Max: return dep.maxWithin(deltaR_, vetos_, skipDefaultVeto_); case MaxRelative: return dep.maxWithin(deltaR_, vetos_, skipDefaultVeto_) / dep.candEnergy() ; } throw cms::Exception("Logic error") << "Should not happen at " << __FILE__ << ", line " << __LINE__; // avoid gcc warning }
float pat::helper::IsoDepositIsolator::deltaR_ [protected] |
Definition at line 25 of file IsoDepositIsolator.h.
Referenced by description(), and getValue().
Definition at line 28 of file IsoDepositIsolator.h.
Referenced by beginEvent(), and IsoDepositIsolator().
edm::Handle<Isolation> pat::helper::IsoDepositIsolator::handle_ [protected] |
Definition at line 23 of file IsoDepositIsolator.h.
Referenced by beginEvent(), endEvent(), and getValue().
Mode pat::helper::IsoDepositIsolator::mode_ [protected] |
Definition at line 26 of file IsoDepositIsolator.h.
Referenced by getValue(), and IsoDepositIsolator().
bool pat::helper::IsoDepositIsolator::skipDefaultVeto_ [protected] |
Definition at line 29 of file IsoDepositIsolator.h.
Referenced by getValue(), and IsoDepositIsolator().
Definition at line 27 of file IsoDepositIsolator.h.
Referenced by getValue(), IsoDepositIsolator(), and ~IsoDepositIsolator().