CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalNoiseAlgo.cc
Go to the documentation of this file.
2 
4 {
5  // energy
6  energy_ = rbx.recHitEnergy(minRecHitE);
7 
8  // ratio
10  e10ts_ = rbx.allChargeTotal();
11 
12  // # of hits
13  numHPDHits_ = 0;
14  for(std::vector<reco::HcalNoiseHPD>::const_iterator it1=rbx.HPDsBegin(); it1!=rbx.HPDsEnd(); ++it1) {
15  int nhpdhits=it1->numRecHits(minRecHitE);
16  if(numHPDHits_ < nhpdhits) numHPDHits_ = nhpdhits;
17  }
18  numRBXHits_ = rbx.numRecHits(minRecHitE);
20 
21  // # of ADC zeros
22  numZeros_ = rbx.totalZeros();
23 
24  // timing
29  for(std::vector<reco::HcalNoiseHPD>::const_iterator it1=rbx.HPDsBegin(); it1!=rbx.HPDsEnd(); ++it1) {
30  edm::RefVector<HBHERecHitCollection> rechits=it1->recHits();
31  for(edm::RefVector<HBHERecHitCollection>::const_iterator it2=rechits.begin(); it2!=rechits.end(); ++it2) {
32  float energy=(*it2)->energy();
33  float time=(*it2)->time();
34  if(energy>=minLowHitE) {
37  lowEHitTimeSqrd_ += time*time;
38  ++numLowEHits_;
39  }
40  if(energy>=minHighHitE) {
43  highEHitTimeSqrd_ += time*time;
44  ++numHighEHits_;
45  }
46  }
47  }
48 
49  // emf
50  HPDEMF_ = 999.;
51  for(std::vector<reco::HcalNoiseHPD>::const_iterator it1=rbx.HPDsBegin(); it1!=rbx.HPDsEnd(); ++it1) {
52  double eme=it1->caloTowerEmE();
53  double hade=it1->recHitEnergy(minRecHitE);
54  double emf=(eme+hade)==0 ? 999 : eme/(eme+hade);
55  if(HPDEMF_ > emf) emf = HPDEMF_;
56  }
57  double eme=rbx.caloTowerEmE();
58  RBXEMF_ = (eme+energy_)==0 ? 999 : eme/(eme+energy_);
59 
60  // calotowers
61  rbxtowers_.clear();
63  for(std::vector<reco::HcalNoiseHPD>::const_iterator it1=rbx.HPDsBegin(); it1!=rbx.HPDsEnd(); ++it1) {
64  join(rbxtowers_, it1->caloTowers());
65  }
66 
67  return;
68 }
69 
71 {
72  pMinERatio_ = iConfig.getParameter<double>("pMinERatio");
73  pMinEZeros_ = iConfig.getParameter<double>("pMinEZeros");
74  pMinEEMF_ = iConfig.getParameter<double>("pMinEEMF");
75 
76  minERatio_ = iConfig.getParameter<double>("minERatio");
77  minEZeros_ = iConfig.getParameter<double>("minEZeros");
78  minEEMF_ = iConfig.getParameter<double>("minEEMF");
79 
80  pMinE_ = iConfig.getParameter<double>("pMinE");
81  pMinRatio_ = iConfig.getParameter<double>("pMinRatio");
82  pMaxRatio_ = iConfig.getParameter<double>("pMaxRatio");
83  pMinHPDHits_ = iConfig.getParameter<int>("pMinHPDHits");
84  pMinRBXHits_ = iConfig.getParameter<int>("pMinRBXHits");
85  pMinHPDNoOtherHits_ = iConfig.getParameter<int>("pMinHPDNoOtherHits");
86  pMinZeros_ = iConfig.getParameter<int>("pMinZeros");
87  pMinLowEHitTime_ = iConfig.getParameter<double>("pMinLowEHitTime");
88  pMaxLowEHitTime_ = iConfig.getParameter<double>("pMaxLowEHitTime");
89  pMinHighEHitTime_ = iConfig.getParameter<double>("pMinHighEHitTime");
90  pMaxHighEHitTime_ = iConfig.getParameter<double>("pMaxHighEHitTime");
91  pMaxHPDEMF_ = iConfig.getParameter<double>("pMaxHPDEMF");
92  pMaxRBXEMF_ = iConfig.getParameter<double>("pMaxRBXEMF");
93 
94  lMinRatio_ = iConfig.getParameter<double>("lMinRatio");
95  lMaxRatio_ = iConfig.getParameter<double>("lMaxRatio");
96  lMinHPDHits_ = iConfig.getParameter<int>("lMinHPDHits");
97  lMinRBXHits_ = iConfig.getParameter<int>("lMinRBXHits");
98  lMinHPDNoOtherHits_ = iConfig.getParameter<int>("lMinHPDNoOtherHits");
99  lMinZeros_ = iConfig.getParameter<int>("lMinZeros");
100  lMinLowEHitTime_ = iConfig.getParameter<double>("lMinLowEHitTime");
101  lMaxLowEHitTime_ = iConfig.getParameter<double>("lMaxLowEHitTime");
102  lMinHighEHitTime_ = iConfig.getParameter<double>("lMinHighEHitTime");
103  lMaxHighEHitTime_ = iConfig.getParameter<double>("lMaxHighEHitTime");
104 
105  tMinRatio_ = iConfig.getParameter<double>("tMinRatio");
106  tMaxRatio_ = iConfig.getParameter<double>("tMaxRatio");
107  tMinHPDHits_ = iConfig.getParameter<int>("tMinHPDHits");
108  tMinRBXHits_ = iConfig.getParameter<int>("tMinRBXHits");
109  tMinHPDNoOtherHits_ = iConfig.getParameter<int>("tMinHPDNoOtherHits");
110  tMinZeros_ = iConfig.getParameter<int>("tMinZeros");
111  tMinLowEHitTime_ = iConfig.getParameter<double>("tMinLowEHitTime");
112  tMaxLowEHitTime_ = iConfig.getParameter<double>("tMaxLowEHitTime");
113  tMinHighEHitTime_ = iConfig.getParameter<double>("tMinHighEHitTime");
114  tMaxHighEHitTime_ = iConfig.getParameter<double>("tMaxHighEHitTime");
115 
116  hlMaxHPDEMF_ = iConfig.getParameter<double>("hlMaxHPDEMF");
117  hlMaxRBXEMF_ = iConfig.getParameter<double>("hlMaxRBXEMF");
118 }
119 
121 {
122  if(data.energy()>pMinE_) return true;
123  if(data.validRatio() && data.energy()>pMinERatio_ && data.ratio()<pMinRatio_) return true;
124  if(data.validRatio() && data.energy()>pMinERatio_ && data.ratio()>pMaxRatio_) return true;
125  if(data.numHPDHits()>=pMinHPDHits_) return true;
126  if(data.numRBXHits()>=pMinRBXHits_) return true;
127  if(data.numHPDNoOtherHits()>=pMinHPDNoOtherHits_) return true;
128  if(data.numZeros()>=pMinZeros_ && data.energy()>pMinEZeros_) return true;
129  if(data.minLowEHitTime()<pMinLowEHitTime_) return true;
130  if(data.maxLowEHitTime()>pMaxLowEHitTime_) return true;
131  if(data.minHighEHitTime()<pMinHighEHitTime_) return true;
132  if(data.maxHighEHitTime()>pMaxHighEHitTime_) return true;
133  if(data.HPDEMF()<pMaxHPDEMF_ && data.energy()>pMinEEMF_) return true;
134  if(data.RBXEMF()<pMaxRBXEMF_ && data.energy()>pMinEEMF_) return true; return false;
135 }
136 
137 
139 {
140  return (passLooseRatio(data) && passLooseHits(data) && passLooseZeros(data) && passLooseTiming(data));
141 }
142 
144 {
145  return (passTightRatio(data) && passTightHits(data) && passTightZeros(data) && passTightTiming(data));
146 }
147 
149 {
150  if(passEMFThreshold(data)) {
151  if(data.HPDEMF()<hlMaxHPDEMF_) return false;
152  if(data.RBXEMF()<hlMaxRBXEMF_) return false;
153  }
154  return true;
155 }
156 
158 {
159  if(passRatioThreshold(data)) {
160  if(data.validRatio() && data.ratio()<lMinRatio_) return false;
161  if(data.validRatio() && data.ratio()>lMaxRatio_) return false;
162  }
163  return true;
164 }
165 
167 {
168  if(data.numHPDHits()>=lMinHPDHits_) return false;
169  if(data.numRBXHits()>=lMinRBXHits_) return false;
170  if(data.numHPDNoOtherHits()>=lMinHPDNoOtherHits_) return false;
171  return true;
172 }
173 
175 {
176  if(passZerosThreshold(data)) {
177  if(data.numZeros()>=lMinZeros_) return false;
178  }
179  return true;
180 }
181 
183 {
184  if(data.minLowEHitTime()<lMinLowEHitTime_) return false;
185  if(data.maxLowEHitTime()>lMaxLowEHitTime_) return false;
186  if(data.minHighEHitTime()<lMinHighEHitTime_) return false;
187  if(data.maxHighEHitTime()>lMaxHighEHitTime_) return false;
188  return true;
189 }
190 
192 {
193  if(passRatioThreshold(data)) {
194  if(data.validRatio() && data.ratio()<tMinRatio_) return false;
195  if(data.validRatio() && data.ratio()>tMaxRatio_) return false;
196  }
197  return true;
198 }
199 
201 {
202  if(data.numHPDHits()>=tMinHPDHits_) return false;
203  if(data.numRBXHits()>=tMinRBXHits_) return false;
204  if(data.numHPDNoOtherHits()>=tMinHPDNoOtherHits_) return false;
205  return true;
206 }
207 
209 {
210  if(passZerosThreshold(data)) {
211  if(data.numZeros()>=tMinZeros_) return false;
212  }
213  return true;
214 }
215 
217 {
218  if(data.minLowEHitTime()<tMinLowEHitTime_) return false;
219  if(data.maxLowEHitTime()>tMaxLowEHitTime_) return false;
220  if(data.minHighEHitTime()<tMinHighEHitTime_) return false;
221  if(data.maxHighEHitTime()>tMaxHighEHitTime_) return false;
222  return true;
223 }
224 
226 {
227  return (data.energy()>minERatio_);
228 }
229 
231 {
232  return (data.energy()>minEZeros_);
233 }
234 
236 {
237  return (data.energy()>minEEMF_);
238 }
239 
241 {
242  // combines them first into a set to get rid of duplicates and then puts them into the first vector
243 
244  // sorts them first to get rid of duplicates, then puts them into another RefVector
245  twrrefset_t twrrefset;
247  twrrefset.insert(*it);
249  twrrefset.insert(*it);
250 
251  // clear the original refvector and put them back in
252  v1.clear();
253  for(twrrefset_t::const_iterator it=twrrefset.begin(); it!=twrrefset.end(); ++it) {
254  v1.push_back(*it);
255  }
256  return;
257 }
double HPDEMF(void) const
Definition: HcalNoiseAlgo.h:36
T getParameter(std::string const &) const
bool isProblematic(const CommonHcalNoiseRBXData &) const
bool passTightRatio(const CommonHcalNoiseRBXData &) const
double pMaxHPDEMF_
double minLowEHitTime(void) const
Definition: HcalNoiseAlgo.h:27
float allChargeHighest2TS(unsigned int firstts=4) const
Definition: HcalNoiseRBX.cc:65
double hlMaxRBXEMF_
double pMinERatio_
bool passLooseRatio(const CommonHcalNoiseRBXData &) const
double maxHighEHitTime(void) const
Definition: HcalNoiseAlgo.h:32
bool passTightTiming(const CommonHcalNoiseRBXData &) const
double maxLowEHitTime(void) const
Definition: HcalNoiseAlgo.h:28
double pMinHighEHitTime_
std::vector< HcalNoiseHPD >::const_iterator HPDsBegin(void) const
Definition: HcalNoiseRBX.h:61
double ratio(void) const
Definition: HcalNoiseAlgo.h:19
int numRecHits(double threshold=1.5) const
CommonHcalNoiseRBXData(const reco::HcalNoiseRBX &rbx, double minRecHitE, double minLowHitE, double minHighHitE)
Definition: HcalNoiseAlgo.cc:3
std::vector< HcalNoiseHPD >::const_iterator HPDsEnd(void) const
Definition: HcalNoiseRBX.h:62
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:242
edm::RefVector< CaloTowerCollection > rbxtowers_
Definition: HcalNoiseAlgo.h:59
bool passHighLevelNoiseFilter(const CommonHcalNoiseRBXData &) const
double tMaxHighEHitTime_
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:237
double RBXEMF(void) const
Definition: HcalNoiseAlgo.h:35
double lMaxHighEHitTime_
double caloTowerEmE(void) const
int numRBXHits(void) const
Definition: HcalNoiseAlgo.h:24
double pMinEZeros_
std::set< edm::Ref< CaloTowerCollection >, twrrefcomp > twrrefset_t
bool passLooseZeros(const CommonHcalNoiseRBXData &) const
double tMinHighEHitTime_
double recHitEnergy(double theshold=1.5) const
Definition: HcalNoiseRBX.cc:99
float allChargeTotal(void) const
Definition: HcalNoiseRBX.cc:57
double pMaxHighEHitTime_
double lMinLowEHitTime_
bool passTightZeros(const CommonHcalNoiseRBXData &) const
double tMinLowEHitTime_
bool passRatioThreshold(const CommonHcalNoiseRBXData &) const
void operator()(edm::RefVector< CaloTowerCollection > &v1, const edm::RefVector< CaloTowerCollection > &v2) const
int numHPDNoOtherHits(void) const
Definition: HcalNoiseAlgo.h:25
int numZeros(void) const
Definition: HcalNoiseAlgo.h:26
double pMaxLowEHitTime_
double pMinLowEHitTime_
bool passZerosThreshold(const CommonHcalNoiseRBXData &) const
bool passLooseNoiseFilter(const CommonHcalNoiseRBXData &) const
HcalNoiseAlgo(const edm::ParameterSet &iConfig)
bool passLooseHits(const CommonHcalNoiseRBXData &) const
int totalZeros(void) const
Definition: HcalNoiseRBX.cc:82
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
void clear()
Clear the vector.
Definition: RefVector.h:129
double pMaxRBXEMF_
double energy(void) const
Definition: HcalNoiseAlgo.h:18
bool passLooseTiming(const CommonHcalNoiseRBXData &) const
bool passTightNoiseFilter(const CommonHcalNoiseRBXData &) const
double minHighEHitTime(void) const
Definition: HcalNoiseAlgo.h:31
double lMaxLowEHitTime_
double lMinHighEHitTime_
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:61
bool passEMFThreshold(const CommonHcalNoiseRBXData &) const
int numHPDHits(void) const
Definition: HcalNoiseAlgo.h:23
double tMaxLowEHitTime_
bool validRatio(void) const
Definition: HcalNoiseAlgo.h:22
double hlMaxHPDEMF_
bool passTightHits(const CommonHcalNoiseRBXData &) const