Skip to content

Commit

Permalink
Merge pull request #3017 from dmitrijus/selector-fix
Browse files Browse the repository at this point in the history
Reco -- Removes vector api from RecoCaloTools/Selectors (callbacks are used instead).
  • Loading branch information
ktf committed Mar 29, 2014
2 parents 19ba3ad + 1a80b38 commit 3311dc7
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 117 deletions.
8 changes: 4 additions & 4 deletions RecoCaloTools/Selectors/interface/CaloConeSelector.h
Expand Up @@ -14,11 +14,11 @@
template <class T>
class CaloConeSelector {
public:
CaloConeSelector(double dR, const CaloGeometry* geom);
CaloConeSelector(double dR, const CaloGeometry* geom, DetId::Detector detector, int subdet=0);
CaloConeSelector(double dR, const CaloGeometry* geom) :
geom_(geom),deltaR_(dR),detector_(DetId::Detector(0)),subdet_(0) {}

std::auto_ptr<edm::SortedCollection<T> > select(double eta, double phi, const edm::SortedCollection<T>& inputCollection);
std::auto_ptr<edm::SortedCollection<T> > select(const GlobalPoint& p, const edm::SortedCollection<T>& inputCollection);
CaloConeSelector(double dR, const CaloGeometry* geom, DetId::Detector detector, int subdet=0) :
geom_(geom),deltaR_(dR),detector_(detector),subdet_(subdet) {}

void inline selectCallback(double eta, double phi, const edm::SortedCollection<T>& inputCollection, std::function<void(const T&)> callback) {
GlobalPoint p(GlobalPoint::Cylindrical(1,phi,tanh(eta)));
Expand Down
10 changes: 5 additions & 5 deletions RecoCaloTools/Selectors/interface/CaloDualConeSelector.h
Expand Up @@ -13,11 +13,11 @@
template <class T>
class CaloDualConeSelector {
public:
CaloDualConeSelector(double dRmin, double dRmax, const CaloGeometry* geom);
CaloDualConeSelector(double dRmin, double dRmax, const CaloGeometry* geom, DetId::Detector detector, int subdet=0);

std::auto_ptr<edm::SortedCollection<T> > select(double eta, double phi, const edm::SortedCollection<T>& inputCollection);
std::auto_ptr<edm::SortedCollection<T> > select(const GlobalPoint& p, const edm::SortedCollection<T>& inputCollection);
CaloDualConeSelector(double dRmin, double dRmax, const CaloGeometry* geom) :
geom_(geom),deltaRmin_(dRmin),deltaRmax_(dRmax),detector_(DetId::Detector(0)),subdet_(0) {}
CaloDualConeSelector(double dRmin, double dRmax, const CaloGeometry* geom, DetId::Detector detector, int subdet=0) :
geom_(geom),deltaRmin_(dRmin),deltaRmax_(dRmax),detector_(detector),subdet_(subdet) {}

void inline selectCallback(double eta, double phi, const edm::SortedCollection<T>& inputCollection, std::function<void(const T&)> callback) {
GlobalPoint p(GlobalPoint::Cylindrical(1,phi,tanh(eta)));
Expand Down
37 changes: 0 additions & 37 deletions RecoCaloTools/Selectors/src/CaloConeSelector.cc

This file was deleted.

37 changes: 0 additions & 37 deletions RecoCaloTools/Selectors/src/CaloDualConeSelector.cc

This file was deleted.

19 changes: 9 additions & 10 deletions RecoCaloTools/Selectors/test/TestCaloSelectors.cc
Expand Up @@ -45,18 +45,17 @@ void TestCaloSelectors::analyze(const edm::Event& evt, const edm::EventSetup& c)
CaloConeSelector<HBHERecHit> sel(0.3, pG.product(), DetId::Hcal);
CaloDualConeSelector<HBHERecHit> sel2(0.3, 0.5, pG.product(), DetId::Hcal);

std::auto_ptr<HBHERecHitCollection> chosen = sel.select(pMax, mhbhe);
std::auto_ptr<HBHERecHitCollection> chosen2 = sel2.select(pMax, mhbhe);
std::cout << "Center at " << pMax.eta() << "," << pMax.phi() << " (ET=" << maxEt << ")" << std::endl;

sel.selectCallback(pMax, mhbhe, [&](const HBHERecHit& i) {
std::cout << HcalDetId(i.detid()) << " : " << i << std::endl;
});

std::cout << "Center at " << pMax.eta() << "," << pMax.phi() << " (ET=" << maxEt << ") I had " << mhbhe.size() << " and I kept " << chosen->size() << std::endl;

for (HBHERecHitCollection::const_iterator i=chosen->begin(); i!=chosen->end(); i++) {
std::cout << HcalDetId(i->detid()) << " : " << (*i) << std::endl;
}
std::cout << "Dual cone\n";
for (HBHERecHitCollection::const_iterator i=chosen2->begin(); i!=chosen2->end(); i++) {
std::cout << HcalDetId(i->detid()) << " : " << (*i) << std::endl;
}

sel2.selectCallback(pMax, mhbhe, [&](const HBHERecHit& i) {
std::cout << HcalDetId(i.detid()) << " : " << i << std::endl;
});

std::cout << std::endl;
}
Expand Down
Expand Up @@ -115,35 +115,31 @@ EleIsoDetIdCollectionProducer::produce (edm::Event& iEvent, const edm::EventSetu
if(emObj->et() < etCandCut_) continue; //don't calculate if object hasn't enough energy

GlobalPoint pclu (emObj->caloPosition().x(),emObj->caloPosition().y(),emObj->caloPosition().z());
std::auto_ptr<EcalRecHitCollection> chosen = doubleConeSel_->select(pclu,*recHitsH);
doubleConeSel_->selectCallback(pclu, *recHitsH, [&](const EcalRecHit& recIt) {
if (recIt.energy() < energyCut_)
return; //dont fill if below E noise value

EcalRecHitCollection::const_iterator recIt;
for (recIt = chosen->begin(); recIt!= chosen->end () ; ++recIt) { // Select RecHits

if (recIt->energy() < energyCut_)
continue; //dont fill if below E noise value

double et = recIt->energy() *
caloGeom->getPosition(recIt->detid()).perp() /
caloGeom->getPosition(recIt->detid()).mag();
double et = recIt.energy() *
caloGeom->getPosition(recIt.detid()).perp() /
caloGeom->getPosition(recIt.detid()).mag();

bool isBarrel = false;
if (fabs(caloGeom->getPosition(recIt->detid()).eta() < 1.479))
if (fabs(caloGeom->getPosition(recIt.detid()).eta() < 1.479))
isBarrel = true;

if (et < etCut_)
continue; //dont fill if below ET noise value
return; //dont fill if below ET noise value

std::vector<int>::const_iterator sit;
int severityFlag = sevLevel->severityLevel(recIt->detid(), *recHitsH);
int severityFlag = sevLevel->severityLevel(recIt.detid(), *recHitsH);
if (isBarrel) {
sit = std::find(severitiesexclEB_.begin(), severitiesexclEB_.end(), severityFlag);
if (sit != severitiesexclEB_.end())
continue;
return;
} else {
sit = std::find(severitiesexclEE_.begin(), severitiesexclEE_.end(), severityFlag);
if (sit != severitiesexclEE_.end())
continue;
return;
}

std::vector<int>::const_iterator vit;
Expand All @@ -152,26 +148,26 @@ EleIsoDetIdCollectionProducer::produce (edm::Event& iEvent, const edm::EventSetu
//vit = std::find(flagsexclEB_.begin(), flagsexclEB_.end(), ((EcalRecHit*)(&*recIt))->recoFlag());
//if (vit != flagsexclEB_.end())
// continue;
if (!((EcalRecHit*)(&*recIt))->checkFlag(EcalRecHit::kGood)) {
if (((EcalRecHit*)(&*recIt))->checkFlags(flagsexclEB_)) {
continue;
if (!(recIt.checkFlag(EcalRecHit::kGood))) {
if (recIt.checkFlags(flagsexclEB_)) {
return;
}
}
} else {
// new rechit flag checks
//vit = std::find(flagsexclEE_.begin(), flagsexclEE_.end(), ((EcalRecHit*)(&*recIt))->recoFlag());
//if (vit != flagsexclEE_.end())
// continue;
if (!((EcalRecHit*)(&*recIt))->checkFlag(EcalRecHit::kGood)) {
if (((EcalRecHit*)(&*recIt))->checkFlags(flagsexclEE_)) {
continue;
if (!(recIt.checkFlag(EcalRecHit::kGood))) {
if (recIt.checkFlags(flagsexclEE_)) {
return;
}
}
}

if(std::find(detIdCollection->begin(),detIdCollection->end(),recIt->detid()) == detIdCollection->end())
detIdCollection->push_back(recIt->detid());
} //end rechits
if (std::find(detIdCollection->begin(),detIdCollection->end(),recIt.detid()) == detIdCollection->end())
detIdCollection->push_back(recIt.detid());
}); //end rechits

} //end candidates

Expand Down

0 comments on commit 3311dc7

Please sign in to comment.