Version 17.0 example for multi-dimensional unfolding
0.0226130485535
8.16150403023
Processing /mnt/vdb/lsf/workspace/root-makedoc-v608/rootspi/rdoc/src/v6-08-00-patches/tutorials/math/testUnfold5c.C...
TUnfoldBinning "detector" has 360 bins [1,361] nTH1x=360
TUnfoldBinning "detectordistribution" has 360 bins [1,361] nTH1x=360
distribution: 360 bins
"pt" nbin=8 plus overflow
"eta" nbin=10
"discriminator" nbin=4
TUnfoldBinning "generator" has 115 bins [1,116] nTH1x=115
TUnfoldBinning "signal" has 25 bins [1,26] nTH1x=25
distribution: 25 bins
"ptgen" nbin=3 plus underflow plus overflow
"etagen" nbin=3 plus underflow plus overflow
TUnfoldBinning "background" has 90 bins [26,116] nTH1x=90
distribution: 90 bins
"ptrec" nbin=8 plus overflow
"etarec" nbin=10
loop over data events
loop over MC signal events
loop over MC background events
#include <iostream>
#include <map>
#include <cmath>
void testUnfold5c()
{
TFile *outputFile=
new TFile(
"testUnfold5_histograms.root",
"recreate");
TFile *binningSchemes=
new TFile(
"testUnfold5_binning.root");
binningSchemes->
GetObject(
"detector",detectorBinning);
binningSchemes->
GetObject(
"generator",generatorBinning);
delete binningSchemes;
detectorBinning->
Write();
generatorBinning->
Write();
if(detectorBinning) {
} else {
cout<<"could not read 'detector' binning\n";
}
if(generatorBinning) {
} else {
cout<<"could not read 'generator' binning\n";
}
detectorBinning->
FindNode(
"detectordistribution");
generatorBinning->
FindNode(
"background");
Float_t etaRec,ptRec,discr,etaGen,ptGen;
Int_t istriggered,issignal;
TFile *dataFile=
new TFile(
"testUnfold5_data.root");
if(!dataTree) {
cout<<"could not read 'data' tree\n";
}
cout<<"loop over data events\n";
if(dataTree->
GetEntry(ievent)<=0)
break;
if(istriggered) {
histDataReco->
Fill(binNumber);
}
if(issignal) {
histDataTruth->
Fill(binNumber);
} else {
histDataTruth->
Fill(binNumber);
}
}
delete dataTree;
delete dataFile;
(generatorBinning,detectorBinning,"histMCGenRec");
TFile *signalFile=
new TFile(
"testUnfold5_signal.root");
if(!signalTree) {
cout<<"could not read 'signal' tree\n";
}
cout<<"loop over MC signal events\n";
if(signalTree->
GetEntry(ievent)<=0)
break;
if(istriggered) {
}
histMCGenRec->
Fill(genBin,recBin);
}
delete signalTree;
delete signalFile;
TFile *bgrFile=
new TFile(
"testUnfold5_background.root");
if(!bgrTree) {
cout<<"could not read 'background' tree\n";
}
cout<<"loop over MC background events\n";
if(istriggered) {
(ptRec,etaRec,discr);
histMCGenRec->
Fill(genBin,recBin);
}
}
delete bgrTree;
delete bgrFile;
delete outputFile;
}
- Author
- Stefan Schmitt, DESY
Definition in file testUnfold5c.C.