CMS 3D CMS Logo

Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

pat::helper::IsoDepositIsolator Class Reference

#include <IsoDepositIsolator.h>

Inheritance diagram for pat::helper::IsoDepositIsolator:
pat::helper::BaseIsolator

List of all members.

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< Isolationhandle_
Mode mode_
bool skipDefaultVeto_
reco::isodeposit::AbsVetos vetos_

Detailed Description

Definition at line 10 of file IsoDepositIsolator.h.


Member Typedef Documentation

Reimplemented from pat::helper::BaseIsolator.

Definition at line 12 of file IsoDepositIsolator.h.


Member Enumeration Documentation

Enumerator:
Sum 
Sum2 
SumRelative 
Sum2Relative 
Max 
MaxRelative 
Count 

Definition at line 22 of file IsoDepositIsolator.h.


Constructor & Destructor Documentation

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_.

                                        {
    for (AbsVetos::iterator it = vetos_.begin(), ed = vetos_.end(); it != ed; ++it) {
        delete *it;
    }
}

Member Function Documentation

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_.

                                      {
    using namespace std;
    ostringstream oss;
    oss << input_.encode() << "(dR=" << deltaR_ <<")";
    return oss.str();
}
void IsoDepositIsolator::endEvent ( ) [virtual]

Implements pat::helper::BaseIsolator.

Definition at line 73 of file IsoDepositIsolator.cc.

References edm::HandleBase::clear(), and handle_.

                             {
    handle_.clear();
}
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
}

Member Data Documentation

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().

Definition at line 23 of file IsoDepositIsolator.h.

Referenced by beginEvent(), endEvent(), and getValue().

Definition at line 26 of file IsoDepositIsolator.h.

Referenced by getValue(), and IsoDepositIsolator().

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().