File indexing completed on 2024-04-06 12:22:41
0001 #include "MuonAnalysis/MomentumScaleCalibration/interface/MomentumScaleCorrector.h"
0002
0003 void MomentumScaleCorrector::readParameters(TString fileName) {
0004 iterationNum_ = 0;
0005 parArray_ = nullptr;
0006
0007
0008
0009 std::ifstream parametersFile(fileName.Data());
0010
0011 if (!parametersFile.is_open()) {
0012 std::cout << "Error: file " << fileName << " not found. Aborting." << std::endl;
0013 abort();
0014 }
0015 std::string line;
0016
0017 std::string iteration("Iteration ");
0018
0019 while (parametersFile) {
0020 getline(parametersFile, line);
0021 size_t lineInt = line.find("value");
0022
0023
0024 size_t iterationSubStr = line.find(iteration);
0025
0026
0027 if (iterationSubStr != std::string::npos) {
0028 int scaleFunctionNum = 0;
0029
0030
0031
0032 std::stringstream sLine(line);
0033 std::string num;
0034 int wordCounter = 0;
0035
0036 while (sLine >> num) {
0037 ++wordCounter;
0038
0039 if (wordCounter == 9) {
0040 std::stringstream in(num);
0041 in >> scaleFunctionNum;
0042 }
0043 if (wordCounter == 13) {
0044 std::stringstream in(num);
0045 in >> iterationNum_;
0046 }
0047 }
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058 functionId_.push_back(scaleFunctionNum);
0059
0060 scaleFunctionVec_.push_back(scaleFunctionService(scaleFunctionNum));
0061 }
0062
0063 if ((lineInt != std::string::npos)) {
0064 size_t subStr1 = line.find("value");
0065 std::stringstream paramStr;
0066 double param = 0;
0067
0068
0069 paramStr << line.substr(subStr1 + 5);
0070 paramStr >> param;
0071
0072
0073 parVecVec_.push_back(param);
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084 }
0085 }
0086
0087 convertToArrays(scaleFunction_, scaleFunctionVec_);
0088 }