21 for(
unsigned i=0;
i<fBinVar.size();
i++)
23 for(
unsigned i=0;i<fParVar.size();i++)
33 std::vector<std::string> tokens = getTokens(fLine);
37 if (tokens.size() < 6)
39 std::stringstream sserr;
40 sserr<<
"(line "<<fLine<<
"): less than 6 expected tokens:"<<tokens.size();
41 handleError(
"METCorrectorParameters::Definitions",sserr.str());
44 std::cout<<
"Definitions==========="<<std::endl;
47 unsigned nBinVar = getUnsigned(tokens[1]);
50 unsigned nParVar = getUnsigned(tokens[nBinVar+2]);
59 mParVar.push_back(tokens[nBinVar+3+
i]);
62 mFormula = tokens[nParVar+nBinVar+3];
63 std::cout<<tokens[nParVar+nBinVar+3]<<std::endl;
74 std::vector<std::string> tokens = getTokens(fLine);
77 if (tokens.size() < 6)
79 std::stringstream sserr;
80 sserr<<
"(line "<<fLine<<
"): "<<
"three tokens expected, "<<tokens.size()<<
" provided.";
81 handleError(
"METCorrectorParameters::Record",sserr.str());
83 std::cout<<
"Record ==============="<<std::endl;
86 mMin.push_back(getFloat(tokens[
i*2]));
87 mMax.push_back(getFloat(tokens[i*2+1]));
91 unsigned nParam = getUnsigned(tokens[2*mNvar]);
93 if (nParam != tokens.size()-(2*mNvar+1))
95 std::stringstream sserr;
96 sserr<<
"(line "<<fLine<<
"): "<<tokens.size()-(2*mNvar+1)<<
" parameters, but nParam="<<nParam<<
".";
97 handleError(
"METCorrectorParameters::Record",sserr.str());
99 for (
unsigned i = (2*mNvar+1);
i < tokens.size(); ++
i)
113 std::ifstream
input(fFile.c_str());
117 while (std::getline(
input,line))
122 if (!section.empty() && tmp.empty())
127 if (currentSection == fSection)
131 currentDefinitions =
tmp;
148 if (currentDefinitions==
"")
149 handleError(
"METCorrectorParameters",
"No definitions found!!!");
151 if (
mRecords.empty() && currentSection !=
"")
153 std::stringstream sserr;
154 sserr<<
"the requested section "<<fSection<<
" doesn't exist!";
155 handleError(
"METCorrectorParameters",sserr.str());
275 std::cout<<
"--------------------------------------------"<<std::endl;
276 std::cout<<
"//////// PARAMETERS: //////////////////////"<<std::endl;
277 std::cout<<
"--------------------------------------------"<<std::endl;
279 std::cout<<
"Names of binning variables: ";
283 std::cout<<
"--------------------------------------------"<<std::endl;
285 std::cout<<
"Names of parameter variables: ";
289 std::cout<<
"--------------------------------------------"<<std::endl;
291 std::cout<<
"--------------------------------------------"<<std::endl;
292 std::cout<<
"------- Bin contents -----------------------"<<std::endl;
308 std::ofstream txtFile;
309 txtFile.open(fFileName.c_str());
310 txtFile.setf(std::ios::right);
332 const std::vector<std::string> labels_ = {
335 const std::vector<std::string> MiniAodSource_ = {
344 std::cout<<
"findLabel with key_type: "<<k<<std::endl;
348 return findMiniAodSource(k);
355 if( k == MiniAod)
return labels_[MiniAod];
357 return MiniAodSource_[k - MiniAod*100 -1];
360 std::vector<std::string> &
outputs )
363 std::ifstream
input( inputFile.c_str() );
364 while( !
input.eof() ) {
366 input.getline(buff,10000);
368 if ( in[0] ==
'[' ) {
371 outputs.push_back( tok );
375 std::cout <<
"Found these sections for file: " << std::endl;
376 copy(outputs.begin(),outputs.end(), std::ostream_iterator<std::string>(
std::cout,
"\n") );
383 std::cout <<
"source = " << source << std::endl;
386 std::cout <<
"This is MiniAod, getMiniAodBin = " << getMiniAodBin(source) << std::endl;
387 correctionsMiniAod_.push_back(
pair_type(getMiniAodBin(source),j) );
389 std::cout <<
"***** NOT ADDING " << source <<
", corresponding position in METCorrectorParameters is not found." << std::endl;
396 collection_type::const_iterator ibegin, iend,
i;
397 if ( isMiniAod(k) ) {
398 ibegin = correctionsMiniAod_.begin();
399 iend = correctionsMiniAod_.end();
402 for ( ; i != iend; ++
i ) {
403 if ( k == i->first )
return i->second;
405 throw cms::Exception(
"InvalidInput") <<
" cannot find key " <<
static_cast<int>(
k)
406 <<
" in the METC payload, this usually means you have to change the global tag" << std::endl;
413 for ( collection_type::const_iterator ibegin = correctionsMiniAod_.begin(),
414 iend = correctionsMiniAod_.end(),
i = ibegin;
i != iend; ++
i ) {
415 keys.push_back(
i->first );
422 std::vector<std::string>::const_iterator
found =
423 find( MiniAodSource_.begin(), MiniAodSource_.end(),
source );
424 if ( found != MiniAodSource_.end() ) {
425 return (found - MiniAodSource_.begin() + 1)+ MiniAod * 100;
431 return k == MiniAod ||
432 (k > MiniAod*100 && k < MiniAod*100 + 100);
unsigned nParameters() const
std::vector< std::string > parVar() const
const Record & record(unsigned fBin) const
static std::string findMiniAodSource(key_type k)
std::vector< std::string > mParVar
static void getSections(std::string inputFile, std::vector< std::string > &outputs)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< float > mParameters
std::vector< METCorrectorParameters::Record > mRecords
std::vector< float > mMax
static std::string const input
const Definitions & definitions() const
static key_type getMiniAodBin(std::string const &source)
std::vector< std::string > mBinVar
float xMax(unsigned fVar) const
static std::string findLabel(key_type k)
void push_back(key_type i, value_type const &j, label_type const &source="")
METCorrectorParameters const & operator[](key_type k) const
std::vector< std::string > binVar() const
void validKeys(std::vector< key_type > &keys) const
void printFile(const std::string &fFileName) const
METCorrectorParameters::Definitions mDefinitions
#define TYPELOOKUP_DATA_REG(_dataclass_)
def getSection(rootNode, name)
float xMin(unsigned fVar) const
static bool isMiniAod(key_type k)
std::string formula() const
std::vector< std::vector< double > > tmp
std::vector< float > mMin
float parameter(unsigned fIndex) const
static std::string const source