45 void PrintBinMap(TUnfoldBinning *binning,
const char * where,
51 ofstream dtdFile(
"tunfoldbinning.dtd");
52 TUnfoldBinningXML::WriteDTD(dtdFile);
54 TString dir = gSystem->UnixPathName(gSystem->DirName(__FILE__));
55 Int_t error=parser.ParseFile(dir+
"/testUnfold6binning.xml");
56 if(error) cout<<
"error="<<error<<
" from TDOMParser\n";
57 TXMLDocument
const *XMLdocument=parser.GetXMLDocument();
58 TUnfoldBinningXML *binning=
59 TUnfoldBinningXML::ImportXML(XMLdocument,
"binning");
61 cout<<
"error: can not read binning (document empty?)\n";
63 cout<<
"Binning scheme:\n =================================\n";
64 binning->PrintStream(cout);
65 Int_t *binMap=binning->CreateEmptyBinMap();
66 PrintBinMap(binning,
"CreateEmptyBinMap",binMap);
68 TUnfoldBinning
const *branch1=binning->FindNode(
"branch1");
69 branch1->FillBinMap1D(binMap,
"y[C]",2);
70 PrintBinMap(binning,
"branch1->FillBinMap1D(...,\"y[C]\",...,2)",binMap);
72 delete binMap; binMap=binning->CreateEmptyBinMap();
73 TUnfoldBinning
const *branch2=binning->FindNode(
"branch2");
74 branch2->FillBinMap1D(binMap,
"x[C]",7);
75 PrintBinMap(binning,
"branch2->FillBinMap1D(...,\"x[C]\",...,7)",binMap);
77 delete binMap; binMap=binning->CreateEmptyBinMap();
78 binning->FillBinMap1D(binMap,
"y[C]",1);
79 PrintBinMap(binning,
"binning->FillBinMap1D(...,\"y[C]\",...,1)",binMap);
81 binning->ExportXML(
"testUnfold6.out.xml");
85 void PrintBinMap(TUnfoldBinning *binning,
const char * where,
86 const Int_t *binMap) {
88 cout<<
"\n"<<where<<
"\n=======================\n";
90 for(
int i=0;i<binning->GetEndBin()+1;i++) {
95 for(
int i=0;i<binning->GetEndBin()+1;i++) {
96 cout<<setw(3)<<binMap[i];
99 map<int,vector<int> > destBin;
100 for(
int i=0;i<binning->GetEndBin()+1;i++) {
101 destBin[binMap[i]].push_back(i);
104 for(map<
int,vector<int> >::const_iterator i=destBin.begin();i!=destBin.end();i++) {
107 cout<<
"\ndest |contributing bins\n"
108 <<
"=====+======================================\n";
111 for(
size_t j=0;j<(*i).second.size();j++) {
112 cout<<setw(4)<<(*i).first<<
" |";
113 cout<<setw(3)<<binning->GetBinName((*i).second[j])<<
"\n";
115 cout<<
"=====+======================================\n";