CMS 3D CMS Logo

GenFilterInfo.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <algorithm>
3 #include <utility>
4 
6 
8 
9 using namespace edm;
10 using namespace std;
11 
13  numPassPositiveEvents_(0),
14  numPassNegativeEvents_(0),
15  numTotalPositiveEvents_(0),
16  numTotalNegativeEvents_(0),
17  sumPassWeights_(0.),
18  sumPassWeights2_(0.),
19  sumTotalWeights_(0.),
20  sumTotalWeights2_(0.)
21 {
22 }
23 
24 GenFilterInfo::GenFilterInfo(unsigned int tried, unsigned int pass) :
29  sumPassWeights_(pass),
30  sumPassWeights2_(pass),
31  sumTotalWeights_(tried),
32  sumTotalWeights2_(tried)
33 {
34 }
35 
36 GenFilterInfo::GenFilterInfo(unsigned int passp, unsigned int passn, unsigned int totalp, unsigned int totaln,
37  double passw, double passw2, double totalw, double totalw2) :
42  sumPassWeights_(passw),
43  sumPassWeights2_(passw2),
44  sumTotalWeights_(totalw),
45  sumTotalWeights2_(totalw2)
46 {
47 }
48 
58 {
59 }
60 
62 {
63 }
64 
66 {
67  // merging two GenFilterInfos means that the numerator and
68  // denominator from the original product need to besummed with
69  // those in the product we are going to merge
70 
79 
80  return true;
81 }
82 
92 }
93 
94 double GenFilterInfo::filterEfficiency(int idwtup) const {
95  double eff = -1;
96  switch(idwtup) {
97  case 3: case -3:
98  eff = numEventsTotal() > 0 ? (double) numEventsPassed() / (double) numEventsTotal(): -1;
99  break;
100  default:
101  eff = sumWeights() > 0? sumPassWeights()/sumWeights(): -1;
102  break;
103  }
104  return eff;
105 
106 }
107 
108 double GenFilterInfo::filterEfficiencyError(int idwtup) const {
109 
110  double efferr = -1;
111  switch(idwtup) {
112  case 3: case -3:
113  {
114  double effp = numTotalPositiveEvents() > 0?
115  (double)numPassPositiveEvents()/(double)numTotalPositiveEvents():0;
116  double effp_err2 = numTotalPositiveEvents() > 0?
117  (1-effp)*effp/(double)numTotalPositiveEvents(): 0;
118 
119  double effn = numTotalNegativeEvents() > 0?
120  (double)numPassNegativeEvents()/(double)numTotalNegativeEvents():0;
121  double effn_err2 = numTotalNegativeEvents() > 0?
122  (1-effn)*effn/(double)numTotalNegativeEvents(): 0;
123 
124  efferr = numEventsTotal() > 0 ? sqrt (
125  ((double)numTotalPositiveEvents()*(double)numTotalPositiveEvents()*effp_err2 +
126  (double)numTotalNegativeEvents()*(double)numTotalNegativeEvents()*effn_err2)
127  /(double)numEventsTotal()/(double)numEventsTotal()
128  ) : -1;
129  break;
130  }
131  default:
132  {
134  double numerator =
137  efferr = denominator>0?
138  sqrt(numerator/denominator):-1;
139  break;
140  }
141  }
142 
143  return efferr;
144 }
void swap(GenFilterInfo &other)
double sumTotalWeights_
Definition: GenFilterInfo.h:58
unsigned int numTotalPositiveEvents() const
Definition: GenFilterInfo.h:28
double filterEfficiency(int idwtup=+3) const
virtual ~GenFilterInfo()
double sumFailWeights2() const
Definition: GenFilterInfo.h:38
bool mergeProduct(GenFilterInfo const &other)
double sumPassWeights() const
Definition: GenFilterInfo.h:34
unsigned int numEventsPassed() const
Definition: GenFilterInfo.h:24
unsigned int numTotalNegativeEvents_
Definition: GenFilterInfo.h:54
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
T sqrt(T t)
Definition: SSEVec.h:18
unsigned int numPassNegativeEvents_
Definition: GenFilterInfo.h:52
double sumPassWeights_
Definition: GenFilterInfo.h:56
unsigned int numPassPositiveEvents_
Definition: GenFilterInfo.h:51
unsigned int numTotalNegativeEvents() const
Definition: GenFilterInfo.h:31
unsigned int numTotalPositiveEvents_
Definition: GenFilterInfo.h:53
unsigned int numEventsTotal() const
Definition: GenFilterInfo.h:25
double sumFailWeights() const
Definition: GenFilterInfo.h:37
double filterEfficiencyError(int idwtup=+3) const
double sumTotalWeights2_
Definition: GenFilterInfo.h:59
unsigned int numPassPositiveEvents() const
Definition: GenFilterInfo.h:27
HLT enums.
double sumPassWeights2_
Definition: GenFilterInfo.h:57
double sumPassWeights2() const
Definition: GenFilterInfo.h:35
double sumWeights() const
Definition: GenFilterInfo.h:40
unsigned int numPassNegativeEvents() const
Definition: GenFilterInfo.h:30