File indexing completed on 2024-04-06 12:11:16
0001 #include "FastSimulation/ForwardDetectors/plugins/FastSimDataFilter.h"
0002
0003 #include "FWCore/Framework/interface/Frameworkfwd.h"
0004 #include "FWCore/Framework/interface/Event.h"
0005 #include "FWCore/Framework/interface/EventSetup.h"
0006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008 #include "FWCore/Framework/interface/MakerMacros.h"
0009 #include "FWCore/Framework/interface/ESHandle.h"
0010 #include "FWCore/PluginManager/interface/ModuleDef.h"
0011 #include "FWCore/ServiceRegistry/interface/Service.h"
0012 #include "DataFormats/DetId/interface/DetId.h"
0013 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
0014
0015 using namespace std;
0016 namespace cms {
0017
0018 FastSimDataFilter::FastSimDataFilter(const edm::ParameterSet& conf)
0019 : tokTowers_(consumes<CaloTowerCollection>(edm::InputTag("towerMaker"))),
0020 towercut(conf.getUntrackedParameter<double>("towercut", 1.4)) {}
0021
0022 void FastSimDataFilter::beginJob() {
0023 ntotal = 0;
0024 npassed = 0;
0025 }
0026 void FastSimDataFilter::endJob() {
0027 edm::LogVerbatim("FastSimDataFilter") << " FastSimDataFilter: accepted " << npassed << " out of total " << ntotal;
0028 }
0029
0030 bool FastSimDataFilter::filter(edm::Event& event, const edm::EventSetup& setup) {
0031 ntotal++;
0032 bool result = false;
0033
0034 const edm::Handle<CaloTowerCollection>& towers = event.getHandle(tokTowers_);
0035 CaloTowerCollection::const_iterator cal;
0036
0037 int nplusP = 0;
0038 int nminusP = 0;
0039 int nplusR = 0;
0040 int nminusR = 0;
0041
0042 for (cal = towers->begin(); cal != towers->end(); ++cal) {
0043
0044
0045
0046
0047
0048 double eta = cal->eta();
0049 double en = cal->energy();
0050
0051
0052 math::RhoEtaPhiVector mom(cal->et(), cal->eta(), cal->phi());
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063 if (en > towercut && eta > 3.1 && eta < 3.5)
0064 nplusP++;
0065 if (en > towercut && eta < -3.1 && eta > -3.5)
0066 nminusP++;
0067 if (en > towercut && eta > 3.9 && eta < 4.6)
0068 nplusR++;
0069 if (en > towercut && eta < -3.9 && eta > -4.6)
0070 nminusR++;
0071
0072 }
0073
0074 if ((nplusP * nminusP >= 1) || (nplusR * nminusR >= 1) || (nplusP * nminusR >= 1) || (nplusR * nminusP >= 1)) {
0075 result = true;
0076 npassed++;
0077 }
0078
0079 return result;
0080 }
0081 }
0082
0083
0084 #include "FWCore/Framework/interface/MakerMacros.h"
0085 using namespace cms;
0086 DEFINE_FWK_MODULE(FastSimDataFilter);