Back to home page

Project CMSSW displayed by LXR

 
 

    


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 // ------------ method called to produce the data  ------------
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   //Select interesting HFRecHits
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 // declare this class as a framework plugin
0068 #include "FWCore/Framework/interface/MakerMacros.h"
0069 DEFINE_FWK_MODULE(HLTHFAsymmetryFilter);