File indexing completed on 2024-04-06 12:02:10
0001 #include "CondFormats/EcalObjects/interface/EcalMustacheSCParameters.h"
0002 #include <algorithm>
0003
0004 float EcalMustacheSCParameters::sqrtLogClustETuning() const { return sqrtLogClustETuning_; }
0005
0006 const EcalMustacheSCParameters::ParabolaParameters* EcalMustacheSCParameters::parabolaParameters(
0007 float log10ClustE, float absSeedEta) const {
0008
0009
0010 auto it1 = std::lower_bound(parabolaParametersCollection_.begin(),
0011 parabolaParametersCollection_.end(),
0012 log10ClustE,
0013 [](const EcalMustacheSCParameters::ParabolaParameters& params, const double var) {
0014 return params.log10EMin < var;
0015 });
0016 if (it1 != parabolaParametersCollection_.begin()) {
0017 --it1;
0018 }
0019
0020
0021 const auto vars = std::make_pair(it1->log10EMin, absSeedEta);
0022 auto it2 = std::lower_bound(
0023 parabolaParametersCollection_.begin(),
0024 it1 + 1,
0025 vars,
0026 [](const EcalMustacheSCParameters::ParabolaParameters& params, const std::pair<double, double> vars) {
0027 return params.log10EMin < vars.first || params.etaMin < vars.second;
0028 });
0029
0030 return (it2 != parabolaParametersCollection_.begin()) ? &*(it2 - 1) : nullptr;
0031 }
0032
0033 void EcalMustacheSCParameters::print(std::ostream& out) const {
0034 out << "Mustache SC parameters:" << std::endl;
0035 out << " sqrtLogClustETuning: " << sqrtLogClustETuning_ << std::endl;
0036 out << " Parabola parameters are binned in " << parabolaParametersCollection_.size() << " (log10(E), |eta|) regions."
0037 << std::endl;
0038 for (const auto& params : parabolaParametersCollection_) {
0039 out << " Parameters for log10(E_min)=" << params.log10EMin << " and |eta_min|=" << params.etaMin << ":"
0040 << std::endl;
0041
0042 out << " pUp:" << std::endl;
0043 for (size_t i = 0; i < params.pUp.size(); ++i) {
0044 out << " [" << i << "]: " << params.pUp[i] << std::endl;
0045 }
0046
0047 out << " pLow:" << std::endl;
0048 for (size_t i = 0; i < params.pLow.size(); ++i) {
0049 out << " [" << i << "]: " << params.pLow[i] << std::endl;
0050 }
0051
0052 out << " w0Up:" << std::endl;
0053 for (size_t i = 0; i < params.w0Up.size(); ++i) {
0054 out << " [" << i << "]: " << params.w0Up[i] << std::endl;
0055 }
0056
0057 out << " w1Up:" << std::endl;
0058 for (size_t i = 0; i < params.w1Up.size(); ++i) {
0059 out << " [" << i << "]: " << params.w1Up[i] << std::endl;
0060 }
0061
0062 out << " w0Low:" << std::endl;
0063 for (size_t i = 0; i < params.w0Low.size(); ++i) {
0064 out << " [" << i << "]: " << params.w0Low[i] << std::endl;
0065 }
0066
0067 out << " w1Low:" << std::endl;
0068 for (size_t i = 0; i < params.w1Low.size(); ++i) {
0069 out << " [" << i << "]: " << params.w1Low[i] << std::endl;
0070 }
0071 }
0072 }