File indexing completed on 2023-03-17 11:09:43
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022
0023 #include "FWCore/Framework/interface/Frameworkfwd.h"
0024 #include "FWCore/Framework/interface/global/EDFilter.h"
0025 #include "FWCore/Framework/interface/Event.h"
0026
0027 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0028 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0029 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0030
0031 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0032
0033 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
0034 #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHit.h"
0035 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
0036
0037
0038
0039
0040
0041 class EcalSimpleUncalibRecHitFilter : public edm::global::EDFilter<> {
0042 public:
0043 explicit EcalSimpleUncalibRecHitFilter(const edm::ParameterSet &);
0044 ~EcalSimpleUncalibRecHitFilter() override;
0045
0046 static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
0047
0048 private:
0049 bool filter(edm::StreamID, edm::Event &, edm::EventSetup const &) const override;
0050
0051
0052 const edm::EDGetTokenT<EcalUncalibratedRecHitCollection> EcalUncalibRecHitToken_;
0053 const double minAdc_;
0054 const std::vector<int> maskedList_;
0055 };
0056
0057
0058
0059
0060 EcalSimpleUncalibRecHitFilter::EcalSimpleUncalibRecHitFilter(const edm::ParameterSet &iConfig)
0061 : EcalUncalibRecHitToken_(consumes<EcalUncalibratedRecHitCollection>(
0062 iConfig.getParameter<edm::InputTag>("EcalUncalibRecHitCollection"))),
0063 minAdc_(iConfig.getUntrackedParameter<double>("adcCut", 12)),
0064 maskedList_(iConfig.getUntrackedParameter<std::vector<int>>("maskedChannels",
0065 std::vector<int>{}))
0066 {
0067
0068 }
0069
0070 EcalSimpleUncalibRecHitFilter::~EcalSimpleUncalibRecHitFilter() {
0071
0072
0073 }
0074
0075
0076
0077
0078
0079
0080 bool EcalSimpleUncalibRecHitFilter::filter(edm::StreamID, edm::Event &iEvent, edm::EventSetup const &iSetup) const {
0081 using namespace edm;
0082
0083
0084 Handle<EcalUncalibratedRecHitCollection> crudeHits;
0085 if (not iEvent.getByToken(EcalUncalibRecHitToken_, crudeHits)) {
0086 edm::EDConsumerBase::Labels labels;
0087 labelsForToken(EcalUncalibRecHitToken_, labels);
0088 LogWarning("EcalSimpleUncalibRecHitFilter")
0089 << "InputTag: label = \"" << labels.module << "\", instance = \"" << labels.productInstance
0090 << "\", process = \"" << labels.process << "\" is not available";
0091 return false;
0092 }
0093
0094 bool thereIsSignal = false;
0095
0096 for (auto hit : *crudeHits) {
0097
0098 auto result = std::find(maskedList_.begin(), maskedList_.end(), EBDetId(hit.id()).hashedIndex());
0099 if (result != maskedList_.end())
0100
0101 continue;
0102
0103 float ampli_ = hit.amplitude();
0104
0105
0106 if (ampli_ >= minAdc_) {
0107 thereIsSignal = true;
0108
0109
0110
0111
0112 break;
0113 }
0114 }
0115
0116 return thereIsSignal;
0117 }
0118
0119 void EcalSimpleUncalibRecHitFilter::fillDescriptions(edm::ConfigurationDescriptions &descriptions) {
0120 edm::ParameterSetDescription desc;
0121
0122 desc.add<edm::InputTag>("EcalUncalibRecHitCollection",
0123 edm::InputTag("ecalWeightUncalibRecHit", "EcalUncalibRecHitsEB"));
0124 desc.addUntracked<double>("adcCut", 12.);
0125 desc.addUntracked<std::vector<int>>("maskedChannels", std::vector<int>{});
0126
0127 descriptions.add("ecalSimpleUncalibRecHitFilter", desc);
0128 }
0129
0130
0131 #include "FWCore/Framework/interface/MakerMacros.h"
0132 DEFINE_FWK_MODULE(EcalSimpleUncalibRecHitFilter);