48 while((r<nmax)&&(f>=probability[r])) {
67 r=rnd->
Gaus(shapeParm[1],shapeParm[2]);
69 r=rnd->
Rndm()*(shapeParm[4]-shapeParm[3])+shapeParm[3];
99 static const Double_t genFrac[]={0.3,0.6,0.1};
102 static const Double_t genShape[][5]=
103 {{1.0,2.0,1.5,0.,15.},
104 {1.0,7.0,2.5,0.,15.},
105 {0.0,0.0,0.0,0.,15.}};
109 TH1D *histDetDATA=
new TH1D(
"Yrec",
";DATA(Yrec)",nDet,xminDet,xmaxDet);
113 TH2D *histGenDetMC=
new TH2D(
"Yrec%Xgen",
"MC(Xgen,Yrec)",
114 nGen,xminGen,xmaxGen,nDet,xminDet,xmaxDet);
116 TH1D *histUnfold=
new TH1D(
"Xgen",
";DATA(Xgen)",nGen,xminGen,xmaxGen);
119 TH1D **histPullArea=
new TH1D* [nGen];
120 for(
int i=0;i<nGen;i++) {
128 for(
int itoy=0;itoy<1000;itoy++) {
129 if(!(itoy %10)) cout<<
"toy iteration: "<<itoy<<
"\n";
130 histDetDATA->
Reset();
131 histGenDetMC->
Reset();
134 for(
Int_t i=0;i<nData;i++) {
135 Int_t iGen=GenerateGenEvent(nGen,genFrac);
136 Double_t yObs=GenerateRecEvent(genShape[iGen]);
137 histDetDATA->
Fill(yObs);
141 for(
Int_t i=0;i<nMC;i++) {
142 Int_t iGen=GenerateGenEvent(nGen,genFrac);
143 Double_t yObs=GenerateRecEvent(genShape[iGen]);
144 histGenDetMC->
Fill(iGen,yObs);
162 unfold.SetInput(histDetDATA,0.0,1.0);
165 unfold.ScanLcurve(50,0.,0.,0,0,0);
168 unfold.GetOutput(histUnfold);
170 for(
int i=0;i<nGen;i++) {
179 unfold.ScanLcurve(50,0.,0.,0,0,0);
182 unfold.GetOutput(histUnfold);
184 for(
int i=0;i<nGen;i++) {
195 for(
int i=0;i<nGen;i++) {
197 histPullNC[i]->
Fit(
"gaus");
198 histPullNC[i]->
Draw();
200 for(
int i=0;i<nGen;i++) {
202 histPullArea[i]->
Fit(
"gaus");
203 histPullArea[i]->
Draw();
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
Random number generator class based on M.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
R__EXTERN Int_t gErrorIgnoreLevel
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
R__EXTERN TStyle * gStyle
TVirtualPad * cd(Int_t subpadnumber=0)
Set current canvas & pad.
TUnfold is used to decompose a measurement y into several sources x given the measurement uncertainti...
static void SetDefaultSumw2(Bool_t sumw2=kTRUE)
When this static function is called with sumw2=kTRUE, all new histograms will automatically activate ...
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
This is the base class for the ROOT Random number generators.
virtual void Reset(Option_t *option="")
Reset.
virtual Double_t Rndm()
Machine independent random number generator.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
void SetOptFit(Int_t fit=1)
The type of information about fit parameters printed in the histogram statistics box can be selected ...
static const char * GetTUnfoldVersion(void)
tomato 1-D histogram with a double per channel (see TH1 documentation)}
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D
virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
Automatic pad generation by division.
THist< 1, double, THistStatContent, THistStatUncertainty > TH1D
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
virtual Int_t Poisson(Double_t mean)
Generates a random integer N according to a Poisson law.
static void output(int code)
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
Int_t Fill(Double_t)
Invalid Fill method.
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
tomato 2-D histogram with a double per channel (see TH1 documentation)}