CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HepMCFilterDriver.cc
Go to the documentation of this file.
3 
5 
7  filter_(0),
8  numEventsPassPos_(0),
9  numEventsPassNeg_(0),
10  numEventsTotalPos_(0),
11  numEventsTotalNeg_(0),
12  sumpass_w_(0.),
13  sumpass_w2_(0.),
14  sumtotal_w_(0.),
15  sumtotal_w2_(0.)
16 {
17 
18  std::string filterName = pset.getParameter<std::string>("filterName");
19  edm::ParameterSet filterParameters = pset.getParameter<edm::ParameterSet>("filterParameters");
20 
21  if (filterName=="GenericDauHepMCFilter") {
22  filter_ = new GenericDauHepMCFilter(filterParameters);
23  }
24  else {
25  edm::LogError("HepMCFilterDriver")<< "Invalid HepMCFilter name:" << filterName;
26  }
27 
28 }
29 
31 {
32  if (filter_) delete filter_;
33 
34 }
35 
36 bool HepMCFilterDriver::filter(const HepMC::GenEvent* evt, double weight)
37 {
38  if(weight>0)
40  else
42 
44  sumtotal_w2_ += weight*weight;
45 
46 
47  bool accepted = filter_->filter(evt);
48 
49  if (accepted) {
50 
51  if(weight>0)
53  else
55  sumpass_w_ += weight;
56  sumpass_w2_ += weight*weight;
57 
58  }
59 
60  return accepted;
61 }
62 
64 {
65 
66  unsigned int ntried_ = numEventsTotalPos_ + numEventsTotalNeg_;
67  unsigned int naccepted_ = numEventsPassPos_ + numEventsPassNeg_;
68  printf("ntried = %i, naccepted = %i, efficiency = %5f\n",ntried_,naccepted_,(double)naccepted_/(double)ntried_);
69  printf("weighttried = %5f, weightaccepted = %5f, efficiency = %5f\n",sumtotal_w_,sumpass_w_,sumpass_w_/sumtotal_w_);
70 
71 }
72 
73 
75 
80  sumpass_w_ = 0;
81  sumpass_w2_ = 0;
82  sumtotal_w_ = 0;
83  sumtotal_w2_ = 0;
84 
85 }
T getParameter(std::string const &) const
unsigned int numEventsPassPos_
unsigned int numEventsTotalPos_
HepMCFilterDriver(const edm::ParameterSet &)
unsigned int numEventsPassNeg_
BaseHepMCFilter * filter_
void statistics() const
unsigned int numEventsTotalNeg_
virtual bool filter(const HepMC::GenEvent *evt)=0
bool filter(const HepMC::GenEvent *evt, double weight=1.)