Skip to content

Commit

Permalink
Merge pull request #9232 from bmarzocc/7_5_X_AlCaPhiSym_ringCut
Browse files Browse the repository at this point in the history
7_5_X_AlCaPhiSym_ringCut
  • Loading branch information
cmsbuild committed May 30, 2015
2 parents cf30f06 + ad9a3db commit d3cd3df
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 9 deletions.
11 changes: 11 additions & 0 deletions HLTrigger/Configuration/python/customizeHLTforCMSSW.py
@@ -1,5 +1,15 @@
import FWCore.ParameterSet.Config as cms

# Possibility to put different ring dependent cut on ADC (PR #9232)
def customiseFor9232(process):
if hasattr(process,'hltEcalPhiSymFilter'):
if hasattr(process.hltEcalPhiSymFilter,'ampCut_barrel'):
delattr(process.hltEcalPhiSymFilter,'ampCut_barrel')
if hasattr(process.hltEcalPhiSymFilter,'ampCut_endcap'):
delattr(process.hltEcalPhiSymFilter,'ampCut_endcap')
return process


# upgrade RecoTrackSelector to allow BTV-like cuts (PR #8679)
def customiseFor8679(process):
if hasattr(process,'hltBSoftMuonMu5L3') :
Expand Down Expand Up @@ -89,6 +99,7 @@ def customiseHLTforCMSSW(process,menuType="GRun",fastSim=False):
cmsswVersion = os.environ['CMSSW_VERSION']

if cmsswVersion >= "CMSSW_7_5":
process = customiseFor9232(process)
process = customiseFor8679(process)
process = customiseFor8356(process)
process = customiseFor7966(process)
Expand Down
1 change: 1 addition & 0 deletions HLTrigger/special/BuildFile.xml
@@ -1,5 +1,6 @@
<use name="root"/>
<use name="CalibCalorimetry/EcalLaserCorrection"/>
<use name="Calibration/Tools"/>
<use name="CondFormats/DataRecord"/>
<use name="CondFormats/L1TObjects"/>
<use name="CondFormats/EcalObjects"/>
Expand Down
7 changes: 5 additions & 2 deletions HLTrigger/special/interface/HLTEcalPhiSymFilter.h
Expand Up @@ -41,6 +41,7 @@
#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
#include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"


namespace edm {
class ConfigurationDescriptions;
}
Expand All @@ -66,8 +67,10 @@ class HLTEcalPhiSymFilter : public edm::global::EDFilter<> {
const edm::EDGetTokenT<EERecHitCollection> endcapHitsToken_;
const std::string phiSymBarrelDigis_;
const std::string phiSymEndcapDigis_;
const double ampCut_barl_;
const double ampCut_endc_;
const std::vector<double> ampCut_barlP_;
const std::vector<double> ampCut_barlM_;
const std::vector<double> ampCut_endcP_;
const std::vector<double> ampCut_endcM_;
const uint32_t statusThreshold_; ///< accept channels with up to this status
const bool useRecoFlag_; ///< use recoflag instead of DB for bad channels
};
Expand Down
47 changes: 40 additions & 7 deletions HLTrigger/special/src/HLTEcalPhiSymFilter.cc
Expand Up @@ -7,6 +7,10 @@
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "Calibration/Tools/interface/EcalRingCalibrationTools.h"
#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
#include "Geometry/Records/interface/CaloGeometryRecord.h"


HLTEcalPhiSymFilter::HLTEcalPhiSymFilter(const edm::ParameterSet& config) :
Expand All @@ -18,8 +22,10 @@ HLTEcalPhiSymFilter::HLTEcalPhiSymFilter(const edm::ParameterSet& config) :
endcapHitsToken_( consumes<EERecHitCollection>( config.getParameter<edm::InputTag> ("endcapHitCollection") ) ),
phiSymBarrelDigis_( config.getParameter<std::string> ("phiSymBarrelDigiCollection") ),
phiSymEndcapDigis_( config.getParameter<std::string> ("phiSymEndcapDigiCollection") ),
ampCut_barl_( config.getParameter<double> ("ampCut_barrel") ),
ampCut_endc_( config.getParameter<double> ("ampCut_endcap") ),
ampCut_barlP_( config.getParameter<std::vector<double> > ("ampCut_barrelP") ),
ampCut_barlM_( config.getParameter<std::vector<double> > ("ampCut_barrelM") ),
ampCut_endcP_( config.getParameter<std::vector<double> > ("ampCut_endcapP") ),
ampCut_endcM_( config.getParameter<std::vector<double> > ("ampCut_endcapM") ),
statusThreshold_( config.getParameter<uint32_t> ("statusThreshold") ),
useRecoFlag_( config.getParameter<bool>("useRecoFlag") )
{
Expand All @@ -43,11 +49,19 @@ HLTEcalPhiSymFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptio
desc.add<edm::InputTag>("endcapHitCollection",edm::InputTag("ecalRecHit","EcalRecHitsEE"));
desc.add<unsigned int>("statusThreshold",3);
desc.add<bool>("useRecoFlag",false);
desc.add<double>("ampCut_barrel",8.);
desc.add<double>("ampCut_endcap",12.);
desc.add<std::vector<double> >("ampCut_barrelP",{8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,
8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,
8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.});
desc.add<std::vector<double> >("ampCut_barrelM",{8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,
8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,
8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.});
desc.add<std::vector<double> >("ampCut_endcapP",{12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,
12.,12.,12.,12.,12.});
desc.add<std::vector<double> >("ampCut_endcapM",{12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,12.,
12.,12.,12.,12.,12.});
desc.add<std::string>("phiSymBarrelDigiCollection","phiSymEcalDigisEB");
desc.add<std::string>("phiSymEndcapDigiCollection","phiSymEcalDigisEE");
descriptions.add("alCaPhiSymStream",desc);
descriptions.add("hltEcalPhiSymFilter",desc);
}


Expand All @@ -63,6 +77,15 @@ HLTEcalPhiSymFilter::filter(edm::StreamID, edm::Event & event, const edm::EventS
if (! useRecoFlag_) setup.get<EcalChannelStatusRcd>().get(csHandle);
const EcalChannelStatus& channelStatus = *csHandle;

//Get iRing-geometry
edm::ESHandle<CaloGeometry> geoHandle;
setup.get<CaloGeometryRecord>().get(geoHandle);
EcalRingCalibrationTools::setCaloGeometry(&(*geoHandle));
EcalRingCalibrationTools CalibRing;

static const short N_RING_BARREL = EcalRingCalibrationTools::N_RING_BARREL;
static const short N_RING_ENDCAP = EcalRingCalibrationTools::N_RING_ENDCAP;

Handle<EBDigiCollection> barrelDigisHandle;
Handle<EEDigiCollection> endcapDigisHandle;
Handle<EcalUncalibratedRecHitCollection> barrelUncalibRecHitsHandle;
Expand Down Expand Up @@ -90,11 +113,16 @@ HLTEcalPhiSymFilter::filter(edm::StreamID, edm::Event & event, const edm::EventS
EcalUncalibratedRecHitCollection::const_iterator itunb;
for (itunb=barrelUncalibRecHitsHandle->begin(); itunb!=barrelUncalibRecHitsHandle->end(); itunb++) {
EcalUncalibratedRecHit hit = (*itunb);
EBDetId hitDetId = hit.id();
uint16_t statusCode = 0;
if (useRecoFlag_) statusCode=(*EBRechits->find(hit.id())).recoFlag();
else statusCode = channelStatus[itunb->id().rawId()].getStatusCode();
int iRing = CalibRing.getRingIndex(hitDetId);
float ampCut = 0.;
if(hitDetId.ieta()<0) ampCut = ampCut_barlM_[iRing];
else if(hitDetId.ieta()>0) ampCut = ampCut_barlP_[iRing-N_RING_BARREL/2];
float amplitude = hit.amplitude();
if( statusCode <=statusThreshold_ && amplitude > ampCut_barl_){
if( statusCode <=statusThreshold_ && amplitude > ampCut){
phiSymEBDigiCollection->push_back((*EBDigis->find(hit.id())).id(),(*EBDigis->find(hit.id())).begin());
}
}
Expand All @@ -103,11 +131,16 @@ HLTEcalPhiSymFilter::filter(edm::StreamID, edm::Event & event, const edm::EventS
EcalUncalibratedRecHitCollection::const_iterator itune;
for (itune=endcapUncalibRecHitsHandle->begin(); itune!=endcapUncalibRecHitsHandle->end(); itune++) {
EcalUncalibratedRecHit hit = (*itune);
EEDetId hitDetId = hit.id();
uint16_t statusCode = 0;
if (useRecoFlag_) statusCode=(*EERechits->find(hit.id())).recoFlag();
else statusCode = channelStatus[itune->id().rawId()].getStatusCode();
int iRing = CalibRing.getRingIndex(hitDetId);
float ampCut = 0.;
if(hitDetId.zside()<0) ampCut = ampCut_endcM_[iRing-N_RING_BARREL];
else if(hitDetId.zside()>0) ampCut = ampCut_endcP_[iRing-N_RING_BARREL-N_RING_ENDCAP/2];
float amplitude = hit.amplitude();
if( statusCode <=statusThreshold_ && amplitude > ampCut_endc_){
if( statusCode <=statusThreshold_ && amplitude > ampCut){
phiSymEEDigiCollection->push_back((*EEDigis->find(hit.id())).id(),(*EEDigis->find(hit.id())).begin());
}
}
Expand Down

0 comments on commit d3cd3df

Please sign in to comment.