77 #ifndef READ_BINNING_CINT
91 TH1::SetDefaultSumw2();
96 TFile *outputFile=
new TFile(
"testUnfold5_histograms.root",
"recreate");
102 #ifdef READ_BINNING_CINT
103 TFile *binningSchemes=
new TFile(
"testUnfold5_binning.root");
106 TUnfoldBinning *detectorBinning,*generatorBinning;
111 #ifndef READ_BINNING_CINT
113 Int_t error=parser.ParseFile(
"testUnfold5binning.xml");
114 if(error) cout<<
"error="<<error<<
" from TDOMParser\n";
115 TXMLDocument
const *XMLdocument=parser.GetXMLDocument();
117 TUnfoldBinningXML::ImportXML(XMLdocument,
"detector");
119 TUnfoldBinningXML::ImportXML(XMLdocument,
"generator");
121 binningSchemes->GetObject(
"detector",detectorBinning);
122 binningSchemes->GetObject(
"generator",generatorBinning);
124 delete binningSchemes;
126 detectorBinning->Write();
127 generatorBinning->Write();
129 if(detectorBinning) {
130 detectorBinning->PrintStream(cout);
132 cout<<
"could not read 'detector' binning\n";
134 if(generatorBinning) {
135 generatorBinning->PrintStream(cout);
137 cout<<
"could not read 'generator' binning\n";
141 const TUnfoldBinning *detectordistribution=
142 detectorBinning->FindNode(
"detectordistribution");
144 const TUnfoldBinning *signalBinning=
145 generatorBinning->FindNode(
"signal");
147 const TUnfoldBinning *bgrBinning=
148 generatorBinning->FindNode(
"background");
155 Float_t etaRec,ptRec,discr,etaGen,ptGen;
156 Int_t istriggered,issignal;
160 TH1 *histDataReco=detectorBinning->CreateHistogram(
"histDataReco");
161 TH1 *histDataTruth=generatorBinning->CreateHistogram(
"histDataTruth");
163 TFile *dataFile=
new TFile(
"testUnfold5_data.root");
164 TTree *dataTree=(TTree *) dataFile->Get(
"data");
167 cout<<
"could not read 'data' tree\n";
170 dataTree->ResetBranchAddresses();
171 dataTree->SetBranchAddress(
"etarec",&etaRec);
172 dataTree->SetBranchAddress(
"ptrec",&ptRec);
173 dataTree->SetBranchAddress(
"discr",&discr);
175 dataTree->SetBranchAddress(
"istriggered",&istriggered);
177 dataTree->SetBranchAddress(
"etagen",&etaGen);
178 dataTree->SetBranchAddress(
"ptgen",&ptGen);
179 dataTree->SetBranchAddress(
"issignal",&issignal);
180 dataTree->SetBranchStatus(
"*",1);
183 cout<<
"loop over data events\n";
185 for(Int_t ievent=0;ievent<dataTree->GetEntriesFast();ievent++) {
186 if(dataTree->GetEntry(ievent)<=0)
break;
190 detectordistribution->GetGlobalBinNumber(ptRec,etaRec,discr);
191 histDataReco->Fill(binNumber);
196 Int_t binNumber=signalBinning->GetGlobalBinNumber(ptGen,etaGen);
197 histDataTruth->Fill(binNumber);
200 Int_t binNumber=bgrBinning->GetGlobalBinNumber(ptRec,etaRec);
201 histDataTruth->Fill(binNumber);
214 TH2 *histMCGenRec=TUnfoldBinning::CreateHistogramOfMigrations
215 (generatorBinning,detectorBinning,
"histMCGenRec");
217 TFile *signalFile=
new TFile(
"testUnfold5_signal.root");
218 TTree *signalTree=(TTree *) signalFile->Get(
"signal");
221 cout<<
"could not read 'signal' tree\n";
224 signalTree->ResetBranchAddresses();
225 signalTree->SetBranchAddress(
"etarec",&etaRec);
226 signalTree->SetBranchAddress(
"ptrec",&ptRec);
227 signalTree->SetBranchAddress(
"discr",&discr);
228 signalTree->SetBranchAddress(
"istriggered",&istriggered);
229 signalTree->SetBranchAddress(
"etagen",&etaGen);
230 signalTree->SetBranchAddress(
"ptgen",&ptGen);
231 signalTree->SetBranchStatus(
"*",1);
233 cout<<
"loop over MC signal events\n";
235 for(Int_t ievent=0;ievent<signalTree->GetEntriesFast();ievent++) {
236 if(signalTree->GetEntry(ievent)<=0)
break;
239 Int_t genBin=signalBinning->GetGlobalBinNumber(ptGen,etaGen);
245 recBin=detectordistribution->GetGlobalBinNumber(ptRec,etaRec,discr);
247 histMCGenRec->Fill(genBin,recBin);
253 TFile *bgrFile=
new TFile(
"testUnfold5_background.root");
254 TTree *bgrTree=(TTree *) bgrFile->Get(
"background");
257 cout<<
"could not read 'background' tree\n";
260 bgrTree->ResetBranchAddresses();
261 bgrTree->SetBranchAddress(
"etarec",&etaRec);
262 bgrTree->SetBranchAddress(
"ptrec",&ptRec);
263 bgrTree->SetBranchAddress(
"discr",&discr);
264 bgrTree->SetBranchAddress(
"istriggered",&istriggered);
265 bgrTree->SetBranchStatus(
"*",1);
267 cout<<
"loop over MC background events\n";
269 for(Int_t ievent=0;ievent<bgrTree->GetEntriesFast();ievent++) {
270 if(bgrTree->GetEntry(ievent)<=0)
break;
276 Int_t genBin=bgrBinning->GetGlobalBinNumber(ptRec,etaRec);
278 Int_t recBin=detectordistribution->GetGlobalBinNumber
279 (ptRec,etaRec,discr);
280 histMCGenRec->Fill(genBin,recBin);