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.
4 
5 
7 
9  filter_(0),
10  numEventsPassPos_(0),
11  numEventsPassNeg_(0),
12  numEventsTotalPos_(0),
13  numEventsTotalNeg_(0),
14  sumpass_w_(0.),
15  sumpass_w2_(0.),
16  sumtotal_w_(0.),
17  sumtotal_w2_(0.)
18 {
19 
20  std::string filterName = pset.getParameter<std::string>("filterName");
21  edm::ParameterSet filterParameters = pset.getParameter<edm::ParameterSet>("filterParameters");
22 
23  if (filterName=="GenericDauHepMCFilter") {
24  filter_ = new GenericDauHepMCFilter(filterParameters);
25  }
26  else if (filterName=="PartonShowerBsHepMCFilter") {
27  filter_ = new PartonShowerBsHepMCFilter(filterParameters);
28  }
29  else {
30  edm::LogError("HepMCFilterDriver")<< "Invalid HepMCFilter name:" << filterName;
31  }
32 
33 }
34 
36 {
37  if (filter_) delete filter_;
38 
39 }
40 
41 bool HepMCFilterDriver::filter(const HepMC::GenEvent* evt, double weight)
42 {
43  if(weight>0)
45  else
47 
49  sumtotal_w2_ += weight*weight;
50 
51 
52  bool accepted = filter_->filter(evt);
53 
54  if (accepted) {
55 
56  if(weight>0)
58  else
60  sumpass_w_ += weight;
61  sumpass_w2_ += weight*weight;
62 
63  }
64 
65  return accepted;
66 }
67 
69 {
70 
71  unsigned int ntried_ = numEventsTotalPos_ + numEventsTotalNeg_;
72  unsigned int naccepted_ = numEventsPassPos_ + numEventsPassNeg_;
73  printf("ntried = %i, naccepted = %i, efficiency = %5f\n",ntried_,naccepted_,(double)naccepted_/(double)ntried_);
74  printf("weighttried = %5f, weightaccepted = %5f, efficiency = %5f\n",sumtotal_w_,sumpass_w_,sumpass_w_/sumtotal_w_);
75 
76 }
77 
78 
80 
85  sumpass_w_ = 0;
86  sumpass_w2_ = 0;
87  sumtotal_w_ = 0;
88  sumtotal_w2_ = 0;
89 
90 }
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.)