CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
GaussianZBeamSpotFilter Class Reference

#include <GaussianZBeamSpotFilter.h>

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

Public Member Functions

 GaussianZBeamSpotFilter (const edm::ParameterSet &)
 
 ~GaussianZBeamSpotFilter ()
 
- Public Member Functions inherited from edm::EDFilter
 EDFilter ()
 
virtual ~EDFilter ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

virtual bool filter (edm::Event &, const edm::EventSetup &)
 

Private Attributes

double baseSZ_
 
double baseZ0_
 
CLHEP::RandFlat * fRandom
 
double newSZ_
 
double newZ0_
 
edm::InputTag src_
 

Additional Inherited Members

- Public Types inherited from edm::EDFilter
typedef EDFilter ModuleType
 
typedef WorkerT< EDFilterWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDFilter
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDFilter
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 22 of file GaussianZBeamSpotFilter.h.

Constructor & Destructor Documentation

GaussianZBeamSpotFilter::GaussianZBeamSpotFilter ( const edm::ParameterSet iPSet)
explicit

Definition at line 14 of file GaussianZBeamSpotFilter.cc.

References baseSZ_, baseZ0_, edm::hlt::Exception, fRandom, edm::RandomNumberGenerator::getEngine(), edm::Service< T >::isAvailable(), newSZ_, and newZ0_.

14  :
15  src_(iPSet.getParameter<edm::InputTag>("src")),
16  baseSZ_(iPSet.getParameter<double>("baseSZ")*cm),
17  baseZ0_(iPSet.getParameter<double>("baseZ0")*cm),
18  newSZ_(iPSet.getParameter<double>("newSZ")*cm),
19  newZ0_(iPSet.getParameter<double>("newZ0")*cm)
20 {
21 
23 
24  if ( ! rng.isAvailable()) {
25 
26  throw cms::Exception("Configuration")
27  << "The GaussianZBeamSpotFilter requires the RandomNumberGeneratorService\n"
28  "which is not present in the configuration file. You must add the service\n"
29  "in the configuration file or remove the modules that require it.";
30  }
31 
32  CLHEP::HepRandomEngine& engine = rng->getEngine();
33  fRandom = new CLHEP::RandFlat(engine);
34 
35  if ( baseZ0_ != newZ0_ ) {
36  edm::LogError("InconsistentZPosition") << "Z0 : old " << baseZ0_ << " and new " << newZ0_ << " are different";
37  }
38 
39  if ( baseSZ_ < newSZ_ ) {
40  edm::LogError("InconsistentZSigma") << "Sigma Z : old " << baseSZ_ << " smaller than new " << newSZ_ ;
41  }
42 
43 }
T getParameter(std::string const &) const
bool isAvailable() const
Definition: Service.h:47
virtual CLHEP::HepRandomEngine & getEngine() const =0
Use this to get the random number engine, this is the only function most users should call...
GaussianZBeamSpotFilter::~GaussianZBeamSpotFilter ( )

Definition at line 45 of file GaussianZBeamSpotFilter.cc.

45 {}

Member Function Documentation

bool GaussianZBeamSpotFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Implements edm::EDFilter.

Definition at line 47 of file GaussianZBeamSpotFilter.cc.

References baseSZ_, baseZ0_, create_public_lumi_plots::exp, fRandom, edm::Event::getByLabel(), newSZ_, newZ0_, and src_.

48 {
49 
50  bool pass = true;
51 
53 
54  iEvent.getByLabel( src_, HepMCEvt ) ;
55 
56  // HepMCEvt->GetEvent()->print();
57 
58  HepMC::GenEvent::vertex_const_iterator vitr= HepMCEvt->GetEvent()->vertex_range().begin();
59 
60  if ( vitr != HepMCEvt->GetEvent()->vertex_range().end() ) {
61 
62  double vtxZ = (*vitr)->point3d().z();
63  double gaussRatio = std::exp(-(vtxZ-newZ0_)*(vtxZ-newZ0_)/(2.0*newSZ_*newSZ_)+(vtxZ-baseZ0_)*(vtxZ-baseZ0_)/(2.0*baseSZ_*baseSZ_));
64  if ( fRandom->fire() > gaussRatio ) { pass = false; }
65  // std::cout << "base sigmaZ = " << baseSZ_ << " new sigmaZ = " << newSZ_ << " vtxZ = " << vtxZ << " gaussian ratio = " << gaussRatio << " pass = " << pass << std::endl;
66 
67  }
68 
69  return pass;
70 
71 }
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356

Member Data Documentation

double GaussianZBeamSpotFilter::baseSZ_
private

Definition at line 34 of file GaussianZBeamSpotFilter.h.

Referenced by filter(), and GaussianZBeamSpotFilter().

double GaussianZBeamSpotFilter::baseZ0_
private

Definition at line 35 of file GaussianZBeamSpotFilter.h.

Referenced by filter(), and GaussianZBeamSpotFilter().

CLHEP::RandFlat* GaussianZBeamSpotFilter::fRandom
private

Definition at line 39 of file GaussianZBeamSpotFilter.h.

Referenced by filter(), and GaussianZBeamSpotFilter().

double GaussianZBeamSpotFilter::newSZ_
private

Definition at line 36 of file GaussianZBeamSpotFilter.h.

Referenced by filter(), and GaussianZBeamSpotFilter().

double GaussianZBeamSpotFilter::newZ0_
private

Definition at line 37 of file GaussianZBeamSpotFilter.h.

Referenced by filter(), and GaussianZBeamSpotFilter().

edm::InputTag GaussianZBeamSpotFilter::src_
private

Definition at line 33 of file GaussianZBeamSpotFilter.h.

Referenced by filter().