22 mBinVar.reserve(fBinVar.size());
23 for(
unsigned i=0;
i<fBinVar.size();
i++)
26 mParVar.reserve(fParVar.size());
27 for(
unsigned i=0;i<fParVar.size();i++)
28 mParVar.push_back(getUnsigned(fParVar[i]));
38 std::vector<std::string> tokens = getTokens(fLine);
42 if (tokens.size() < 6)
44 std::stringstream sserr;
45 sserr<<
"(line "<<fLine<<
"): Great than or equal to 6 expected but the number of tokens:"<<tokens.size();
46 handleError(
"MEtXYcorrectParameters::Definitions",sserr.str());
51 unsigned nBinVar = getUnsigned(tokens[1]);
52 unsigned nParVar = getUnsigned(tokens[nBinVar+2]);
62 mParVar.push_back(getUnsigned(tokens[nBinVar+3+
i]));
64 mFormula = tokens[nParVar+nBinVar+3];
65 if (tokens.size() != nParVar+nBinVar+4 )
67 std::stringstream sserr;
68 sserr<<
"(line "<<fLine<<
"): token size should be:"<<nParVar+nBinVar+4<<
" but it is "<<tokens.size();
69 handleError(
"MEtXYcorrectParameters::Definitions",sserr.str());
82 std::vector<std::string> tokens = getTokens(fLine);
85 if (tokens.size() < 5)
87 std::stringstream sserr;
88 sserr<<
"(line "<<fLine<<
"): "<<
"five tokens expected, "<<tokens.size()<<
" provided.";
89 handleError(
"MEtXYcorrectParameters::Record",sserr.str());
94 mMin.push_back(getFloat(tokens[
i*2+1]));
95 mMax.push_back(getFloat(tokens[
i*2+2]));
97 unsigned nParam = getUnsigned(tokens[2*mNvar+1]);
98 if (nParam != tokens.size()-(2*mNvar+2))
100 std::stringstream sserr;
101 sserr<<
"(line "<<fLine<<
"): "<<tokens.size()-(2*mNvar+2)<<
" parameters, but nParam="<<nParam<<
".";
102 handleError(
"MEtXYcorrectParameters::Record",sserr.str());
104 for (
unsigned i = (2*mNvar+2);
i < tokens.size(); ++
i)
116 std::ifstream
input(fFile.c_str());
120 while (std::getline(
input,line))
124 if (!section.empty() && tmp.empty())
129 if (currentSection == fSection)
133 currentDefinitions =
tmp;
150 if (currentDefinitions==
"")
151 handleError(
"MEtXYcorrectParameters",
"No definitions found!!!");
153 if (
mRecords.empty() && currentSection !=
"")
155 std::stringstream sserr;
156 sserr<<
"the requested section "<<fSection<<
" doesn't exist!";
157 handleError(
"MEtXYcorrectParameters",sserr.str());
167 std::cout<<
"--------------------------------------------"<<std::endl;
168 std::cout<<
"//////// PARAMETERS: //////////////////////"<<std::endl;
169 std::cout<<
"--------------------------------------------"<<std::endl;
171 std::cout<<
"Names of binning variables: ";
175 std::cout<<
"--------------------------------------------"<<std::endl;
177 std::cout<<
"Names of parameter variables: ";
181 std::cout<<
"--------------------------------------------"<<std::endl;
183 std::cout<<
"--------------------------------------------"<<std::endl;
184 std::cout<<
"------- Bin contents -----------------------"<<std::endl;
197 std::cout<<
"--------------------------------------------"<<std::endl;
198 std::cout<<
"//////// PARAMETERS: //////////////////////"<<std::endl;
199 std::cout<<
"--------------------------------------------"<<std::endl;
202 std::cout<<
"Names of binning variables: ";
206 std::cout<<
"--------------------------------------------"<<std::endl;
208 std::cout<<
"Names of parameter variables: ";
212 std::cout<<
"--------------------------------------------"<<std::endl;
214 std::cout<<
"--------------------------------------------"<<std::endl;
215 std::cout<<
"------- Bin contents -----------------------"<<std::endl;
233 std::ofstream txtFile;
234 txtFile.open(fFileName.c_str());
235 txtFile.setf(std::ios::right);
257 std::ofstream txtFile;
258 txtFile.open(fFileName.c_str(),std::ofstream::app);
259 txtFile.setf(std::ios::right);
260 txtFile<<
"["<<Section<<
"]"<<
"\n";
283 const std::vector<std::string> labels_ = {
290 const std::vector<std::string> shiftFlavors_ = {
310 return findShiftMCflavor(k);
312 return findShiftDYflavor(k);
314 return findShiftTTJetsFlavor(k);
316 return findShiftWJetsFlavor(k);
318 return findShiftDataFlavor(k);
326 return labels_[shiftMC];
327 }
else if( isShiftDY(k) ){
328 return labels_[shiftDY];
329 }
else if( isShiftTTJets(k) ){
330 return labels_[shiftTTJets];
331 }
else if( isShiftWJets(k) ){
332 return labels_[shiftWJets];
333 }
else if( isShiftData(k) ){
334 return labels_[shiftData];
335 }
else{
return "Can't find the level name !!!!";}
342 if( k == shiftMC)
return labels_[shiftMC];
344 return shiftFlavors_[k - (shiftMC+1)*100 -1];
349 if( k == shiftDY)
return labels_[shiftDY];
351 return shiftFlavors_[k - (shiftDY+1)*100 -1];
356 if( k == shiftTTJets)
return labels_[shiftTTJets];
358 return shiftFlavors_[k - (shiftTTJets+1)*100 -1];
363 if( k == shiftWJets)
return labels_[shiftWJets];
365 return shiftFlavors_[k - (shiftWJets+1)*100 -1];
370 if( k == shiftData)
return labels_[shiftData];
372 return shiftFlavors_[k - (shiftData+1)*100 -1];
376 std::vector<std::string> &
outputs )
379 std::ifstream
input( inputFile.c_str() );
380 while( !
input.eof() ) {
382 input.getline(buff,10000);
384 if ( in[0] ==
'[' ) {
387 outputs.push_back( tok );
394 for(std::vector<std::string>::const_iterator it=outputs.begin(); it!=outputs.end();it++){
398 edm::LogInfo (
"getSections")<<
"Sections read from file: "<<
"\n"<<sectionNames;
406 correctionsShift_.push_back(
pair_type(getShiftMcFlavBin(flav),j) );
407 }
else if( isShiftDY(i))
409 correctionsShift_.push_back(
pair_type(getShiftDyFlavBin(flav),j) );
410 }
else if( isShiftTTJets(i))
412 correctionsShift_.push_back(
pair_type(getShiftTTJetsFlavBin(flav),j) );
413 }
else if( isShiftWJets(i))
415 correctionsShift_.push_back(
pair_type(getShiftWJetsFlavBin(flav),j) );
416 }
else if( isShiftData(i))
418 correctionsShift_.push_back(
pair_type(getShiftDataFlavBin(flav),j) );
420 std::stringstream sserr;
421 sserr<<
"The level type: "<<i<<
" is not in the level list";
422 handleError(
"MEtXYcorrectParameters::Definitions",sserr.str());
430 collection_type::const_iterator ibegin, iend,
i;
431 if ( isShiftMC(k) || isShiftDY(k) || isShiftTTJets(k) || isShiftWJets(k) || isShiftData(k) ) {
432 ibegin = correctionsShift_.begin();
433 iend = correctionsShift_.end();
436 for ( ; i != iend; ++
i ) {
437 if ( k == i->first )
return i->second;
439 throw cms::Exception(
"InvalidInput") <<
" cannot find key " <<
static_cast<int>(
k)
440 <<
" in the METC payload, this usually means you have to change the global tag" << std::endl;
447 for ( collection_type::const_iterator ibegin = correctionsShift_.begin(),
448 iend = correctionsShift_.end(),
i = ibegin;
i != iend; ++
i ) {
449 keys.push_back(
i->first );
457 std::vector<std::string>::const_iterator
found =
458 find( shiftFlavors_.begin(), shiftFlavors_.end(), flav );
459 if ( found != shiftFlavors_.end() ) {
460 return (found - shiftFlavors_.begin() + 1)+ (shiftMC+1) * 100;
464 "************** Can't find ShiftSection: "<<flav<<std::endl;
471 std::vector<std::string>::const_iterator
found =
472 find( shiftFlavors_.begin(), shiftFlavors_.end(), flav );
473 if ( found != shiftFlavors_.end() ) {
474 return (found - shiftFlavors_.begin() + 1)+ (shiftDY+1) * 100;
478 "************** Can't find ShiftSection: "<<flav<<std::endl;
484 std::vector<std::string>::const_iterator
found =
485 find( shiftFlavors_.begin(), shiftFlavors_.end(), flav );
486 if ( found != shiftFlavors_.end() ) {
487 return (found - shiftFlavors_.begin() + 1)+ (shiftTTJets+1) * 100;
491 "************** Can't find shiftSection: "<<flav<<std::endl;
497 std::vector<std::string>::const_iterator
found =
498 find( shiftFlavors_.begin(), shiftFlavors_.end(), flav );
499 if ( found != shiftFlavors_.end() ) {
500 return (found - shiftFlavors_.begin() + 1)+ (shiftWJets+1) * 100;
504 "************** Can't find shiftSection: "<<flav<<std::endl;
510 std::vector<std::string>::const_iterator
found =
511 find( shiftFlavors_.begin(), shiftFlavors_.end(), flav );
512 if ( found != shiftFlavors_.end() ) {
513 return (found - shiftFlavors_.begin() + 1)+ (shiftData+1) * 100;
517 "************** Can't find shiftSection: "<<flav<<std::endl;
523 return k == shiftMC ||
524 (k > (shiftMC+1)*100 && k < (shiftMC + 2)*100 );
527 return k == shiftDY ||
528 (k > (shiftDY+1)*100 && k < (shiftDY + 2)*100 );
531 return k == shiftTTJets ||
532 (k > (shiftTTJets+1)*100 && k < (shiftTTJets + 2)*100 );
535 return k == shiftWJets ||
536 (k > (shiftWJets+1)*100 && k < (shiftWJets + 2)*100 );
539 return k == shiftData ||
540 (k > (shiftData+1)*100 && k < (shiftData + 2)*100 );
static bool isShiftDY(key_type k)
float parameter(unsigned fIndex) const
std::vector< float > mParameters
void validKeys(std::vector< key_type > &keys) const
std::vector< MEtXYcorrectParameters::Record > mRecords
key_type getShiftDataFlavBin(std::string const &Flav)
const Definitions & definitions() const
std::vector< float > mMin
key_type getShiftTTJetsFlavBin(std::string const &Flav)
static std::string findShiftWJetsFlavor(key_type k)
float xMax(unsigned fVar) const
static std::string findShiftDataFlavor(key_type k)
void getSections(std::string inputFile, std::vector< std::string > &outputs)
unsigned nParameters() const
std::string MetAxis() const
std::vector< unsigned > mParVar
static std::string findShiftMCflavor(key_type k)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
void printFile(const std::string &fFileName) const
static std::string const input
const Record & record(unsigned fBin) const
static bool isShiftData(key_type k)
MEtXYcorrectParameters const & operator[](key_type k) const
std::vector< std::string > mBinVar
key_type getShiftMcFlavBin(std::string const &Flav)
static bool isShiftTTJets(key_type k)
static std::string findShiftDYflavor(key_type k)
#define TYPELOOKUP_DATA_REG(_dataclass_)
void push_back(key_type i, value_type const &j, label_type const &flav="")
static bool isShiftWJets(key_type k)
def getSection(rootNode, name)
MEtXYcorrectParameters::Definitions mDefinitions
static bool isShiftMC(key_type k)
std::vector< std::string > binVar() const
static std::string findLabel(key_type k)
std::vector< std::vector< double > > tmp
std::vector< float > mMax
float xMin(unsigned fVar) const
key_type getShiftDyFlavBin(std::string const &Flav)
std::string formula() const
key_type getShiftWJetsFlavBin(std::string const &Flav)
static std::string findShiftTTJetsFlavor(key_type k)
std::vector< unsigned > parVar() const
static std::string levelName(key_type k)