1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#include "DataFormats/PatCandidates/interface/TauJetCorrFactors.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/Utilities/interface/EDMException.h"
#include <iomanip>
#include <iostream>
#include <sstream>
using namespace pat;
TauJetCorrFactors::TauJetCorrFactors(const std::string& label, const std::vector<CorrectionFactor>& jec)
: label_(label), jec_(jec) {}
int TauJetCorrFactors::jecLevel(const std::string& level) const {
for (std::vector<CorrectionFactor>::const_iterator corrFactor = jec_.begin(); corrFactor != jec_.end();
++corrFactor) {
if (corrFactor->first == level)
return (corrFactor - jec_.begin());
}
return -1;
}
float TauJetCorrFactors::correction(unsigned int level) const {
if (!(level < jec_.size())) {
throw cms::Exception("InvalidRequest") << "You try to call a jet energy correction level wich does not exist. \n"
<< "Available jet energy correction levels are: \n"
<< correctionLabelString();
}
return jec_.at(level).second;
}
std::string TauJetCorrFactors::correctionLabelString() const {
std::string labels;
for (std::vector<CorrectionFactor>::const_iterator corrFactor = jec_.begin(); corrFactor != jec_.end();
++corrFactor) {
std::stringstream idx;
idx << (corrFactor - jec_.begin());
labels.append(idx.str()).append(" ").append(corrFactor->first).append("\n");
}
return labels;
}
std::vector<std::string> TauJetCorrFactors::correctionLabels() const {
std::vector<std::string> labels;
for (std::vector<CorrectionFactor>::const_iterator corrFactor = jec_.begin(); corrFactor != jec_.end();
++corrFactor) {
labels.push_back(corrFactor->first);
}
return labels;
}
void TauJetCorrFactors::print() const {
edm::LogInfo message("JetCorrFactors");
for (std::vector<CorrectionFactor>::const_iterator corrFactor = jec_.begin(); corrFactor != jec_.end();
++corrFactor) {
unsigned int corrFactorIdx = corrFactor - jec_.begin();
message << std::setw(3) << corrFactorIdx << " " << corrFactor->first;
message << std::setw(10) << correction(corrFactor - jec_.begin());
message << "\n";
}
}
|