File indexing completed on 2023-10-25 09:53:17
0001 #include "HLTHFAsymmetryFilter.h"
0002 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
0003 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0004
0005 HLTHFAsymmetryFilter::HLTHFAsymmetryFilter(const edm::ParameterSet& iConfig)
0006 : HFHitsToken_(consumes(iConfig.getParameter<edm::InputTag>("HFHitCollection"))),
0007 eCut_HF_(iConfig.getParameter<double>("ECut_HF")),
0008 os_asym_(iConfig.getParameter<double>("OS_Asym_max")),
0009 ss_asym_(iConfig.getParameter<double>("SS_Asym_min")) {}
0010
0011 HLTHFAsymmetryFilter::~HLTHFAsymmetryFilter() = default;
0012
0013 void HLTHFAsymmetryFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0014 edm::ParameterSetDescription desc;
0015 desc.add<edm::InputTag>("HFHitCollection", edm::InputTag("hltHfreco"));
0016 desc.add<double>("ECut_HF", 3.0)->setComment(" # minimum energy for a cluster to be selected");
0017 desc.add<double>("OS_Asym_max", 0.2)->setComment(" # Opposite side asymmetry maximum value");
0018 desc.add<double>("SS_Asym_min", 0.8)->setComment(" # Same side asymmetry minimum value");
0019 descriptions.add("hltHFAsymmetryFilter", desc);
0020 }
0021
0022
0023 bool HLTHFAsymmetryFilter::filter(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
0024 edm::Handle<HFRecHitCollection> HFRecHitsH;
0025 iEvent.getByToken(HFHitsToken_, HFRecHitsH);
0026
0027 double asym_hf_1 = -1;
0028 double asym_hf_2 = -1;
0029
0030 int n_hf[2] = {0, 0};
0031 double e_hf[2] = {0., 0.};
0032
0033
0034 for (auto const& it : *HFRecHitsH) {
0035 if (it.energy() > eCut_HF_) {
0036 if (it.id().zside() == -1) {
0037 ++n_hf[0];
0038 e_hf[0] += it.energy();
0039 } else {
0040 ++n_hf[1];
0041 e_hf[1] += it.energy();
0042 }
0043 }
0044 }
0045
0046 for (int i = 0; i < 2; ++i) {
0047 if (n_hf[i])
0048 e_hf[i] /= n_hf[i];
0049 }
0050
0051 if (e_hf[0] + e_hf[1] != 0) {
0052 asym_hf_1 = e_hf[0] / (e_hf[0] + e_hf[1]);
0053 asym_hf_2 = e_hf[1] / (e_hf[0] + e_hf[1]);
0054 } else {
0055 return false;
0056 }
0057
0058 bool pkam_1 = (asym_hf_1 >= ss_asym_ || asym_hf_1 <= os_asym_);
0059 bool pkam_2 = (asym_hf_2 >= ss_asym_ || asym_hf_2 <= os_asym_);
0060
0061 if (pkam_1 || pkam_2)
0062 return true;
0063
0064 return false;
0065 }
0066
0067
0068 #include "FWCore/Framework/interface/MakerMacros.h"
0069 DEFINE_FWK_MODULE(HLTHFAsymmetryFilter);