CMS 3D CMS Logo

ResolutionFunction.cc
Go to the documentation of this file.
2 
4  iterationNum_ = 0;
5  parArray_ = nullptr;
6  // std::vector<double> parameterErrors;
7 
8  // Read the parameters file
9  std::ifstream parametersFile(fileName.Data());
11 
12  std::string iteration("Iteration ");
13  // Loop on the file lines
14  while (parametersFile) {
15  getline(parametersFile, line);
16  size_t lineInt = line.find("value");
17 
18  // if( line.find(iteration) != std::string::npos ) {
19  size_t iterationSubStr = line.find(iteration);
20 
21  // Take the iteration number
22  if (iterationSubStr != std::string::npos) {
23  int functionNum = 0;
24  // This can be used when dealing with multiple iterations
25 
26  // std::cout << "line = " << line << std::endl;
27  std::stringstream sLine(line);
29  int wordCounter = 0;
30  // Warning: this strongly depends on the parameters file structure.
31  while (sLine >> num) {
32  ++wordCounter;
33  // std::cout << "num["<<wordCounter<<"] = " << num << std::endl;
34  if (wordCounter == 8) {
35  std::stringstream in(num);
36  in >> functionNum;
37  }
38  if (wordCounter == 13) {
39  std::stringstream in(num);
40  in >> iterationNum_;
41  }
42  }
43  // std::cout << "iteration number = " << iterationNum_ << std::endl;
44  // std::cout << "scale function number = " << scaleFunctionNum << std::endl;
45 
46  // Create a new vector to hold the parameters for this iteration
47  // std::vector<double> parVec;
48  // parVecVec_.push_back(parVec);
49 
50  // Set the scaleFunction
51  // scaleFunction_ = scaleFunctionArrayForVec[scaleFunctionNum];
52  // scaleFunction_ = scaleFunctionArray[scaleFunctionNum];
53  functionId_.push_back(functionNum);
54  // scaleFunctionVec_.push_back( scaleFunctionArray[scaleFunctionNum] );
55  resolutionFunctionVec_.push_back(resolutionFunctionService(functionNum));
56  }
57  // Take the parameters for the current iteration
58  if ((lineInt != std::string::npos)) {
59  size_t subStr1 = line.find("value");
60  std::stringstream paramStr;
61  double param = 0;
62  // Even if all the rest of the line is taken, the following
63  // convertion to a double will stop at the end of the first number.
64  paramStr << line.substr(subStr1 + 5);
65  paramStr >> param;
66  // // Fill the last vector of parameters, which corresponds to this iteration.
67  // parVecVec_.back().push_back(param);
68  parVecVec_.push_back(param);
69  // std::cout << "param = " << param << std::endl;
70 
71  // This is to extract parameter errors
72  // size_t subStr2 = line.find("+-");
73  // std::stringstream parErrorStr;
74  // double parError = 0;
75  // parErrorStr << line.substr(subStr2+1);
76  // parErrorStr >> parError;
77  // parameterErrors.push_back(parError);
78  // std::cout << "parError = " << parError << std::endl;
79  }
80  }
81 
83 }
resolutionFunctionBase< double * > ** resolutionFunction_
std::vector< double > parVecVec_
Definition: BaseFunction.h:39
resolutionFunctionBase< double * > * resolutionFunctionService(const int identifier)
Service to build the resolution functor corresponding to the passed identifier.
Definition: Functions.cc:70
void readParameters(TString fileName)
Parser of the parameters file.
std::vector< int > functionId_
Definition: BaseFunction.h:38
void convertToArrays(T **&function_, const std::vector< T *> &functionVec_)
Convert vectors to arrays for faster random access. The first pointer is replaced, thus it is taken by reference.
Definition: BaseFunction.h:48
std::vector< resolutionFunctionBase< double * > * > resolutionFunctionVec_
double ** parArray_
Definition: BaseFunction.h:42