Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run2 alca phi stream #7471

Merged
merged 3 commits into from Jan 31, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
22 changes: 15 additions & 7 deletions HLTrigger/special/interface/HLTEcalPhiSymFilter.h
Expand Up @@ -36,7 +36,10 @@
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/InputTag.h"

#include "DataFormats/EcalDetId/interface/EBDetId.h"
#include "DataFormats/EcalDetId/interface/EEDetId.h"
#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
#include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"

namespace edm {
class ConfigurationDescriptions;
Expand All @@ -57,17 +60,22 @@ class HLTEcalPhiSymFilter : public edm::EDFilter {
private:
// ----------member data ---------------------------


edm::EDGetTokenT<EBDigiCollection> barrelDigisToken_;
edm::EDGetTokenT<EEDigiCollection> endcapDigisToken_;
edm::EDGetTokenT<EcalUncalibratedRecHitCollection> barrelUncalibHitsToken_;
edm::EDGetTokenT<EcalUncalibratedRecHitCollection> endcapUncalibHitsToken_;
edm::EDGetTokenT<EBRecHitCollection> barrelHitsToken_;
edm::EDGetTokenT<EERecHitCollection> endcapHitsToken_;
edm::InputTag barrelDigis_;
edm::InputTag endcapDigis_;
edm::InputTag barrelUncalibHits_;
edm::InputTag endcapUncalibHits_;
edm::InputTag barrelHits_;
edm::InputTag endcapHits_;
std::string phiSymBarrelHits_;
std::string phiSymEndcapHits_;
double eCut_barl_;
double eCut_endc_;
double eCut_barl_high_;
double eCut_endc_high_;
std::string phiSymBarrelDigis_;
std::string phiSymEndcapDigis_;
double ampCut_barl_;
double ampCut_endc_;
uint32_t statusThreshold_; ///< accept channels with up to this status
bool useRecoFlag_; ///< use recoflag instead of DB for bad channels
};
Expand Down
122 changes: 70 additions & 52 deletions HLTrigger/special/src/HLTEcalPhiSymFilter.cc
Expand Up @@ -8,28 +8,36 @@
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"


HLTEcalPhiSymFilter::HLTEcalPhiSymFilter(const edm::ParameterSet& iConfig)
{
barrelHits_ = iConfig.getParameter< edm::InputTag > ("barrelHitCollection");
endcapHits_ = iConfig.getParameter< edm::InputTag > ("endcapHitCollection");
phiSymBarrelHits_ =
iConfig.getParameter< std::string > ("phiSymBarrelHitCollection");
phiSymEndcapHits_ =
iConfig.getParameter< std::string > ("phiSymEndcapHitCollection");
eCut_barl_ = iConfig.getParameter< double > ("eCut_barrel");
eCut_endc_ = iConfig.getParameter< double > ("eCut_endcap");
eCut_barl_high_=iConfig.getParameter< double > ("eCut_barrel_high");
eCut_endc_high_=iConfig.getParameter< double > ("eCut_endcap_high");

barrelDigis_ = iConfig.getParameter<edm::InputTag> ("barrelDigiCollection");
endcapDigis_ = iConfig.getParameter<edm::InputTag> ("endcapDigiCollection");
barrelUncalibHits_ = iConfig.getParameter<edm::InputTag> ("barrelUncalibHitCollection");
endcapUncalibHits_ = iConfig.getParameter<edm::InputTag> ("endcapUncalibHitCollection");
barrelHits_ = iConfig.getParameter<edm::InputTag> ("barrelHitCollection");
endcapHits_ = iConfig.getParameter<edm::InputTag> ("endcapHitCollection");
phiSymBarrelDigis_ =
iConfig.getParameter<std::string> ("phiSymBarrelDigiCollection");
phiSymEndcapDigis_ =
iConfig.getParameter<std::string> ("phiSymEndcapDigiCollection");
ampCut_barl_ = iConfig.getParameter<double> ("ampCut_barrel");
ampCut_endc_ = iConfig.getParameter<double> ("ampCut_endcap");

statusThreshold_ = iConfig.getParameter<uint32_t> ("statusThreshold");
useRecoFlag_ = iConfig.getParameter<bool>("useRecoFlag");

barrelDigisToken_ = consumes<EBDigiCollection>(barrelDigis_);
endcapDigisToken_ = consumes<EEDigiCollection>(endcapDigis_);
barrelUncalibHitsToken_ = consumes<EcalUncalibratedRecHitCollection>(barrelUncalibHits_);
endcapUncalibHitsToken_ = consumes<EcalUncalibratedRecHitCollection>(endcapUncalibHits_);
barrelHitsToken_ = consumes<EBRecHitCollection>(barrelHits_);
endcapHitsToken_ = consumes<EERecHitCollection>(endcapHits_);

//register your products
produces< EBRecHitCollection >(phiSymBarrelHits_);
produces< EERecHitCollection >(phiSymEndcapHits_);
produces<EBDigiCollection>(phiSymBarrelDigis_);
produces<EEDigiCollection>(phiSymEndcapDigis_);

}


Expand All @@ -39,16 +47,18 @@ HLTEcalPhiSymFilter::~HLTEcalPhiSymFilter()
void
HLTEcalPhiSymFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("barrelDigiCollection",edm::InputTag("ecalDigis","ebDigis"));
desc.add<edm::InputTag>("endcapDigiCollection",edm::InputTag("ecalDigis","eeDigis"));
desc.add<edm::InputTag>("barrelUncalibHitCollection",edm::InputTag("ecalUncalibHit","EcalUncalibRecHitsEB"));
desc.add<edm::InputTag>("endcapUncalibHitCollection",edm::InputTag("ecalUncalibHit","EcalUncalibRecHitsEE"));
desc.add<edm::InputTag>("barrelHitCollection",edm::InputTag("ecalRecHit","EcalRecHitsEB"));
desc.add<edm::InputTag>("endcapHitCollection",edm::InputTag("ecalRecHit","EcalRecHitsEE"));
desc.add<unsigned int>("statusThreshold",3);
desc.add<bool>("useRecoFlag",false);
desc.add<double>("eCut_barrel",150.);
desc.add<double>("eCut_endcap",750.);
desc.add<double>("eCut_barrel_high",999999.);
desc.add<double>("eCut_endcap_high",999999.);
desc.add<std::string>("phiSymBarrelHitCollection","phiSymEcalRecHitsEB");
desc.add<std::string>("phiSymEndcapHitCollection","phiSymEcalRecHitsEE");
desc.add<double>("ampCut_barrel",8.);
desc.add<double>("ampCut_endcap",12.);
desc.add<std::string>("phiSymBarrelDigiCollection","phiSymEcalDigisEB");
desc.add<std::string>("phiSymEndcapDigiCollection","phiSymEcalDigisEE");
descriptions.add("alCaPhiSymStream",desc);
}

Expand All @@ -58,61 +68,69 @@ bool
HLTEcalPhiSymFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSetup)
{


using namespace edm;
using namespace std;

//Get ChannelStatus from DB
edm::ESHandle<EcalChannelStatus> csHandle;
if (! useRecoFlag_) iSetup.get<EcalChannelStatusRcd>().get(csHandle);
const EcalChannelStatus& channelStatus = *csHandle;



Handle<EBDigiCollection> barrelDigisHandle;
Handle<EEDigiCollection> endcapDigisHandle;
Handle<EcalUncalibratedRecHitCollection> barrelUncalibRecHitsHandle;
Handle<EcalUncalibratedRecHitCollection> endcapUncalibRecHitsHandle;
Handle<EBRecHitCollection> barrelRecHitsHandle;
Handle<EERecHitCollection> endcapRecHitsHandle;


iEvent.getByToken(barrelDigisToken_,barrelDigisHandle);
iEvent.getByToken(endcapDigisToken_,endcapDigisHandle);
iEvent.getByToken(barrelUncalibHitsToken_,barrelUncalibRecHitsHandle);
iEvent.getByToken(endcapUncalibHitsToken_,endcapUncalibRecHitsHandle);
iEvent.getByToken(barrelHitsToken_,barrelRecHitsHandle);
iEvent.getByToken(endcapHitsToken_,endcapRecHitsHandle);

//Create empty output collections
std::auto_ptr< EBRecHitCollection > phiSymEBRecHitCollection( new EBRecHitCollection );
std::auto_ptr< EERecHitCollection > phiSymEERecHitCollection( new EERecHitCollection );

//Select interesting EcalRecHits (barrel)
EBRecHitCollection::const_iterator itb;
for (itb=barrelRecHitsHandle->begin(); itb!=barrelRecHitsHandle->end(); itb++) {
if (itb->energy() >= eCut_barl_) {
uint16_t statusCode = 0;
if (useRecoFlag_) statusCode=itb->recoFlag();
else statusCode = channelStatus[itb->id().rawId()].getStatusCode();
if ( statusCode <=statusThreshold_ )
phiSymEBRecHitCollection->push_back(*itb);
else if (itb->energy() >= eCut_barl_high_ )
phiSymEBRecHitCollection->push_back(*itb);
std::auto_ptr< EBDigiCollection > phiSymEBDigiCollection( new EBDigiCollection );
std::auto_ptr< EEDigiCollection > phiSymEEDigiCollection( new EEDigiCollection );

const EBDigiCollection* EBDigis = barrelDigisHandle.product();
const EEDigiCollection* EEDigis = endcapDigisHandle.product();
const EBRecHitCollection* EBRechits = barrelRecHitsHandle.product();
const EERecHitCollection* EERechits = endcapRecHitsHandle.product();

//Select interesting EcalDigis (barrel)
EcalUncalibratedRecHitCollection::const_iterator itunb;
for (itunb=barrelUncalibRecHitsHandle->begin(); itunb!=barrelUncalibRecHitsHandle->end(); itunb++) {
EcalUncalibratedRecHit hit = (*itunb);
uint16_t statusCode = 0;
if (useRecoFlag_) statusCode=(*EBRechits->find(hit.id())).recoFlag();
else statusCode = channelStatus[itunb->id().rawId()].getStatusCode();
float amplitude = hit.amplitude();
if( statusCode <=statusThreshold_ && amplitude > ampCut_barl_){
phiSymEBDigiCollection->push_back((*EBDigis->find(hit.id())).id(),(*EBDigis->find(hit.id())).begin());
}
}

//Select interesting EcalRecHits (endcaps)
EERecHitCollection::const_iterator ite;
for (ite=endcapRecHitsHandle->begin(); ite!=endcapRecHitsHandle->end(); ite++) {
if (ite->energy() >= eCut_endc_) {
uint16_t statusCode = 0;
if (useRecoFlag_) statusCode=ite->recoFlag();
else statusCode =channelStatus[ite->id().rawId()].getStatusCode();
if ( statusCode <=statusThreshold_ )
phiSymEERecHitCollection->push_back(*ite);
else if (ite->energy() >= eCut_endc_high_ )
phiSymEERecHitCollection->push_back(*ite);
//Select interesting EcalDigis (endcaps)
EcalUncalibratedRecHitCollection::const_iterator itune;
for (itune=endcapUncalibRecHitsHandle->begin(); itune!=endcapUncalibRecHitsHandle->end(); itune++) {
EcalUncalibratedRecHit hit = (*itune);
uint16_t statusCode = 0;
if (useRecoFlag_) statusCode=(*EERechits->find(hit.id())).recoFlag();
else statusCode = channelStatus[itune->id().rawId()].getStatusCode();
float amplitude = hit.amplitude();
if( statusCode <=statusThreshold_ && amplitude > ampCut_endc_){
phiSymEEDigiCollection->push_back((*EEDigis->find(hit.id())).id(),(*EEDigis->find(hit.id())).begin());
}
}

if ((!phiSymEBRecHitCollection->size() ) && (!phiSymEERecHitCollection->size()))
if ((!phiSymEBDigiCollection->size() ) && (!phiSymEEDigiCollection->size()))
return false;

//Put selected information in the event
iEvent.put( phiSymEBRecHitCollection, phiSymBarrelHits_);
iEvent.put( phiSymEERecHitCollection, phiSymEndcapHits_);
iEvent.put( phiSymEBDigiCollection, phiSymBarrelDigis_);
iEvent.put( phiSymEEDigiCollection, phiSymEndcapDigis_);

return true;
}