46 useUncalib_ (ps.getParameter<bool>(
"useUncalib")),
47 doIsolated_ (ps.getParameter<bool>(
"doIsolated")),
50 l1LowerThr_ (ps.getParameter<double> (
"l1LowerThr")),
51 l1UpperThr_ (ps.getParameter<double> (
"l1UpperThr")),
52 l1LowerThrIgnoreIsolation_(ps.getParameter<double> (
"l1LowerThrIgnoreIsolation")),
53 regionEtaMargin_(ps.getParameter<double>(
"regionEtaMargin")),
54 regionPhiMargin_(ps.getParameter<double>(
"regionPhiMargin")),
55 hitLabels (ps.getParameter<std::vector<edm::
InputTag>>(
"ecalhitLabels")),
78 std::vector<std::string> productTags;
79 productTags.push_back(
"EcalRegionalRecHitsEB");
80 productTags.push_back(
"EcalRegionalRecHitsEE");
81 desc.
add<std::vector<std::string>>(
"productLabels", productTags);
82 std::vector<edm::InputTag> inputTags;
83 inputTags.push_back(
edm::InputTag(
"hltEcalRegionalEgammaRecHit:EcalRecHitsEB"));
84 inputTags.push_back(
edm::InputTag(
"hltEcalRegionalEgammaRecHit:EcalRecHitsEE"));
85 inputTags.push_back(
edm::InputTag(
"hltESRegionalEgammaRecHit:EcalRecHitsES"));
86 desc.
add<std::vector<edm::InputTag>>(
"ecalhitLabels", inputTags);
89 desc.
add<
bool>(
"useUncalib",
true);
90 desc.
add<
bool>(
"doIsolated",
true);
91 desc.
add<
double>(
"l1LowerThr", 5.0);
92 desc.
add<
double>(
"l1UpperThr", 999.);
93 desc.
add<
double>(
"l1LowerThrIgnoreIsolation", 0.0);
94 desc.
add<
double>(
"regionEtaMargin", 0.14);
95 desc.
add<
double>(
"regionPhiMargin", 0.4);
107 std::auto_ptr<const CaloSubdetectorTopology>
topology;
117 evt.
getByToken(l1TokenNonIsolated_, emNonIsolColl);
123 std::vector<EcalEtaPhiRegion> regions;
124 if(doIsolated_) getEtaPhiRegions(®ions, *emIsolColl, *l1CaloGeom,
true);
126 if(!doIsolated_
or (l1LowerThrIgnoreIsolation_ < 64)) getEtaPhiRegions(®ions, *emNonIsolColl, *l1CaloGeom,
false);
132 for (
unsigned int i=0;
i<hitLabels.size();
i++) {
136 if (!(urhcH[i].isValid())) {
137 edm::LogError(
"ProductNotFound")<<
"could not get a handle on the EcalRecHitCollection! (" << hitLabels[
i].encode() <<
")" << std::endl;
142 if (uncalibRecHits->
size() > 0) {
143 if ((*uncalibRecHits)[0].id().subdetId() ==
EcalBarrel) {
146 }
else if ((*uncalibRecHits)[0].
id().subdetId() ==
EcalEndcap) {
149 }
else if ((*uncalibRecHits)[0].
id().subdetId() ==
EcalPreshower) {
152 }
else throw(std::runtime_error(
"\n\nProducer encountered invalied ecalhitcollection type.\n\n"));
154 if(regions.size() != 0) {
157 for (it = uncalibRecHits->
begin(); it != uncalibRecHits->
end(); it++){
161 std::vector<EcalEtaPhiRegion>::const_iterator
region;
162 for (region=regions.begin(); region!=regions.end(); region++) {
163 if (region->inRegion(position)) {
164 uhits->push_back(*it);
178 for (
unsigned int i=0;
i<hitLabels.size();
i++) {
182 if (!(rhcH[i].isValid())) {
183 edm::LogError(
"ProductNotFound")<<
"could not get a handle on the EcalRecHitCollection! (" << hitLabels[
i].encode() <<
")" << std::endl;
188 if (recHits->
size() > 0) {
189 if ((*recHits)[0].id().subdetId() ==
EcalBarrel) {
192 }
else if ((*recHits)[0].
id().subdetId() ==
EcalEndcap) {
198 }
else throw(std::runtime_error(
"\n\nProducer encountered invalied ecalhitcollection type.\n\n"));
200 if(regions.size() != 0) {
202 for (it = recHits->
begin(); it != recHits->
end(); it++){
206 std::vector<EcalEtaPhiRegion>::const_iterator
region;
207 for (region=regions.begin(); region!=regions.end(); region++) {
208 if (region->inRegion(position)) {
209 hits->push_back(*it);
224 for (
unsigned int candItr = 0 ; candItr < theCandidateCollection.size(); candItr++){
228 if(doIsolated_ and (emItr.
et() < l1LowerThrIgnoreIsolation_))
continue;
231 if ((emItr.
et() > l1LowerThr_) and (emItr.
et() < l1UpperThr_)) {
243 etaLow -= regionEtaMargin_;
244 etaHigh += regionEtaMargin_;
245 phiLow -= regionPhiMargin_;
246 phiHigh += regionPhiMargin_;
255 template<
typename T1>
257 for (
unsigned int candItr = 0 ; candItr < theCandidateCollection.size(); candItr++){
258 T1 emItr = theCandidateCollection.at(candItr);
259 if ((emItr.et() > l1LowerThr_) and (emItr.et() < l1UpperThr_)) {
261 double etaLow = emItr.eta() - regionEtaMargin_;
262 double etaHigh = emItr.eta() + regionEtaMargin_;
263 double phiLow = emItr.phi() - regionPhiMargin_;
264 double phiHigh = emItr.phi() + regionPhiMargin_;
HLTRechitInRegionsProducer(const edm::ParameterSet &ps)
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
std::string defaultModuleLabel()
std::vector< T1 > T1Collection
double etaBinHighEdge(unsigned int etaIndex, bool central=true) const
HLTRechitInRegionsProducer< reco::RecoChargedCandidate > MuonHLTRechitInRegionsProducer
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
const std::vector< edm::InputTag > hitLabels
CaloTopology const * topology(0)
double etaBinLowEdge(unsigned int etaIndex, bool central=true) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
HLTRechitInRegionsProducer< l1extra::L1EmParticle > EgammaHLTRechitInRegionsProducer
#define DEFINE_FWK_MODULE(type)
const std::vector< std::string > productLabels
std::vector< EcalUncalibratedRecHit >::const_iterator const_iterator
const L1GctEmCand * gctEmCand() const
unsigned phiIndex() const
get phi index (0-17)
std::vector< edm::EDGetTokenT< EcalRecHitCollection > > hitTokens
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
unsigned etaIndex() const
get eta index -6 to -0, +0 to +6 (bit 3 is sign, 1 for -ve Z, 0 for +ve Z)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
const_iterator end() const
void produce(edm::Event &, const edm::EventSetup &) override
T const * product() const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
~HLTRechitInRegionsProducer()
ESHandle< TrackerGeometry > geometry
static int position[264][3]
virtual double et() const final
transverse energy
double emJetPhiBinLowEdge(unsigned int phiIndex) const
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
void getEtaPhiRegions(std::vector< EcalEtaPhiRegion > *, T1Collection, const L1CaloGeometry &, bool)
const_iterator begin() const
std::vector< edm::EDGetTokenT< EcalUncalibratedRecHitCollection > > uncalibHitTokens
double emJetPhiBinHighEdge(unsigned int phiIndex) const