![]() |
![]() |
#include <yetkin/HiCentralityBiasFilter/src/HiCentralityBiasFilter.cc>
Public Member Functions | |
HiCentralityBiasFilter (const edm::ParameterSet &) | |
~HiCentralityBiasFilter () | |
Private Member Functions | |
virtual void | beginJob () |
virtual void | endJob () |
virtual bool | filter (edm::Event &, const edm::EventSetup &) |
Private Attributes | |
TF1 * | fBias_ |
string | func_ |
edm::InputTag | hepmcSrc_ |
vector< double > | par_ |
edm::Service < edm::RandomNumberGenerator > | rng_ |
Description: <one line="" class="" summary>="">
Implementation: <Notes on="" implementation>="">
Definition at line 51 of file HiCentralityBiasFilter.cc.
HiCentralityBiasFilter::HiCentralityBiasFilter | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 82 of file HiCentralityBiasFilter.cc.
References edm::ParameterSet::getParameter(), and edm::ParameterSet::getUntrackedParameter().
{ //now do what ever initialization is needed hepmcSrc_ = iConfig.getUntrackedParameter<edm::InputTag>("src", edm::InputTag("generator")); func_ = iConfig.getParameter<string>("function"); par_ = iConfig.getParameter<vector<double> >("parameters"); }
HiCentralityBiasFilter::~HiCentralityBiasFilter | ( | ) |
Definition at line 91 of file HiCentralityBiasFilter.cc.
{ // do anything here that needs to be done at desctruction time // (e.g. close files, deallocate resources etc.) }
void HiCentralityBiasFilter::beginJob | ( | void | ) | [private, virtual] |
Reimplemented from edm::EDFilter.
Definition at line 132 of file HiCentralityBiasFilter.cc.
References Exception.
{ fBias_ = new TF1("fBias",func_.data(),0,20); for(size_t ip = 0; ip < par_.size(); ++ip){ fBias_->SetParameter(ip,par_[ip]); } double maxpoint = fBias_->GetMaximum(-0.1,20); if(maxpoint < 0.9) throw cms::Exception("HeavyIonCentralityBias")<<"Input bias function is not optimized. Peak value is "<<maxpoint<<" which is required to be close to 1. Please fix the parameters before production."<<endl; }
void HiCentralityBiasFilter::endJob | ( | void | ) | [private, virtual] |
bool HiCentralityBiasFilter::filter | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [private, virtual] |
Implements edm::EDFilter.
Definition at line 106 of file HiCentralityBiasFilter.cc.
References b, and edm::Event::getByLabel().
{ using namespace edm; CLHEP::HepRandomEngine& engine = rng_->getEngine(); Handle<HepMCProduct> mc; iEvent.getByLabel(hepmcSrc_,mc); const HepMC::GenEvent* evt = mc->GetEvent(); const HepMC::HeavyIon* hi = evt->heavy_ion(); if(!hi) return false; double b = hi->impact_parameter(); double bound = fBias_->Eval(b); double rand = engine.flat(); if(rand > bound) return false; return true; }
TF1* HiCentralityBiasFilter::fBias_ [private] |
Definition at line 65 of file HiCentralityBiasFilter.cc.
string HiCentralityBiasFilter::func_ [private] |
Definition at line 66 of file HiCentralityBiasFilter.cc.
Definition at line 61 of file HiCentralityBiasFilter.cc.
vector<double> HiCentralityBiasFilter::par_ [private] |
Definition at line 67 of file HiCentralityBiasFilter.cc.
Definition at line 63 of file HiCentralityBiasFilter.cc.