CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

HiCentralityBiasFilter Class Reference

#include <yetkin/HiCentralityBiasFilter/src/HiCentralityBiasFilter.cc>

Inheritance diagram for HiCentralityBiasFilter:
edm::EDFilter edm::ProducerBase edm::ProductRegistryHelper

List of all members.

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_

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 51 of file HiCentralityBiasFilter.cc.


Constructor & Destructor Documentation

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.)

}

Member Function Documentation

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]

Reimplemented from edm::EDFilter.

Definition at line 149 of file HiCentralityBiasFilter.cc.

                               {
}
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;

}

Member Data Documentation

Definition at line 65 of file HiCentralityBiasFilter.cc.

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.