#include <EgammaHLTEcalRecIsolationProducer.h>
Public Member Functions | |
EgammaHLTEcalRecIsolationProducer (const edm::ParameterSet &) | |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
~EgammaHLTEcalRecIsolationProducer () | |
Private Attributes | |
edm::ParameterSet | conf_ |
bool | doRhoCorrection_ |
edm::InputTag | ecalBarrelRecHitCollection_ |
edm::InputTag | ecalBarrelRecHitProducer_ |
edm::InputTag | ecalEndcapRecHitCollection_ |
edm::InputTag | ecalEndcapRecHitProducer_ |
float | effectiveAreaBarrel_ |
float | effectiveAreaEndcap_ |
double | egIsoConeSizeInBarrel_ |
double | egIsoConeSizeInEndcap_ |
double | egIsoConeSizeOut_ |
double | egIsoEMinBarrel_ |
double | egIsoEMinEndcap_ |
double | egIsoJurassicWidth_ |
double | egIsoPtMinBarrel_ |
double | egIsoPtMinEndcap_ |
edm::InputTag | recoEcalCandidateProducer_ |
float | rhoMax_ |
edm::InputTag | rhoProducer_ |
float | rhoScale_ |
bool | subtract_ |
bool | tryBoth_ |
bool | useIsolEt_ |
bool | useNumCrystals_ |
Definition at line 33 of file EgammaHLTEcalRecIsolationProducer.h.
EgammaHLTEcalRecIsolationProducer::EgammaHLTEcalRecIsolationProducer | ( | const edm::ParameterSet & | config | ) | [explicit] |
Definition at line 41 of file EgammaHLTEcalRecIsolationProducer.cc.
References conf_, doRhoCorrection_, ecalBarrelRecHitCollection_, ecalBarrelRecHitProducer_, ecalEndcapRecHitCollection_, ecalEndcapRecHitProducer_, effectiveAreaBarrel_, effectiveAreaEndcap_, egIsoConeSizeInBarrel_, egIsoConeSizeInEndcap_, egIsoConeSizeOut_, egIsoEMinBarrel_, egIsoEMinEndcap_, egIsoJurassicWidth_, egIsoPtMinBarrel_, egIsoPtMinEndcap_, edm::ParameterSet::getParameter(), recoEcalCandidateProducer_, rhoMax_, rhoProducer_, rhoScale_, subtract_, tryBoth_, useIsolEt_, and useNumCrystals_.
: conf_(config) { // use configuration file to setup input/output collection names //inputs recoEcalCandidateProducer_ = conf_.getParameter<edm::InputTag>("recoEcalCandidateProducer"); ecalBarrelRecHitProducer_ = conf_.getParameter<edm::InputTag>("ecalBarrelRecHitProducer"); ecalBarrelRecHitCollection_ = conf_.getParameter<edm::InputTag>("ecalBarrelRecHitCollection"); ecalEndcapRecHitProducer_ = conf_.getParameter<edm::InputTag>("ecalEndcapRecHitProducer"); ecalEndcapRecHitCollection_ = conf_.getParameter<edm::InputTag>("ecalEndcapRecHitCollection"); rhoProducer_ = config.getParameter<edm::InputTag>("rhoProducer"); doRhoCorrection_ = config.getParameter<bool>("doRhoCorrection"); rhoMax_ = config.getParameter<double>("rhoMax"); rhoScale_ = config.getParameter<double>("rhoScale"); //vetos egIsoPtMinBarrel_ = conf_.getParameter<double>("etMinBarrel"); egIsoEMinBarrel_ = conf_.getParameter<double>("eMinBarrel"); egIsoPtMinEndcap_ = conf_.getParameter<double>("etMinEndcap"); egIsoEMinEndcap_ = conf_.getParameter<double>("eMinEndcap"); egIsoConeSizeInBarrel_ = conf_.getParameter<double>("intRadiusBarrel"); egIsoConeSizeInEndcap_ = conf_.getParameter<double>("intRadiusEndcap"); egIsoConeSizeOut_ = conf_.getParameter<double>("extRadius"); egIsoJurassicWidth_ = conf_.getParameter<double>("jurassicWidth"); effectiveAreaBarrel_ = config.getParameter<double>("effectiveAreaBarrel"); effectiveAreaEndcap_ = config.getParameter<double>("effectiveAreaEndcap"); // options useIsolEt_ = conf_.getParameter<bool>("useIsolEt"); tryBoth_ = conf_.getParameter<bool>("tryBoth"); subtract_ = conf_.getParameter<bool>("subtract"); useNumCrystals_ = conf_.getParameter<bool>("useNumCrystals"); //register your products produces < reco::RecoEcalCandidateIsolationMap >(); }
EgammaHLTEcalRecIsolationProducer::~EgammaHLTEcalRecIsolationProducer | ( | ) |
Definition at line 77 of file EgammaHLTEcalRecIsolationProducer.cc.
{}
void EgammaHLTEcalRecIsolationProducer::produce | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [virtual] |
Implements edm::EDProducer.
Definition at line 81 of file EgammaHLTEcalRecIsolationProducer.cc.
References begin, doRhoCorrection_, DetId::Ecal, ecalBarrelRecHitCollection_, ecalBarrelRecHitProducer_, ecalEndcapRecHitCollection_, ecalEndcapRecHitProducer_, effectiveAreaBarrel_, effectiveAreaEndcap_, egIsoConeSizeInBarrel_, egIsoConeSizeInEndcap_, egIsoConeSizeOut_, egIsoEMinBarrel_, egIsoEMinEndcap_, egIsoJurassicWidth_, egIsoPtMinBarrel_, egIsoPtMinEndcap_, funct::exp(), edm::EventSetup::get(), edm::Ref< C, T, F >::get(), edm::Event::getByLabel(), EgammaRecHitIsolation::getEnergySum(), EgammaRecHitIsolation::getEtSum(), edm::AssociationMap< Tag >::insert(), edm::InputTag::label(), edm::ESHandle< T >::product(), edm::Handle< T >::product(), edm::Event::put(), recoEcalCandidateProducer_, rho, rhoMax_, rhoProducer_, rhoScale_, EgammaRecHitIsolation::setUseNumCrystals(), funct::sin(), subtract_, tryBoth_, useIsolEt_, and useNumCrystals_.
{ // Get the RecoEcalCandidate Collection edm::Handle<reco::RecoEcalCandidateCollection> recoecalcandHandle; iEvent.getByLabel(recoEcalCandidateProducer_,recoecalcandHandle); // Next get Ecal hits barrel edm::Handle<EcalRecHitCollection> ecalBarrelRecHitHandle; //EcalRecHitCollection is a typedef to iEvent.getByLabel(ecalBarrelRecHitProducer_.label(),ecalBarrelRecHitCollection_.label(), ecalBarrelRecHitHandle); // Next get Ecal hits endcap edm::Handle<EcalRecHitCollection> ecalEndcapRecHitHandle; iEvent.getByLabel(ecalEndcapRecHitProducer_.label(), ecalEndcapRecHitCollection_.label(),ecalEndcapRecHitHandle); //create the meta hit collections inorder that we can pass them into the isolation objects EcalRecHitMetaCollection ecalBarrelHits(*ecalBarrelRecHitHandle); EcalRecHitMetaCollection ecalEndcapHits(*ecalEndcapRecHitHandle); //Get Calo Geometry edm::ESHandle<CaloGeometry> pG; iSetup.get<CaloGeometryRecord>().get(pG); const CaloGeometry* caloGeom = pG.product(); edm::ESHandle<EcalSeverityLevelAlgo> sevlv; iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv); const EcalSeverityLevelAlgo* sevLevel = sevlv.product(); edm::Handle<double> rhoHandle; double rho = 0.0; if (doRhoCorrection_) { iEvent.getByLabel(rhoProducer_, rhoHandle); rho = *(rhoHandle.product()); } if (rho > rhoMax_) rho = rhoMax_; rho = rho*rhoScale_; //prepare product reco::RecoEcalCandidateIsolationMap isoMap; //create algorithm objects EgammaRecHitIsolation ecalBarrelIsol(egIsoConeSizeOut_,egIsoConeSizeInBarrel_,egIsoJurassicWidth_,egIsoPtMinBarrel_,egIsoEMinBarrel_,edm::ESHandle<CaloGeometry>(caloGeom),&ecalBarrelHits,sevLevel,DetId::Ecal); ecalBarrelIsol.setUseNumCrystals(useNumCrystals_); EgammaRecHitIsolation ecalEndcapIsol(egIsoConeSizeOut_,egIsoConeSizeInEndcap_,egIsoJurassicWidth_,egIsoPtMinEndcap_,egIsoEMinEndcap_,edm::ESHandle<CaloGeometry>(caloGeom),&ecalEndcapHits,sevLevel,DetId::Ecal); ecalEndcapIsol.setUseNumCrystals(useNumCrystals_); for (reco::RecoEcalCandidateCollection::const_iterator iRecoEcalCand= recoecalcandHandle->begin(); iRecoEcalCand!=recoecalcandHandle->end(); iRecoEcalCand++) { //create reference for storage in isolation map reco::RecoEcalCandidateRef recoecalcandref(reco::RecoEcalCandidateRef(recoecalcandHandle,iRecoEcalCand -recoecalcandHandle ->begin())); //ecal isolation is centered on supecluster reco::SuperClusterRef superClus = iRecoEcalCand->get<reco::SuperClusterRef>(); //i need to know if its in the barrel/endcap so I get the supercluster handle to find out the detector eta //this might not be the best way, are we guaranteed that eta<1.5 is barrel //this can be safely replaced by another method which determines where the emobject is //then we either get the isolation Et or isolation Energy depending on user selection float isol =0.; if(tryBoth_){ //barrel + endcap if(useIsolEt_) isol = ecalBarrelIsol.getEtSum(&(*iRecoEcalCand)) + ecalEndcapIsol.getEtSum(&(*iRecoEcalCand)); else isol = ecalBarrelIsol.getEnergySum(&(*iRecoEcalCand)) + ecalEndcapIsol.getEnergySum(&(*iRecoEcalCand)); } else if( fabs(superClus->eta())<1.479) { //barrel if(useIsolEt_) isol = ecalBarrelIsol.getEtSum(&(*iRecoEcalCand)); else isol = ecalBarrelIsol.getEnergySum(&(*iRecoEcalCand)); } else{ //endcap if(useIsolEt_) isol = ecalEndcapIsol.getEtSum(&(*iRecoEcalCand)); else isol = ecalEndcapIsol.getEnergySum(&(*iRecoEcalCand)); } //we subtract off the electron energy here as well double subtractVal=0; if(useIsolEt_) subtractVal = superClus.get()->rawEnergy()*sin(2*atan(exp(-superClus.get()->eta()))); else subtractVal = superClus.get()->rawEnergy(); if(subtract_) isol-= subtractVal; if (doRhoCorrection_) { if (fabs(superClus->eta()) < 1.442) isol = isol - rho*effectiveAreaBarrel_; else isol = isol - rho*effectiveAreaEndcap_; } isoMap.insert(recoecalcandref, isol); } std::auto_ptr<reco::RecoEcalCandidateIsolationMap> isolMap(new reco::RecoEcalCandidateIsolationMap(isoMap)); iEvent.put(isolMap); }
Definition at line 70 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer().
bool EgammaHLTEcalRecIsolationProducer::doRhoCorrection_ [private] |
Definition at line 61 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
Definition at line 45 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
Definition at line 44 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
Definition at line 47 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
Definition at line 46 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
float EgammaHLTEcalRecIsolationProducer::effectiveAreaBarrel_ [private] |
Definition at line 58 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
float EgammaHLTEcalRecIsolationProducer::effectiveAreaEndcap_ [private] |
Definition at line 59 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
double EgammaHLTEcalRecIsolationProducer::egIsoConeSizeInBarrel_ [private] |
Definition at line 55 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
double EgammaHLTEcalRecIsolationProducer::egIsoConeSizeInEndcap_ [private] |
Definition at line 56 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
double EgammaHLTEcalRecIsolationProducer::egIsoConeSizeOut_ [private] |
Definition at line 54 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
double EgammaHLTEcalRecIsolationProducer::egIsoEMinBarrel_ [private] |
Definition at line 51 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
double EgammaHLTEcalRecIsolationProducer::egIsoEMinEndcap_ [private] |
Definition at line 53 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
double EgammaHLTEcalRecIsolationProducer::egIsoJurassicWidth_ [private] |
Definition at line 57 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
double EgammaHLTEcalRecIsolationProducer::egIsoPtMinBarrel_ [private] |
Definition at line 50 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
double EgammaHLTEcalRecIsolationProducer::egIsoPtMinEndcap_ [private] |
Definition at line 52 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
Definition at line 43 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
float EgammaHLTEcalRecIsolationProducer::rhoMax_ [private] |
Definition at line 63 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
Definition at line 48 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
float EgammaHLTEcalRecIsolationProducer::rhoScale_ [private] |
Definition at line 62 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
bool EgammaHLTEcalRecIsolationProducer::subtract_ [private] |
Definition at line 67 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
bool EgammaHLTEcalRecIsolationProducer::tryBoth_ [private] |
Definition at line 66 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
bool EgammaHLTEcalRecIsolationProducer::useIsolEt_ [private] |
Definition at line 65 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().
bool EgammaHLTEcalRecIsolationProducer::useNumCrystals_ [private] |
Definition at line 68 of file EgammaHLTEcalRecIsolationProducer.h.
Referenced by EgammaHLTEcalRecIsolationProducer(), and produce().