void makeUnfoldingMatrix(const TString input, const TString triggerSetString="Full2011DatasetTriggers", int systematicsMode = DYTools::NORMAL, int randomSeed = 1, double reweightFsr = 1.0, double massLimit = -1.0, int debugMode=0) { // check whether it is a calculation if (input.Contains("_DebugRun_")) { std::cout << "plotDYUnfoldingMatrix: _DebugRun_ detected. Terminating the script\n"; return; } // normal calculation gBenchmark->Start("makeUnfoldingMatrix"); if (systematicsMode==DYTools::NORMAL) std::cout<<"Running script in the NORMAL mode"<<std::endl; else if (systematicsMode==DYTools::RESOLUTION_STUDY) std::cout<<"Running script in the RESOLUTION_STUDY mode"<<std::endl; else if (systematicsMode==DYTools::FSR_STUDY) std::cout<<"Running script in the FSR_STUDY mode"<<std::endl; else if (systematicsMode==DYTools::ESCALE_RESIDUAL) std::cout << "Running script in the ESCALE_RESIDUAL mode\n"; else { std::cout<<"requested mode not recognized"<<std::endl; assert(0); } if (debugMode) std::cout << "\n\n\tDEBUG MODE is ON\n\n"; //-------------------------------------------------------------------------------------------------------------- // Settings //============================================================================================================== // Bool_t doSave = false; // save plots? TString format = "png"; // output file format vector<TString> fnamev; // file names vector<TString> labelv; // legend label vector<Int_t> colorv; // color in plots vector<Int_t> linev; // line style vector<Double_t> xsecv; vector<Double_t> lumiv; TString dirTag; TString escaleTag; // Energy scale calibrations tag if (1) { MCInputFileMgr_t mcInp; // avoid errors from empty lines if (!mcInp.Load(input)) { std::cout << "Failed to load mc input file <" << input << ">\n"; return; } fnamev=mcInp.fileNames(); labelv=mcInp.labels(); colorv=mcInp.colors(); linev=mcInp.lineStyles(); xsecv=mcInp.xsecs(); lumiv=mcInp.lumis(); dirTag=mcInp.dirTag(); escaleTag=mcInp.escaleTag(); } else { ifstream ifs; ifs.open(input.Data()); assert(ifs.is_open()); string line; Int_t state=0; while(getline(ifs,line)) { if(line[0]=='#') continue; if(state == 0){ dirTag = TString(line); getline(ifs,line); stringstream ss3(line); ss3 >> escaleTag; state++; continue; }else{ string fname; Int_t color, linesty; stringstream ss(line); Double_t xsec; ss >> fname >> xsec >> color >> linesty; string label = line.substr(line.find('@')+1); fnamev.push_back(fname); labelv.push_back(label); colorv.push_back(color); linev.push_back(linesty); xsecv.push_back(xsec); lumiv.push_back(0); } }