File indexing completed on 2024-04-06 12:14:13
0001 #include "GeneratorInterface/TauolaInterface/interface/TauSpinnerFilter.h"
0002
0003 #include "FWCore/Framework/interface/MakerMacros.h"
0004 #include "FWCore/ServiceRegistry/interface/Service.h"
0005 #include "FWCore/Utilities/interface/RandomNumberGenerator.h"
0006 #include "FWCore/Utilities/interface/Exception.h"
0007 #include "FWCore/ServiceRegistry/interface/RandomEngineSentry.h"
0008
0009 TauSpinnerFilter::TauSpinnerFilter(const edm::ParameterSet& pset)
0010 : WTToken_(consumes<double>(pset.getParameter<edm::InputTag>("src"))), fRandomEngine(nullptr), ntaus_(0) {
0011 if (pset.getParameter<int>("ntaus") == 1)
0012 ntaus_ = 1.0;
0013 if (pset.getParameter<int>("ntaus") == 2)
0014 ntaus_ = 2.0;
0015 }
0016
0017 bool TauSpinnerFilter::filter(edm::Event& e, edm::EventSetup const& es) {
0018 edm::RandomEngineSentry<TauSpinnerFilter> randomEngineSentry(this, e.streamID());
0019 const edm::Handle<double>& WT = e.getHandle(WTToken_);
0020 if (*(WT.product()) >= 0 && *(WT.product()) <= 4.0) {
0021 double weight = (*(WT.product()));
0022 if (fRandomEngine->flat() * ntaus_ * 2.0 < weight) {
0023 return true;
0024 }
0025 }
0026 return false;
0027 }
0028
0029 DEFINE_FWK_MODULE(TauSpinnerFilter);