////////////////////////////////////////////////////////////////////////// // // 'ORGANIZATION AND SIMULTANEOUS FITS' RooFit tutorial macro #505 // // Reading and writing ASCII configuration files // // // // 07/2008 - Wouter Verkerke // ///////////////////////////////////////////////////////////////////////// #ifndef __CINT__ #include "RooGlobalFunc.h" #endif #include "RooRealVar.h" #include "RooDataSet.h" #include "RooGaussian.h" #include "RooConstVar.h" #include "RooPolynomial.h" #include "RooAddPdf.h" #include "TCanvas.h" #include "TAxis.h" #include "RooPlot.h" using namespace RooFit ; void rf505_asciicfg() { // C r e a t e p d f // ------------------ // Construct gauss(x,m,s) RooRealVar x("x","x",-10,10) ; RooRealVar m("m","m",0,-10,10) ; RooRealVar s("s","s",1,-10,10) ; RooGaussian gauss("g","g",x,m,s) ; // Construct poly(x,p0) RooRealVar p0("p0","p0",0.01,0.,1.) ; RooPolynomial poly("p","p",x,p0) ; // Construct model = f*gauss(x) + (1-f)*poly(x) RooRealVar f("f","f",0.5,0.,1.) ; RooAddPdf model("model","model",RooArgSet(gauss,poly),f) ; // F i t m o d e l t o t o y d a t a // ----------------------------------------- RooDataSet* d = model.generate(x,1000) ; model.fitTo(*d) ; // W r i t e p a r a m e t e r s t o a s c i i f i l e // ----------------------------------------------------------- // Obtain set of parameters RooArgSet* params = model.getParameters(x) ; // Write parameters to file params->writeToFile("rf505_asciicfg_example.txt") ; // R e a d p a r a m e t e r s f r o m a s c i i f i l e // ---------------------------------------------------------------- // Read parameters from file params->readFromFile("rf505_asciicfg_example.txt") ; params->Print("v") ; // Read parameters from section 'Section2' of file params->readFromFile("rf505_asciicfg.txt",0,"Section2") ; params->Print("v") ; // Read parameters from section 'Section3' of file. Mark all // variables that were processed with the "READ" attribute params->readFromFile("rf505_asciicfg.txt","READ","Section3") ; // Print the list of parameters that were not read from Section3 cout << "The following parameters of the were _not_ read from Section3: " << (*params->selectByAttrib("READ",kFALSE)) << endl ; // Read parameters from section 'Section4' of file, which contains // 'include file' statement of rf505_asciicfg_example.txt // so that we effective read the same params->readFromFile("rf505_asciicfg.txt",0,"Section4") ; params->Print("v") ; }