10 double minRBXRechitR45E)
11 : r45Count_(0), r45Fraction_(0), r45EnergyFraction_(0) {
21 if (
energy_ > TS4TS5EnergyThreshold)
23 std::vector<float> AllCharge = rbx.
allCharge();
24 double BaseCharge = AllCharge[4] + AllCharge[5];
27 double TS4TS5 = (AllCharge[4] - AllCharge[5]) / BaseCharge;
37 int rbxHitCount = rbx.
numRecHits(minRBXRechitR45E);
41 if (rbxHitCount > 0) {
49 for (std::vector<reco::HcalNoiseHPD>::const_iterator it1 = rbx.
HPDsBegin(); it1 != rbx.
HPDsEnd(); ++it1) {
50 int nhpdhits = it1->numRecHits(minRecHitE);
65 for (std::vector<reco::HcalNoiseHPD>::const_iterator it1 = rbx.
HPDsBegin(); it1 != rbx.
HPDsEnd(); ++it1) {
68 float energy = (*it2)->energy();
69 float time = (*it2)->time();
70 if (energy >= minLowHitE) {
78 if (energy >= minHighHitE) {
91 for (std::vector<reco::HcalNoiseHPD>::const_iterator it1 = rbx.
HPDsBegin(); it1 != rbx.
HPDsEnd(); ++it1) {
92 double eme = it1->caloTowerEmE();
93 double hade = it1->recHitEnergy(minRecHitE);
94 double emf = (eme + hade) == 0 ? 999 : eme / (eme + hade);
104 for (std::vector<reco::HcalNoiseHPD>::const_iterator it1 = rbx.
HPDsBegin(); it1 != rbx.
HPDsEnd(); ++it1) {
112 pMinERatio_ = iConfig.
getParameter<
double>(
"pMinERatio");
113 pMinEZeros_ = iConfig.
getParameter<
double>(
"pMinEZeros");
123 pMinHPDHits_ = iConfig.
getParameter<
int>(
"pMinHPDHits");
124 pMinRBXHits_ = iConfig.
getParameter<
int>(
"pMinRBXHits");
125 pMinHPDNoOtherHits_ = iConfig.
getParameter<
int>(
"pMinHPDNoOtherHits");
127 pMinLowEHitTime_ = iConfig.
getParameter<
double>(
"pMinLowEHitTime");
128 pMaxLowEHitTime_ = iConfig.
getParameter<
double>(
"pMaxLowEHitTime");
129 pMinHighEHitTime_ = iConfig.
getParameter<
double>(
"pMinHighEHitTime");
130 pMaxHighEHitTime_ = iConfig.
getParameter<
double>(
"pMaxHighEHitTime");
131 pMaxHPDEMF_ = iConfig.
getParameter<
double>(
"pMaxHPDEMF");
132 pMaxRBXEMF_ = iConfig.
getParameter<
double>(
"pMaxRBXEMF");
134 if (iConfig.
existsAs<
int>(
"pMinRBXRechitR45Count"))
135 pMinRBXRechitR45Count_ = iConfig.
getParameter<
int>(
"pMinRBXRechitR45Count");
137 pMinRBXRechitR45Count_ = 0;
138 if (iConfig.
existsAs<
double>(
"pMinRBXRechitR45Fraction"))
139 pMinRBXRechitR45Fraction_ = iConfig.
getParameter<
double>(
"pMinRBXRechitR45Fraction");
141 pMinRBXRechitR45Fraction_ = 0;
142 if (iConfig.
existsAs<
double>(
"pMinRBXRechitR45EnergyFraction"))
143 pMinRBXRechitR45EnergyFraction_ = iConfig.
getParameter<
double>(
"pMinRBXRechitR45EnergyFraction");
145 pMinRBXRechitR45EnergyFraction_ = 0;
149 lMinHPDHits_ = iConfig.
getParameter<
int>(
"lMinHPDHits");
150 lMinRBXHits_ = iConfig.
getParameter<
int>(
"lMinRBXHits");
151 lMinHPDNoOtherHits_ = iConfig.
getParameter<
int>(
"lMinHPDNoOtherHits");
153 lMinLowEHitTime_ = iConfig.
getParameter<
double>(
"lMinLowEHitTime");
154 lMaxLowEHitTime_ = iConfig.
getParameter<
double>(
"lMaxLowEHitTime");
155 lMinHighEHitTime_ = iConfig.
getParameter<
double>(
"lMinHighEHitTime");
156 lMaxHighEHitTime_ = iConfig.
getParameter<
double>(
"lMaxHighEHitTime");
158 if (iConfig.
existsAs<std::vector<double> >(
"lRBXRecHitR45Cuts"))
159 lMinRBXRechitR45Cuts_ = iConfig.
getParameter<std::vector<double> >(
"lRBXRecHitR45Cuts");
161 double defaultCut[4] = {-999, -999, -999, -999};
162 lMinRBXRechitR45Cuts_ = std::vector<double>(defaultCut, defaultCut + 4);
167 tMinHPDHits_ = iConfig.
getParameter<
int>(
"tMinHPDHits");
168 tMinRBXHits_ = iConfig.
getParameter<
int>(
"tMinRBXHits");
169 tMinHPDNoOtherHits_ = iConfig.
getParameter<
int>(
"tMinHPDNoOtherHits");
171 tMinLowEHitTime_ = iConfig.
getParameter<
double>(
"tMinLowEHitTime");
172 tMaxLowEHitTime_ = iConfig.
getParameter<
double>(
"tMaxLowEHitTime");
173 tMinHighEHitTime_ = iConfig.
getParameter<
double>(
"tMinHighEHitTime");
174 tMaxHighEHitTime_ = iConfig.
getParameter<
double>(
"tMaxHighEHitTime");
176 if (iConfig.
existsAs<std::vector<double> >(
"tRBXRecHitR45Cuts"))
177 tMinRBXRechitR45Cuts_ = iConfig.
getParameter<std::vector<double> >(
"tRBXRecHitR45Cuts");
179 double defaultCut[4] = {-999, -999, -999, -999};
180 tMinRBXRechitR45Cuts_ = std::vector<double>(defaultCut, defaultCut + 4);
183 hlMaxHPDEMF_ = iConfig.
getParameter<
double>(
"hlMaxHPDEMF");
184 hlMaxRBXEMF_ = iConfig.
getParameter<
double>(
"hlMaxRBXEMF");
188 if (data.
energy() > pMinE_)
210 if (data.
HPDEMF() < pMaxHPDEMF_ && data.
energy() > pMinEEMF_)
212 if (data.
RBXEMF() < pMaxRBXEMF_ && data.
energy() > pMinEEMF_)
214 if (data.
r45Count() >= pMinRBXRechitR45Count_)
216 if (data.
r45Fraction() >= pMinRBXRechitR45Fraction_)
225 return (passLooseRatio(data) && passLooseHits(data) && passLooseZeros(data) && passLooseTiming(data) &&
226 passLooseRBXRechitR45(data));
230 return (passTightRatio(data) && passTightHits(data) && passTightZeros(data) && passTightTiming(data) &&
231 passTightRBXRechitR45(data));
235 if (passEMFThreshold(data)) {
236 if (data.
HPDEMF() < hlMaxHPDEMF_)
238 if (data.
RBXEMF() < hlMaxRBXEMF_)
245 if (passRatioThreshold(data)) {
265 if (passZerosThreshold(data)) {
289 for (
int i = 0;
i + 3 < (
int)lMinRBXRechitR45Cuts_.size();
i =
i + 4) {
290 double Value = Count * lMinRBXRechitR45Cuts_[
i] + Fraction * lMinRBXRechitR45Cuts_[
i + 1] +
291 EnergyFraction * lMinRBXRechitR45Cuts_[
i + 2] + lMinRBXRechitR45Cuts_[
i + 3];
300 if (passRatioThreshold(data)) {
320 if (passZerosThreshold(data)) {
344 for (
int i = 0;
i + 3 < (
int)tMinRBXRechitR45Cuts_.size();
i =
i + 4) {
345 double Value = Count * tMinRBXRechitR45Cuts_[
i] + Fraction * tMinRBXRechitR45Cuts_[
i + 1] +
346 EnergyFraction * tMinRBXRechitR45Cuts_[
i + 2] + tMinRBXRechitR45Cuts_[
i + 3];
355 return (data.
energy() > minERatio_);
359 return (data.
energy() > minEZeros_);
371 twrrefset.insert(*it);
373 twrrefset.insert(*it);
377 for (twrrefset_t::const_iterator it = twrrefset.begin(); it != twrrefset.end(); ++it) {
385 std::vector<std::pair<double, double> >& Cuts,
399 if (Charge <= Cuts[0].
first)
402 int IndexLargerThanCharge = -1;
403 for (
int i = 1;
i < (
int)Cuts.size();
i++) {
404 if (Cuts[
i].first > Charge) {
405 IndexLargerThanCharge =
i;
410 double limit = 1000000;
412 if (IndexLargerThanCharge == -1)
413 limit = Cuts[Cuts.size() - 1].second;
416 double C1 = Cuts[IndexLargerThanCharge].first;
417 double C2 = Cuts[IndexLargerThanCharge - 1].first;
418 double L1 = Cuts[IndexLargerThanCharge].second;
419 double L2 = Cuts[IndexLargerThanCharge - 1].second;
421 limit = (Charge - C1) / (C2 - C1) * (L2 - L1) + L1;
424 if (Side > 0 && Discriminant > limit)
426 if (Side < 0 && Discriminant < limit)
bool CheckPassFilter(double Charge, double Discriminant, std::vector< std::pair< double, double > > &Cuts, int Side)
double HPDEMF(void) const
T getParameter(std::string const &) const
int numRecHitsFailR45(double threshold=1.5) const
std::set< edm::Ref< CaloTowerCollection >, twrrefcomp > twrrefset_t
bool isProblematic(const CommonHcalNoiseRBXData &) const
bool passTightRatio(const CommonHcalNoiseRBXData &) const
double minLowEHitTime(void) const
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
float allChargeHighest2TS(unsigned int firstts=4) const
bool passLooseRatio(const CommonHcalNoiseRBXData &) const
bool passTightRBXRechitR45(const CommonHcalNoiseRBXData &) const
double maxHighEHitTime(void) const
bool passTightTiming(const CommonHcalNoiseRBXData &) const
double maxLowEHitTime(void) const
std::vector< HcalNoiseHPD >::const_iterator HPDsBegin(void) const
double r45EnergyFraction(void) const
int numRecHits(double threshold=1.5) const
std::vector< HcalNoiseHPD >::const_iterator HPDsEnd(void) const
bool passLooseRBXRechitR45(const CommonHcalNoiseRBXData &) const
const_iterator end() const
Termination of iteration.
edm::RefVector< CaloTowerCollection > rbxtowers_
bool passHighLevelNoiseFilter(const CommonHcalNoiseRBXData &) const
const_iterator begin() const
Initialize an iterator over the RefVector.
double RBXEMF(void) const
double caloTowerEmE(void) const
double r45EnergyFraction_
int numRBXHits(void) const
CommonHcalNoiseRBXData(const reco::HcalNoiseRBX &rbx, double minRecHitE, double minLowHitE, double minHighHitE, double TS4TS5EnergyThreshold, std::vector< std::pair< double, double > > &TS4TS5UpperCut, std::vector< std::pair< double, double > > &TS4TS5LowerCut, double MinRBXRechitR45E)
bool passLooseZeros(const CommonHcalNoiseRBXData &) const
double recHitEnergy(double theshold=1.5) const
float allChargeTotal(void) const
bool passTightZeros(const CommonHcalNoiseRBXData &) const
emf
the use of emf in the JEC is not yet implemented
bool passRatioThreshold(const CommonHcalNoiseRBXData &) const
void operator()(edm::RefVector< CaloTowerCollection > &v1, const edm::RefVector< CaloTowerCollection > &v2) const
reco::JetExtendedAssociation::JetExtendedData Value
int numHPDNoOtherHits(void) const
bool passZerosThreshold(const CommonHcalNoiseRBXData &) const
bool passLooseNoiseFilter(const CommonHcalNoiseRBXData &) const
HcalNoiseAlgo(const edm::ParameterSet &iConfig)
bool passLooseHits(const CommonHcalNoiseRBXData &) const
int totalZeros(void) const
static std::string join(char **cmd)
void clear()
Clear the vector.
double recHitEnergyFailR45(double threshold=1.5) const
double energy(void) const
bool passLooseTiming(const CommonHcalNoiseRBXData &) const
bool passTightNoiseFilter(const CommonHcalNoiseRBXData &) const
char data[epos_bytes_allocation]
double minHighEHitTime(void) const
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
bool passEMFThreshold(const CommonHcalNoiseRBXData &) const
const std::vector< float > allCharge(void) const
int numHPDHits(void) const
bool validRatio(void) const
bool passTightHits(const CommonHcalNoiseRBXData &) const
double r45Fraction(void) const