ROOT logo
//////////////////////////////////////////////////////////////////////////
//
// '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") ;



}
 rf505_asciicfg.C:1
 rf505_asciicfg.C:2
 rf505_asciicfg.C:3
 rf505_asciicfg.C:4
 rf505_asciicfg.C:5
 rf505_asciicfg.C:6
 rf505_asciicfg.C:7
 rf505_asciicfg.C:8
 rf505_asciicfg.C:9
 rf505_asciicfg.C:10
 rf505_asciicfg.C:11
 rf505_asciicfg.C:12
 rf505_asciicfg.C:13
 rf505_asciicfg.C:14
 rf505_asciicfg.C:15
 rf505_asciicfg.C:16
 rf505_asciicfg.C:17
 rf505_asciicfg.C:18
 rf505_asciicfg.C:19
 rf505_asciicfg.C:20
 rf505_asciicfg.C:21
 rf505_asciicfg.C:22
 rf505_asciicfg.C:23
 rf505_asciicfg.C:24
 rf505_asciicfg.C:25
 rf505_asciicfg.C:26
 rf505_asciicfg.C:27
 rf505_asciicfg.C:28
 rf505_asciicfg.C:29
 rf505_asciicfg.C:30
 rf505_asciicfg.C:31
 rf505_asciicfg.C:32
 rf505_asciicfg.C:33
 rf505_asciicfg.C:34
 rf505_asciicfg.C:35
 rf505_asciicfg.C:36
 rf505_asciicfg.C:37
 rf505_asciicfg.C:38
 rf505_asciicfg.C:39
 rf505_asciicfg.C:40
 rf505_asciicfg.C:41
 rf505_asciicfg.C:42
 rf505_asciicfg.C:43
 rf505_asciicfg.C:44
 rf505_asciicfg.C:45
 rf505_asciicfg.C:46
 rf505_asciicfg.C:47
 rf505_asciicfg.C:48
 rf505_asciicfg.C:49
 rf505_asciicfg.C:50
 rf505_asciicfg.C:51
 rf505_asciicfg.C:52
 rf505_asciicfg.C:53
 rf505_asciicfg.C:54
 rf505_asciicfg.C:55
 rf505_asciicfg.C:56
 rf505_asciicfg.C:57
 rf505_asciicfg.C:58
 rf505_asciicfg.C:59
 rf505_asciicfg.C:60
 rf505_asciicfg.C:61
 rf505_asciicfg.C:62
 rf505_asciicfg.C:63
 rf505_asciicfg.C:64
 rf505_asciicfg.C:65
 rf505_asciicfg.C:66
 rf505_asciicfg.C:67
 rf505_asciicfg.C:68
 rf505_asciicfg.C:69
 rf505_asciicfg.C:70
 rf505_asciicfg.C:71
 rf505_asciicfg.C:72
 rf505_asciicfg.C:73
 rf505_asciicfg.C:74
 rf505_asciicfg.C:75
 rf505_asciicfg.C:76
 rf505_asciicfg.C:77
 rf505_asciicfg.C:78
 rf505_asciicfg.C:79
 rf505_asciicfg.C:80
 rf505_asciicfg.C:81
 rf505_asciicfg.C:82
 rf505_asciicfg.C:83
 rf505_asciicfg.C:84
 rf505_asciicfg.C:85
 rf505_asciicfg.C:86
 rf505_asciicfg.C:87
 rf505_asciicfg.C:88
 rf505_asciicfg.C:89
 rf505_asciicfg.C:90
 rf505_asciicfg.C:91
 rf505_asciicfg.C:92
 rf505_asciicfg.C:93
 rf505_asciicfg.C:94
 rf505_asciicfg.C:95
 rf505_asciicfg.C:96